public function setCommissionFee($fee = false)
 {
     if ($fee) {
         $this->commission_fee = $fee;
     } else {
         $institution = $this->my_purchase->getPurchaserInstitution();
         $eschool = $this->my_purchase->getPurchaseTypeApp();
         $this->commission_fee = GcrPurchaseTable::getCommissionFee($institution, $eschool);
     }
 }
 public function executeDoManualCourse(sfWebRequest $request)
 {
     global $CFG;
     $this->authorizeUser();
     $form = $request->getPostParameters();
     $course_data = explode('#', $form['purchase_type_id']);
     $form['purchase_type_eschool_id'] = $course_data[0];
     $form['purchase_type_id'] = $course_data[1];
     $institution = GcrInstitutionTable::getInstitution($form['user_institution_id']);
     if ($form['id'] != '') {
         // Edit of existing purchase
         $purchase = $this->getManualPurchase($form['id'], 'course');
         if (!($course = $this->eschool->getCourse($form['purchase_type_id']))) {
             $CFG->current_app->gcError('Invalid course ID ' . $form['purchase_type_id'], 'gcdatabaseerror');
         }
         if (!($mhr_user = $institution->selectFromMhrTable('usr', 'id', $form['purchase_user_field'], true))) {
             $CFG->current_app->gcError('Invalid user ID ' . $form['purchase_user_field'], 'gcdatabaseerror');
         }
         $manual_purchase_form = new GcrPurchaseCourseManualForm($purchase, array('eschool' => $institution));
         $form['user_id'] = $mhr_user->id;
         $form['purchase_type_id'] = $course->getObject()->id;
         $form['amount'] = $form['amount_field'];
         $form['trans_time'] = GcrPurchaseTable::convertDatetoTimestamp($form['trans_time']);
         $manual_purchase_form->bind($form);
         if ($manual_purchase_form->isValid()) {
             $purchase = $manual_purchase_form->save();
             $purchase->updateRelatedAccounting();
             $this->redirect($CFG->current_app->getUrl() . '/account/view?eschool=' . $institution->getShortName());
         }
     } else {
         // New purchase
         $this->eschool = GcrEschoolTable::getEschool($form['purchase_type_eschool_id']);
         $manual_purchase_form = new GcrPurchaseCourseManualForm(array(), array('eschool' => $institution));
         $form['purchase_type'] = 'course_manual';
         $form['user_id'] = $form['purchase_user_field'];
         $form['user_institution_id'] = $institution->getShortName();
         $form['amount'] = $form['amount_field'];
         $form['gc_fee'] = $this->eschool->getGcFeeCourse();
         $form['owner_fee'] = $this->eschool->getOwnerFeeCourse();
         $form['commission_fee'] = GcrPurchaseTable::getCommissionFee($institution, $this->eschool);
         $form['bill_cycle'] = 'single';
         $form['seller_id'] = 0;
         $form['trans_time'] = GcrPurchaseTable::convertDatetoTimestamp($form['trans_time']);
         $manual_purchase_form->bind($form);
         if ($manual_purchase_form->isValid()) {
             if (!($course = $this->eschool->getCourse($form['purchase_type_id']))) {
                 $CFG->current_app->gcError('Invalid course ID ' . $form['purchase_type_id'], 'gcdatabaseerror');
             } else {
                 if (!$institution->selectFromMhrTable('usr', 'id', $form['purchase_user_field'], true)) {
                     $CFG->current_app->gcError('Invalid user ID ' . $form['purchase_user_field'], 'gcdatabaseerror');
                 }
             }
             $purchase = $manual_purchase_form->save();
             $purchase->assignSeller();
             $purchase->updateRelatedAccounting();
             $this->redirect($CFG->current_app->getUrl() . '/account/view?eschool=' . $this->eschool->getInstitution()->getShortName());
         }
     }
     $this->course_form = $manual_purchase_form;
     $this->setTemplate('manualCourse');
 }