Просмотр Исходного

*Code:*

\\

{code}
CREATE PROCEDURE MY_PAY (
USER_ID INTEGER, SUMMA NUMERIC(15,2))
AS
DECLARE VARIABLE NUMBER VARCHAR(10);
DECLARE VARIABLE MONEY NUMERIC(18,0);
DECLARE VARIABLE SUMMA_NUM NUMERIC(18,0);
DECLARE VARIABLE new_id integer;
begin
/* пример собственной процедуры для прихода */


--получаем коэф пересчета суммы во внутренний формат бд
select vpn_const.const_value
from vpn_const
where vpn_const.const_id = 1
into :money;
/*типы операций в таблице FIN_TYPE
ID Имя знак коммент
1 Расход -1 Выставление счета фактуры, сброс кредита в начльное состояние(N=K,K=0)
2 Приход 1 Абонент оплатил деньги или за него оплачены виртуальные деньги D=sum
3 Баланс подвести 0 Остаток увеличить на дебет, сбросить дебет в ноль
4 Обнуление 0 Делаем баланс в ноль тремя операциями: спишем кредит, надбавим дебет, спишем дебет
5 Счет 0 Выставлен счет(Баланс неизменен)
6 Документы 0 Разные документы, Договор с абонентом
7 Услуга -1 Списание доп. услуги Всеже пока хак D=D-sum
100 Отчет за период 0 Отчеты за период типа ведомость 6, 16 , баланс
200 Интернет карты 0 Печать интернет карт
*/


--получаем номер след операции приход
select NUMBER from CLN_FIN_OPER_PREPARE(2/приход/,:USER_ID) into :number;
if (number is null) then number='000000';
SUMMA_NUM=SUMMA*money;
--выполняем операцию приход
execute procedure gln_fin_add_debet(:user_id,'now',:SUMMA_NUM,'Оплата через

my_pay',:user_id,:number) returning_values :new_id;
/*
аналогично работают
GLN_FIN_DEC_DEBIT -- разовая услуга, протяжка кабеля и тп


не рекомендуется использовать вручную
GLN_FIN_MAKE_CREDIT -- формирование акта, выставлятеся автоматом в конце мес
GLN_FIN_MAKE_DEBIT -- списывание дебета в остаток автоматом в конце мес


p.s
если необходимо списывать периодические услуги, то их необходимо сначало создать
и потом назначить пользователю
это можно делать через CLN_USR_USLUGA_EDIT
предварительно требуется авторизация админом через CLN_AUTH_LOGIN для получения SUID.



p.p.s.
полезная информация
http://www.ideco-software.ru/forum3/default.aspx?g=posts&t=1136


*/
end
{code}
----
Вызывать процедуры можно
1. Через любую программу которая умеет работать с interbase
2. Через isql
3. Через PHP, через интерфейс кассира или платежных систем.