Example #1
0
/**
 * Добавить корреспонденцию.
 * 
 * @param array  $frm_one  Информация о письме
 * @param string $frm_data JSON если добавляется несколько документов сразу
 *
 * @return object xajaxResponse
 */
function addLetter($frm_one, $frm_data)
{
    global $objLetters;
    $objResponse = new xajaxResponse();
    if (hasPermissions('letters') && hasPermissions('adm')) {
        $errors = array();
        $frm_data = iconv('CP1251', 'UTF-8', $frm_data);
        $frm_data = stripcslashes($frm_data);
        $frm_data = json_decode($frm_data, true);
        if ($frm_data) {
            foreach ($frm_data as $k => $v) {
                $frm_data[$k] = iconv('UTF-8', 'CP1251', $v);
            }
        }
        $n = 0;
        for ($n = 0; $n < $frm_data['count_docs']; ++$n) {
            $frm = array();
            foreach ($frm_data as $k => $v) {
                if (preg_match('/^' . $n . '-/', $k)) {
                    $key = preg_replace('/^' . $n . '-/', '', $k);
                    $frm[$key] = $v;
                }
            }
            $errors = array();
            if (trim($frm['letters_doc_frm_title']) == '') {
                $errors['letters_doc_frm_title'] = 'Вы не ввели название документа';
            }
            /*
            if(trim($frm['letters_doc_frm_group'])=='') {
                $errors['letters_doc_frm_group'] = 'Вы не ввели группу документа';
            }
            */
            if (!$frm['letters_doc_frm_user_1_db_id'] || $frm['letters_doc_frm_user_1_db_id'] == 'null') {
                $errors['letters_doc_frm_user_1'] = 'Вы не выбрали пользователя';
            } else {
                /*
                if($frm['letters_doc_frm_user1_status_data']==0) {
                    $errors['letters_doc_frm_user_1'] = 'Вы не выбрали статус';
                }
                */
            }
            if (!$frm['letters_doc_frm_user_2_db_id'] || $frm['letters_doc_frm_user_2_db_id'] == 'null') {
                $errors['letters_doc_frm_user_2'] = 'Вы не выбрали пользователя';
            } else {
                /*
                if($frm['letters_doc_frm_user2_status_data']==0) {
                    $errors['letters_doc_frm_user_2'] = 'Вы не выбрали статус';
                }
                */
            }
            if ($frm['letters_doc_frm_user_3_db_id']) {
                /*
                if($frm['letters_doc_frm_user3_status_data']==0) {
                    $errors['letters_doc_frm_user_3'] = 'Вы не выбрали статус';
                }
                */
            }
            if ($frm['letters_doc_frm_user_1_db_id'] == $frm['letters_doc_frm_user_2_db_id'] && $frm['letters_doc_frm_user_1_db_id'] && $frm['letters_doc_frm_user_2_db_id'] && $frm['letters_doc_frm_user_1_db_id'] != 'null' && $frm['letters_doc_frm_user_2_db_id'] != 'null') {
                $errors['letters_doc_frm_user_1'] = 'Пользователи не могут быть одинаковыми';
                $errors['letters_doc_frm_user_2'] = 'Пользователи не могут быть одинаковыми';
            }
            if ($frm['letters_doc_frm_user_3_db_id'] && $frm['letters_doc_frm_user_3_db_id'] != 'null' && $frm['letters_doc_frm_user_2_db_id'] && $frm['letters_doc_frm_user_2_db_id'] != 'null' && $frm['letters_doc_frm_user_1_db_id'] && $frm['letters_doc_frm_user_1_db_id'] != 'null') {
                if ($frm['letters_doc_frm_user_1_db_id'] == $frm['letters_doc_frm_user_3_db_id']) {
                    $errors['letters_doc_frm_user_1'] = 'Пользователи не могут быть одинаковыми';
                    $errors['letters_doc_frm_user_3'] = 'Пользователи не могут быть одинаковыми';
                }
                if ($frm['letters_doc_frm_user_2_db_id'] == $frm['letters_doc_frm_user_3_db_id']) {
                    $errors['letters_doc_frm_user_2'] = 'Пользователи не могут быть одинаковыми';
                    $errors['letters_doc_frm_user_3'] = 'Пользователи не могут быть одинаковыми';
                }
            }
            /*
            if(!$frm['letters_doc_frm_delivery_db_id']) {
                $errors['letters_doc_frm_delivery'] = 'Вы не выбрали тип доставки';
            }
            */
            $frm['letters_doc_frm_delivery_cost'] = preg_replace('/,/', '.', $frm['letters_doc_frm_delivery_cost']);
            if ($frm['letters_doc_frm_delivery_cost'] && (!floatval($frm['letters_doc_frm_delivery_cost']) || floatval($frm['letters_doc_frm_delivery_cost']) < 0)) {
                $errors['letters_doc_frm_delivery_cost'] = 'Вы не ввели недопустимое значение';
            }
            if ($errors) {
                break;
            }
        }
        if ($errors) {
            foreach ($errors as $key => $val) {
                $objResponse->script("\$('{$key}').set('title', '{$val}');");
                $objResponse->script("\$('{$key}').getParent().addClass('b-combo__input_error');");
            }
            $objResponse->script('letters.M_ShowDoc(' . ($n + 1) . ', false);');
        } else {
            for ($n = 0; $n < $frm_data['count_docs']; ++$n) {
                $frm = array();
                foreach ($frm_data as $k => $v) {
                    if (preg_match('/^' . $n . '-/', $k)) {
                        $key = preg_replace('/^' . $n . '-/', '', $k);
                        $frm[$key] = $v;
                    }
                }
                $frm['attachedfiles_file'] = $frm_one['attachedfiles_file'];
                $frm['attachedfiles_uid'] = $frm_one['attachedfiles_uid'];
                $frm['attachedfiles_action'] = $frm_one['attachedfiles_action'];
                $frm['attachedfiles_delete'] = $frm_one['attachedfiles_delete'];
                $frm['attachedfiles_type'] = $frm_one['attachedfiles_type'];
                $frm['attachedfiles_session'] = $frm_one['attachedfiles_session'];
                letters::addDocument($frm);
            }
            $objResponse->script('letters.spinner.hide();');
            $objResponse->script('letters.hideAddForm();');
            $objResponse->script('letters.changeTabs(1);');
        }
        $objResponse->script('status_can_submit = true;');
    }
    return $objResponse;
}
 /**
  * Создать письма в разделе /siteadmin/letters/ для БС архива
  * 
  * @param type $ids
  * @param CFile $cfile
  */
 public function addArchiveToLetters($ids, CFile $cfile)
 {
     require_once ABS_PATH . '/classes/reserves/ReservesTServiceOrderModel.php';
     require_once ABS_PATH . '/classes/letters.php';
     //require_once(ABS_PATH . '/classes/country.php');
     require_once ABS_PATH . '/classes/city.php';
     $users_reqv = ReservesTServiceOrderModel::model()->getReservesBankReqvByIds($ids);
     if (!$users_reqv) {
         return false;
     }
     $letters = new letters();
     $letter_ids_exist = $this->getLetterIds($ids);
     $letter_ids_new = array();
     //$countryObject = new country();
     $cityObject = new city();
     foreach ($users_reqv as $user_reqv) {
         $uid = $user_reqv['uid'];
         $src_id = $user_reqv['src_id'];
         $address = $user_reqv['address'];
         $country_id = null;
         $city_id = null;
         if ($res = parseAddress($address)) {
             $address = $res['address'];
             $country_id = $res['country_id'];
             $city_id = $res['city_id'];
         }
         if (!$city_id) {
             $city_name = trim(str_replace('г.', '', $user_reqv['city']));
             $city_data = $cityObject->getByName($city_name);
             if ($city_data) {
                 $country_id = $city_data['country_id'];
                 $city_id = $city_data['id'];
             }
         }
         if (!$city_id) {
             $city_id = $user_reqv['city_id'];
         }
         if (!$country_id) {
             $country_id = $user_reqv['country_id'];
         }
         $name = htmlspecialchars_decode($user_reqv['name'], ENT_QUOTES);
         $letter_company_id = $letters->findCompanyId(array('fio' => $user_reqv['fio'], 'name' => $name, 'address' => $address, 'index' => $user_reqv['index']));
         if (!$letter_company_id) {
             $letter_company_id = $letters->addCompany(array('frm_company_name' => $name, 'country_columns' => array($country_id, $city_id), 'frm_company_index' => $user_reqv['index'], 'frm_company_address' => $address, 'frm_company_fio' => $user_reqv['fio'], 'frm_company_type' => sbr_meta::$types_short[$user_reqv['type']]));
         }
         $frm = array('letters_doc_frm_title' => sprintf(ReservesTServiceOrderModel::NUM_FORMAT, $user_reqv['src_id']), 'letters_doc_frm_user_1_db_id' => 4, 'letters_doc_frm_user_2_db_id' => $letter_company_id, 'letters_doc_frm_delivery_db_id' => 1, 'letters_doc_frm_user2_status_data' => 11, 'letters_doc_frm_user_1_section' => true, 'letters_doc_frm_user_2_section' => true, 'letters_doc_frm_group' => sprintf(self::LETTER_GROUP_TXT, $cfile->getOriginalName()), 'letters_doc_frm_comment' => sprintf(self::LETTER_COMMENT, $cfile->getUrl()));
         if (isset($letter_ids_exist[$src_id])) {
             $letters->updateDocument($letter_ids_exist[$src_id], $frm);
         } else {
             $letter_ids_new[] = array('letter_id' => $letters->addDocument($frm), 'order_id' => $src_id);
         }
     }
     if (!empty($letter_ids_new)) {
         $this->addLetterIds($letter_ids_new);
     }
     return true;
 }