Add package addons and options

This commit is contained in:
Almira Krdzic
2018-09-06 23:29:29 +02:00
parent 5bef0b9e5e
commit cd5f09487d
25 changed files with 1302 additions and 482 deletions

View File

@@ -85,7 +85,7 @@ class Wiaas_Order {
$data = $response->get_data();
# apply overrides
$data = self::_append_products_info($data, $order, $request);
$data = self::_append_packages($data, $order, $request);
$data = self::_append_order_process($data, $order, $request);
@@ -168,27 +168,26 @@ class Wiaas_Order {
*
* @return mixed
*/
private static function _append_products_info($data, $order, $request) {
private static function _append_packages($data, $order, $request) {
$line_items = array();
$order_items = $order->get_items( 'line_item' );
foreach ($data['line_items'] as $index => $product_line) {
$item = $order->get_item($product_line['id']);
// add only product lines that represent product bundles
if (empty($product_line['bundled_by'])) {
if (isset($item['wiaas_standard_package'])) {
$item = $order->get_item($product_line['id']);
$payment = $item->get_meta('_wiaas_payment', true);
# lock all products to `Purchase` payment type
$product_line['payment_type'] = $payment['payment_type'];
# lock all products to have no service
$product_line['service_price'] = $payment['minimal_services_price'];
$product_line['service_contract_period'] = $payment['services_contract_period'];
$product_line['max_contract_period'] = $payment['max_contract_period'];
$product_line['period_unit'] = $payment['period_unit'];
# simplify payment for all products
$product_line['recurring_price'] = $payment['recurrent_price'];
$product_line['pay_period'] = $payment['package_pay_period'];
# get payment type info
$product_line['payment_type'] = $item['wiaas_payment_type'];
$product_line['service_price'] = floatval($item['wiaas_service_price']);
$product_line['service_contract_period'] = floatval($item['wiaas_service_contract_period']);
$product_line['max_contract_period'] = floatval($item['wiaas_max_contract_period']);
$product_line['period_unit'] = $item['wiaas_period_unit'];
$product_line['recurring_price'] = floatval($item['wiaas_recurring_price']);
$product_line['pay_period'] = floatval($item['wiaas_pay_period']);
# collect status from order
if ($data['status'] === 'completed') {
@@ -198,11 +197,32 @@ class Wiaas_Order {
} else {
$product_line['status'] = 'processing';
}
$product_line['short_desc'] = $product_line['status'];
# collect completion data from order
$product_line['date_completed'] = $data['date_completed'];
// collect package addons
$product_line['additional_packages'] = array();
$addon_items = Wiaas_Package_Addon::get_order_item_addons($order_items, $item);
foreach ($addon_items as $addon_item) {
$product_line['additional_packages'][] = array(
'id' => $addon_item->get_id(),
'name' => $addon_item->get_name(),
);
}
// collect package options
$product_line['options'] = array();
$option_items = Wiaas_Package_Option_Groups::get_order_item_options($order_items, $item);
foreach ($option_items as $option_item) {
$product_line['options'][] = array(
'id' => $option_item->get_id(),
'name' => $option_item->get_name(),
);
}
$line_items[] = $product_line;
}
}