Перейти к содержимому


Распределение суммы в счете+доп.действие


Сообщений в теме: 16

#1 Dinara

    Активный участник

  • Пользователи
  • PipPipPip
  • 527 сообщений
  • Пол:Женщина
  • Город:Уфа

Отправлено 23 Июль 2013 - 13:46

Есть новая таблица, куда подтягивается значение "Тариф" из другой таблицы, при этом сумма проставляется в зависимости от выбранного тарифа.
Проблема: Сумма, подставляемая в это поле-не статичная,она может меняться. Чтобы это было возможно,мне здесь подсказали ставить условие "При изменении поля Тариф" вычисление $line['Сумма итого'] = $line['Тариф']['Сумма'];
НО! Получается, что поле "Сумма" покажется только тогда, когда мы сохраним таблицу.
При этом у меня есть поля "Суммы менеджеров",которые зависят от поля "Сумма итого".
Действия-выбираем поле Тариф, нажимаем на сохранить. Поле "Сумма итого" появилось. Чтобы теперь поля "Суммы менеджеров" заполнились-необходимо заново нажать на редактировать,только потом сохранить..Муторно?Да..((
1.Выбрали тариф http://take.ms/2hzRS и заполнили поля процентов Сохранить
2. http://take.ms/fqYu7f подставилось поле сумма итого
3. Редактировать, сохранить, появились поля ниже http://take.ms/Jbs5u
Еще раз-условие-сумму можно было менять со стандартной тарифной на другую...


Проблема 2: Доп действие с одной таблицы "Совместная работа менеджеров" в "Счета"
$schet = data_table("Счета","id=$ID");
$kontr = data_table("Совместная работа менеджеров","id=$ID");
$schet['На кого'] = $kontr['Контрагент'];  
$schet['Выписал'] = $kontr['Менеджер'];
$schet['Сумма менеджера'] = $kontr['Сумма менеджера'];
$schet['МенеджерРО'] = $kontr['Менеджер РО'];
$schet['СуммаРО'] = $kontr['Сумма менеджера РО'];
$schet['Процент менеджера'] = $kontr['Процент менеджера'];
$schet['Процент менеджера РО'] = $kontr['Процент менеджера РО'];
$schet['Тариф'] = $kontr['Тариф'];
$schet['Сумма'] = $kontr['Сумма'];
$new_id = insert_query($schet, "Счета");
echo "<script>location.href='".$config["site_root"]."/view_line.php?table=43&line=".$new_id."&edit_mode&back_url=".$base64_current_url."'</script>";


https://api.monosnap...fxAuFuYMG4t540r

Вот такая ошибка. Получается, что id таблицы счета и id таблицы "Совместная работа менеджеров" совпадают...Но,почему так происходит?..я мог сейчас увеличить id таблицы совместной работы,чтобы не совпадали,но это не решение проблемы..когда-то могут совпасть ведь..

#2 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 693 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 23 Июль 2013 - 14:53

Цитата

Получается, что id таблицы счета и id таблицы "Совместная работа менеджеров" совпадают...Но,почему так происходит?.

Так происходит, потому что вы зачем-то открыли запись в таблице Счет с условием "id=$ID", т.е. с id текущей записи таблицы "Совместная работа менеджеров":
$schet = data_table("Счета","id=$ID");

Зачем Вы это сделали, для меня загадка, это абсолютно бессмысленная в данном контексте команда. Вам нужно добавить счет, а не открывать его, тем более с непонятным условием.

Остальные строки формально верны, но при этом устарели. Непонятно зачем вы используете примеры вычислений из документации по устаревшим версиям. Функция data_table с условием "id=$ID" сейчас вообще не нужна, вместо него есть более быстрый $line, в котором уже есть поля текущей записи:

$schet['На кого'] = $line['Контрагент'];
$schet['Выписал'] = $line['Менеджер'];
$schet['Сумма менеджера'] = $line['Сумма менеджера'];
$schet['МенеджерРО'] = $line['Менеджер РО'];
$schet['СуммаРО'] = $line['Сумма менеджера РО'];
$schet['Процент менеджера'] = $line['Процент менеджера'];
$schet['Процент менеджера РО'] = $line['Процент менеджера РО'];
$schet['Тариф'] = $line['Тариф'];
$schet['Сумма'] = $line['Сумма'];
$new_id = insert_query($schet, "Счета");
echo "<script>location.href='".$config["site_root"]."/view_line.php?table=43&line=".$new_id."&edit_mode&back_url=".$base64_current_url."'</script>";


#3 Dinara

    Активный участник

  • Пользователи
  • PipPipPip
  • 527 сообщений
  • Пол:Женщина
  • Город:Уфа

Отправлено 23 Июль 2013 - 16:32

Спасибо,попробую..
А по первой части вопроса что можете сказать?

#4 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 693 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 23 Июль 2013 - 16:54

Просмотр сообщенияDinara (23 Июль 2013 - 16:32) писал:

А по первой части вопроса что можете сказать?

Вычисления в основной записи (не в подтаблице) в любом случае срабатывают только после нажатия на кнопку Сохранить.

#5 Dinara

    Активный участник

  • Пользователи
  • PipPipPip
  • 527 сообщений
  • Пол:Женщина
  • Город:Уфа

Отправлено 25 Июль 2013 - 06:56

Только почему-то теперь не срабатывает доп.действие,хотя до этого было все корректно О_о
Исходная карточка и поля,которые должны переноситься
http://take.ms/2kNHSj
http://take.ms/9Jorp3

Вычисление
$schet['Тариф']=$line['Тариф'];
$schet['Сумма']=$line['Сумма итого'];
$schet['На кого']=$line['Контрагент'];
$schet['Выписал']=$line['Менеджер'];
$schet['Сумма менеджера']=$line['Сумма менеджера'];
$schet['Менеджер РО']=$line['Менеджер РО'];
$schet['Сумма менеджера РО']=$line['Сумма менеджера РО'];
$schet['Процент менеджера']=$line['Процент менеджера'];
$schet['Процент менеджера РО']=$line['Процент менеджера РО'];
$new_id = insert_query($schet,"Счета");
echo "<script>location.href='".$config["site_root"]."/view_line.php?table=43&line=".$new_id."&edit_mode&back_url=".$base64_current_url."'</script>";


Не перенеслись поля типа "Связь"

Тариф
На кого (Контрагент)
Выписал (Менеджер)
Менеджер РО (Менеджер РО)

Как такое может быть?

#6 Dinara

    Активный участник

  • Пользователи
  • PipPipPip
  • 527 сообщений
  • Пол:Женщина
  • Город:Уфа

Отправлено 25 Июль 2013 - 07:14

$kontr = data_table("Совместная работа менеджеров","id=$ID");
$schet['На кого'] = $kontr['Контрагент']; 
$schet['Сумма менеджера'] = $kontr['Сумма менеджера'];
$schet['Менеджер РО'] = $kontr['Менеджер РО'];
$schet['Сумма менеджера РО'] = $kontr['Сумма менеджера РО'];
$schet['Процент менеджера'] = $kontr['Процент менеджера'];
$schet['Процент менеджера РО'] = $kontr['Процент менеджера РО'];
$schet['Тариф'] = $kontr['Тариф'];
$schet['Сумма'] = $kontr['Сумма'];
$new_id = insert_query($schet, "Счета");
echo "<script>location.href='".$config["site_root"]."/view_line.php?table=43&line=".$new_id."&edit_mode&back_url=".$base64_current_url."'</script>";

Только таким кодом значения подставляются...

#7 Dinara

    Активный участник

  • Пользователи
  • PipPipPip
  • 527 сообщений
  • Пол:Женщина
  • Город:Уфа

Отправлено 25 Июль 2013 - 08:49

Подскажите, есть таблица "Совместная работа менеджеров", из нее формируется "Счета".
в таблице "СРМ" есть поле "Номер счета" http://take.ms/kB6Rd , куда должен подставляться номер из таблицы "Счета".
На данный момент при формировании "Счета" из "Совместная работа менеджеров" номер документа по совместной работы переносится в счета http://take.ms/BcY7xx доп.действием

$schet['Номер СР'] = $kontr['Номер'];

А как сделать в обратку? Чтобы номер счета подставлялся в карточку совместной работы?

#8 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 693 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 25 Июль 2013 - 09:01

Цитата

Не перенеслись поля типа "Связь"

В полях с типом связь необходимо добавлять ['ID']:

$schet['На кого']=$line['Контрагент']['ID'];


#9 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 693 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 25 Июль 2013 - 09:05

Цитата

А как сделать в обратку? Чтобы номер счета подставлялся в карточку совместной работы?

$line['Номер счета'] = $new_id;

перед последней строкой доп.действия.

#10 Dinara

    Активный участник

  • Пользователи
  • PipPipPip
  • 527 сообщений
  • Пол:Женщина
  • Город:Уфа

Отправлено 25 Июль 2013 - 09:23

Насчет id спасибо,запомню..
А насчет
$line['Номер счета']= $new_id;

перед последней строкой доп.действия.
Вставляет id,а нужен же номер? Они разные

#11 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 693 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 25 Июль 2013 - 09:37

Извиняюсь, не заметил.

Тогда, там же:

$schet = data_table("Счета","id=".$new_id);
$line['Номер счета'] = $schet['Номер'];


#12 Dinara

    Активный участник

  • Пользователи
  • PipPipPip
  • 527 сообщений
  • Пол:Женщина
  • Город:Уфа

Отправлено 25 Июль 2013 - 09:47

Хм, тот же результат, странно..
МОжет тогда вычислением в счете прописать?
Что-то навроде
if ($line['Номер СР']=$line['Номер СР']['Номер'])
$line['Номер СР']['Номер счета']=$line['Номер'];

Только пока что не срабатывает..
Смысл вычисления в том, что если поле Номер СР в счете равно полю Номер в совместной работе - тогда поле Номер счета в совместной работе заполняется полем Номер в счете..

#13 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 693 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 25 Июль 2013 - 09:56

Вы уверены, что "Номер счета" в карточке не совпадает с "Номером" в счете, после выполнения доп.действия? Все должно работать, если вы сами все верно разместили. "Номер счета" - это ведь поле с типом "число"?

Смысла в вычислении выше (вашем) нет, там масло масляное, поле сравниваете само с собой, причем опять синтаксические ошибки - "равно" в PHP пишется как "==", в условиях.

#14 Dinara

    Активный участник

  • Пользователи
  • PipPipPip
  • 527 сообщений
  • Пол:Женщина
  • Город:Уфа

Отправлено 25 Июль 2013 - 12:13

Вычисления мешались,ненужные..))
Только поля некликабельные теперь))
А если поле типа "Пользователь", как переносить?
Заметила у себя ошибку просто большую,для настройки доступа то нужно чтобы поле было типа пользователь..
В связи с этим опять вопрос возник по коду
$ruk_user = sql_select_array(USERS_TABLE, "id=",$line['Руководитель']);
$email = $ruk_user['e_mail'];
sendmail("Тема", "Текст письма", $email);
Вы предоставили вот этот код, из ошибок я там заметила неправильное написание e-mail, если это то, заменила на то,которое прописано в таблице у пользователей, E-mail, только все равно при отправке поле не заполняется данными...
тут не должно быть,кстати id=$ID? на всякий уточняю)

$ruk_user = sql_select_array(USERS_TABLE, "id=",$line['Руководитель']);
$email = $ruk_user['E-mail'];
sendmail("Запрос на совместную работу", "Запрос {$line['Менеджер']['ФИО']}  <a href='http://cb.goszacaz.su/view_line2.php?table=231&line=$ID'>Ссылка на карточку</a> " , $email);


Сообщение отредактировал Dinara: 25 Июль 2013 - 12:23


#15 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 693 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 25 Июль 2013 - 12:21

Цитата

Вы предоставили вот этот код, из ошибок я там заметила неправильное написание e-mail, заменила на то,которое прописано в таблице у пользователей, E-mail

Никакой ошибки тут нет, используется системная таблица пользователей, и внутреннее имя поля там именно "e_mail". Эта таблица не часть вашей конфигурации, данные туда заполняются из вкладки Пользователи в Настройках. Е-мейл руководителя должен быть заполнен именно там.

#16 Dinara

    Активный участник

  • Пользователи
  • PipPipPip
  • 527 сообщений
  • Пол:Женщина
  • Город:Уфа

Отправлено 25 Июль 2013 - 14:33

Большая часть уже получилась))
Как в sendmail прописать строку типа "Пользователь"? То есть нужно отправить сообщение, что такой-то менеджер (тип поля "пользователь") то-то...
Простая фраза {$line['Менеджер']} вообще никак не подходит,получается..

#17 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 693 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 25 Июль 2013 - 14:50

Аналогично, как и с е-мейлом, достаете из системной таблицы ФИО пользователя:

$man_user = sql_select_array(USERS_TABLE, "id=",$line['Менеджер']);
$fio = $man_user['fio'];
.....
sendmail("Тема", "Менеджер {$fio}, вам новое задание", $email);

В любом поле "пользователь" хранится только id пользователя, все остальные данные нужно брать из USERS_TABLE.





Количество пользователей, читающих эту тему: 3

0 пользователей, 3 гостей, 0 анонимных