Note: includes also fields indicating payment behavior of customers! (remove this if performance is an issue).


Sales / Purchase query

SELECT
 
SUM(CASE
 WHEN InvNum.DocType IN (0,4,6,9) THEN fQtyProcessed*IL.[fUnitCost]
 WHEN InvNum.DocType IN (1,7)THEN fQtyProcessed*IL.[fUnitCost] * -1
 ELSE 0 END) AS fCOGS_Sales,
SUM(CASE
 WHEN InvNum.DocType IN (0,4,6,9) THEN fQtyProcessed
 WHEN InvNum.DocType IN (1,7) THEN fQtyProcessed * -1
 ELSE 0 END) AS fQtyProcessed_Sales,
SUM(CASE
 WHEN InvNum.DocType IN (0,4,6,9) THEN IL.[fQuantity]
 WHEN InvNum.DocType IN (1,7) THEN IL.[fQuantity] * -1
 ELSE 0 END) AS fQuantity_Sales,
 
 SUM(CASE
    WHEN InvNum.DocType IN (0,4,6,9) THEN IL.[fQtyLastProcessLineTotExcl]
    WHEN InvNum.DocType IN (1,7) THEN IL.[fQtyLastProcessLineTotExcl] * -1
    ELSE 0 END) as LineTotalExcl_Sales,

 
--PURCHASE:
 
 
 --SalesAcocunt:
 CASE WHEN IL.[iStockCodeID] = 0 THEN DocumentAccs.Master_Sub_Account + ' - ' + DocumentAccs.Description
		ELSE SalesAccs.Master_Sub_Account + ' - ' + SalesAccs.Description END as SalesAccount,
 CASE
 WHEN IL.[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 ItemGLLineCode,
 
 GrpTbl.Description as GroupDescription
 ,InvNum.InvNumber
 ,InvNum.InvDate

  from
_btblInvoiceLines IL
LEFT JOIN StkItem ON iStockCodeID = StockLink
LEFT JOIN InvNum ON iInvoiceID = AutoIndex
LEFT JOIN GrpTbl ON ItemGroup = GrpTbl.StGroup
LEFT JOIN Accounts DocumentAccs ON IL.iLedgerAccountID = DocumentAccs.AccountLink
LEFT JOIN Accounts SalesAccs ON GrpTbl.SalesAccLink = SalesAccs.AccountLink
LEFT JOIN Project ON iLineProjectID = ProjectLink
    --SALES ONLY:
LEFT JOIN Client ON InvNum.AccountID = Client.DCLink AND InvNum.DocType IN (0,1,4,6,7,9)
LEFT JOIN Client ClientMaster ON Client.MainAccLink = ClientMaster.DCLink
LEFT JOIN CliClass ON Client.iClassID = idCliClass
LEFT JOIN Currency Currency_Sale ON Client.iCurrencyID = Currency_Sale.CurrencyLink
    --PURCHASE ONLY:
LEFT JOIN Vendor V ON InvNum.AccountID = V.DCLink AND InvNum.DocType IN (2,3,5)
LEFT JOIN VenClass ON V.iClassID = idVenClass
LEFT JOIN _etblGLReportCategory ON SalesAccs.iReportCategoryID = _etblGLReportCategory.idReportCategory
LEFT JOIN Currency Currency_Purchase ON V.iCurrencyID = Currency_Purchase.CurrencyLink
 
WHERE 1=1
    --Purchase only - only SINVs:
    --AND InvNum.DocFlag=2 -- only SINVs:
    --AND InvNum.DocState = 4
    --AND InvNum.DocType in (2,3,5)
    --Sales only:
    AND InvNum.DocState = 4 --Processed only
    AND InvNum.DocType in (0,1,4,6,7) --sales docs only


Sales query - including payment behavior of customers

Includes the following:

SELECT
CASE
WHEN (select strName FROM dbo.fSplit([_btblInvoiceLines].[cDescription],'|') WHERE Code = 2) = '' Then 0
ELSE COALESCE((select strName FROM dbo.fSplit([_btblInvoiceLines].[cDescription],'|') WHERE Code = 2),0) END AS ActualWeight, 
(
SELECT 
Avg(DateDiff(d,dFromRecDate,dToRecDate))
 FROM 
--CLIENT
--OUTER APPLY
dbo._efnAllocsARAP('AR', GETDATE(), 1, 1, CASE 
WHEN Client.MainAccLink > 0 Then [ClientMaster].DCLink
ELSE Client.DCLink END, NULL)
WHERE fAmountForeign <> 0 and DateDiff(d,dFromRecDate,dToRecDate) > 0
GROUP BY
iAccountID
) BetalingsErvaring_AVG,
(
SELECT 
sum(DateDiff(d,dFromRecDate,dToRecDate)*fAmountForeign)/sum(fAmountForeign)
 FROM 
dbo._efnAllocsARAP('AR', GETDATE(), 1, 1, CASE 
WHEN Client.MainAccLink > 0 Then [ClientMaster].DCLink
ELSE Client.DCLink END, NULL)
WHERE fAmountForeign <> 0 and DateDiff(d,dFromRecDate,dToRecDate) > 0
GROUP BY
iAccountID
) BetalingsErvaring_WA,
CASE
WHEN (select strName FROM dbo.fSplit([_btblInvoiceLines].[cDescription],'|') WHERE Code = 5) = '' Then 0
ELSE COALESCE(CAST(CAST((select strName FROM dbo.fSplit([_btblInvoiceLines].[cDescription],'|') WHERE Code = 5) as float) as DECIMAL(12,2)),0) END AS DefaultKGsPerBox,
CASE
 WHEN InvNum.DocType IN (0,4,9) THEN fQtyProcessed*[_btblInvoiceLines].[fUnitCost]
 WHEN InvNum.DocType IN (1)THEN fQtyProcessed*[_btblInvoiceLines].[fUnitCost] * -1
 ELSE 0 END AS fCOGS,
 CASE 
WHEN COALESCE((SELECT t4.fExclPrice FROM _etblPriceListPrices t4 WHERE t4.iPriceListNameID = @PriceListID@ AND t4.iStockID = _btblInvoiceLines.iStockCodeID AND t4.iWarehouseID = _btblInvoiceLines.iWarehouseID),0) - COALESCE([_btblInvoiceLines].[fUnitPriceExcl],0) > 0 THEN 1 
ELSE 0 END AS isDiscounted,
CASE
 WHEN InvNum.DocType IN (0,4,9) THEN fQtyProcessed* COALESCE([StkItem].[ufIINettoKg],0)
 WHEN InvNum.DocType IN (1) THEN fQtyProcessed* COALESCE([StkItem].[ufIINettoKg],0) * -1
 ELSE 0 END AS NettoKgPerLine,
CASE
 WHEN InvNum.DocType IN (0,4,9) THEN fQtyProcessed
 WHEN InvNum.DocType IN (1) THEN fQtyProcessed * -1
 ELSE 0 END AS QtySalesKGs,
 CASE
 WHEN InvNum.DocType IN (0,4,9) AND LEFT(StkItem.Code,2) = 'KG' THEN fQtyProcessed
 WHEN InvNum.DocType IN (1) AND LEFT(StkItem.Code,2) = 'KG' AND InvNum.AccountID <> 39 THEN fQtyProcessed * -1
 ELSE 0 END AS QtySalesKGsAF,
 CASE
 WHEN InvNum.DocType IN (0,4,9) THEN fQtyProcessed
 WHEN InvNum.DocType IN (1)THEN fQtyProcessed * -1
 ELSE 0 END AS fQtyProcessed, 
CASE
 WHEN InvNum.DocType IN (0,4,9) THEN _btblInvoiceLines.[fQuantity]
 WHEN InvNum.DocType IN (1) THEN _btblInvoiceLines.[fQuantity] * -1
 ELSE 0 END AS fQuantity,
 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 ItemGLLineCode,
 CASE 
 WHEN [GrpTbl].[Description] LIKE '%Angola%' THEN 'LOCAL'
 ELSE 'IMPORT' END AS ItemGroupClassification,
 COALESCE((select strName FROM dbo.fSplit([_btblInvoiceLines].[cDescription],'|') WHERE Code = 1),'') LineDescriptionTxt,
 (SELECT t4.fExclPrice FROM _etblPriceListPrices t4 WHERE t4.iPriceListNameID = @PriceListID@ AND t4.iStockID = _btblInvoiceLines.iStockCodeID AND t4.iWarehouseID = _btblInvoiceLines.iWarehouseID) ListPrice,
 CASE
WHEN (select strName FROM dbo.fSplit([_btblInvoiceLines].[cDescription],'|') WHERE Code = 4) = '' THEN 0
ELSE COALESCE((select strName FROM dbo.fSplit([_btblInvoiceLines].[cDescription],'|') WHERE Code = 4),0) END AS NumberOfBoxes,
CASE
WHEN ((SELECT MIN(Per) FROM Period WHERE PerDate >= InvNum.InvDate) % 12) = 0 THEN
 RIGHT('0' + CAST(((SELECT MIN(Per) FROM Period WHERE PerDate >= InvNum.InvDate) % 12)+12 AS VARCHAR(2)),2) + ' - ' + DATENAME(month, InvNum.InvDate) + ' ' + CAST(YEAR(InvNum.InvDate) AS VARCHAR(4))
ELSE
 RIGHT('00' + CAST(((SELECT MIN(Per) FROM Period WHERE PerDate >= InvNum.InvDate) % 12) AS VARCHAR(2)),2) + ' - ' + DATENAME(month, InvNum.InvDate) + ' ' + CAST(YEAR(InvNum.InvDate) AS VARCHAR(4))
END AS PeriodNrName,
CASE
 WHEN InvNum.DocType IN (0,4,9) THEN fQtyProcessed
 WHEN InvNum.DocType IN (1) THEN fQtyProcessed * -1
 ELSE 0 END AS QtySalesKGs,
 CASE
 WHEN InvNum.DocType IN (0,4,9) AND LEFT(StkItem.Code,2) = 'KG' THEN fQtyProcessed
 WHEN InvNum.DocType IN (1) AND LEFT(StkItem.Code,2) = 'KG' AND InvNum.AccountID <> 39 THEN fQtyProcessed * -1
 ELSE 0 END AS QtySalesKGsAF,
 CASE  
WHEN (select strName FROM dbo.fSplit([_btblInvoiceLines].[cDescription],'|') WHERE Code = 3) = '' Then 0
ELSE COALESCE(CAST((select strName FROM dbo.fSplit([_btblInvoiceLines].[cDescription],'|') WHERE Code = 3) as DECIMAL(12,2)),0.00)
END AS VolumeWeight, 
 * from
_btblInvoiceLines
LEFT JOIN StkItem ON iStockCodeID = StockLink
LEFT JOIN InvNum ON iInvoiceID = AutoIndex
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 ON InvNum.AccountID = Client.DCLink AND InvNum.DocType IN (0,1,4,9)
LEFT JOIN Client ClientMaster ON Client.MainAccLink = ClientMaster.DCLink
LEFT JOIN CliClass ON Client.iClassID = idCliClass
LEFT JOIN _etblGLReportCategory ON SalesAccs.iReportCategoryID = _etblGLReportCategory.idReportCategory
LEFT JOIN Currency ON Client.iCurrencyID = Currency.CurrencyLink


Ambro - sales query. Includes BETTER lookup to sales account: