Inventory check with too many else-ifs
You should have to split your function absolutely. 
You should have to group commons conditions statements and instructions.

However, I think there are deeper problem in your architecture which cause this piece of code. You have to rethink your problem at higher level.

For the three top conditions you can do this, for example :

    public static void Test(int? inventoryCheck, int? POCheck, int? PromotionCheck)
    {
        bool bInventoryCheck = (inventoryCheck == null);
        bool bPOCheck = (POCheck == null);
        bool bPromotionCheck = (PromotionCheck == null);

        ValidInventory (!bInventoryCheck &amp;&amp; bPOCheck &amp;&amp; bPromotionCheck, inventoryCheck);
        ValidInventory (bInventoryCheck &amp;&amp; !bPOCheck &amp;&amp; bPromotionCheck, PromotionCheck);
        ValidInventory (bInventoryCheck &amp;&amp; bPOCheck &amp;&amp; !bPromotionCheck, POCheck);



    }

    public static void ValidInventory(bool validate, int? toValidate)
    {
        if (validate)
            //db.ValidInventory(toValidate);
    }


But I don't think it's a good solution because as you mention here, you have a lot of other cases. We can reduce your code by many way but it's bury the real problem.

In order to reduce we have to understand the concept behind the Process.

PS : Here the "else if" statement seems to be unnecessary, because you are testing every parameters in each case.