code: private function getRegularDueQueryBuilder()
      {
          $qb = $this->createQueryBuilder('o');
          $ex = $qb->expr();
  
          return $qb
              ->where($ex->andX(
                  $ex->eq('o.sample', ':not_sample'),                    // Not sample
                  $ex->lt('o.paidTotal', 'o.grandTotal'),                // Paid total lower than grand total
                  $ex->notIn('o.invoiceState', ':canceled_or_refunded'), // Not canceled/refunded
                  $ex->eq('o.shipmentState', ':shipped'),                // Shipped
                  $ex->isNull('o.paymentTerm')                           // Without payment term
              ))
              ->addOrderBy('o.createdAt', 'ASC')
              ->setParameter('not_sample', false)
              ->setParameter('shipped', ShipmentStates::STATE_COMPLETED)
              ->setParameter('canceled_or_refunded', [InvoiceStates::STATE_CANCELED, InvoiceStates::STATE_CREDITED]);
      }
docs: Returns the regular due query.
  
  @return QueryBuilder