Техническое руководство > Импорт платежей [●] | « пред. | след. » |
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; |