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


Создание строки при сохранении, а не при выводе формы


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

#1 kingston

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

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

Отправлено 15 Март 2013 - 12:26

Добрый день.

Нужно по договору выписать счет.
Создал дополнительное действие в Договорах с кодом

$schet['На кого'] = $ID;
$new_id = insert_query($schet, "Счета");
echo "<script>location.href='".$config["site_root"]."/view_line.php?table=43&line=".$new_id."&edit_mode&back

При каждом нажатии кнопки в договорах создается новый счет с указанным на выбранного Контрагента, ОК.

Косяк - если пользователь не сохраняет счет, или плюет на него и уходит на другую страницу, остается пустой счет с номером. Очевидено, что манагеры не будут заморачиваться на тему ослеживания этих пустых счетов, и их разрастется ого-го сколько.
Та же фигня происходит со счет-фактурами, у которых вообще всё должно быть строго с номерами.

Пробовал избежать создания счета до нажатия кнопки "Сохранить"
$schet['На кого'] = $ID;
[b]//$new_id = insert_query($schet, "Счета");[/b]
echo "<script>location.href='".$config["site_root"]."/view_line.php?table=43&[b]line=new&edit_mode&id=$ID[/b]&back

Но не знаю как корректно вставить в таблицу 'На кого' - при отображении новой формы, "Вычисления" не срабатывают

Буду рад, если дадите совет как сделать, или хотя бы страницу в системе где можно подглядеть решение.

#2 CbCoder

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

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

Отправлено 15 Март 2013 - 13:18

Попробуйте так:

$schet['На кого'] = $ID;
$schet['Статус записи'] = 3; // статус записи 3 - это временная запись, если ее явно не сохранить, она будет удалена
$new_id = insert_query($schet, "Счета");
echo "<script>location.href='".$config["site_root"]."/view_line.php?table=43&line=".$new_id."&edit_mode&back


#3 kingston

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

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

Отправлено 15 Март 2013 - 13:57

CbCoder, спасибо.
Что будет, если 2 менеджера одновременно начнут выписывать счета, один сохранит, а другой - нет?

#4 CbCoder

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

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

Отправлено 15 Март 2013 - 14:16

Два менеджера в любом случае выпишут 2 разных счета. Соответственно, их сохранение никак друг на друга не влияет.

В вашем случае это будет один счет. Если сохранят оба - то в таблице будет два счета.

#5 kingston

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

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

Отправлено 15 Март 2013 - 14:54

Спасибо, попробовал.

Это исключило появление пустых счетов, но осталась возможность появления пропусков:
Менеджер (1) начал создавать счет (временный 10)
Менеджер (2) начал создавать счет (временный 11)
Менеджер (2) сохранил счет (номер 11)
Менеджер (1) решил не выписывать счет (временный 10 удален)
Менеджер (1/2/...) начал создавать новый счет (временный 12)
Получился пропуск в номерах

Можно ли как-то еще передать параметры для составления нового счета? (После сохранения номер счета присвоится автоматически)?
На крайний случай - создавать временный с каким-то собственным идентификатором, а присваивать норальный номер при сохранении?

Сообщение отредактировал kingston: 15 Март 2013 - 14:56


#6 CbCoder

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

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

Отправлено 15 Март 2013 - 16:21

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





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

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