Time Phase showing link between PO and Job

We are buy to order, and some parts are used in many jobs, so Time Phase can get busy with PO’s and Jobs. My buyers like Time Phase except for one thing: it doesn’t clearly show the link between a PO/Line/Rel and Job/Asm/Mtl. Basically they want another source field data for Job showing the info from the matching PO’s source field and vice versa.

I have built this into a Dashboard, but they still like Time Phase. Is there an easy way I am not aware of, or is it the customization route (not enough time for that).



No way outside of a customization that I can think of.

You end up with something close to this:

Except use a parameterized BAQ that runs with the part number changes to pull the data. Then use the data from your BAQ to fill the cells in the grid.

This method should also work except I would slow things down as it queried for each row.

A few times I have modified the content in the existing cells in Time Phase with just a BPM, appending additional data to the data already in the grid.
You use the TimePhas.GoProcessTimePhase as a Post Processing.
Then use the Set By Query widget to get the other data needed an append it to the data in an existing column.
In my example the people using Time Phase wanted to see the Part Status (Active, On Hold, RunOut, InActive) so I used a query to determine the value and put it in the ExceptionReason column for the rows where SourceName = ‘On-Hand Quantity’
Since this is just temporary DataSets and Time Phase never writes back, it’s safe.

You might be able to do something similiar.

1 Like

I am not sure when Extension Tables was introduced. if you have, then fields can be added in customization and populated using a BPM which works well. I have done in 10.2.600.

This is one in TimePhas.GOProcess Post Processing
if (ttTimePhas.ExtendedColumns.All(column => column.ColumnName != “Customer”))
var columnList = new List(ttTimePhas.ExtendedColumns);
columnList.Add(new ExtendedColumn(“Customer”, typeof(string)));
columnList.Add(new ExtendedColumn(“CustomerName”, typeof(string)));
columnList.Add(new ExtendedColumn(“Supplier”, typeof(string)));
columnList.Add(new ExtendedColumn(“SupplierName”, typeof(string)));
typeof(IceTable<Erp.Tablesets.TimePhasRow>).GetField(“extendedColumns”, System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Static)
.SetValue(null, columnList.ToArray(), System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Static, null, null);

foreach (var r in (from ttTimePhas_Row in ttTimePhas select ttTimePhas_Row))
r[“Customer”] = “Cust” ;
r[“CustomerName”] = “Customer Name” ;
r[“Supplier”] = “Supplier” ;
r[“SupplierName”] = “Supplier Name” ;


Rick; I am exploring your option at the moment as my schedule only now allows attention to this issue, and it seems the simplest to build. When creating the query do you grab the values you want to update from just the ttTimePhase table, or do you pull in another table like PORel? I see the PO related fields are in ttTimephase, so no need to add them unless they don’t get populated when ttTimePhase gets created. I tried either way and when using another table in the query I created links for all kinds of PO and Job fields, but I can not get any PO# to show up. I am using the ContainerID field to display the results as that is not being used. Any thoughts where I am missing the boat?

Yes, in my BPM Query I was linking to another DB table, in my case ‘Part.’
But since I was determining my own value based on the results of the query and not the actual values returned by the query, I used a series of Set By Query Widgets. I had a series of Queries that checked for different values on the Part table in the order in which they are valid and depending on if the query found a match then I would change the Exception field value to a string that described the status. This worked because all the status fields are Boolean and I would have to evaluate to a description anyways. Also, this client was 10.0 so I was limited on widget types.
In 10.1 I think you should have a widget called ‘Update Table by Query’ which would probably work better for using actual values from another table.