<?php require_once $_SERVER['DOCUMENT_ROOT'] . '/xajax/letters.common.php'; $xajax->printJavascript('/xajax/'); ?> <script type="text/javascript"> var deliveryList = { <?php $deliveries = letters::getDeliveries(); $html = ''; $html .= "0:'Не выбрано',"; foreach ($deliveries as $delivery) { $html .= "{$delivery['id']}:'{$delivery['title']}',"; } $html = preg_replace('/,$/', '', $html); echo $html; ?> }; is_templates_mode = true; </script> <div class="b-layout__txt"><a class="b-layout__link" href="/siteadmin/letters/?mode=templates">Все шаблоны</a> →</div> <?php if ($_GET['mode'] == 'edit_template') { ?> <h2 class="b-layout__title">Редактирование шаблона: <?php echo htmlspecialchars($template['title']);
<?php require_once $_SERVER['DOCUMENT_ROOT'] . '/xajax/letters.common.php'; $xajax->printJavascript('/xajax/'); $sym = letters::getCompaniesSymbols(); ?> <a href="/siteadmin/letters/?mode=add" class="b-button b-button_flat b-button_flat_green b-button_float_right">Добавить сторону</a> <h2 class="b-layout__title">Стороны</h2> <div class="b-fon b-fon_width_full b-fon_padbot_10 last-gift-block b-layout__txt_padtop_20" id="letters_msg" <?php echo $msgstr ? '' : 'style="display: none;"'; ?> > <div class="b-fon__body b-fon__body_pad_10 b-fon__body_fontsize_13 b-fon__body_bg_f0ffdf"> <div class="b-fon__txt b-fon__txt_center b-username"> <span class="b-fon__txt b-fon__txt_bold"><?php echo $msgstr; ?> </span> <br/> <a class="b-fon__link b-fon__link_bordbot_dot_0f71c8 b-fon__link_fontsize_11" href="javascript:void(0)" onclick="$('letters_msg').setStyle('display', 'none'); return false;">Скрыть</a> </div> </div> </div> <?php
/** * получить запись по умолчанию для списка пользователей и компаний. * */ private function getUserOrCompanyRecord() { require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/letters.php'; if ($_POST['type'] == 'user') { $user = users::GetUserShortInfoFinInfo((int) $_POST['uid']); $user['record']['isContacts'] = 1; //т. к. компании должны идти вторыми по дизайну return json_encode($user); } else { //Здесь надо получить запись о компании use (int)$_POST["uid"] $company = letters::getCompany((int) $_POST['uid']); $i['uid'] = $company['id']; $i['uname'] = iconv('WINDOWS-1251', 'UTF-8//IGNORE', $company['name']); $i['address'] = iconv('WINDOWS-1251', 'UTF-8//IGNORE', "{$company['country_title']}, {$company['city_title']}, {$company['index']}, {$company['address']}"); $i['usurname'] = ''; $i['login'] = ''; $i['photo'] = ''; $i['isContacts'] = 0; $i['isCompany'] = 1; $data = array('record' => $i, 'found' => 1, 'dav' => WDCPREFIX); return json_encode($data); } }
if ($letter['docs']) { $table_post_our = true; $t = preg_split('/-/', $key); if ($t[1] == 't') { $company = letters::getCompany($t[0]); if ($company['frm_type']) { $user_name = $company['frm_type'] . ' "' . $company['name'] . '"'; } else { $user_name = $company['name']; } $address = "{$company['index']}, {$company['country_title']}, {$company['city_title']}, {$company['address']}"; $phone = ''; $fio = $company['fio']; array_push($envelopes, array('user' => $user_name, 'address' => $address)); } else { $recipient = letters::getUserReqvs($t[0]); $user = new users(); $user->GetUserByUID($t[0]); $address = ($recipient['form_type'] == 1 ? $recipient[1]['index'] : $recipient[2]['index']) . ', ' . ($recipient['form_type'] == 1 ? $recipient[1]['country'] : $recipient[2]['country']) . ', ' . ($recipient['form_type'] == 1 ? $recipient[1]['city'] : $recipient[2]['city']) . ', ' . ($recipient['form_type'] == 1 ? $recipient[1]['address'] : $recipient[2]['address']); $user_name = $recipient['form_type'] == 1 ? $recipient[1]['fio'] : $recipient[2]['full_name']; $phone = $recipient['form_type'] == 1 ? $recipient[1]['phone'] : $recipient[2]['phone']; $fio = $recipient['form_type'] == 1 ? $recipient[1]['fio'] : $recipient[2]['fio']; array_push($envelopes, array('user' => $recipient['form_type'] == 1 ? $recipient[1]['fio'] : $recipient[2]['full_name'], 'address' => $address)); } $worksheet->setRow($n, 35); $worksheet->write($n, 0, $n - 2, $fmtMB); $worksheet->write($n, 1, $user_name, $fmtMB); $worksheet->write($n, 2, $address, $fmtMB); $worksheet->write($n, 3, $phone, $fmtMB); $worksheet->write($n, 4, $fio, $fmtMB); $worksheet->write($n, 5, '', $fmtMB);
<input id="letters_doc_frm_user1_status_data" name="letters_doc_frm_user1_status_data" type="hidden" value="0"> <input id="letters_doc_frm_user2_status_data" name="letters_doc_frm_user2_status_data" type="hidden" value="0"> <input id="letters_doc_frm_user3_status_data" name="letters_doc_frm_user3_status_data" type="hidden" value="0"> <input id="letters_doc_frm_user1_status_date_data" name="letters_doc_frm_user1_status_date_data" type="hidden" value=""> <input id="letters_doc_frm_user2_status_date_data" name="letters_doc_frm_user2_status_date_data" type="hidden" value=""> <input id="letters_doc_frm_user3_status_date_data" name="letters_doc_frm_user3_status_date_data" type="hidden" value=""> <div class="b-shadow__right"> <div class="b-shadow__left"> <div class="b-shadow__top"> <div class="b-shadow__bottom"> <div class="b-shadow__body b-shadow__body_bg_fff b-shadow__body_pad_15"> <div id="l_form_10" class="b-shadow__title b-shadow__title_padbot_15"> <select onchange="letters.selectTemplate(this.value);"> <option value="0">Выберите шаблон</option> <?php $templates = letters::getTemplatesList(); if ($templates) { foreach ($templates as $template) { ?> <option value="<?php echo $template['id']; ?> "><?php echo $template['title'] ? htmlspecialchars($template['title']) : '[без названия]'; ?> </option> <?php } } ?> </select>
$old_value = $huser->uname . ' ' . $huser->usurname . ' [' . $huser->login . ']'; } else { $company = letters::getCompany(intval($v1)); $old_value = $company['name']; } } else { $old_value = "Нет"; } if ($ihistory['val_new']) { list($v1, $v2) = preg_split("/-/", $ihistory['val_new']); if (intval($v2) == 0) { $huser = new users(); $huser->GetUserByUID(intval($v1)); $new_value = $huser->uname . ' ' . $huser->usurname . ' [' . $huser->login . ']'; } else { $company = letters::getCompany(intval($v1)); $new_value = $company['name']; } } else { $new_value = "Нет"; } break; default: $old_value = reformat(htmlspecialchars($ihistory['val_old']), 20); $new_value = reformat(htmlspecialchars($ihistory['val_new']), 20); break; } ?> <?php echo $old_value; ?>
/** * Сохранить шаблон. * * @param string $data JSON данные * * @return object xajaxResponse */ function updateTemplate($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(); $frm['letters_doc_frm_delivery_cost'] = preg_replace('/,/', '.', $frm['letters_doc_frm_delivery_cost']); } letters::updateTemplate($frm_data); letters::delTemplateDocs($frm_data['template_id']); 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['letters_doc_frm_template_id'] = $frm_data['template_id']; letters::addTemplateDoc($frm); } $objResponse->script('window.location = "/siteadmin/letters/?mode=templates&msg=eok";'); } return $objResponse; }
break; case 'insert': letters::addCompany($_POST); header('Location: /siteadmin/letters/?mode=company&msg=aok'); exit; break; case 'edit': $company = letters::getCompany($_GET['id']); if (!$company) { header('Location: /siteadmin/letters/?mode=company'); exit; } $inner_page = "inner_company_frm.php"; break; case 'update': letters::updateCompany($_POST); header('Location: /siteadmin/letters/?mode=company&msg=eok'); exit; break; default: $inner_page = "inner_index.php"; break; } $page = $_GET['page']; switch ($page) { case 'tab': $js_cmd = 'tab'; $js_cmd_var1 = intval($_GET['tab']); break; case 'group': $js_cmd = 'group';
/** * получить запись по умолчанию для списка пользователей и компаний * */ private function getUserOrCompanyRecord() { require_once $_SERVER["DOCUMENT_ROOT"] . "/classes/letters.php"; if ($_POST["type"] == "user") { $user = users::GetUserShortInfoFinInfo((int) $_POST["uid"]); $user["record"]["isContacts"] = 1; //т. к. компании должны идти вторыми по дизайну return json_encode($user); } else { //Здесь надо получить запись о компании use (int)$_POST["uid"] $company = letters::getCompany((int) $_POST["uid"]); $i["uid"] = $company['id']; $i["uname"] = iconv("WINDOWS-1251", "UTF-8//IGNORE", $company['name']); $i["address"] = iconv("WINDOWS-1251", "UTF-8//IGNORE", "{$company['country_title']}, {$company['city_title']}, {$company['index']}, {$company['address']}"); $i["usurname"] = ""; $i["login"] = ""; $i['photo'] = ""; $i["isContacts"] = 0; $i["isCompany"] = 1; $data = array("record" => $i, "found" => 1, "dav" => WDCPREFIX); return json_encode($data); } }
<input id="letters_filter_add_user" name="letters_filter_add_user" class="b-combo__input-text" name="" type="text" size="80" value=""> <span class="b-combo__arrow-user"></span> </div> </div> </div> <div class="b-form b-form_padbot_20"> <div class="b-form__name b-form__name_width_70">Статусы</div> <div class="b-radio b-radio_layout_vertical b-radio_inline-block"> <div class="b-radio__item b-radio__item_padbot_10"> <input id="letters_filter_status_0" name="letters_filter_status" type="radio" value="" class="b-radio__input" onClick="letters.changeStatus('filter', 0);"> <label for="letters_filter_status_0" class="b-radio__label b-radio__label_fontsize_13"> Любой </label> </div> <?php $statuses = letters::getStatuses(); foreach ($statuses as $status) { ?> <div class="b-radio__item b-radio__item_padbot_10"> <input id="letters_filter_status_<?php echo $status['id']; ?> " name="letters_filter_status" type="radio" value="<?php echo $status['id']; ?> " class="b-radio__input" onClick="letters.changeStatus('filter', <?php echo $status['id']; ?> );"> <label for="letters_filter_status_<?php echo $status['id'];
/** * Создать письма в разделе /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; }
/** * Запись истории изменения документа * * @param integer $id ID документа * @param array $new_data Новые данные документа */ function saveHistory($id, $new_data) { global $DB; $old_data = letters::getDocument($id); $changed = array(); if ($new_data) { foreach ($new_data as $key => $new_val) { if ($key == 'user_status_date_1' || $key == 'user_status_date_2' || $key == 'user_status_date_3') { $old_data = preg_replace("/ .*\$/", "", $old_data); } if ($key == 'is_user_1_company' || $key == 'is_user_2_company' || $key == 'is_user_3_company') { continue; } if ($key == 'user_1' || $key == 'user_2' || $key == 'user_3') { $oldIsCompany = $old_data["is_{$key}_company"] === 't' ? 't' : 'f'; // избавляемся от null $newIsCompany = $new_data["is_{$key}_company"] === 't' ? 't' : 'f'; if ($new_val != $old_data[$key] || ($new_val || $old_data[$key]) && $newIsCompany != $oldIsCompany) { $changed[] = $key; } } else { if ($new_val != $old_data[$key]) { $changed[] = $key; } } } } if ($changed) { $qgroups = $DB->rows("SELECT * FROM letters_group"); foreach ($qgroups as $v) { $groups[$v['id']] = $v['title']; } $qdeliveries = $DB->rows("SELECT * FROM letters_delivery"); foreach ($qdeliveries as $v) { $deliveries[$v['id']] = $v['title']; } $qstatuses = $DB->rows("SELECT * FROM letters_status"); foreach ($qstatuses as $v) { $statuses[$v['id']] = $v['title']; } $statuses[0] = 'Не выбрано'; foreach ($changed as $change_type) { switch ($change_type) { case 'title': $type_field = 1; $old_val = $old_data['title']; $new_val = $new_data['title']; break; case 'group_id': $type_field = 2; $old_val = $groups[$old_data['group_id']]; $new_val = $groups[$new_data['group_id']]; break; case 'user_1': $type_field = 3; $old_val = $old_data['user_1'] . '-' . ($old_data['is_user_1_company'] === 't' ? '1' : '0'); $new_val = $new_data['user_1'] . '-' . ($new_data['is_user_1_company'] === 't' ? '1' : '0'); break; case 'user_2': $type_field = 4; $old_val = $old_data['user_2'] . '-' . ($old_data['is_user_2_company'] === 't' ? '1' : '0'); $new_val = $new_data['user_2'] . '-' . ($new_data['is_user_2_company'] === 't' ? '1' : '0'); break; case 'user_3': $type_field = 5; $old_val = $old_data['user_3'] . '-' . ($old_data['is_user_3_company'] === 't' ? '1' : '0'); $new_val = $new_data['user_3'] . '-' . ($new_data['is_user_3_company'] === 't' ? '1' : '0'); break; case 'user_status_1': case 'user_status_date_1': $type_field = 6; $old_val = $statuses[$old_data['user_status_1']]; $new_val = $statuses[$new_data['user_status_1']]; if ($old_data['user_status_1'] == 2 || $old_data['user_status_1'] == 3) { $old_val .= ' ' . dateFormat("d.m.Y", $old_data['user_status_date_1']); } if ($new_data['user_status_1'] == 2 || $new_data['user_status_1'] == 3) { $new_val .= ' ' . dateFormat("d.m.Y", $new_data['user_status_date_1']); } break; case 'user_status_2': case 'user_status_date_2': $type_field = 7; $old_val = $statuses[$old_data['user_status_2']]; $new_val = $statuses[$new_data['user_status_2']]; if ($old_data['user_status_2'] == 2 || $old_data['user_status_2'] == 3) { $old_val .= ' ' . dateFormat("d.m.Y", $old_data['user_status_date_2']); } if ($new_data['user_status_2'] == 2 || $new_data['user_status_2'] == 3) { $new_val .= ' ' . dateFormat("d.m.Y", $new_data['user_status_date_2']); } break; case 'user_status_3': case 'user_status_date_3': $type_field = 8; $old_val = $statuses[$old_data['user_status_3']]; $new_val = $statuses[$new_data['user_status_3']]; if ($old_data['user_status_3'] == 2 || $old_data['user_status_3'] == 3) { $old_val .= ' ' . dateFormat("d.m.Y", $old_data['user_status_date_3']); } if ($new_data['user_status_3'] == 2 || $new_data['user_status_3'] == 3) { $new_val .= ' ' . dateFormat("d.m.Y", $new_data['user_status_date_3']); } break; case 'delivery': $type_field = 9; $old_val = $deliveries[$old_data['delivery']]; $new_val = $deliveries[$new_data['delivery']]; break; case 'delivery_cost': $type_field = 10; $old_val = $old_data['delivery_cost']; $new_val = $new_data['delivery_cost']; break; case 'parent': $type_field = 11; if ($old_data['parent']) { $old_doc = letters::getDocument($old_data['parent']); $old_val = "ID{$old_doc['id']} {$old_doc['title']}"; } else { $old_val = "Нет"; } if ($new_data['parent']) { $new_doc = letters::getDocument($new_data['parent']); $new_val = "ID{$new_doc['id']} {$new_doc['title']}"; } else { $new_val = "Нет"; } break; case 'comment': $type_field = 12; $old_val = $old_data['comment']; $new_val = $new_data['comment']; break; default: $type_field = null; break; } if ($type_field) { $sql = "INSERT INTO letters_history(\n doc_id, \n type_field, \n val_old, \n val_new, \n change_date, \n user_id\n ) VALUES (\n ?i,\n ?i,\n ?,\n ?,\n NOW(),\n ?i\n ); "; $DB->query($sql, $id, $type_field, $old_val, $new_val, get_uid(false)); } } } }