Version: current

     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. -