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


Как выписать счёт из прайса?

счёт

В теме одно сообщение

#1 novomaster

    Участник

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

Отправлено 18 Октябрь 2015 - 16:03

Здравствуйте, раньше, работая в других CRM я знаю, что очень удобно было выписывать счёт следующим образом:
Сначала в прайсе выбираешь нужные товары и их количество, при необходимости добавляя нужные услуги, потом выбираешь контрагента к этому счёту и выписываешь счёт.
Как это реализовано здесь и реализовано ли вообще?
Просто у меня многотысячный прайс в разделе "Справочники"-"Прайс лист". Вот хотелось бы там отмечать галочками товары или вводя в отдельном поле напротив товара/услуги сразу количество, а после полного подбора уже добавлять в счёт нужного клиента из раздела "Компании"-"Контрагенты".
Спасибо всем откликнувшимся!

#2 Александр Пономарев

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

  • Пользователи
  • PipPipPip
  • 435 сообщений
  • Пол:Мужчина
  • Город:Таганрог

Отправлено 18 Октябрь 2015 - 16:50

В таблице счета заведите себе фиктивную пустую запись и запомните ее ID. Пусть он равен 1 (если таблица до этого была пустой, например).
В таблицу "Прайс-лист" добавьте поле-ссылку на таблицу "Счета". Пусть оно называется "Ссылка".
Создайте таблицу "Позиции счета" с полями "Товар" (ссылка на Таблицу "Прайс-лист" и "Счет" - ссылка на таблицу "Счет", ну и что там вам еще надо - цена, количество, стоимость и т.п.
К таблице "Счет" сделайте подтаблицу "Прайс-лист".
Напишите следующее дополнительное действие, назовем его, скажем, "Включить":

line['Счета']=1; // ID позиции прайс-листа

Теперь просто в таблице "Прайс-лист" напротив нужных позиций ставите крыжики в чек-боксах и нажимаете кнопку "Включить". Всем выбранным строчкам присвоится аттрибут 1 и они появляются в подтаблице с ID=1.
Осталось нажать кнопку "Создать новый счет", в котором прописать следующий алгоритм:

$new['Дата']=date("Y-m-d H:i:s", time());
$sID=insert_query($new,"Счета");
$objects = data_table("Прайс-лист", "`status`=0 AND `Счета`=1", "all");
foreach ($objects as $object) {
  $new['Товар']=$object['ID'];
  $new['Счет']=$sID;
  insert_query($new, "Позиции счета");
  $new2['Счета']="";
  update_query($new2,"Прайс-лист","`id`=".$object['ID']);
}

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

Тут есть одна проблема - если одновременно несколько человек начнут крыжить, будут проблемы. Для такого случая в таблице "Прайс-лист" нужно вместо поля "Счет" завести "Счет1" и т.д. и несколько усложнить алгоритм.

Я написал по памяти, не проверял. Когда-то я так делал и работало. Ну даже если не заработает, по крайней мере алгоритм как решить эту задачу будет понятен.

Сообщение отредактировал Александр Пономарев: 18 Октябрь 2015 - 16:53






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

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