Flow
Gaps left after the marker went in
1Two mixed filters clash
Each mixed filter uses the same or key, so a second one would replace the first.
2Card keys off its label
A real supplier called Unspecified would be sent to the blank rows.
3Only one picker sends it
Brand, product and promotion are handled on the server but not offered on the page.
4No test
None of the four builder cases is checked automatically.
The Unspecified card on my discount report led nowhere. Each supplier card filters the table by its own label. The Unspecified card did the same, so it asked for a supplier named "Unspecified".
As far as I know, no supplier is named that. Those rows have no supplier at all. The column is NULL, and I assume the page shows "Unspecified" just so the card has a name. The click sent that display word back to the server as if it were real data.
Why NULL fell through the list check
In SQL, NULL never equals anything, not even another NULL. A list check only keeps exact matches, so it can't find blank rows. You have to ask with IS NULL instead.
So the summary could count a group the detail view couldn't find.
One marker, carried by both ends
The page and the server now share a special marker string that means "no value here". Clicking the Unspecified card sends the marker, not the label. The supplier picker has an Unspecified entry that sends the same marker. My guess is a marker was the easy route because it fits the list the page already sends. The catch is that the string now lives in two places.
The builder and the mixed case
On the server, one builder now handles the supplier, brand, product and promotion filters:
- Nothing picked: no filter.
- Only the marker: IS NULL.
- Only names: the normal list check.
- Names and the marker: in the list OR IS NULL.
That last case lets you see two real suppliers and the blank rows together. If you write it as raw SQL, wrap it in parentheses before adding the date filter.
Where the marker can still get lost
The server merges the field filters into one object, and every mixed filter uses the same "or" key. Two mixed filters at once would clash, and the second would win. Only the supplier picker can send the marker today, so I doubt anyone has hit it.
A few other gaps. The card checks its own label to decide when to send the marker, so a real supplier called "Unspecified" would get mixed up. The other pickers can't send the marker yet. And there's no test for any of the four cases, so if someone changes the builder next month, nothing will say the blank rows went missing again.