CREATE OR ALTER VIEW _as_Sales_InvNumJobNum
AS
--WITH ENCRYPTION
SELECT
--CLIENT:
[Client].[Account] + ' - ' + [Client].[Name] as Customer,
[CliClass].[IdCliClass],
[CliClass].[Code] + ' - ' + [CliClass].[Description] as CustomerGroupCodeDesc,
COALESCE([Currency].[CurrencyCode],'Home') as CurrencyCode,
MasterCustomerID = COALESCE(ClientMaster.DCLink,Client.DCLink),
ClientMasterDCLink = ClientMaster.DCLink,
ClientDCLink = InvNum.AccountID, -- Client.DCLink,
--Doc Info:
[InvNum].[InvDate] as InvDate,
[InvNum].[InvNumber] as InvNumber,
[InvNum].[GrvNumber] as GrvNumber,
[InvNum].ExtOrderNum as ExtOrderNum,
'' as JobDescription,
'' as JobCode,
SerialNumbers = (select STRING_AGG(cSerialNumber,', ') FROM _btblInvoiceLineSN SN WHERE SN.iSerialInvoiceID = [_btblInvoiceLines].iInvoiceID AND SN.iSerialInvoiceLineID = [_btblInvoiceLines].idInvoiceLines),
0 as parOutstanding,
YEAR(InvNum.InvDate) as Year,
--LINE ITEM:
iLineID as LineNumber,
[StkItem].[cSimpleCode] as cSimpleCode,
[_btblInvoiceLines].[cDescription] as LineDescription,
CASE
WHEN [_btblInvoiceLines].[iStockCodeID] = 0 THEN DocumentAccs.Master_Sub_Account
WHEN COALESCE(StkItem.Code,'') <> '' THEN StkItem.Code
ELSE DocumentAccs.Master_Sub_Account END as LineItemCode,
CASE
WHEN [_btblInvoiceLines].[iStockCodeID] = 0 THEN DocumentAccs.Master_Sub_Account + ' - ' + DocumentAccs.Description
WHEN COALESCE(StkItem.Code,'') <> '' THEN StkItem.Code + ' - ' + [StkItem].Description_1
ELSE DocumentAccs.Master_Sub_Account + ' - ' + DocumentAccs.Description END as LineItemCodeDesc,
[StkItem].[ItemGroup] + ' - ' + [GrpTbl].[Description] as ItemGroup,
[GrpTbl].[idGRpTbl] as idGRpTbl,
COALESCE([Project].[ProjectCode] + ' - ' + [Project].[ProjectName],'None') as ProjectCodeDesc,
COALESCE([SalesRep].[Code] + ' - ' + [SalesRep].[Name],'None') as SalesRep,
COALESCE([SalesRep].idSalesRep,0) as idSalesRep,
COALESCE([SalesAccs].[Master_Sub_Account],DocumentAccs.Master_Sub_Account) as SalesMSA,
[WhseMst].[Code] as WHCode,
[WhseMst].[Code] + ' - ' + [WhseMst].[Name] as WHCodeName,
WhseMst.whseLink,
--QTY:
CASE
WHEN InvNum.DocType IN (0,4,9) THEN fQtyLastProcess
WHEN InvNum.DocType IN (1)THEN fQtyLastProcess * -1
ELSE 0 END as fQtyLastProcess,
CASE
WHEN InvNum.DocType IN (0,4,9) THEN _btblInvoiceLines.[fQuantity]
WHEN InvNum.DocType IN (1) THEN _btblInvoiceLines.[fQuantity] * -1
ELSE 0 END as Qty_Ordered,
--COSTING:
CASE
WHEN InvNum.DocType IN (0,4,9) THEN fQtyLastProcess*[_btblInvoiceLines].[fUnitCost]
WHEN InvNum.DocType IN (1)THEN fQtyLastProcess*[_btblInvoiceLines].[fUnitCost] * -1
ELSE 0 END as fCOGS,
--SALE AMOUNTS (EXCL)
--Sales--Discounted
CASE
WHEN InvNum.DocType IN (0,4,9) THEN fQtyLastProcess
WHEN InvNum.DocType IN (1) THEN fQtyLastProcess * -1
ELSE 0 END * fUnitPriceExcl * (1-COALESCE(fLineDiscount,0)/100)* (1-COALESCE(InvDisc,0)/100) as LineTotalExcl_Discounted,
--Sales - undiscounted
CASE
WHEN InvNum.DocType IN (0,4,9) THEN _btblInvoiceLines.[fQtyLastProcessLineTotExcl] /*select top 100 * from _btblInvoiceLines IL left join invnum i on il.iinvoiceid = i.autoindex where i.invnumber = 'INV1454052'*/
WHEN InvNum.DocType IN (1) THEN _btblInvoiceLines.[fQtyLastProcessLineTotExcl] * -1
ELSE 0 END as LineTotalExcl,
--Sales - foreign - undiscounted
CASE
WHEN InvNum.DocType IN (0,4,9) THEN _btblInvoiceLines.[fQtyLastProcessLineTotExclNoDiscForeign]
WHEN InvNum.DocType IN (1) THEN _btblInvoiceLines.[fQtyLastProcessLineTotExclNoDiscForeign] * -1
ELSE 0 END as LineTotalExcl_Foreign,
--Sales - foreign - discounted
CASE
WHEN InvNum.DocType IN (0,4,9) THEN fQtyLastProcess
WHEN InvNum.DocType IN (1) THEN fQtyLastProcess * -1
ELSE 0 END * fUnitPriceExclForeign * (1-COALESCE(fLineDiscount ,0)/100)* (1-COALESCE(InvDisc,0)/100) as LineTotalExcl_DiscountedForeign,
--Sales - undiscounted
--Tax
CASE
WHEN InvNum.DocType IN (0,4,9) THEN _btblInvoiceLines.fQtyLastProcessLineTaxAmount
WHEN InvNum.DocType IN (1) THEN _btblInvoiceLines.fQtyLastProcessLineTaxAmount * -1
ELSE 0 END as LineTaxAmount,
CASE
WHEN InvNum.DocType IN (0,4,9) THEN _btblInvoiceLines.fQtyLastProcessLineTaxAmount
WHEN InvNum.DocType IN (1) THEN _btblInvoiceLines.fQtyLastProcessLineTaxAmount * -1
ELSE 0 END as LineTaxAmountWithDisc,
CASE
WHEN InvNum.DocType IN (0,4,9) THEN _btblInvoiceLines.fQtyLastProcessLineTaxAmountNoDiscForeign
WHEN InvNum.DocType IN (1) THEN _btblInvoiceLines.fQtyLastProcessLineTaxAmountNoDiscForeign * -1
ELSE 0 END as LineTaxAmountForeign,
CASE
WHEN InvNum.DocType IN (0,4,9) THEN _btblInvoiceLines.fQtyLastProcessLineTaxAmountForeign
WHEN InvNum.DocType IN (1) THEN _btblInvoiceLines.fQtyLastProcessLineTaxAmountForeign * -1
ELSE 0 END as LineTaxAmountForeignWithDisc,
--Sales included Tax
CASE
WHEN InvNum.DocType IN (0,4,9) THEN _btblInvoiceLines.[fQtyLastProcessLineTotIncl]
WHEN InvNum.DocType IN (1) THEN _btblInvoiceLines.[fQtyLastProcessLineTotIncl] * -1
ELSE 0 END as LineTotalIncl,
--Sales - foreign - undiscounted
CASE
WHEN InvNum.DocType IN (0,4,9) THEN _btblInvoiceLines.[fQtyLastProcessLineTotInclForeign]
WHEN InvNum.DocType IN (1) THEN _btblInvoiceLines.[fQtyLastProcessLineTotInclForeign] * -1
ELSE 0 END as LineTotalIncl_Foreign,
--Sales included Tax discounted
CASE
WHEN InvNum.DocType IN (0,4,9) THEN fQtyLastProcess
WHEN InvNum.DocType IN (1) THEN fQtyLastProcess * -1
ELSE 0 END * fUnitPriceIncl * (1-COALESCE(fLineDiscount,0)/100)* (1-COALESCE(InvDisc,0)/100) as LineTotalIncl_Discounted,
--Sales included Tax discounted
CASE
WHEN InvNum.DocType IN (0,4,9) THEN fQtyLastProcess
WHEN InvNum.DocType IN (1) THEN fQtyLastProcess * -1
ELSE 0 END * fUnitPriceInclForeign * (1-COALESCE(fLineDiscount,0)/100)* (1-COALESCE(InvDisc,0)/100) as LineTotalInclForeign_Discounted,
--UNIT Pricing:
[_btblInvoiceLines].[fTaxRate] as fTaxRate,
[_btblInvoiceLines].[fUnitCost] as fUnitCost,
[_btblInvoiceLines].[fUnitPriceExcl] as fUnitPriceExcl,
fUnitPriceExcl * (1-COALESCE(fLineDiscount,0)/100)* (1-COALESCE(InvDisc,0)/100) as fUnitPrice_FullyDiscounted,
[_btblInvoiceLines].[fUnitPriceExclForeign] as fUnitPriceExclForeign,
[_btblInvoiceLines].[fUnitPriceExclForeign] * (1-COALESCE(fLineDiscount,0)/100)* (1-COALESCE(InvDisc,0)/100) as fUnitPrice_FullyDiscountedForeign,
Per.idPeriod,
Per.dPeriodDate,
Coalesce(A.description, 'No area') as area,
InvNum.InvNum_iCreatedAgentID as AgentID
FROM _btblInvoiceLines
LEFT JOIN StkItem ON iStockCodeID = StockLink
LEFT JOIN InvNum ON iInvoiceID = AutoIndex
LEFT JOIN Client ON InvNum.AccountID = Client.DCLink --AND InvNum.DocType IN (0,1,4,9)
LEFT JOIN CliClass ON Client.iClassID = idCliClass
LEFT JOIN Areas A on A.idAreas = Client.iAreasID
LEFT JOIN SalesRep ON SalesRep.idSalesRep = InvNum.DocRepID
LEFT JOIN WhseMst ON WhseMst.WhseLink = _btblInvoiceLines.iWarehouseID
--LEFT JOIN PostAR ON InvNum.AutoIndex = PostAR.InvNumKey
LEFT JOIN GrpTbl ON ItemGroup = GrpTbl.StGroup
LEFT JOIN Accounts DocumentAccs ON _btblInvoiceLines.iLedgerAccountID = DocumentAccs.AccountLink
LEFT JOIN Accounts SalesAccs ON GrpTbl.SalesAccLink = SalesAccs.AccountLink
LEFT JOIN Project ON iLineProjectID = ProjectLink
LEFT JOIN Client ClientMaster ON Client.MainAccLink = ClientMaster.DCLink
LEFT JOIN _etblGLReportCategory ON SalesAccs.iReportCategoryID = _etblGLReportCategory.idReportCategory
LEFT JOIN Currency ON Client.iCurrencyID = Currency.CurrencyLink
LEFT JOIN _etblPeriod Per on InvDate > = DATEADD(month, DATEDIFF(month, 0, Per.dPeriodDate), 0) AND InvDate <=dPeriodDate
---FILTERS:
WHERE --InvNum.InvDate >= @Fromdate AND InvNum.InvDate <= @Todate
InvNum.DocState = 4
AND DocType in (1,4) --CRN and SO
UNION ALL
SELECT
--CLIENT:
[Client].[Account] + ' - ' + [Client].[Name] as Customer,
[CliClass].[IdCliClass],
[CliClass].[Code] + ' - ' + [CliClass].[Description] as CustomerGroupCodeDesc,
COALESCE([Currency].[CurrencyCode],'Home') as CurrencyCode,
MasterCustomerID = COALESCE(ClientMaster.DCLink,Client.DCLink),
ClientMasterDCLink = ClientMaster.DCLink,
ClientDCLink = JobNum.AccountID, --Client.DCLink,
--Doc Info:
[JobNum].[InvDate] as InvDate,
[JobNum].Invnumber as JobNumber,
[JobNum].Invnumber as GrvNumber,
[JobNum].cExtOrderNumber as ExtOrderNum,
[JobNum].Description as JobDescription,
JM.cJobCode as JobCode,
SerialNumbers = '' ,
0 as parOutstanding,
YEAR(JobNum.InvDate) as Year,
--LINE ITEM:
0 as LineNumber,
[StkItem].[cSimpleCode] as cSimpleCode,
[_btblJCInvoiceLines].[cDescription] as LineDescription,
CASE
WHEN [_btblJCInvoiceLines].iStockID = 0 THEN ''
WHEN COALESCE(StkItem.Code,'') <> '' THEN StkItem.Code
ELSE '' END as LineItemCode,
CASE
WHEN [_btblJCInvoiceLines].iStockID = 0 THEN '' + ' - ' + ''
WHEN COALESCE(StkItem.Code,'') <> '' THEN StkItem.Code + ' - ' + [StkItem].Description_1
ELSE '' + ' - ' + '' END as LineItemCodeDesc,
[StkItem].[ItemGroup] + ' - ' + [GrpTbl].[Description] as ItemGroup,
[GrpTbl].[idGRpTbl] as idGRpTbl,
COALESCE([Project].[ProjectCode] + ' - ' + [Project].[ProjectName],'None') as ProjectCodeDesc,
COALESCE([SalesRep].[Code] + ' - ' + [SalesRep].[Name],'None') as SalesRep,
COALESCE([SalesRep].idSalesRep,0) as idSalesRep,
COALESCE([SalesAccs].[Master_Sub_Account],'') as SalesMSA,
[WhseMst].[Code] as WHCode,
[WhseMst].[Code] + ' - ' + [WhseMst].[Name] as WHCodeName,
WhseMst.whseLink,
--QTY:
fQuantity as fQtyLastProcess,
_btblJCInvoiceLines.[fQuantity] as Qty_Ordered,
--COSTING:
fQuantity * [fUnitCost] as fCOGS,
--SALE AMOUNTS (EXCL)
--Sales--Discounted
fQuantity * fUnitPriceExcl * (1-COALESCE(fLineDiscount,0)/100)* (1-COALESCE(InvDisc,0)/100) as LineTotalExcl_Discounted,
--Sales - undiscounted
[fLineTotExcl]as LineTotalExcl,
--Sales - foreign - undiscounted
[fLineTotExclNoDiscForeign] as LineTotalExcl_Foreign,
--Sales - foreign - discounted
fQuantity * fUnitPriceExclForeign * (1-COALESCE(fLineDiscount ,0)/100)* (1-COALESCE(InvDisc,0)/100) as LineTotalExcl_DiscountedForeign,
--Sales - undiscounted
--Tax
fLineTotTaxAmount as LineTaxAmount,
fLineTotTaxAmount as LineTaxAmountWithDisc,
fLineTotTaxAmountNoDiscForeign as LineTaxAmountForeign,
fLineTotTaxAmountForeign as LineTaxAmountForeignWithDisc,
--Sales included Tax
[fLineTotIncl] as LineTotalIncl,
--Sales - foreign - undiscounted
[fLineTotInclForeign] as LineTotalIncl_Foreign,
--Sales included Tax discounted
fQuantity * fUnitPriceIncl * (1-COALESCE(fLineDiscount,0)/100)* (1-COALESCE(InvDisc,0)/100) as LineTotalIncl_Discounted,
--Sales included Tax discounted
fQuantity * fUnitPriceInclForeign * (1-COALESCE(fLineDiscount,0)/100)* (1-COALESCE(InvDisc,0)/100) as LineTotalInclForeign_Discounted,
--UNIT Pricing:
[_btblJCInvoiceLines].[fTaxRate] as fTaxRate,
[_btblJCInvoiceLines].[fUnitCost] as fUnitCost,
[_btblJCInvoiceLines].[fUnitPriceExcl] as fUnitPriceExcl,
fUnitPriceExcl * (1-COALESCE(fLineDiscount,0)/100)* (1-COALESCE(InvDisc,0)/100) as fUnitPrice_FullyDiscounted,
[_btblJCInvoiceLines].[fUnitPriceExclForeign] as fUnitPriceExclForeign,
[_btblJCInvoiceLines].[fUnitPriceExclForeign] * (1-COALESCE(fLineDiscount,0)/100)* (1-COALESCE(InvDisc,0)/100) as fUnitPrice_FullyDiscountedForeign,
Per.idPeriod,
Per.dPeriodDate,
Coalesce(A.description, 'No area') as area,
JobNum.JobNum_iCreatedAgentID as AgentID
from
_btblJCInvoiceLines
LEFT JOIN StkItem ON iStockID = StockLink
LEFT JOIN JobNum ON iJobNumID = AutoIndex
LEFT JOIN _btblJCMaster JM ON JobNum.iJCMasterID = JM.IdJCMaster
LEFT JOIN Client ON JobNum.AccountID = Client.DCLink --AND JobNum.DocType IN (0,1,4,9)
LEFT JOIN CliClass ON Client.iClassID = idCliClass
LEFT JOIN Areas A on A.idAreas = Client.iAreasID
LEFT JOIN SalesRep ON SalesRep.idSalesRep = JobNum.iRepID
LEFT JOIN WhseMst ON WhseMst.WhseLink = _btblJCInvoiceLines.iWarehouseID
LEFT JOIN GrpTbl ON ItemGroup = GrpTbl.StGroup
LEFT JOIN Accounts SalesAccs ON GrpTbl.SalesAccLink = SalesAccs.AccountLink
LEFT JOIN Project ON iLineProjectID = ProjectLink
LEFT JOIN Client ClientMaster ON Client.MainAccLink = ClientMaster.DCLink
LEFT JOIN _etblGLReportCategory ON SalesAccs.iReportCategoryID = _etblGLReportCategory.idReportCategory
LEFT JOIN Currency ON Client.iCurrencyID = Currency.CurrencyLink
LEFT JOIN _etblPeriod Per on InvDate > = DATEADD(month, DATEDIFF(month, 0, Per.dPeriodDate), 0) AND InvDate <=dPeriodDate
WHERE --JobNum.InvDate >= @Fromdate AND JobNum.InvDate <= @Todate
JobNum.DocType = 1 --processed
GO