Пример #1
0
 /**
  * Get all amount of booking
  *
  * Remark: The total_amount has been deducted from discount amount.
  */
 static function getBookingAmount($id)
 {
     if (!$id) {
         return;
     }
     $bookingAmount = array('resource_fees' => 0, 'sub_resource_fees' => 0, 'adhoc_charges_fees' => 0, 'discount_amount' => 0, 'total_amount' => 0);
     $params = array('id' => $id);
     self::retrieve($params, $booking);
     $bookingAmount['discount_amount'] = CRM_Utils_Array::value('discount_amount', $booking);
     $bookingAmount['total_amount'] = CRM_Utils_Array::value('total_amount', $booking);
     $slots = CRM_Booking_BAO_Slot::getBookingSlot($id);
     $subSlots = array();
     foreach ($slots as $key => $slot) {
         $subSlotResult = CRM_Booking_BAO_SubSlot::getSubSlotSlot($slot['id']);
         foreach ($subSlotResult as $key => $subSlot) {
             $subSlots[$key] = $subSlot;
         }
     }
     $adhocCharges = CRM_Booking_BAO_AdhocCharges::getBookingAdhocCharges($id);
     $params = array('booking_id' => $id);
     CRM_Booking_BAO_Payment::retrieve($params, $payment);
     if (!empty($payment) && isset($payment['contribution_id'])) {
         // contribution exit so get all price from line item
         /*
         $params = array(
           'version' => 3,
           'id' => $payment['contribution_id'],
           );
         $result = civicrm_api('Contribution', 'get', $params);
         $contribution = CRM_Utils_Array::value($payment['contribution_id'], $result['values'] );
         $bookingAmount['total_amount']  = CRM_Utils_Array::value('total_amount', $contribution);
         */
         foreach ($slots as $slotId => $slot) {
             $params = array('version' => 3, 'entity_id' => $slotId, 'entity_table' => 'civicrm_booking_slot');
             $result = civicrm_api('LineItem', 'get', $params);
             $lineItem = CRM_Utils_Array::value($result['id'], $result['values']);
             $bookingAmount['resource_fees'] += CRM_Utils_Array::value('line_total', $lineItem);
         }
         foreach ($subSlots as $subSlotId => $subSlots) {
             $params = array('version' => 3, 'entity_id' => $subSlotId, 'entity_table' => 'civicrm_booking_sub_slot');
             $result = civicrm_api('LineItem', 'get', $params);
             $lineItem = CRM_Utils_Array::value($result['id'], $result['values']);
             $bookingAmount['sub_resource_fees'] += CRM_Utils_Array::value('line_total', $lineItem);
         }
         foreach ($adhocCharges as $charges) {
             $params = array('version' => 3, 'entity_id' => CRM_Utils_Array::value('id', $charges), 'entity_table' => 'civicrm_booking_adhoc_charges');
             $result = civicrm_api('LineItem', 'get', $params);
             $lineItem = CRM_Utils_Array::value($result['id'], $result['values']);
             $bookingAmount['adhoc_charges_fees'] += CRM_Utils_Array::value('line_total', $lineItem);
         }
     } else {
         foreach ($slots as $id => $slot) {
             $bookingAmount['resource_fees'] += CRM_Booking_BAO_Slot::calulatePrice(CRM_Utils_Array::value('config_id', $slot), CRM_Utils_Array::value('quantity', $slot));
         }
         foreach ($subSlots as $id => $subSlot) {
             $bookingAmount['sub_resource_fees'] += CRM_Booking_BAO_Slot::calulatePrice(CRM_Utils_Array::value('config_id', $subSlot), CRM_Utils_Array::value('quantity', $subSlot));
         }
         foreach ($adhocCharges as $charges) {
             $price = CRM_Core_DAO::getFieldValue('CRM_Booking_DAO_AdhocChargesItem', CRM_Utils_Array::value('item_id', $charges), 'price', 'id');
             $bookingAmount['adhoc_charges_fees'] += $price * CRM_Utils_Array::value('quantity', $charges);
         }
     }
     return $bookingAmount;
 }
Пример #2
0
 static function getSlots()
 {
     $config = CRM_Booking_BAO_BookingConfig::getConfig();
     $bookedColour = CRM_Utils_Array::value('slot_booked_colour', $config);
     $provisionalColour = CRM_Utils_Array::value('slot_provisional_colour', $config);
     $booking = NULL;
     if (!empty($_GET['booking_id'])) {
         $bookingId = CRM_Utils_Type::escape($_GET['booking_id'], 'String');
     }
     $timeshift = CRM_Utils_Type::escape($_GET['timeshift'], 'String');
     $from = CRM_Utils_Type::escape($_GET['from'], 'String');
     $to = CRM_Utils_Type::escape($_GET['to'], 'String');
     $slots = array("data" => array());
     $results = CRM_Booking_BAO_Slot::getSlotBetweenDate($from, $to);
     foreach ($results as $key => $slot) {
         if ($bookingId != CRM_Utils_Array::value('booking_id', $slot)) {
             //do not thing
             $params = array('id' => CRM_Utils_Array::value('booking_id', $slot));
             CRM_Booking_BAO_Booking::retrieve($params, $booking);
             $bookingStatus = CRM_Utils_Array::value('status_id', $booking);
             $displayName = CRM_Contact_BAO_Contact::displayName(CRM_Utils_Array::value('primary_contact_id', $booking));
             $data = array("id" => $key, "start_date" => CRM_Utils_Array::value('start', $slot), "end_date" => CRM_Utils_Array::value('end', $slot), "text" => CRM_Utils_Array::value('booking_id', $slot) . ' : ' . $displayName, "resource_id" => CRM_Utils_Array::value('resource_id', $slot), "configuration_id" => CRM_Utils_Array::value('config_id', $slot), "price" => CRM_Booking_BAO_Slot::calulatePrice($slot['config_id'], $slot['quantity']), "quantity" => CRM_Utils_Array::value('quantity', $slot), "note" => CRM_Utils_Array::value('note', $slot), "readonly" => true, "booking_id" => CRM_Utils_Array::value('booking_id', $slot));
             if ($bookingStatus == 1) {
                 //Provisional, TODO: Fixed to get the value from the name i.e provisional
                 $data['color'] = $provisionalColour;
             } else {
                 $data['color'] = $bookedColour;
             }
             array_push($slots['data'], $data);
         }
     }
     echo json_encode($slots);
     CRM_Utils_System::civiExit();
 }