/** * @param \Generated\Shared\Transfer\InvoiceTransfer $invoiceTransfer * * @throws \Propel\Runtime\Exception\PropelException * @return \Generated\Shared\Transfer\InvoiceTransfer */ public function writeInvoice(InvoiceTransfer $invoiceTransfer) { $connection = $this->queryContainer->getConnection(); try { $connection->beginTransaction(); $this->writeAddress($invoiceTransfer); $this->persistInvoice($invoiceTransfer); $this->writeInvoiceTaxItems($invoiceTransfer); $this->writeInvoiceItems($invoiceTransfer); $this->writeInvoiceDiscounts($invoiceTransfer); $this->writeInvoiceExpenses($invoiceTransfer); $connection->commit(); } catch (PropelException $exception) { $connection->rollBack(); ErrorLogger::log($exception); if (Environment::isDevelopment()) { throw $exception; } } return $invoiceTransfer; }