You are here

function _commerce_invoice_suggest_invoice_status in Commerce Invoice 7.2

Suggests invoice status for a given order, considering previous invoice's status (given the previous invoice exists)

1 call to _commerce_invoice_suggest_invoice_status()
commerce_invoice_create_from_order_form in ./commerce_invoice.admin.inc
Form callback for invoicing orders.

File

./commerce_invoice.module, line 512
The Commerce Invoice module.

Code

function _commerce_invoice_suggest_invoice_status($order) {

  /** @var Invoice $previous_invoice */
  $previous_invoice = commerce_invoice_load_current($order);
  if ($previous_invoice) {
    $new_status = $previous_invoice->invoice_status;

    // @todo: if previous invoice's status was STATUS_PAID but new invoice's total
    //    will differ (i.e.  order total changed since last invoice was issued)
    //    new status should be STATUS_PENDING.
  }
  else {
    switch ($order->status) {
      case 'completed':
        $new_status = Invoice::STATUS_PAID;
        break;
      case 'canceled':
        $new_status = Invoice::STATUS_CANCELED;
        break;
      default:
        $new_status = Invoice::STATUS_PENDING;
    }
  }
  return $new_status;
}