Работа с балансом пользователя список процедур

Skip to end of metadata
Go to start of metadata

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

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

Введите метки, чтобы добавить к этой странице:
Please wait 
Ищите метку? просто начните печатать.