1 <?php
2
3 class RoomServiceOrder extends ServiceOrder {
4 static $db = array(
5 );
6
7 static $has_one = array(
8 'RoomService' => 'RoomService',
9 'RoomOrder' => 'RoomOrder',
10 );
11
12 static $summary_fields = array('Title', 'Count', 'RoomServicePrice');
13
14 function fieldLabels($includerelations = true) {
15 $labels = parent::fieldLabels($includerelations);
16 $labels['Title'] = _t('RoomServiceOrder.Title', 'Title');
17 $labels['RoomServicePrice'] = _t('RoomServiceOrder.RoomServicePrice', 'Room Service Price');
18 return $labels;
19 }
20
21 function onBeforeWrite() {
22 parent::onBeforeWrite();
23 if ($this->RoomServiceID && $this->RoomService()) {
24 if (!$this->ServiceTitle) {
25 $this->ServiceTitle = $this->RoomService()->Title;
26 }
27 if (!$this->ServicePrice) {
28 $this->ServicePrice = $this->RoomService()->Price;
29 }
30 }
31 }
32
33 function onAfterWrite() {
34 parent::onAfterWrite();
35 $order = $this->RoomOrder()->Order();
36 $order->calculateOrderCost();
37 $order->write();
38 }
39
40 function onAfterDelete() {
41 $order = $this->RoomOrder()->Order();
42 $order->calculateOrderCost();
43 $order->write();
44 parent::onAfterDelete();
45 }
46
47 function getTitle() {
48 if ($this->ServiceTitle) {
49 return $this->ServiceTitle;
50 }
51 return $this->RoomService()->Title;
52 }
53
54 function RoomServicePrice() {
55 $cost = 0;
56 if ($this->ServicePrice) {
57 $cost = $this->Count * $this->ServicePrice;
58 } else {
59 $cost = $this->Count * $this->RoomService()->Price;
60 }
61 if ($this->RoomService()->Repeat == 'every_day') {
62 $cost *= $this->RoomOrder()->Order()->OrderLength();
63 }
64 return $cost;
65 }
66 }
[Raise a SilverStripe Framework issue/bug](https://github.com/silverstripe/silverstripe-framework/issues/new)
- [Raise a SilverStripe CMS issue/bug](https://github.com/silverstripe/silverstripe-cms/issues/new)
- Please use the
Silverstripe Forums to ask development related questions.
-