code: public function normalize($invoice, $format = null, array $context = [])
      {
          $data = parent::normalize($invoice, $format, $context);
  
          if ($this->contextHasGroup(['Default', 'OrderInvoice', 'Search'], $context)) {
              $sale = $invoice->getSale();
  
              $data = array_replace($data, [
                  'number'      => $invoice->getNumber(),
                  'company'     => $sale->getCompany(),
                  'email'       => $sale->getEmail(),
                  'first_name'  => $sale->getFirstName(),
                  'last_name'   => $sale->getLastName(),
                  'type'        => $invoice->getType(),
                  'method'      => $invoice->getPaymentMethod()->getName(),
                  'description' => $invoice->getDescription(),
                  'comment'     => $invoice->getComment(),
              ]);
          } elseif ($this->contextHasGroup(['Summary'], $context)) {
              $items = [];
  
              foreach ($invoice->getLines() as $item) {
                  $items[] = $this->normalizeObject($item, $format, $context);
              }
  
              $data = array_replace($data, [
                  'items'       => $items,
                  'description' => $invoice->getDescription(),
                  'comment'     => $invoice->getComment(),
              ]);
          }
  
          return $data;
      }
docs: @inheritdoc
  
  @param InvoiceInterface $invoice