/** * Create new invoice item and save * * @param RM_Holder_Invoice $obInvoice * @param RM_Holder_iHolderable $obEntity * @return RM_Holder_Invoice_Item */ public function createInvoiceItem(&$itemsList, RM_Holder_Invoice $obInvoice, RM_Holder_iHolderable $obEntity) { if (!isset($itemsList[$obEntity->guidType()][$obEntity->id()])) { $itemsList[$obEntity->guidType()][$obEntity->id()] = $this->_storage['invoice_item']->createObject(array('invoice_id' => $obInvoice->id(), 'entity_id' => $obEntity->id(), 'entity_type' => $obEntity->guidType(), 'invoice_state' => RM_Holder_Invoice_Item_State::ADD, 'cdate' => M('Date')->dbDateTime())); } elseif ($itemsList[$obEntity->guidType()][$obEntity->id()]->getState()->getName() == RM_Holder_Invoice_Item_State::DEL) { $itemsList[$obEntity->guidType()][$obEntity->id()]->changeState(RM_Holder_Invoice_Item_State::ADD); } return $itemsList[$obEntity->guidType()][$obEntity->id()]->save(); }
/** * Remove equipment from invoice * * @param RM_Holder_iHolderable $obEntity * @return void */ public function removeEntity(RM_Holder_iHolderable $obEntity) { if (!$this->canChangeItemState()) { return FALSE; } $this->_items(); if ($this->is_deleted || $this->state == RM_Holder_Invoice_State::CLOSED) { throw new RM_Base_Exception_BadUsage(__METHOD__ . ' : change closed invoice'); } if (!isset($this->_items[$obEntity->guidType()][$obEntity->id()])) { throw new RM_Base_Exception_BadUsage(__METHOD__ . ' : remove unknown entity'); } if (!$this->_items[$obEntity->guidType()][$obEntity->id()]->changeState(RM_Holder_Invoice_Item_State::DEL)) { return FALSE; } $this->_items[$obEntity->guidType()][$obEntity->id()]->mdate = M('Date')->dbDateTime(); if ($this->_items[$obEntity->guidType()][$obEntity->id()]->save()) { unset($this->_items[$obEntity->guidType()][$obEntity->id()]); $obEntity->setInvoice(); $obEntity->save(); } return TRUE; }