Si lo colocas así te funciona?
Código PHP:
Ver originalif ( (!$order->hasBeenDelivered() && $order_detail_list[$id_order_detail]['quantity'] > 0) || ($order->hasBeenDelivered() && Tools::isSubmit('reinjectQuantities')))
Edito:
Tomando en cuenta las consideraciones que das:
Cita: Si A es true y C es true retorna true
Si B es true y C es true retorna true
Pero sin A o B es true pero C es false retorna false
C
siempre debe ser true en las tres casos, pero A o B pueden ser true o false. Por ende:
($a || $b) && $c
!$order->hasBeenDelivered() -> A
($order->hasBeenDelivered() && Tools::isSubmit('reinjectQuantities')) -> B
$order_detail_list[$id_order_detail]['quantity'] > 0 -> C
Así que siguiendo la lógica sería:
Código PHP:
Ver originalif ((!$order->hasBeenDelivered() || ($order->hasBeenDelivered() && Tools::isSubmit('reinjectQuantities'))) && $order_detail_list[$id_order_detail]['quantity'] > 0)
Saludos