/** * @param IFormInterface $Stage * @param TblCommodity $tblCommodity * @param $Commodity * * @return IFormInterface|string */ public function executeEditCommodity(IFormInterface &$Stage = null, TblCommodity $tblCommodity, $Commodity) { /** * Skip to Frontend */ if (null === $Commodity) { return $Stage; } $Error = false; if (isset($Commodity['Name']) && empty($Commodity['Name'])) { $Stage->setError('Commodity[Name]', 'Bitte geben Sie einen Namen an'); $Error = true; } else { if (isset($Commodity['Name']) && $tblCommodity->getName() !== $Commodity['Name'] && (new Data($this->Binding))->entityCommodityByName($Commodity['Name'])) { $Stage->setError('Commodity[Name]', 'Die Leistung exisitiert bereits. Bitte geben Sie eine anderen Name an'); $Error = true; } } if (!$Error) { if ((new Data($this->Binding))->actionEditCommodity($tblCommodity, $Commodity['Name'], $Commodity['Description'], $this->entityCommodityTypeById($Commodity['Type']))) { $Stage .= new Success('Änderungen gespeichert, die Daten werden neu geladen...') . new Redirect('/Billing/Inventory/Commodity', 1); } else { $Stage .= new Danger('Änderungen konnten nicht gespeichert werden'); } } return $Stage; }
/** * @param TblCommodity $tblCommodity * @param TblItem $tblItem * @param TblBasket $tblBasket * @param TblBasketItem $tblBasketItem * @param TblInvoice $tblInvoice */ private function actionCreateInvoiceItem(TblCommodity $tblCommodity, TblItem $tblItem, TblBasket $tblBasket, TblBasketItem $tblBasketItem, TblInvoice $tblInvoice) { $Entity = new TblInvoiceItem(); $Entity->setCommodityName($tblCommodity->getName()); $Entity->setCommodityDescription($tblCommodity->getDescription()); $Entity->setItemName($tblItem->getName()); $Entity->setItemDescription($tblItem->getDescription()); if ($tblCommodity->getTblCommodityType()->getName() == 'Einzelleistung') { $Entity->setItemPrice($tblBasketItem->getPrice()); } else { $Entity->setItemPrice($tblBasketItem->getPrice() / Basket::useService()->countPersonByBasket($tblBasket)); } $Entity->setItemQuantity($tblBasketItem->getQuantity()); $Entity->setTblInvoice($tblInvoice); $this->Connection->getEntityManager()->saveEntity($Entity); Protocol::useService()->createInsertEntry($this->Connection->getDatabase(), $Entity); $tblItemAccountList = Commodity::useService()->entityItemAccountAllByItem($tblItem); /** @var TblItemAccount $tblItemAccount */ foreach ($tblItemAccountList as $tblItemAccount) { $EntityItemAccount = new TblInvoiceAccount(); $EntityItemAccount->setTblInvoiceItem($Entity); $EntityItemAccount->setServiceBilling_Account($tblItemAccount->getServiceBilling_Account()); $this->Connection->getEntityManager()->saveEntity($EntityItemAccount); Protocol::useService()->createInsertEntry($this->Connection->getDatabase(), $EntityItemAccount); } }