I need to batch print the packers that were created or modified on a specific date (typically “today”). I’ll be using one of our exist Packer Report styles. I won’t actually be printing them but rather using the breaking/routing to email them to their respective Project Managers.
I can use the ShipHead.ChangeDate for selecting today’s packers - this will re-print any that have changed (typically the change is the addition of Tracking info).
I have the breaking/routing working when you choose Print from withing the Customer Shipment Entry screen, but have no idea how to force the Printing of an RDD report (as opposed to an BAQ report).
Worse case, I guess I could make a BAQ equivalent of the Packer RDD, and a BAQ Report for rendering it. But it seems like there ought to be a way to take advantage of the existing RDD/Report Style.
I thought you might be able to duplicate the RDD and then set a criteria on the Shiphead table in the RDD, that that results in the same error you rec’d.
When you print from Customer Shipment entry it passes the PackID along, if only you could somehow pass a list of PackID’s along.
I thought maybe a BAQ Search, but even with a Defaulted Named search that requires someone to click on that Pack Slips button.
Finding ways to make the process of reprinting faster, but not automated. Might need to be a customization or BPM that gathers a list of PackID’s and then calls the Print method and pass those values along somehow. Hang the BPM off of another process that is already running nightly to trigger the print. But this is all brainstorming at this point. Which often times leads be back around to why and what is the intended Epicor process. For that I concluded would be the the Sales Order Pick List or the Mtl Queue, both which I think may be more feasible for what you are wanting to do. But that would require a change in your current process, which might not be a bad thing to consider as there are many different ways to Fulfill Orders in Epicor.
Sorry this isn’t a good answer, but what you asked was interesting so I dug into it a bit.
I had the same idea on using a BAQ search (Very simple BAQ, only needing table criteria). And saw the same shortcomings.
Not sure if it can be done, but could I go the BAQ route (setting it as the default), and customize the form to call the Pack ID select button? Or would that just result in the Search window sitting there waiting for someone to click select all and the OK?
That’s what I was thinking, then I remembered this the AutoPopulate Data in options to your named search… but the report UI doesn’t have any context so the named search doesn’t show up in the drop down.
The other issue is that when you schedule a report with filters it caches the records currently selected, it doesn’t rerun the search.
But yeah it would just set there waiting for someone to click select all and ok.
In other customization I’ve seen done when the form is loaded they call a BAQ and then populate a pre-existing grid with the data. In this case you might be able to do the same sort of thing but since the filter only needs the PackID, just populate the grid with that? Kiidna like a Paste-Insert… that’s something to look into, replicate Paste-insert with a customization, I’m sure someone has done it.
I’m just not that great at customization’s to know the specifics.
For example, one client needed to print serialized labels per part and the process worked like this:
Open the Part Label (base) report UI
Enter JobNum or Part and the number of labels needed
When they click print, the UI customization looks up the Job’s Part to find the last serial number, creates new serial numbers in UD table and increments the Part last SN UD field
the RDD includes the UD table and relationships. There is a date/time stamp parameter too that keeps it straight.
then the UD table records that were created are deleted (no need to keep them)
In another customization there is a grid view of records that are missing some type of data and the user needs to select a checkbox for which records need to have this data auto generated. In that case a BAQ is used to pull in the dataset and populate the data grid.
Somewhere between those there should be a way to do what you want.
Just throwing stuff on the table.
“Good” is a relative term… I got something that works for us. Quite “hacky” but works.
I made a Std DD un UD05, with the following:
variable `PackNumList of type string
A Custom code widget to populate the PackNumList variable. Code is:
var today = DateTime.Today.AddDays(0); // change from -2 to 0 after development
var yesterday = today.AddDays(-1);
Erp.Tables.ShipHead ShipHead;
foreach (var ShipHead_iterator in (from ShipHead_Row in Db.ShipHead
where ShipHead_Row.Company == Session.CompanyID
&& ShipHead_Row.ShipStatus == "SHIPPED"
&& (ShipHead_Row.ShipDate == today || (ShipHead_Row.ShipDate == yesterday && ShipHead_Row.ChangeTime >= ((12+4) * 3600)))
orderby ShipHead_Row.PackNum
select ShipHead_Row)){
PackNumList = PackNumList + ShipHead_iterator.PackNum.ToString()+"~";
}
if(PackNumList.Substring(PackNumList.Length-1) == "~"){
PackNumList = PackNumList.Substring(0,PackNumList.Length-1);
}
the following part is just to include packers that shipped after 4:00 PM yesterday. || (ShipHead_Row.ShipDate == yester.. <snip> ..ow.ChangeTime >= ((12+4) * 3600)))
Create a Condition with:
Add an Auto Print widget:
Select PackSlip Report and config as:
Now to make this fire, I use a Windows task to run a power shell script that runs DMT to update a specific record of UD05.Checkbox20, to true then to false. Details on the PowerShell script calling DMT can be found in another post I made here.