public function createCreditInvoiceFromInvoice(Document\Invoice $invoice) { $creditInvoice = new Document\CreditInvoice(); $creditInvoice->setInvoice($invoice); $creditInvoice->setCompany($invoice->getCompany()); $auth = $this->getServiceLocator()->get('zfcuser_auth_service'); if ($auth->hasIdentity()) { $user = $auth->getIdentity(); } $creditInvoice->setCreatedBy($user); $creditInvoice->setPrefix($invoice->getPrefix()); $creditInvoice->setCustomer($invoice->getCustomer()); $creditInvoice->setReferenceNumber($invoice->getReferenceNumber()); $creditInvoice->setCompany($invoice->getCompany()); $creditInvoice->setPaymentType($invoice->getPaymentType()); $creditInvoice->setVat($invoice->getVat()); $creditInvoice->setPrefix($invoice->getPrefix()); $creditInvoice->setDeadlineDays($invoice->getDeadlineDays()); $creditInvoice->setDelayPercent($invoice->getDelayPercent()); $creditInvoice->setDocumentDate(new \DateTime()); $creditInvoice->setOpencart($invoice->getOpencart()); foreach ($invoice->getRows() as $row) { /* @var $row \Application\Entity\Document\Row */ $creditRow = new Document\Row(); $creditRow->setUom($row->getUom()); $creditRow->setArticle($row->getArticle()); $creditRow->setDocument($creditInvoice); $creditRow->setVat($row->getVat()); $creditRow->setName($row->getName()); $creditRow->setWarehouse($row->getWarehouse()); $creditRow->setCode($row->getCode()); $creditRow->setBarCode($row->getBarCode()); $creditRow->setDescription($row->getDescription()); $creditRow->setPrice($row->getPrice()); $creditRow->setAmount($row->getAmount()); $creditRow->setQuantity($row->getCreditedQuantity() - $row->getQuantity()); $creditRow->setCreditingRowId($row->getId()); $creditInvoice->addRow($creditRow); } return $this->saveObject($creditInvoice); }