public function processItemExpenseForm($data) { $this->db->trans_begin(); try { $itemService = new ItemService(); if ($data['newItem'] == 1) { $data['itemId'] = $itemService->saveItem($data); } if ($data['supplier']) { $supplierService = new SupplierService(); $data['supplierId'] = $supplierService->saveOrUpdate($data); } $stockService = new StockService(); $stockService->addItemsToStock($data['itemId'], $data['quantity']); $itemExpenseService = new ItemExpenseService(); $itemExpenseService->saveItemExpense($data); $itemService->updateSuggestedSellingPrice($data['itemId'], $data['price']); } catch (Exception $e) { $this->db->trans_rollback(); throw new Exception($e->getMessage()); } $this->db->trans_commit(); }