One way to approach this in an integer linear programming formulation is using Big-M.
Let $x \in \mathbb{Z}$ with $x \geq 0$ be your quantity variable for a product.
You now introduce a variable $y \in \{0, 1\}$ that will be assigned zero when you shouldn't be bother ordering, and one otherwise. Let's use this constraint:
Here $M$ is a sufficiently large integer, an upper bound for the maximum quantity you will encounter in an order. So if $y = 1$, $x$ will be your quantity, if $y = 0$, $x$ will be limited to $0$.
Let $T$ be your threshold. We now need some "logic" to set $y$ to $1$ if $x \geq T$ and to $0$ otherwise:
The case $x < T$ yields $y < 1$, i.e., $y = 0$, and the case $x \geq T$ allows $y$ to be $1$.
So, we get, as Oguz Toragay already cited from the FICO document:
- $x \geq T y$
- $x \leq M y$
EDIT: A slightly different approach would be as follows: You could use a variable $z \in \mathbb{Z}, z \geq 0,$ for quantities that are added on top of your threshold, and $y$ as described above. So replace all occurrences of $x$ by $z + T y$ and only use the constraint $z \leq M y$. I guess it's not much of a difference for most MIP solvers, but it's worth trying.
Does this increase the computational difficulty of the problem?
Yes, in two ways:
1) The formulation is an integer formulation, that is, you cannot simply use simplex or barrier methods to solve it, you need to solve the LP relaxation and branch over the fractional variables.
2) The LP relaxation is bad (i.e. there will be a lot of branching, which is expensive). That's usually the issue with Big-M formulations.