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


Отправка счета


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

#1 TelecomMedia

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

  • Пользователи
  • PipPipPip
  • 378 сообщений

Отправлено 29 Апрель 2014 - 10:59

Как можно сделать следующее:

В таблице "Счета" сделать доп. действие "Отправить счет", которое бы отображало форму с выбором нескольких вариантов почты из т. Сотрудники, связанной с т. "Контрагенты"?

Т.е., например, есть клиент "ООО Астра". В нем есть связанная т. Сотрудники, где есть контакты (и соответственно e-mail), менеджера, бухгалтера и директора.

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

#2 TelecomMedia

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

  • Пользователи
  • PipPipPip
  • 378 сообщений

Отправлено 06 Май 2014 - 06:56

Неужели нет такого решения?

#3 CbCoder

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

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

Отправлено 06 Май 2014 - 08:51

Теоретически можно, с использованием доп.действия "в отдельном окне".

#4 TelecomMedia

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

  • Пользователи
  • PipPipPip
  • 378 сообщений

Отправлено 06 Май 2014 - 09:42

Но в таком случае стандартная отправка шаблона нам не подходит:

$line['E-mail']=$line['E-mail'];
send_template(1251,"id=$ID");

Как в таком случае в отдельном окне можно подтянуть поля из которых выбрать email?

#5 CbCoder

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

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

Отправлено 06 Май 2014 - 12:54

Также как везде - путем запросов к соответствующим таблицам. После отправки формы помещаете выбранный емейл в поле емейла таблицы:

$line['E-mail'] = $_REQUEST['email'];
send_template(1251,"id=$ID");

#6 TelecomMedia

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

  • Пользователи
  • PipPipPip
  • 378 сообщений

Отправлено 06 Май 2014 - 15:15

Не совсем понял.

Мне нужно сделать запрос к след. таблица и полям:
42, 442 (где 42-id таблицы, 442-id поля)
42, 10551
51, 549
571, 12881

И что значит $_REQUEST['email']; ?

#7 CbCoder

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

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

Отправлено 06 Май 2014 - 15:21

Это системная переменная PHP, в которой содержатся значения полей отправленной формы (см. документацию по PHP). Форму вы создаете в доп.действии, в этом самом отдельном окне, за этим уже смотрите нашу документацию по доп.действиям. Там кстати и обработка $_REQUEST есть.

#8 TelecomMedia

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

  • Пользователи
  • PipPipPip
  • 378 сообщений

Отправлено 08 Май 2014 - 08:06

Пытаюсь

Взял за основу пример, приведенный на форуме.

Хочу взять из таблицы 42 (Контрагенты) поле f442 (email):


$line['E-mail'] = $_REQUEST['email'];
$sqlQuery = "SELECT f442 FROM ".DATA_TABLE."42";
$result = mysql_query($sqlQuery);
echo "<form method='get'>";
echo "Выберите E-mail:";
echo "n<input type='hidden' name='id' value='$button_id'>"; // Передаем значение кнопки
echo "<input type='hidden' name='line_id' value=$ID>";  // Значение строки
echo "<SELECT name='email'>";
while ($row = mysql_fetch_array($result))
	echo "<OPTION VALUE='".$row['ID']."'>".$row['ID']."</OPTION>";
echo "</SELECT>";
echo "<input type='submit' value='Передать'>";
echo "</form>";

Но на выходе получается следующее:

Прикрепленные изображения

  • Прикрепленное изображение: счет.png

Сообщение отредактировал fabrika-r: 08 Май 2014 - 08:09


#9 andibrag

    Прежде, чем задать вопрос, продумайте свое решение.

  • Активный пользователь
  • PipPipPip
  • 1 356 сообщений
  • Пол:Мужчина
  • Город:Санкт-Петербург

Отправлено 08 Май 2014 - 10:03

Просмотр сообщенияfabrika-r (08 Май 2014 - 08:06) писал:

Пытаюсь

Взял за основу пример, приведенный на форуме.

Хочу взять из таблицы 42 (Контрагенты) поле f442 (email):


$line['E-mail'] = $_REQUEST['email'];
$sqlQuery = "SELECT f442 FROM ".DATA_TABLE."42";
$result = mysql_query($sqlQuery);
echo "<form method='get'>";
echo "Выберите E-mail:";
echo "n<input type='hidden' name='id' value='$button_id'>"; // Передаем значение кнопки
echo "<input type='hidden' name='line_id' value=$ID>";  // Значение строки
echo "<SELECT name='email'>";
while ($row = mysql_fetch_array($result))
	echo "<OPTION VALUE='".$row['ID']."'>".$row['ID']."</OPTION>";
echo "</SELECT>";
echo "<input type='submit' value='Передать'>";
echo "</form>";

Но на выходе получается следующее:
Не разбирался особо, но id должно быть маленькими буквами - Вы должны использовать внутреннее имя поля - $row['id']
К слову, в качестве значения (value) использование $row['id'] оправдано, но зачем в качестве аргумента его использовать? Может лучше вывести список из Имен Контрагентов?

Творческая группа "ТАВР".

www.TAVR.pro Художественная ковка, металлоконструкции.

www.СтолМет.рф Складные столы, стулья и системы для их хранения


#10 TelecomMedia

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

  • Пользователи
  • PipPipPip
  • 378 сообщений

Отправлено 11 Май 2014 - 17:25

Попробовал подставить id маленькими буквами, результат не изменился.
Вообще ни на форуме, ни в документации не могу найти ни одного нормального примера доп. действия в отдельном окне.

Для начала даже можно упростить задачу: В вызванном окне высветить поле E-mail таблицы Контрагенты..

#11 CbCoder

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

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

Отправлено 12 Май 2014 - 09:47

Просмотр сообщенияfabrika-r (11 Май 2014 - 17:25) писал:

Для начала даже можно упростить задачу: В вызванном окне высветить поле E-mail таблицы Контрагенты..

Вам же не из Контрагентов емейлы нужны, а из Сотрудников. Из контрагента даже запрос не нужен, можно просто $line['На кого']['E-mail'] вывести. Если же из Сотрудников, то делаем стандартный запрос:

$result = data_select(51, "f545=",$line['На кого']['ID']);
while ($row = sql_fetch_array($result))
{
  echo $row['f549']."<br>";
}

Соответственно, оформляете затем это внутрь формы.

#12 andibrag

    Прежде, чем задать вопрос, продумайте свое решение.

  • Активный пользователь
  • PipPipPip
  • 1 356 сообщений
  • Пол:Мужчина
  • Город:Санкт-Петербург

Отправлено 12 Май 2014 - 16:52

Просмотр сообщенияfabrika-r (08 Май 2014 - 08:06) писал:

Пытаюсь

Взял за основу пример, приведенный на форуме.

Хочу взять из таблицы 42 (Контрагенты) поле f442 (email):


$line['E-mail'] = $_REQUEST['email'];
$sqlQuery = "SELECT f442 FROM ".DATA_TABLE."42";
$result = mysql_query($sqlQuery);
echo "<form method='get'>";
echo "Выберите E-mail:";
echo "n<input type='hidden' name='id' value='$button_id'>"; // Передаем значение кнопки
echo "<input type='hidden' name='line_id' value=$ID>";  // Значение строки
echo "<SELECT name='email'>";
while ($row = mysql_fetch_array($result))
	echo "<OPTION VALUE='".$row['ID']."'>".$row['ID']."</OPTION>";
echo "</SELECT>";
echo "<input type='submit' value='Передать'>";
echo "</form>";

Но на выходе получается следующее:
Не знаю насколько актуально. Вы в запросе делаете выборку только по одному полю - "SELECT f442 FROM".
Замените на "SELECT * FROM" - все поля (или перечислите нужные) и про маленькие буквы в row['id'] не забудьте. Если не сейчас, то на будущее пригодится.

Творческая группа "ТАВР".

www.TAVR.pro Художественная ковка, металлоконструкции.

www.СтолМет.рф Складные столы, стулья и системы для их хранения


#13 TelecomMedia

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

  • Пользователи
  • PipPipPip
  • 378 сообщений

Отправлено 19 Май 2014 - 15:26

Просмотр сообщенияCbCoder (12 Май 2014 - 09:47) писал:

Вам же не из Контрагентов емейлы нужны, а из Сотрудников. Из контрагента даже запрос не нужен, можно просто $line['На кого']['E-mail'] вывести. Если же из Сотрудников, то делаем стандартный запрос:

$result = data_select(51, "f545=",$line['На кого']['ID']);
while ($row = sql_fetch_array($result))
{
  echo $row['f549']."<br>";
}

Соответственно, оформляете затем это внутрь формы.


Так и сделал, получаю пустое окно.

#14 CbCoder

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

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

Отправлено 19 Май 2014 - 15:34

Причин может быть несколько:

1. Отсутствуют записи в Сотрудниках связанные с данным контрагентом.
3. Сотрудники есть, но поля емейла у всех сотрудников пустые.
2. Поле емейла у вас имеет другой id.

Я проверял на стандартной конфигурации - у меня все выводило.

#15 TelecomMedia

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

  • Пользователи
  • PipPipPip
  • 378 сообщений

Отправлено 19 Май 2014 - 15:44

Да, с этим разобрался. Неверно указал id.

Хорошо, теперь доп. действие выводит все емайлы, закрепленные за контрагентов в т. Сотрудники.

А как тогда сделать возможность выбора одного/или нескольких емайлов?

Чтобы можно было выбрать, нажать на Submit и счет ушел.

#16 CbCoder

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

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

Отправлено 19 Май 2014 - 16:34

Также как в любой другой html-форме - через добавление чекбоксов. Погуглите документацию по формам.

#17 TelecomMedia

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

  • Пользователи
  • PipPipPip
  • 378 сообщений

Отправлено 20 Май 2014 - 11:11

Погуглил, ничего не понял)

echo "<form method='get'>";
echo "<input type='checkbox' name='f549' value='$ID'>";
echo "<input type='submit' value='Отправить'>";
echo "</form>";

Как отобразить чекбокс понятно, но как напротив него подставить e-mail не совсем.

#18 CbCoder

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

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

Отправлено 20 Май 2014 - 11:19

*рукалицо*

echo "<input type='checkbox' name='f549' value='$ID'>".$row['f549'];

Вроде бы работа с формами и тем более простой вывод строки - это элементарные знания по PHP.

#19 TelecomMedia

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

  • Пользователи
  • PipPipPip
  • 378 сообщений

Отправлено 20 Май 2014 - 11:26

Все по-прежнему (((

привожу полный код:

$result = data_select(51, "f545=",$line['На кого']['ID']);
while ($row = sql_fetch_array($result))
{
  echo $row['f549']."<br>";
}
echo "<form method='get'>";
echo "<input type='checkbox' name='f549' value='$ID'>".$row['f549'];
echo "<input type='submit' value='Отправить'>";
echo "</form>";


#20 CbCoder

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

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

Отправлено 20 Май 2014 - 12:03

echo "<form method='get'>";
$result = data_select(51, "f545=",$line['На кого']['ID']);
while ($row = sql_fetch_array($result))
{
  echo "<input type='checkbox' name='emails[]' value='".$row['f549']."'>".$row['f549']."<br>";
}
echo "<input type='submit' value='Отправить'>";
echo "</form>";






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

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