Профили

Запрос улучшений, интеграции с различными системами и т.д.
tasselchof
Сообщения: 168
Зарегистрирован: 2012-09-29 16:12:07

Профили

Сообщение tasselchof » 2015-01-21 14:46:03

Можно вообще второй профиль завести чтобы выбирать от кого платить? Типа реселлерство в панели? Или дописывать надо?

Аватара пользователя
Alex Keda
Сообщения: 2882
Зарегистрирован: 2009-10-07 14:30:54
Откуда: USSR
Поблагодарили: 19 раз

Профили

Сообщение Alex Keda » 2015-01-21 15:27:25

неа, нету такого

Отправлено спустя 40 секунд:
и вообще, кому платить или от кого?
второе - есть, первого - нет
Убей их всех! Бог потом рассортирует...

tasselchof
Сообщения: 168
Зарегистрирован: 2012-09-29 16:12:07

Профили

Сообщение tasselchof » 2015-01-21 22:15:53

Если напишу, сможешь в обновление включить?

Аватара пользователя
Alex Keda
Сообщения: 2882
Зарегистрирован: 2009-10-07 14:30:54
Откуда: USSR
Поблагодарили: 19 раз

Профили

Сообщение Alex Keda » 2015-01-21 22:46:22

ты так и не объяснил что делаешь-то
Убей их всех! Бог потом рассортирует...

tasselchof
Сообщения: 168
Зарегистрирован: 2012-09-29 16:12:07

Профили

Сообщение tasselchof » 2015-01-22 2:04:06

Alex Keda писал(а):ты так и не объяснил что делаешь-то


Я хочу сделать возможность выбора головного профиль (ща все счета выставляются от профиля системного юзера): то есть чтобы если есть НДС, был один профиль, если нет - другой.

Аватара пользователя
Alex Keda
Сообщения: 2882
Зарегистрирован: 2009-10-07 14:30:54
Откуда: USSR
Поблагодарили: 19 раз

Профили

Сообщение Alex Keda » 2015-01-22 9:29:24

Ну, создать и заюзать 101 какойнить профиль....
Убей их всех! Бог потом рассортирует...

tasselchof
Сообщения: 168
Зарегистрирован: 2012-09-29 16:12:07

Профили

Сообщение tasselchof » 2015-01-22 22:48:17

А вот с головного нет возможности второй создать.

Аватара пользователя
Alex Keda
Сообщения: 2882
Зарегистрирован: 2009-10-07 14:30:54
Откуда: USSR
Поблагодарили: 19 раз

Профили

Сообщение Alex Keda » 2015-01-23 0:36:30

что второй?
нормально как-то излагай мысль, а? =)
--
профиль второй чтоле? договор? незнаю, не пробовал.
зайди в базу и поменяй идентификатор в табличке.

нечастый изврат-то, даже не буду искать и пилить где это ограничение зашито.
Убей их всех! Бог потом рассортирует...

tasselchof
Сообщения: 168
Зарегистрирован: 2012-09-29 16:12:07

Профили

Сообщение tasselchof » 2015-01-24 2:56:20

Я сам запилю: я хочу добавить опцию у партнеров "Выставлять счет с реквизитов партнера" и в этом случае если аккаунт принадлежит партнеру, то выводить его реквизиты. Это, по идее, мена-просто должно быть, так как от одного идентификатора зависит. А импрув неплохой получается.

P.S. Ну мы ж говорили про профили, я и говорю про "нет возможности второй профиль сделать на головном аккаунте" =)

tasselchof
Сообщения: 168
Зарегистрирован: 2012-09-29 16:12:07

Профили

Сообщение tasselchof » 2015-01-26 4:00:13

Включите в апдейт, делается быстро:

Необходимо поправить файл: ./hosts/billing/comp/Users/Init.comp.php
После строки:

Код: Выделить всё

$GLOBALS['__USER']['IsAdmin'] = $IsAdmin;

Добавляем:

Код: Выделить всё

                                $ResellerProfile = 100;
                                if($GLOBALS['__USER']['IsAdmin']) {
                                    $Profiles = DB_Select('Profiles', Array('ID'), Array('Where' => "`UserID` = @local.__USER_ID AND `TemplateID` IN ('ResellerPartner')"));
                                    switch (ValueOf($Profiles)) {
                                        case 'error':
                                            return ERROR | @Trigger_Error(500);
                                        case 'exception':
                                            # No more...
                                            break;
                                        case 'array':
                                            $ResellerProfile = $Profiles[0]['ID'];
                                            break;
                                        #-------------------------------------------------------------------------------
                                        default:
                                            return ERROR | @Trigger_Error(101);
                                    }
                                }
                                $GLOBALS['__USER']['ResellerProfileID'] = $ResellerProfile;

После этого в объекте $GLOBALS['__USER'] всегда будет указано какой профиль реестра следует использовать, если у человека есть профиль ResellerPartner, то он будет использован (функция пока доступна только для администраторов - надо дописывать права на доступ к шаблонам счетов).
Далее ищем по файлам такую строку:

Код: Выделить всё

Array('ProfileID’=>100)

Например:

Код: Выделить всё

$Executor = Comp_Load('www/Administrator/API/ProfileCompile',Array('ProfileID'=>100));

И меняем ее на:

Код: Выделить всё

Array('ProfileID'=>$GLOBALS['__USER']['ResellerProfileID'])

Например:

Код: Выделить всё

$Executor = Comp_Load('www/Administrator/API/ProfileCompile',Array('ProfileID'=>$GLOBALS['__USER']['ResellerProfileID']));


Отправлено спустя 1 минуту 6 секунд:
Суть в том, что если такой профиль создан, то будут все счета выставляться с его реквизитов и статей ResellerPartner, а не тех, которые использует головной профиль.

Отправлено спустя 2 минуты 21 секунду:
Встретил в 5 файлах всего такой вызов.

Отправлено спустя 19 минут 31 секунду:
Небольшой update для файла: ./hosts/billing/comp/Users/Init.comp.php

В выбор пользователя добавить проверку OwnerID

Код: Выделить всё

$User = DB_Select('Users', Array('ID', 'GroupID', 'Name', 'Sign', 'Email', 'EmailConfirmed', 'MobileConfirmed', 'ICQ', 'JabberID', 'Mobile', 'UniqID', 'Params', 'LayPayMaxSumm', 'LayPayThreshold', 'OwnerID'), Array('UNIQ', 'ID' => $UserID));

Код выглядит так:

Код: Выделить всё

$ResellerProfile = 100;
if($GLOBALS['__USER']['IsAdmin'] || $User['OwnerID'] != 100) {
    $Profiles = DB_Select('Profiles', Array('ID'), Array('Where' => "(`UserID` = @local.__USER_ID OR `UserID` = {$User['OwnerID']}) AND `TemplateID` IN ('ResellerPartner')"));
    switch (ValueOf($Profiles)) {
        case 'error':
            return ERROR | @Trigger_Error(500);
        case 'exception':
            # No more...
            break;
        case 'array':
            if(count($Profiles) > 0) {
                $ResellerProfile = $Profiles[0]['ID'];
            }
            break;
        #-------------------------------------------------------------------------------
        default:
            return ERROR | @Trigger_Error(101);
    }
}
$GLOBALS['__USER']['ResellerProfileID'] = $ResellerProfile;


Отправлено спустя 13 минут 22 секунды:
Все забываю про ворсинги... if должен быть таким:

Код: Выделить всё

if(!empty($__GLOBALS['__USER']['OwnerID']) && (IsSet($GLOBALS['__USER']['IsAdmin']) && $GLOBALS['__USER']['IsAdmin']) || (IsSet($GLOBALS['__USER']['OwnerID']) && $GLOBALS['__USER']['OwnerID'] != 100)) {


Вернуться в «Запрос улучшений»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 9 гостей