public function generateInvoiceNo($opencart = false)
 {
     $rsm = new ResultSetMapping();
     $rsm->addScalarResult('nr', 'nr');
     if ($opencart) {
         $sql = "SELECT COALESCE(MAX(doc_nr),0) + 1 as nr FROM document WHERE disc = '" . Document::TYPE_INVOICE . "' OR disc = '" . Document::TYPE_CREDIT_INVOICE . "' AND opencart = 1";
     } else {
         $sql = "SELECT COALESCE(MAX(doc_nr),0) + 1 as nr FROM document WHERE disc = '" . Document::TYPE_INVOICE . "' OR disc = '" . Document::TYPE_CREDIT_INVOICE . "'";
     }
     $query = $this->entityManager->createNativeQuery($sql, $rsm);
     $result = $query->getScalarResult();
     $sysNr = $result[0]['nr'];
     $type = $opencart ? Document\Number::TYPE_OPENCART_INVOICE : Document\Number::TYPE_INVOICE;
     $number = $this->getOneObjectByField(Document\Number::getClass(), 'type', $type);
     $defaultStartNumber = $number->getStartNumber();
     return $defaultStartNumber > $sysNr ? $defaultStartNumber : $sysNr;
 }
 /**
  * @param User $user
  * @return \Application\Entity\Document\Number
  */
 public function getNumberByUser(User $user)
 {
     return $this->entityManager->getRepository(Number::getClass())->findOneBy(array('user' => $user));
 }