I’ve developed a new feature and I want to discuss some of the functionality before creating a pull request on GitHub.
The feature is a Supplier Scorecard, which is used to evaluate the performance of all your suppliers, and potentially to warn suppliers when they are not meeting their obligations or prevent them from quoting or being issued new Purchase Orders.
Here’s a breakdown of the documents:
- Supplier Scorecard
- This is the main point of reference when reviewing suppliers. This is where you establish the scoring criteria and standings, as well as can see what actions have been imposed on the supplier.
- Supplier Scorecard Period
- This is a scorecard calculation for a given supplier and scoring period. It provides more details into how the supplier performed in the given period.
- Supplier Scorecard Standing
- A template document for supplier standings (e.g. poor, average, excellent)
- Supplier Scorecard Criteria
- A template document for supplier evaluation criteria (e.g. Delivery, RFQ, Quality)
- Supplier Scorecard Variable
- A template document for supplier performance variables (e.g. how many items have been delivered late in the period, how many days it takes to respond to an RFQ)
Here’s a screenshot of the Supplier Scorecard document:
In this main view, you can see how your supplier is doing on a daily basis in the heat map. You can also see their score, and you have a link to the Supplier Scorecard Period. You also have the ability to set the evaluation period for the supplier (‘Per Day’, ‘Per Week’, ‘Per Month’, ‘Per Year’), which determines how often a supplier is evaluated. Clicking the Generate Missing Scorecard Periods will create Supplier Scorecard Period documents from when the supplier was first entered into the system until today.
If you expand the Criteria Setup, you’ll see this:
What you can see here are the criteria that the supplier is evaluated based on, and the variables that are used to calculate the score on each criteria. These are all able to be defined by the user, but will probably have some baseline ones so that there is a starting point to work from. The idea is that there will be a large number of variables (which probably aren’t all needed for everyone). You can just use the default ones, but if you have special ones, you can code the calculation in python and provide a link to it in the variable (more on this later).
Each criteria is evaluated based on a formula which you can define yourself, and each criteria has a weight which decides how important it is to the final score.
Each variable is defined like this. The parameter name is what’s used to refer to it in the criteria formula. The path is the python path to get to the function that calculates this value. This can be a function name if the function is in the supplier_scorecard_variable.py file, or a dotted path to whatever function you want. This allows for companies to come up with their own variables and map them to their own app python files.
The scorecard actions currently are:
- Prevent RFQs
- Prevent POs
- Notify Supplier (through email)
- Notify other Employee (through email)
The idea with this is that if a supplier gets a really bad score (or a really good one), they can be penalized or praised.
Supplier Scorecard Period
Here’s the supplier scorecard period document, which gives all the calculations the explain the suppliers score in a period. There’s the period score, the bounding dates of the period. The score on each criteria, and the value of each of the variables used. This is really useful for tuning the evaluation criteria, and also for explaining to suppliers why their score is the way that it is. It can also help clear up user input issues (if you enter a supplier quotation very late and all of a sudden they have a really bad Quotation Response score).
So I’m uncertain about a number of things, so I want to get some input from the community and people that will be using this:
- Does having actions that affect suppliers make sense? If we have buttons like Prevent RFQs or Prevent POs, will they ever get used? Do you want this to be a warning that comes up when trying to submit one of these documents, or a hard prevent these documents from being submitted?
- Are the criteria formula (using frappe.safe_eval) too complicated for the average user to use? I’m envisioning that there will be templates provided so that there is a starting point to work from, but I want to avoid making things overly complicated.
- Should the creation of new supplier scorecards be automated to happen at every period, or is it something that should be manually triggered by the user?
- Are there any other features that need to be considered?
Thanks for any feedback you can provide!