Docs

Модуль работы с платёжными документами.

Возможности

Установка

abills/libexec/config.pl

@MODULES = (
          'Docs'
          );

Настройка

$conf{DOCS_ACCOUNT_EXPIRE_PERIOD}=10; Время действительности счета.
По умолчанию 30 дней
$conf{DOCS_ACCOUNT_EXPIRE_DAY}=20; Дата действия счета. Имеет более высокий приоритет чем $conf{DOCS_ACCOUNT_EXPIRE_PERIOD}
$conf{MONEY_UNIT_NAMES}=['грн','коп']; Название денежной еденицы большая меньшая часть
$conf{DOCS_PDF_PRINT}=1; Вывод печатных документов в формате PDF. Шаблоны документов помещать в папку шаблонов $conf{TPL_DIR}.
Функция работает только при наличии установленого Perl модуля PDF::API2

Смотрите также Работа с шаблонами
$conf{DOCS_VAT_INCLUDE}=20; Процентов включенного налога
$conf{DOCS_ORDERS}=['Услуги связи', 'Тех. поддержка']; Виды товаров для счёта
$conf{DOCS_LANGUAGE}='russian'; Язык печатных документов. По умолчанию равен $conf{default_language}
$conf{DOCS_PAYMENT_METHODS}='-' Описание типов платежей для бухгалтерских документов. При указании данной переменной типы оплат берутся с данной переменной, а не из системных типов оплат. Если нет типа указанного в данной переменной используется тип с номером 0. По этому рекомендовано всегда иметь описание оплаты с типом 0.
Формат
$conf{DOCS_PAYMENT_METHODS}='номер:тип; номер:тип;';
Пример
0:оплата с расчётного счёта; 1:Наличка; 2:Поступление с терминалов
$conf{DOCS_CURRENCY}='980'; Валюта выписываемых документов. Если опция указана и отличается от системной $conf{SYSTEM_CURRENCY}, документы выписываются в двух валютах в системной и в валюте документов.
Коды нужно вводить соответственно с стандартом ISO 4217.
Также нужно заводить валюты в меню конвертации / Система/ Курс обмена/
Таблица кодов http://index.minfin.com.ua/code/
$conf{DOCS_SKIP_NEXT_PERIOD_ACCOUNT}=1; Не отображать в пользовательском интерфейсе форму выписки счета на следующий учётный период
$conf{DOCS_PAYMENT_SYSTEM_CURRENCY}=1; При оплате заполнять поля оплаты системной валютой
$conf{DOCS_PRE_INVOICE_PERIOD}=10; Количество дней до начала учётного периода для генерации счетов.
( По умолчанию 10 )
$conf{DOCS_INVOICE_ORDERS}=12; Количество позиций в счете. По умолчанию 12
$conf{DOCS_CONTRACT_TYPES}=':Д:физические лица:contract_1;
:В:выделенка для юр. лиц (Ethernet, ADSL):contract_2;
:ВО:оптика для организаций:contract_3;';
Задания списка типов договоров для работы с клиентами.

Формат:
ПРЕФИКС_ДОГОВОРА:CУФИКС_ДОГОВОРА:НАЗВАНИЕ_ДОГОВОРА:ШАБЛОН
Для шаблона contract_1 система будет искать файл /usr/abills/Abills/templates/Docs_docs_contract_1.tpl или его альтернативный pdf шаблон.
Если не заполнено поле Номер договора и дата система автоматически подставляет следующий нужный номер в эти поля.
$conf{DOCS_INVOICE_ALT_TPL}=1; Включить возможность вести 2 шаблона счетов. Основной и дополнительный
$conf{DOCS_INVOICE_PAID_TPL}=1; Выводить для плаченых счетов другой шаблон.
шаблон для оплаченных счетов docs_invoice_paid.[tpl
dscpdf]


Шаблоны

Для правки шаблонов нужно использовать редактор шаблонов Настройка / Другое / Шаблоны


список шаблонов:

docs_invoice.tpl и docs_invoice_paid.tpl

Счёт (КВИТАНЦИЯ) для оплаты физическим лицами

docs_invoice.tpl - шаблон для неоплаченного счета

docs_invoice_paid.tpl - шаблон для оплаченного счета, если нет кастомно созданого шаблона используется docs_invoice.tpl

Заходите в нужном клиенте в / Клиенты/ Логины/ Информация/ в Оплаты

AVANCE Аванс с предыдущего периода
INVOICE_NUM Номер счёта
FIO Фио
ADDRESS_FULL Адрес
CONTRACT_ID контракт
CONTRACT_DATE дата контракта
A_FIO ФИО администратора
TOTAL_SUM Общая сума
TOTAL_SUM_WITHOUT_VAT общая сума без налога
CUSTOMER Пользователь
AMOUNT_FOR_PAY Полная Сума для оплаты сума счета плюс депозит
DEPOSIT Депозит абонента на момент выписки счета
DEBT Задолженость
PAYMENT_ID Номер в журнале платежей. Появляется после оплате по указанному счету
MONTH Поточный Месяц
DATE Поточная Дата
TIME Поточное Время
FROM_DATE_LIT $d $MONTH_LIT $y year
DAY день
MONTH_LIT Месяц прописью
YEAR
DATE_EURO_STANDART дата d.m.y
A_FIO ФИО админа
SUM_LIT Сума прописью
CHARGED_SUM Сума оплаченных услуг
EXPIRE_DATE Время действительности счета. Дата до которой нужно оплатить счет
LAST_PAYMENT_SUM Сума последней оплаты
LAST_PAYMENT_DATE Дата последней оплаты
INVOICE_PERIOD Период инвойсирования (yyyy-mm-dd-yyyy-mm-dd)

Табличная часть

ORDER_NUM_1 Номер услуги/товара в табличной части
ORDER_NAME_1 Наименование услуги/товара в табличной части
ORDER_COUNT_1 Количество услуги/товара в табличной части
ORDER_PRICE_1 Цена услуги/товара в табличной части
ORDER_SUM_1 Сума услуги/товара в табличной части
ORDER_PRICE_WITHOUT_VAT_1 Цена товара без налога (НДС)
ORDER_VAT_1 Сума налога за товар (НДС)
ORDER_SUM_WITHOUT_VAT_1 Общая сума товаров без налога (НДС)
Количество * суму товара без налога
MONTH Поточный Месяц
DATE Поточная Дата
TIME Поточное Время

Отображение платежей по данному счету

PAYMENT_DATE_1 Дата платежа
PAYMENT_COMMENTS_1 Комментарий
PAYMENT_SUM_1 Сума
PAYMENT_ALT_SUM_1 Альтернативная сума
PAYMENT_ID_1 Номер оплаты
PAYMENTS_TOTAL_SUM Общая сума всех платежей

переменные неоплаченных счетов

UNPAYMENT_INVOICE_NUM_1 Номер счета
UNPAYMENT_INVOICE_DATE_1 Дата счета
UNPAYMENT_INVOICE_SUM_1 Не погашенная сума счета
UNPAYMENT_INVOICE_ALT_SUM_1 Не погашенная альтернативная сума счета
UNPAYMENT_TOTAL_SUM Общая сума непогашенный счетов
UNPAYMENT_TOTAL_ALT_SUM Общая сума непогашенный счетов в альтернативной валюте
TOTAL_REST_SUMСума к оплате по текущему счёте.
Общая сума счета - сума оплаты по этому счету
TOTAL_REST_ALT_SUMСума к оплате по текущему счёте.
Общая сума счета - сума оплаты по этому счету в альтернативной валюте

Значения табличной части при использовании альтернативной валюты. (смотрите опцию $conf{DOCS_CURRENCY})

EXCHANGE_RATE Курс обмена
CURRENCY ISO код альтернативной валюты
ORDER_ALT_SUM_1 Сума в альтернативной валюте
ORDER_ALT_PRICE_1 Цена в альтернативной валюте
ORDER_ALT_VAT_1 Сума налога
ORDER_ALT_PRICE_WITHOUT_VAT_1 Сума без налога в альтернативной валюте
ORDER_ALT_SUM_WITHOUT_VAT_1 Сума с налогом в альтернативной валюте
TOTAL_ALT_SUM ОБщая сума в альтернативной валюте
SUM_ALT_LIT Общая альтернативная сума прописью
CHARGED_ALT_SUM Общая сума уже оплаченных услуг в альтернативной валюте

Информация о модулях

DOCS_TPNAME_DV Название ТП для интернета
DOCS_ABON_DV Сума Абон. платы для сервиса интернет
DOCS_ABON_ABON_XX Сума Абон. платы для периодических платежей
DOCS_TPNAME_ABON_XX Название ТП для периодических платежей

docs_invoice_company.tpl

Счёт для оплаты юридическими лицами
Заходите в нужном клиенте в / Клиенты/ Логины/ Информация/ в Оплаты, данный документ выписывается пользователям принадлежащем определённой компании


В шаблоне используются параметры docs_invoice.tpl дополнительные параметры компании

REPRESENTATIVE Представитель
COMPANY_NAME Представитель
COMPANY_PHONE Телефон компании
ADDRESS адрес компании
VAT ставка налога (НДС)
TAX_NUMBER
BANK_ACCOUNT Счёт в банке
BANK_NAME Банк
COR_BANK_ACCOUNT Коресп. счет
BANK_BIC Банковский идентификационный код

docs_act.tpl

Форма акта оказания услуг
Заходите в нужном клиенте в / Клиенты/ Компании/ Документы/ Акты

docs_receipt.tpl

Форма счёта фактуры (чека, квитанции оплаты), выставляется абоненту после внесения суммы на счёт
Заходите в нужном клиенте в / Клиенты/ Логины/ Информация/ в Оплаты Ставите галочку «Счет-Фактура»

RECEIPT_NUM
DATE
CUSTOMER
TOTAL_SUM
PHONE
VAT
ADMIN
LOGIN
CREATED
BY_PROXY_SERIA
BY_PROXY_PERSON
BY_PROXY_DATE
DOC_ID
UID
EXPIRE_DATE Время действительности счета
PAYMENT_ID
DEPOSIT
DELIVERY_STATUS
EXCHANGE_RATE
CURRENCY}

docs_tax_invoice.tpl

Налоговая накладная
Заходите в нужном клиенте в / Клиенты/ Компании/ Документы/ Налоговая накладная

docs_contract.tpl

Форма договора
Заходите в нужном клиенте в / Клиенты/ Логины/ Информация/ в Информации о пользователе есть поле «Номер контракта» и кнопка «печать»

переменные шаблона

UID UID
LOGIN Логин
FIO ФИО
DEPOSIT Депозит
CREDIT Сума кредита
CREDIT_DATE Дата кредита
COMPANY_ID Номер компании
COMPANY_NAME Название компании
GID Номер группы
PHONE Телефон
EMAIL E-mail
PASPORT_NUM Номер паспорта
PASPORT_DATE Дата выдачи паспорта
PASPORT_GRANT Паспорт выдан
CONTRACT_ID Номер контракта
CONTRACT_DATE Дата контракта
CONTRACT_PREFIX Префикс контракта
ADDRESS_FULL Полный адрес, Улица, дом/квартира
ADDRESS_COUNTRY Страна
CITY Город
ADDRESS_DISTRICT Регион
ADDRESS_STREET Улица
ADDRESS_FLAT Квартира
CONTRACT_DATE_LIT Дата прописью
_информационные_поля Объявление дополнительных информационных полей

docs_contract_company.tpl

Форма договора для корпоративных клиентов
Заходите в Компании выбираете / Клиенты/ Компании/ в Информации о пользователе есть поле «Номер контракта» и кнопка «печать»


Формировать индивидуально документы для каждого типа оплат

Также можно формировать индивидуально документы для каждого типа оплат (docs_account.tpl, docs_account_company.tpl, docs_invoice.tpl).
Формат таких шаблонов в каталоге abills/Abills/templates:

[название модуля]_[название шаблон]_[тип оплаты].tpl
Docs_docs_account_1.tpl


Данная функция доступна только для документов в формате PDF

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

формируем два дополнительных шаблона:
1. Будет выдаваться по умолчанию для всех платежей

abills/Abills/templates/Docs_docs_account.tpl # признак индивидуального шаблона
abills/Abills/templates/Docs_docs_account.pdf # сам шаблон 
abills/Abills/templates/Docs_docs_account.dsc # файл описание переменных

2 Будет выписываться для оплат с типом банк

abills/Abills/templates/Docs_docs_account_1.tpl # признак индивидуального шаблона
abills/Abills/templates/Docs_docs_account.pdf #
abills/Abills/templates/Docs_docs_account.dsc #

Список типов пополнения можно расширять по вашему желанию, переменная для расширения этого списка указана в расширенной документации

docs_receipt_email.tpl

Шаблон тела письма отправки квитанции

docs_invoice_email.tpl

Шаблон тела письма отправки счета

Привязка документов к группам пользователей

Для групп имеющих флаг Собственные Бух. документы можно создавать индивидуальные шаблоны документов. шаблоны создаются в папке abills/Abills/templates/ по принципу индивидуальных шаблонов и в конце названия файла через два нижних подчеркивания указывается название группы. Если нужно использовать тип услуги указанный в оплатах и индивидуальные групповые документы тогда через одно подчёркивание (Docs_[название шаблона]_[Номер типа услуги]_[номер группы].tpl).
Пример:
для группы 99

abills/Abills/templates/Docs_docs_account__99.tpl # признак индивидуального шаблона
abills/Abills/templates/Docs_docs_account__99.pdf # сам шаблон 
abills/Abills/templates/Docs_docs_account__99.dsc # файл описание переменных

Привязка оплат к счетам

В системе риализированна функция ручной и автоматической привязки оплат к счетам

Автоматическая привязка

  1. Система находит самый ранний по дате счёт в статусе «Не оплачен»
  2. Проверяет, какая сумма по данному счётy не оплачена
    1. Если неоплаченный остаток счёта+сумма оплаты = сумма счёта, то

то вся сумма оплаты распределяется на данный счёт (в записи об счёте появляется ссылка на номер записи об оплате, которая была внесена по этому счёту и гасимая сумма, а в записи об оплате появляется ссылка на счёт, который был оплачен и сумма оплаты, которая этот счёт закрывает), и счёт переходит в статус «Оплачен»

  1. Если неоплаченный остаток счёта+сумма оплаты < сумма счёта, то

вся сумма оплаты распределяется на данный счёт (в записи об счёте появляется ссылка на номер записи об оплате, которая была внесена по этому счёту и гасимая сумма, а в записи об оплате появляется ссылка на счёт, который был оплачен и сумма оплаты, которая этот счёт закрывает);

  1. Если неоплаченный остаток счёта+сумма оплаты > сумма счёта, то

вся сумма оплаты, равная неоплаченному остатку, распределяется на данный счёт, счёт переходит в статус «Оплачен», а для распределения оставшейся суммы оплаты система исполняет действия с шага 1.

Ручная привязка счетов
Пользователь из списка при оплате выбирает нужный счет

  1. Если неоплаченный остаток счёта+сумма оплаты = сумма счёта, то

то вся сумма оплаты распределяется на данный счёт, и счёт переходит в статус «Оплачен»

  1. Если неоплаченный остаток счёта+сумма оплаты < сумма счёта, то

вся сумма оплаты распределяется на данный счёт;

  1. Если неоплаченный остаток счёта+сумма оплаты > сумма счёта, то

вся сумма оплаты, равная неоплаченному остатку, распределяется на данный счёт, счёт переходит в статус «Оплачен». Также есть возможность вручную выбрать счёт для привязки оставшейся части оплаты к другому счёту. Данное действие производится через через журнал счетов. Администратор выбирает неоплаченный счет и переходит к журналу не прикреплённых оплат где он выбирает нужную оплату и указывает суму. Если сума больше чем счет система прикрепляет только суму со отсутствующею счету, а остальную помечает как не распределённую.
Если при ручном распределении счёт не выбран, то вся сумма оплаты считается не распределенной.

Если удаляется оплата или счет соответственно система удаляет и привязку

Групповая генерация счетов и квитанций на оплату

Генерацией счетов на оплату занимается программа multi_docs.pl

аргементы:

PERIODIC_INVOICE создать переодические счета и отправить их абонентв
PREPAID_INVOICES Создание и отправка счетов в начале периода на все услуги по которым произошли списания в текущем месяце
LOGIN Логин абонента
COMPANY_ID ID компании
DATE=YYYY-MM-DD Дата создания документов
SORT= Порядок создания документов
DEBUG=[1..7] Режим отладки

PREPAID_INVOICES
Создание и отправка счетов в начале периода на все услуги по которым произошли списания в текущем месяце. Если не указывается дата счета создаются на все услуги от текущего числа.

# /usr/abills/bin/multi_docs.pl PREPAID_INVOICES=1

Если в аргументах указывается параметр COMPANY_ID тогда запускаются только счета по компаниям указанным в параметре и соответственно LOGIN только по логинам не состоящим в компаниях

PERIODIC_INVOICE
Создание счетом на следущие учётные периоды. # /usr/abills/bin/multi_docs.pl PERIODIC_INVOICE DATE=«2012-08-18/2012-09-20»

Счета создаются для пользователей у которых в параметрах документ оборота включено «Автоматическая генерерация счёта» и наступила дата создания счетов (за 10 дней до начала учётного периода).
Также можно указывать дату за которую нужно обработать счета DATE='2012-08-18' или период дат через косую черту DATE='2012-08-18/2012-09-20'