/** * Assign all taxes to reservation * * @param RM_Reservation_Row $reservation * @param RM_Reservation_Details_Row $detailRow * @return bool */ function assign(RM_Reservation_Details $detail, RM_Reservation_Details_Row $detailRow) { $detailsPrice = $detail->getTotal(); $summaryModel = new RM_ReservationSummary(); $summaryRows = $summaryModel->fetchByReservationDetail($detailRow); foreach ($summaryRows as $summaryRow) { if ($summaryRow->type !== self::SUMMARY_TYPE) { $detailsPrice += $summaryRow->total_amount; } } $model = new RM_Taxes(); $taxes = $model->getByUnit($detail->getUnit()); foreach ($taxes as $tax) { $summaryModel->insert(array('row_id' => $tax->id, 'type' => self::SUMMARY_TYPE, 'reservation_id' => null, 'reservation_detail_id' => $detailRow->id, 'total_amount' => $tax->calculate($detailsPrice, $detail), 'name' => $tax->getName(RM_Environment::getInstance()->getLocale()))); } }
/** * Assign extras to reservation * * @param RM_Reservation_Details $detail * @param RM_Reservation_Details_Row $detailRow * @return void */ public function assign(RM_Reservation_Details $detail, RM_Reservation_Details_Row $detailRow) { $extras = $detail->getExtras(); foreach ($extras as $extra) { if ($extra instanceof RM_Extras_Object) { $summaryModel = new RM_ReservationSummary(); $summaryModel->insert(array('row_id' => $extra->getID(), 'type' => self::SUMMARY_TYPE, 'reservation_detail_id' => $detailRow->id, 'value' => $extra->getValue(), 'total_amount' => $extra->getPrice(), 'name' => $extra->getName())); // insert the extra tax $summaryModel->insert(array('row_id' => $extra->getID(), 'type' => self::SUMMARY_TYPE_TAX, 'reservation_detail_id' => $detailRow->id, 'value' => $extra->getValue(), 'total_amount' => $extra->getTax(), 'name' => "Extras Tax")); } } }