function joinMsc() { $model = $this->getModel('members'); $member_ids = JRequest::getVar('member_ids', array(), 'post', 'array'); $msc_id = JRequest::getInt('msc_id', 0); $msc_option = JRequest::getCmd('msc_option', 0); $result = array(); if (empty($msc_id)) { $result['success'] = false; $result['title'] = JText::_('ERROR'); $result['content'] = JText::_('ERROR'); } else { $msc = oseRegistry::call('msc'); $node = $msc->getInfo($msc_id, 'obj'); if (!$node->leaf) { $result['success'] = false; $result['title'] = JText::_('ERROR'); $result['content'] = JText::_('PLEASE_SELECT_A_LEAF_MEMBERSHIP'); } else { $cart = oseMscPublic::getCart(); $cart->addItem(null, null, array('entry_id' => $msc_id, 'entry_type' => 'msc', 'msc_option' => $msc_option)); $cart->refreshCartItems(); $paymentInfo = $cart->output(); if (!empty($msc_option)) { $payment = oseRegistry::call('msc')->getExtInfo($msc_id, 'payment', 'array'); $payment = $payment[$msc_option]; $price = oseObject::getValue($payment, 'a3'); $paymentInfo['payment_price'] = $price; $paymentInfo = oseObject::setParams($paymentInfo, array('a3' => $price, 'total' => $price, 'next_total' => 0, 'subtotal' => $price)); } else { $paymentInfo['payment_price'] = '0.00'; $paymentInfo = oseObject::setParams($paymentInfo, array('a3' => 0, 'total' => 0, 'next_total' => 0)); } foreach ($member_ids as $member_id) { $updated = $model->joinMsc($member_id, $paymentInfo); if (!$updated['success']) { //break; } } $result = $updated; if ($updated['success']) { $result = $updated; $result['success'] = true; $result['title'] = JText::_('DONE'); $result['content'] = JText::_('ADDED_SUCCESSFULLY'); } else { $result = $updated; $result['success'] = false; $result['title'] = JText::_('ERROR'); $result['content'] = JText::_("MEMBER_ID") . " :{$member_id} " . JText::_("FAILED_JOINING"); } } } $result = oseJson::encode($result); oseExit($result); }
function generateOrder($member_id, $payment_method, $orderPaymentInfo) { return oseRegistry::call('msc')->runAddonAction('register.payment.save', array('member_id' => $member_id, 'payment_method' => $payment_method), true, false); $result = array(); if (empty($member_id)) { $result['success'] = false; $result['title'] = 'Error'; $result['content'] = JText::_('Error'); return $result; } $paymentOrder = oseRegistry::call('payment')->getInstance('Order'); $params = array(); $items = $orderPaymentInfo['items']; unset($orderPaymentInfo['items']); $order_number = $paymentOrder->generateOrderNumber($member_id); $orderPaymentInfo['order_number'] = $order_number; $orderPaymentInfo['entry_type'] = 'msc_list'; $orderPaymentInfo['create_date'] = oseHTML::getDateTime();//date("Y-m-d H:i:s"); $orderPaymentInfo['payment_serial_number'] = substr($orderPaymentInfo['order_number'], 0, 20); $orderPaymentInfo['payment_method'] = 'system'; $orderPaymentInfo['payment_from'] = 'system_admin'; $orderPaymentInfo['payment_mode'] = 'm'; oseObject::setParams($orderPaymentInfo, array('time_stamp' => uniqid("{$member_id}_", true))); // Extra Order Params Updating Function $list = oseMscAddon::getAddonList('register_order', true, 1, 'obj'); foreach ($list as $addon) { $action_name = 'register_order.' . $addon->name . '.add'; //echo $action_name; $params = oseMscAddon::runAction($action_name, $orderPaymentInfo['params'], true, false); } // generate Order $updated = $paymentOrder->generateOrder('', $member_id, $orderPaymentInfo); if (!$updated) { $result['success'] = false; $result['title'] = 'Error'; $result['content'] = JText::_('Error'); return $result; } // generate orer item // in the backend, only manual payment $order_id = $result['order_id'] = $updated; $payment_mode = 'm'; foreach ($items as $item) { $itemParams = array(); $entry_type = oseObject::getValue($item, 'entry_type'); switch ($entry_type) { case ('license'): $license_id = oseObject::getValue($item, 'entry_id'); $license = oseRegistry::call('lic')->getInstance(0); $licenseInfo = $license->getKeyInfo($license_id, 'obj'); $licenseInfoParams = oseJson::decode($licenseInfo->params); $msc_id = $licenseInfoParams->msc_id; break; case ('msc'): $msc_id = oseObject::getValue($item, 'entry_id'); break; } $msc_option = oseObject::getValue($item, 'msc_option'); if (oseObject::getValue($item, 'eternal')) { $itemParams['payment_mode'] = 'm'; } else { $itemParams['payment_mode'] = 'm'; } $price = oseObject::getValue($item, 'a3'); if ($payment_mode == 'a') { if (oseObject::getValue($item, 'has_trial')) { $price = oseObject::getValue($item, 'a1'); } } $itemParams['entry_type'] = oseObject::getValue($item, 'entry_type'); $itemParams['payment_price'] = 0;//oseObject::getValue($item,'first_raw_price'); $itemParams['payment_currency'] = $orderPaymentInfo['payment_currency']; $itemParams['create_date'] = oseHTML::getDateTime();//date("Y-m-d H:i:s"); $price_params = $paymentOrder->generateOrderParams($msc_id, $price, $payment_mode, $msc_option); $price_params['start_date'] = oseObject::getValue($item, 'start_date', null); $price_params['expired_date'] = oseObject::getValue($item, 'expired_date', null); $itemParams['params'] = oseJSON::encode($price_params); $paymentInfos = oseMscAddon::getExtInfo($msc_id, 'payment', 'obj'); $paymentInfo = oseObject::getValue($paymentInfos, $msc_option); $updated = $paymentOrder->generateOrderItem($order_id, oseObject::getValue($item, 'entry_id'), $itemParams); } if ($updated) { $result['success'] = true; $result['title'] = JText::_('Done'); $result['content'] = JText::_('Done'); } else { $result['success'] = false; $result['title'] = 'Error'; $result['content'] = JText::_('Order Generate Error'); } return $result; }
function createMember() { $created = self::createUser(); if ($created['success']) { $member_id = JRequest::getInt('member_id', 0); $msc_id = JRequest::getInt('msc_id', 0); $msc_option = JRequest::getCmd('msc_option', null); if (empty($msc_id)) { $result['success'] = false; $result['title'] = JText::_('PLEASE_SELECT_MEMBERSHIP_PLAN_FIRST'); $result['content'] = JText::_('PLEASE_SELECT_ONE_PLAN_IN_THE_LEFT_SIDE_PANEL'); return $result; } if (empty($msc_option)) { $result['success'] = false; $result['title'] = JText::_('PLEASE_SELECT_MEMBERSHIP_PLAN_FIRST'); $result['content'] = JText::_('IF_THERE_IS_NO_OPTION_IN_THE_DROPDOWN_LIST_PLEASE_CREATE_ONE_IN_THE_PANEL_PAYMENT'); return $result; } $cart = oseMscPublic::getCart(); $cart->addItem(null, null, array('entry_id' => $msc_id, 'entry_type' => 'msc', 'msc_option' => $msc_option)); $cart->refreshCartItems(); $paymentInfo = $cart->output(); if (!empty($msc_option)) { $payment = oseRegistry::call('msc')->getExtInfo($msc_id, 'payment', 'array'); $payment = $payment[$msc_option]; $price = oseObject::getValue($payment, 'a3'); $paymentInfo['payment_price'] = $price; $paymentInfo = oseObject::setParams($paymentInfo, array('a3' => $price, 'total' => $price, 'next_total' => 0, 'subtotal' => $price)); } else { $paymentInfo['payment_price'] = '0.00'; $paymentInfo = oseObject::setParams($paymentInfo, array('a3' => 0, 'total' => 0, 'next_total' => 0)); } $result = oseMscPublic::generateOrder($member_id, 'system_admin', $paymentInfo); if (!$result['success']) { return $result; } $orderInfo = oseRegistry::call('payment')->getInstance('Order')->getOrder(array("`order_id`='{$result['order_id']}'"), 'obj'); $updated = oseMscPublic::processPayment($orderInfo); if ($updated['success']) { $result = $updated; $result['success'] = true; $result['title'] = JText::_('DONE'); $result['content'] = JText::_('ADDED_SUCCESSFULLY'); } else { $result = $updated; $result['success'] = false; $result['title'] = JText::_('ERROR'); $result['content'] = JText::_("MEMBER_ID") . " :{$member_id} " . JText::_("FAILED_JOINING"); } return $result; } else { return $created; } }