Пример #1
0
 /**
  * Returns current period instance
  *
  * @return <Doctrine_Object> instance of Period
  */
 public static function getCurrentPeriod()
 {
     $date = Period::getCurPeriodDate();
     $oPeriod = PeriodTable::getInstance()->findOneByDate($date);
     if (!$oPeriod instanceof Period) {
         // выставить новые тарифы на новый период
         UserTable::setNewTariffs();
         $oPeriod = new Period();
         // вычислить стоимость 1к знаков
         if (($prev = Period::getPrevPeriod()) === false) {
             $price1k = SettingTable::getOptionByName('price1k')->getValue();
         } else {
             // рассчитать веса пользователей
             UserTable::countWeights($prev);
             if (($price1k = VoteTable::getVoted1k($prev)) === false) {
                 $price1k = $prev->get1k();
             }
         }
         $oPeriod->set1k(number_format((double) $price1k, 2));
         // выставить процент
         $oPeriod->setR2rShare(number_format(Setting::getValueByName('percent_r2r'), 2, '.', ''));
         // --
         $oPeriod->setDate($date);
         $oPeriod->save();
         //throw new sfException('Cannot get current period. Error in DB data');
     }
     return $oPeriod;
 }
 /**
  * Creates a new model.
  * If creation is successful, the browser will be redirected to the 'show' page.
  */
 public function actionCreate()
 {
     $model = new Period();
     if (isset($_POST['Period'])) {
         $model->attributes = $_POST['Period'];
         $model->dateStart = User::parseDate($model->dateStart);
         $model->dateEnd = User::parseDate($model->dateEnd);
         $model->companyId = Yii::app()->user->getState('selectedCompanyId');
         if ($model->save()) {
             ChangeLog::addLog('ADD', 'Period', $model->toString());
             if (Yii::app()->user->getState('selectedPeriodId') == 0) {
                 $usersModel = User::model()->findbyPk(Yii::app()->user->id);
                 $usersModel->selectedPeriodId = $model->id;
                 $usersModel->confirmPassword = $usersModel->password;
                 $usersModel->save();
                 $usersModel->setStates(true);
                 $this->redirect(array('accountType/create'));
             } else {
                 $this->redirect(array('admin', 'id' => $model->id));
             }
         }
     }
     $model->dateStart = User::getDateFormatted(date('Y') . '-01-01');
     $model->dateEnd = User::getDateFormatted(date('Y') . '-12-31');
     $model->dateChanged = User::getDateFormatted(date('Y-m-d'));
     $this->render('create', array('model' => $model));
 }
Пример #3
0
 /**
  * This method will move current period down in sorting order.
  */
 public function move_down()
 {
     if (isset($this->id) && intval($this->id) > 0) {
         $down_period = new Period();
         $down_period->order_by('sorting', 'asc')->limit(1);
         $down_period->where('sorting >', $this->sorting);
         $down_period->get();
         if ($down_period->exists()) {
             $upsort = $down_period->sorting;
             $down_period->sorting = $this->sorting;
             if ($down_period->save()) {
                 $my_period = new Period();
                 $my_period->get_where(array('id' => $this->id));
                 $my_period->sorting = $upsort;
                 if ($my_period->save()) {
                     $this->sorting = $upsort;
                 }
             }
         }
     }
 }
Пример #4
0
 /**
  * @return Period
  */
 public static function getCurrentPeriod()
 {
     if (!self::$current) {
         $start = new DateTime();
         $start->setDate($start->format('Y'), $start->format('n'), 1)->setTime(0, 0, 0);
         $end = clone $start;
         $end = $end->modify('+' . cal_days_in_month(CAL_GREGORIAN, $start->format('n'), $start->format('Y')) . ' day')->modify('-1 sec');
         $period = Period::model()->findByAttributes(array('period_from' => $start->format(Task::DF_INTER), 'period_to' => $end->format(Task::DF_INTER)));
         if ($period == NULL) {
             $period = new Period();
             $period->period_from = $start->format(Task::DF_INTER);
             $period->period_to = $end->format(Task::DF_INTER);
             $period->status = self::STATUS_ACTIVE;
             $period->name = $start->format('F, Y');
             try {
                 $period->save();
             } catch (Exception $e) {
             }
         }
         self::$current = $period;
     }
     return self::$current;
 }
Пример #5
0
 public function update()
 {
     $this->load->library('form_validation');
     $period_id = intval($this->input->post('period_id'));
     $this->form_validation->set_rules('period_id', 'id', 'required');
     $this->form_validation->set_rules('period[name]', 'lang:admin_periods_form_field_name', 'required|callback__is_unique_name_not_in[' . $period_id . ']');
     $this->form_validation->set_message('_is_unique_name_not_in', $this->lang->line('admin_periods_form_error_message_is_unique_name_not_in'));
     if ($this->form_validation->run()) {
         $period = new Period();
         $period->get_by_id($period_id);
         if ($period->exists()) {
             $period_data = $this->input->post('period');
             $period->from_array($period_data, array('name'));
             $this->_transaction_isolation();
             $this->db->trans_begin();
             if ($period->save() && $this->db->trans_status()) {
                 $this->db->trans_commit();
                 $this->messages->add_message('lang:admin_periods_flash_message_save_successful', Messages::MESSAGE_TYPE_SUCCESS);
                 $this->_action_success();
             } else {
                 $this->db->trans_rollback();
                 $this->messages->add_message('lang:admin_periods_flash_message_save_failed', Messages::MESSAGE_TYPE_ERROR);
             }
         } else {
             $this->messages->add_message('lang:admin_periods_error_period_not_found', Messages::MESSAGE_TYPE_ERROR);
         }
         redirect(create_internal_url('admin_periods/index'));
     } else {
         $this->edit();
     }
 }
Пример #6
0
function list_import_lamsfet_courses_and_courses_terms(&$courses_terms, $courses)
{
    echo 'Starting courses import (' . count($courses_terms) . ') and periods import (' . count($courses) . ') ';
    $periods = array();
    if (count($courses_terms)) {
        foreach ($courses_terms as $course_term) {
            $periods[$course_term->year][$course_term->term] = isset($periods[$course_term->year][$course_term->term]) ? $periods[$course_term->year][$course_term->term] : new stdClass();
            $periods[$course_term->year][$course_term->term]->name = (strtoupper($course_term->term) == 'Z' ? 'Zimný semester ' : 'Letný semester ') . $course_term->year;
            $periods[$course_term->year][$course_term->term]->_list_id = NULL;
            $periods[$course_term->year][$course_term->term]->ids[] = $course_term->id;
        }
    }
    reset($periods);
    krsort($periods);
    if (count($periods)) {
        foreach ($periods as $year => $data) {
            reset($periods[$year]);
            ksort($periods[$year]);
            reset($periods[$year]);
        }
    }
    reset($periods);
    echo '... structure prepared ... [';
    $sorting = 1;
    if (count($periods)) {
        foreach ($periods as $year => $year_row) {
            if (count($year_row)) {
                foreach ($year_row as $term => $period) {
                    $list_period = new Period();
                    $list_period->name = $period->name;
                    $list_period->sorting = $sorting;
                    $list_period->save();
                    $periods[$year][$term]->_list_id = $list_period->id;
                    $sorting++;
                    echo '.';
                }
            }
        }
    }
    if (count($courses_terms) && count($courses)) {
        foreach ($courses_terms as $course_term) {
            $list_course = new Course();
            $list_course->name = $courses[$course_term->course_id]->name;
            $list_course->period_id = $periods[$course_term->year][$course_term->term]->_list_id;
            $list_course->capacity = 0;
            $list_course->groups_change_deadline = 0;
            $list_course->allow_subscription_to = '1970-01-01 00:00:00';
            $list_course->save();
            $courses_terms[$course_term->id]->_list_id = $list_course->id;
            echo '.';
        }
    }
    echo '] ... done' . "\n";
}
 private function importCompany($fileNameAndPath)
 {
     $allAccounts = array();
     $dom = new domDocument();
     if (!$dom->load($fileNameAndPath)) {
         throw new CException(Yii::t('lazy8', 'input file could not be xml parsed'));
     }
     $root = $dom->documentElement;
     if ($root->nodeName != "lazy8webport") {
         $this->hasErrors = true;
         $this->errors = array(array(Yii::t('lazy8', 'Upload failed.  This is not a valid file.'), Yii::t('lazy8', 'Select a file and try again')));
         $this->render('showimport');
         return 0;
     }
     if ($root->getAttribute('version') > 1.0) {
         $this->errors = array(array(Yii::t('lazy8', 'There maybe problems because this is a file version greater then this programs version'), Yii::t('lazy8', 'Select a file and try again')));
     }
     $nodeCompanys = $root->getElementsByTagName('company');
     unset($root);
     unset($dom);
     $this->lastImportedPeriod = 0;
     foreach ($nodeCompanys as $nodeCompany) {
         //make sure the company code is unique
         $modelCompany = new Company();
         $code = $nodeCompany->getAttribute('code');
         $code--;
         //make sure the company code is valid. Change if not.
         do {
             $code++;
             $comptest = Company::model()->find(array('condition' => 'code=' . $code));
         } while ($comptest !== null);
         //create the company
         $modelCompany = new Company();
         $modelCompany->code = $code;
         $modelCompany->name = $nodeCompany->getAttribute('name');
         $modelCompany->lastAbsTransNum = $nodeCompany->getAttribute('lastAbsTransNum');
         if (!$modelCompany->save()) {
             throw new CException(Yii::t('lazy8', 'Could not create the company, bad paramters') . ';' . var_export($modelCompany->getErrors()));
         }
         try {
             $allAccounts = array();
             $nodesAccountTypes = $nodeCompany->getElementsByTagName('accounttype');
             foreach ($nodesAccountTypes as $nodeAccountType) {
                 $modelAccountType = new AccountType();
                 $modelAccountType->companyId = $modelCompany->id;
                 $modelAccountType->code = $nodeAccountType->getAttribute('code');
                 $modelAccountType->name = $nodeAccountType->getAttribute('name');
                 $modelAccountType->sortOrder = $nodeAccountType->getAttribute('sortorder');
                 $modelAccountType->isInBalance = $nodeAccountType->getAttribute('isinbalance') == "1" ? 1 : 0;
                 if (!$modelAccountType->save()) {
                     $modelCompany->delete();
                     throw new CException(Yii::t('lazy8', 'Could not create the AccountType, bad paramters') . ';name=' . $modelAccountType->name . ';' . serialize($modelAccountType->getErrors()));
                 }
                 $nodesAccounts = $nodeAccountType->getElementsByTagName('account');
                 foreach ($nodesAccounts as $nodeAccount) {
                     $modelAccount = new Account();
                     $modelAccount->companyId = $modelCompany->id;
                     $modelAccount->code = $nodeAccount->getAttribute('code');
                     $modelAccount->accountTypeId = $modelAccountType->id;
                     $modelAccount->name = $nodeAccount->getAttribute('name');
                     if (!$modelAccount->save()) {
                         $modelCompany->delete();
                         throw new CException(Yii::t('lazy8', 'Could not create the Account, bad paramters') . ';' . serialize($modelAccount->getErrors()));
                     }
                     $allAccounts[$modelAccount->code] = $modelAccount->id;
                     unset($nodeAccount);
                     unset($modelAccount);
                 }
                 unset($modelAccountType);
                 unset($nodeAccountType);
             }
             unset($nodesAccountTypes);
             $allCustomers = array();
             $nodesCustomers = $nodeCompany->getElementsByTagName('customer');
             foreach ($nodesCustomers as $nodeCustomer) {
                 $modelCustomer = new Customer();
                 $modelCustomer->companyId = $modelCompany->id;
                 $modelCustomer->code = $nodeCustomer->getAttribute('code');
                 $modelCustomer->accountId = $this->FindAccountIdFromCode($nodeCustomer->getAttribute('accountcode'), $modelCompany->id, $allAccounts, 'customercode=' . $modelCustomer->code, $this->errors, true);
                 $modelCustomer->name = $nodeCustomer->getAttribute('name');
                 $modelCustomer->desc = $nodeCustomer->getAttribute('desc');
                 if (!$modelCustomer->save()) {
                     $modelCompany->delete();
                     throw new CException(Yii::t('lazy8', 'Could not create the Customer, bad paramters') . ';' . serialize($modelCustomer->getErrors()));
                 }
                 $allCustomers[$modelCustomer->code] = $modelCustomer->id;
                 unset($modelCustomer);
                 unset($nodeCustomer);
             }
             unset($nodesCustomers);
             $nodesPeriods = $nodeCompany->getElementsByTagName('period');
             foreach ($nodesPeriods as $nodePeriod) {
                 $modelPeriod = new Period();
                 $modelPeriod->companyId = $modelCompany->id;
                 $modelPeriod->dateStart = $nodePeriod->getAttribute('datestart');
                 $modelPeriod->dateEnd = $nodePeriod->getAttribute('dateend');
                 $modelPeriod->lastPeriodTransNum = $nodePeriod->getAttribute('lastperiodtransnum');
                 if (!$modelPeriod->save()) {
                     $modelCompany->delete();
                     throw new CException(Yii::t('lazy8', 'Could not create the period, bad paramters') . ';' . serialize($modelPeriod->getErrors()));
                 }
                 $this->lastImportedPeriod = $modelPeriod->id;
                 $nodesTransactions = $nodePeriod->getElementsByTagName('transaction');
                 foreach ($nodesTransactions as $nodeTransaction) {
                     $modelTransaction = new Trans();
                     $modelTransaction->companyId = $modelCompany->id;
                     $modelTransaction->companyNum = $nodeTransaction->getAttribute('code');
                     $modelTransaction->periodId = $modelPeriod->id;
                     $modelTransaction->periodNum = $nodeTransaction->getAttribute('periodnum');
                     $modelTransaction->regDate = $nodeTransaction->getAttribute('regdate');
                     $modelTransaction->invDate = $nodeTransaction->getAttribute('invdate');
                     $modelTransaction->notes = $nodeTransaction->getAttribute('notes');
                     $modelTransaction->fileInfo = $nodeTransaction->getAttribute('fileinfo');
                     if (!$modelTransaction->save()) {
                         $modelCompany->delete();
                         throw new CException(Yii::t('lazy8', 'Could not create the Transaction, bad paramters') . ';' . serialize($modelTransaction->getErrors()));
                     }
                     $nodesTransactionAmounts = $nodeTransaction->getElementsByTagName('amount');
                     foreach ($nodesTransactionAmounts as $nodeTransactionAmount) {
                         $modelTransRow = new TransRow();
                         $modelTransRow->transId = $modelTransaction->id;
                         $modelTransRow->accountId = $this->FindAccountIdFromCode($nodeTransactionAmount->getAttribute('accountcode'), $modelCompany->id, $allAccounts, 'TransCode=' . $modelTransaction->companyNum, $this->errors, true, true);
                         $modelTransRow->customerId = $this->FindCustomerIdFromCode($nodeTransactionAmount->getAttribute('customercode'), $modelCompany->id, $allCustomers, 'TransCode=' . $modelTransaction->companyNum, $this->errors, true);
                         $modelTransRow->notes = $nodeTransactionAmount->getAttribute('notes');
                         $modelTransRow->amount = $nodeTransactionAmount->getAttribute('amount');
                         if (!$modelTransRow->save()) {
                             $modelCompany->delete();
                             throw new CException(Yii::t('lazy8', 'Could not create the TransactionAmount, bad paramters') . ';' . serialize($modelTransRow->getErrors()));
                         }
                         unset($modelTransRow);
                     }
                     unset($modelTransaction);
                     unset($nodesTransactionAmounts);
                     unset($nodeTransaction);
                 }
                 unset($modelPeriod);
                 unset($nodePeriod);
                 unset($nodesTransactions);
             }
             unset($nodesPeriods);
         } catch (Exception $e) {
             $modelCompany->delete();
             throw $e;
         }
         $errors = array();
         //we ignore the errors...
         yii::app()->onImport(new Lazy8Event(array('importobject' => 'Company', 'root' => $nodeCompany, 'errors' => $errors), $modelCompany->id));
         unset($nodeCompany);
     }
     unset($nodeCompanys);
     ChangeLog::addLog('ADD', 'Company', 'Imported company ' . $modelCompany->toString());
     return $modelCompany->id;
 }