If all Sub Parts are Complete, List Complete on Parent Object

Hi, I am trying to figure a way to do a text based sum up. I am trying to keep track of the parts I 3D Print for each order. One order can have many parts. Each Part has a enum Status. When all the Related Parts Status is Complete, I want a virtual column to return Complete on the Parent Order.

I have [Related Parts][Status] returning all of the related statusss correctly, but I am not sure how to do the rest. I am sure I am overthinking it. IF(AND()) dont seem to be working (I get a “Cannot compare List with Text” error), and I have also looked into Array formulas with no success. Any guidance would be greatly appreciated.

IF(AND([Related Parts][Status]= “Complete”, “Complete”, “Processing”))

2 Likes

I think I figured it out!

IF(
OR(
CONTAINS([Related Parts][Status], Print Queue),
CONTAINS([Related Parts][Status], Processing),
CONTAINS([Related Parts][Status], Printing),
CONTAINS([Related Parts][Status], Error),
CONTAINS([Related Parts][Status], Waiting on Customer)
),
“Processing”, “Completed”)

3 Likes

Try instead:

IF(IN(“Complete”, [Related Parts][Status]), “Complete”, “Processing”)

More efficient:

ISNOTBLANK(
  INTERSECT(
    [Related Parts][Status],
    LIST(
      "Error",
      "Print Queue",
      "Printing",
      "Processing",
      "Waiting on Customer"
    )
  )
)
4 Likes

what about:

ISBLANK( [Related Parts][Status] - LIST( "Complete") )

…to check if “Complete” is the only status?

Or, in total:

IF(
  ISBLANK( [Related Parts][Status] - LIST( "Complete") ) ,
  "Complete" ,
  "Processing"
)
5 Likes

Good one!

2 Likes

This is what I’d do

This is an interesting use of list-math :+1:

2 Likes

Thank you all for your suggestions! One heck of a community! :smiley:

I will try some of these out and report back. As of right now, it is working, but continuous improvement is a virtue!

3 Likes

Thank you all again. Went and revisited this and used @Marc_Dillon 's suggestion and added an extra step. Now if everything is in “Print Queue” status, then it is “Not Started” If, Everything is in “Complete” status, Complete. Everything else is Processing!

Works like a charm!

IF(
ISBLANK( [Related Parts][Status] - LIST( “Print Queue”) ) ,
“Not Started” ,
IF(
ISBLANK( [Related Parts][Status] - LIST( “Complete”) ) ,
“Complete” ,
“Processing”
)
)

4 Likes