You can simplify it further: if a valid box is in its plate, set a bool to true, if it leaves the plate, set it to false.
Every time a box is in a valid plate, after flipping the bool, loop through all the bools to see if they are all true meaning player has set them all.
If even one is false, break out of the loop and wait for next box to be placed to check again.
Like this you have a plate actor that waits for a valid box, when this condition is met it communicates to another actor and tells it that its bool is true and to check the others.