| Техническое руководство > Импорт платежей [●] | « пред. | след. » |
1.См. Алгоритм разноски
2.Обращаем внимание, что вам искать клиентов и счета не надо. Это сделает процедура разноски платежей. Вам надо вносить данные в промежуточные таблицы.
3.Алгоритм такой: к вам пришёл файл, вы его загрузили в промежуточную таблицу, запустили процедуру разноски (процедура разноски просматривает промежуточные таблицы и по этим данным ищет клиентов, договора и создаёт платежи, связывая их со счетами).
4.Промежуточные таблицы (их две):
payment_files - содержит имя файла, дату его загрузки, и код платёжной системы.
Поля для заполнения (обязательные):
payment_file_id -- первичный ключ (использовать payment_files_seq.nextval)
name -- имя загружаемого файла
create_dt -- дата загрузки (использовать sysdate)
payment_code -- Код платежной системы (использовать из таблицы payment_codes.payment_code)
payment_file_lines - содержит строки загружаемого файла
Поля для заполнения:
payment_file_id -- ссылка на payment_files.payment_file_id
create_dt -- Дата платежа (выписки)
reestr_num -- Номер платежа (выписки)
oper_dt -- Дата операции
summ -- Сумма
doc_dt -- Дата документа (счёта)
doc_no -- № документа (счёта)
client_code -- Код клиента
fio -- Клиент в платёжной системе (информационное поле)
contract_code -- Код договора
contract -- Договор в платёжной системе (информационное поле)
inn -- ИНН клиента
rs -- Р/с клиента
bik -- БИК клиента
account_no -- Номер бухгалтерского счёта
payment_info -- Инормация о платеже
addr -- Адрес
|
Не все перечисленные поля являются обязательными для заполнения. Строго говоря, обязательность и смысл полей определяется процедурой разноски. Более того, набор полей может быть в любой момент расширен.
Существует стандартная процедура разноски платежей, но можно написать собственную (и связать её через код платёжной системы). Алгоритм работы стандартной процедуры описан в разделе Алгоритм разноски.
5.Пример SQL-вставок в промежуточные таблицы на PL/SQL:
declare
file_name_ varchar2(256);
payment_file_id_ integer;
payment_code_ char(1);
begin
file_name_ := 'imp_1c_to_platex_2009_05_12'; -- имя файла
-- получаем код платёжной системы по имени. Можно и не получать, а знать заранее.
select payment_code
into payment_code_
from payment_codes
where name = '1С'; -- если такой нет, то будет ошибка
-- счётчик для первичного ключа таблицы payment_files
select payment_files_seq.nextval
into payment_file_id_
from dual;
-- шапка файла
insert into payment_files(payment_file_id, name, create_dt, payment_code)
values (payment_file_id_, file_name_, sysdate, payment_code_);
-- тело файла
insert into payment_file_lines(
payment_file_id,
create_dt, reestr_num, oper_dt, summ,
doc_dt, doc_no,
client_code, fio, contract_code, contract,
inn, rs, payment_info)
values (payment_file_id_,
to_date('12.05.2009', 'DD.MM.YYYY'), '1', to_date('12.05.2009', 'DD.MM.YYYY'), 124.86,
to_date('30.04.2009', 'DD.MM.YYYY'), '286',
'3412', 'Иванов Сергей Игнатьевич', '5341', '№ 1254 от 10.01.2009 г.',
'147198327', '428976843', 'Платёж по счёту');
--insert into payment_file_lines(..
--insert into payment_file_lines(..
--insert into payment_file_lines(..
end;
|