Good day, Paul! Welcome to the forum!
Pivot is not something I’m well practiced in, so I played around this morning to give myself a little more experience. See if the below gets you close…
1st Query (InnerSubQuery)
Start with a query of only the PartTran table. Add a Table Criteria so it only returns records where TranType = STK-MTL
Here are my display columns:

Note… I don’t know why I called them “OrderMonth” and “OrderYear”… this has nothing to do with “Orders”… so, may want to give them a better name. I think I was thinking about Purchase Orders while I was putting this together.
Calc Fields:



Because your MonthlyQty is a aggregate calculated field, you’ll need to “Group By” all the others:
2nd Query (Top Level)

I pulled in the Part Table and then joined the 1st query on Company = Company and PartNum = PartNum
I created a Parameter called Year:

Then added that to the subquery’s Table Criteria, that way, it will only return records where the OrderYear = the year typed into the Parameter.
Here is the Pivot added to that subquery:
So, I’m summing the Calculated_MonthlyQty)… based on OrderMonth IN a constant list where I just manually added columns 1 - 12 to the constant list.
Display Fields:

Testing the query, I get these results… it prompts me for a year:
2023:
2024:
So, you can see the sum values change depending on the year you enter.
You can further add parameters if you want your user to enter a specific part number… or you can add a constant list in as a table criteria on the Part Table if you want to limit your results to a set of specific parts as you mentioned in your post.
Might not be exactly what you’re looking for… but hopefully it gets you started and you can build it out from there.
Cheers!