SuiteCRM


SuiteCrm - Акт выполненных работ

В статье рассмотрим простейший пример создания форм актов выполненных работ в SuiteCRM. Рассматривается добавление доп.полей: номер акта, дата акта, статус акта.

Одной из основной состаляющей жизни каждого предприятия - создание и раздача документов заказчикам, а уж где оказываются услуги - это первостепенная задача: выставить документы на оплату.

В основе своем используются два вида документов: счета и акты выполненных работ.

Счета существуют в системе SuiteCRM, а вот актов - нет. И это печально. Но нужно решить эту проблему.

Итак приступим:

1.Добавляем статусы актов:

Идем Администрирование - Редактов комбобоксов.

Добавляем комбобокс - dom_acts_combo.

Записи:

Created (Создан) - Только созданный акт

Printed (Распечатан) - Распечатанный акт

Sent (Отданы) - Отосланный, отданный акт

Original (Оригинал) - Вернувшийся оригинал с подписями.

Вы можете сделать какие угодно статусы. в зависимости от вашего документов оборота.

2. Идем в Администрирование - Студия - Счета. Выбираем - Поля.

Добавляем:

1.добавляем статусы актов:

act_status - Статус Акта - DropDown. Выбираем наш dom_acts_combo. По умолчанию - Создан.

number_act - Номер Акта - Integer. Длины в 11 символов вполне хватит.

acts_date - Дата акта. Я привязываю дату акта к дате выписки счета, поскольку у меня услуги практически всегда оплачиваются после выполнения работ.

Затем переходим в макеты и расставляем поля так как нам нравиться. Я вообще, отдельную панель сделал.

Ну собственно и все. Вся подготовительная работа сделана. Теперь нам нужно прописать механизм формирования и вставки номера, а так же даты акта.

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

Итак, у нас сформировались два у словия для создания акта:

1. Номер акта не должен быть пустым.

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

Решение для меня простое - использовать logic_hooks.php. простейший пример использования в статье про нумерацию счетов

1. Делаем запись в logic_hooks.php:

$hook_array['before_save'][] = Array(4, 'SetActs', 'custom/modules/AOS_Invoices/number_acts.php', 'acts_number', 'new_actnumber');

2. Создаем файл custom/modules/AOS_Invoices/number_acts.php. В нем пишем следующее:

<?php
class acts_number {
      function new_actnumber(&$bean, $event, $argument ) {
      $number_last=$bean->db->getOne("SELECT CAST(number_act_c AS UNSIGNED) FROM aos_invoices_cstm ORDER BY acts_date_c DESC LIMIT 1");
     if (empty($bean->number_act_c) && ($bean->status == "Sent")) {
         $bean->number_act_c=$number_last+1;
         $bean->acts_date_c=$bean->invoice_date;
        }
     }
}
?>
Сохраняем.

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

Вот собственно и все.

Вам осталось только настроить pdf шаблон в соответствующем месте, привязать егок модулю Счета и сформировать.

Я прекрасно понимаю недостатки такого подхода: невозможно сформировать акты один ко многим - например несколько актов к одному счету, невозможно сделать акт на услуги и накладную на товары.

Но считаю, что такой метод на скорую руку даст толчок к бустрому переходу на SuiteCRM.

Спасибо за внимание.