Supplier Performance Report

Looking for guidance if a report can be generated to review Supplier Performance on delivered material

I just created something like this. You will have to update the BAQ on the Vendor.VendorID table criteria. I used paste/insert to pate in a whole list of applicable vendor IDs. The BAQ shows vendor (supplier) performance over a date range. The BAQ has lots of extra fields because it is used in a BAQ Report.

BAQ:
VEndPerfDtlFilterUSD.baq (49.9 KB)

BAQ Report:
VendPerfDtlUSD.xml (2.4 KB)

Note that the Parameters in the BAQ are useless right now. I just forgot to remove them. If you run the BAQ through the BAQ report, then the parameters in the BAQ report should override the BAQ.

1 Like

Having said all that, there is also a built-in Supplier Performance Report. Executive Analysis > ShopVision > Performance. I could never get anything useful out of mine because it relies on something that doesn’t work in Epicor for us.

Unfortunately, my companies IT policy blocks my viewing this. Can you post a pdf to view? Here is how I want to score them.

Supplier Performance Report.pdf (648.9 KB)

/*
 * Disclaimer!!!
 * This is not a real query being executed, but a simplified version for general vision.
 * Executing it with any other tool may produce a different result.
 */
 
select 
	[SubQuery1].[Calculated_Average] as [Calculated_Average],
	[SubQuery1].[Calculated_CountReceiptsLate] as [Calculated_CountReceiptsLate],
	[SubQuery1].[Calculated_LineTotal] as [Calculated_LineTotal],
	[SubQuery1].[Calculated_TotalMisc] as [Calculated_TotalMisc],
	[SubQuery1].[PORel_DueDate] as [PORel_DueDate],
	[SubQuery1].[RcvDtl_DocVendorUnitCost] as [RcvDtl_DocVendorUnitCost],
	[SubQuery1].[RcvDtl_OurUnitCost] as [RcvDtl_OurUnitCost],
	[SubQuery1].[RcvDtl_PackLine] as [RcvDtl_PackLine],
	[SubQuery1].[RcvDtl_PackSlip] as [RcvDtl_PackSlip],
	[SubQuery1].[RcvDtl_PartNum] as [RcvDtl_PartNum],
	[SubQuery1].[RcvDtl_POLine] as [RcvDtl_POLine],
	[SubQuery1].[RcvDtl_PONum] as [RcvDtl_PONum],
	[SubQuery1].[RcvDtl_PORelNum] as [RcvDtl_PORelNum],
	[SubQuery1].[RcvDtl_PUM] as [RcvDtl_PUM],
	[SubQuery1].[RcvDtl_ReceiptDate] as [RcvDtl_ReceiptDate],
	[SubQuery1].[RcvDtl_VendorQty] as [RcvDtl_VendorQty],
	[SubQuery1].[Vendor_Name] as [Vendor_Name],
	[SubQuery1].[Vendor_VendorID] as [Vendor_VendorID],
	[SubQuery1].[Vendor_VendorNum] as [Vendor_VendorNum],
	[SubQuery1].[VendorPP_City] as [VendorPP_City],
	[SubQuery1].[VendorPP_Name] as [VendorPP_Name],
	[SubQuery1].[VendorPP_State] as [VendorPP_State],
	[SubQuery1].[VendorPP_VendorNum] as [VendorPP_VendorNum],
	(SubQuery1.Calculated_LineTotal+ SubQuery1.Calculated_TotalMisc) as [Calculated_GrandTotals]
from  (select 
	[Vendor].[Name] as [Vendor_Name],
	[VendorPP].[Name] as [VendorPP_Name],
	[VendorPP].[City] as [VendorPP_City],
	[VendorPP].[State] as [VendorPP_State],
	[PORel].[DueDate] as [PORel_DueDate],
	[RcvDtl].[ReceiptDate] as [RcvDtl_ReceiptDate],
	[RcvDtl].[PartNum] as [RcvDtl_PartNum],
	[RcvDtl].[PackSlip] as [RcvDtl_PackSlip],
	[RcvDtl].[VendorQty] as [RcvDtl_VendorQty],
	[RcvDtl].[PONum] as [RcvDtl_PONum],
	[RcvDtl].[POLine] as [RcvDtl_POLine],
	[RcvDtl].[PackLine] as [RcvDtl_PackLine],
	[RcvDtl].[PORelNum] as [RcvDtl_PORelNum],
	(convert(int, datediff(day,PORel.DueDate,RcvDtl.ReceiptDate) )) as [Calculated_CountReceiptsLate],
	(datediff(day,PORel.DueDate,RcvDtl.ReceiptDate)) as [Calculated_Average],
	[Vendor].[VendorID] as [Vendor_VendorID],
	[Vendor].[VendorNum] as [Vendor_VendorNum],
	[VendorPP].[VendorNum] as [VendorPP_VendorNum],
	[RcvDtl].[DocVendorUnitCost] as [RcvDtl_DocVendorUnitCost],
	[RcvDtl].[OurUnitCost] as [RcvDtl_OurUnitCost],
	[RcvDtl].[PUM] as [RcvDtl_PUM],
	((RcvDtl.VendorQty * RcvDtl.DocVendorUnitCost)) as [Calculated_LineTotal],
	(sum(isnull(APInvMsc.DocMiscAmt,0))) as [Calculated_TotalMisc]
from Erp.RcvDtl as RcvDtl
inner join Erp.PORel as PORel on 
	RcvDtl.Company = PORel.Company
	and RcvDtl.PONum = PORel.PONum
	and RcvDtl.POLine = PORel.POLine
	and RcvDtl.PORelNum = PORel.PORelNum
inner join Erp.PODetail as PODetail on 
	PORel.Company = PODetail.Company
	and PORel.PONum = PODetail.PONUM
	and PORel.POLine = PODetail.POLine
inner join Erp.POHeader as POHeader on 
	PODetail.Company = POHeader.Company
	and PODetail.PONUM = POHeader.PONum
inner join Erp.Vendor as Vendor on 
	POHeader.Company = Vendor.Company
	and POHeader.VendorNum = Vendor.VendorNum
	and ( Vendor.VendorID in ('YOURVENDORIDSHERE')  )

inner join Erp.VendorPP as VendorPP on 
	POHeader.Company = VendorPP.Company
	and POHeader.VendorNum = VendorPP.VendorNum
	and POHeader.PurPoint = VendorPP.PurPoint
left outer join Erp.APInvMsc as APInvMsc on 
	POHeader.Company = APInvMsc.Company
	and POHeader.PONum = APInvMsc.PONum
inner join Erp.RcvHead as RcvHead on 
	RcvDtl.Company = RcvHead.Company
	and RcvDtl.VendorNum = RcvHead.VendorNum
	and RcvDtl.PurPoint = RcvHead.PurPoint
	and RcvDtl.PackSlip = RcvHead.PackSlip
group by [Vendor].[Name],
	[VendorPP].[Name],
	[VendorPP].[City],
	[VendorPP].[State],
	[PORel].[DueDate],
	[RcvDtl].[ReceiptDate],
	[RcvDtl].[PartNum],
	[RcvDtl].[PackSlip],
	[RcvDtl].[VendorQty],
	[RcvDtl].[PONum],
	[RcvDtl].[POLine],
	[RcvDtl].[PackLine],
	[RcvDtl].[PORelNum],
	(convert(int, datediff(day,PORel.DueDate,RcvDtl.ReceiptDate) )),
	(datediff(day,PORel.DueDate,RcvDtl.ReceiptDate)),
	[Vendor].[VendorID],
	[Vendor].[VendorNum],
	[VendorPP].[VendorNum],
	[RcvDtl].[DocVendorUnitCost],
	[RcvDtl].[OurUnitCost],
	[RcvDtl].[PUM],
	((RcvDtl.VendorQty * RcvDtl.DocVendorUnitCost)))  as SubQuery1
1 Like

The report you want is certainly possible. I say build it up in a BAQ first. Once you have the BAQ spitting out the right data, then making a BAQ Report out of it is easy. But make sure to get your BAQ as close as possible first.

1 Like

Truer words have never been spoken