Разработка:storages/accentryes — различия между версиями

Материал из DOF
Перейти к: навигация, поиск
(get_history($accountid,$begindate=null,$enddate=null))
 
(не показаны 2 промежуточные версии этого же участника)
Строка 24: Строка 24:
 
===='''Публичные методы:'''====
 
===='''Публичные методы:'''====
  
===='''add_accentry($ptype, $pcode, $objectid, $code, $type, $name, $params, $status = 'active')'''====
+
===='''generate_accentry_record($fromid, $toid, $amount, $date, $extentryopts, $orderid = null, $about = '', $status = '')'''====
  
Добавляет новую операцию по счету в справочник.
+
Генерируем объект операции
 +
 
 +
Метод генерации объекта операции.
  
 
''Аргументы:''
 
''Аргументы:''
Строка 32: Строка 34:
 
* $toid(int) - счет, на который переводим сумму.
 
* $toid(int) - счет, на который переводим сумму.
 
* $amount(float) - сумма операции.
 
* $amount(float) - сумма операции.
* $orderid(int) - id приказа, в соответствии с которым совершена операция.
 
 
* $date(int) - дата, когда необходимо провести операцию.
 
* $date(int) - дата, когда необходимо провести операцию.
 
* $extentryopts(array) - массив опций внешнего ключа.
 
* $extentryopts(array) - массив опций внешнего ключа.
 +
* $orderid(int) - Id операции, в общем случае добавляется после формирования приказа
 
* $about(string) - описание операции.
 
* $about(string) - описание операции.
 
* $status(string) - статус операции.
 
* $status(string) - статус операции.
Строка 42: Строка 44:
 
* bool - false в случае ошибки.
 
* bool - false в случае ошибки.
  
''Структура работы:''
+
''Пояснения:''
# Проверяем существование счета - источника и счета - получателя.
+
Метод создан для предотвращения циклической зависимости между storage/accentryes и modlib/billing. Для добавления операции мы должны сначала создать приказ, который содержит в себе объект операции. Поэтому для добавления операции мы должны сгенерировать ее объект с помощью данного метоода, затем передать операцию в приказ и создать его, а после этого уже добавить транзакцию в справочник с дозаполненным полем "id приказа".
# Формируем объект для добавления в БД.
+
 
# Проверяем по хэшу, есть ли в системе такая операция.
+
 
 +
===='''add_accentry($accentryobj)'''====
 +
 
 +
Добавить проводку
 +
 
 +
Добавить проводку на основе передаваемого объекта
 +
В объекте должны быть указаны все необходимые поля, а именно
 +
> fromid
 +
> toid
 +
> amount
 +
> orderid
 +
> createdate
 +
> date
 +
> extentryopts
 +
> extentryoptshash
 +
> about
 +
> status
 +
 
 +
''Аргументы:''
 +
* object $accentryobj - Объект операции
 +
 
 +
''Возвращаемые значения:''
 +
* object - объект операции
 +
* bool - false в случае ошибки
 +
 
 +
===='''change_status($accentryid, $status )'''====
 +
 
 +
Сменить статус проводки
 +
 
 +
Сменяет статус у объекта с переданным id
 +
 
 +
''Аргументы:''
 +
* $accentryid(int) - id объекта операции
 +
* $status(string) - статус
 +
 
 +
''Возвращаемые значения:''
 +
* bool - false в случае ошибки, true в случае успеха
 +
 
  
 
===='''get_history($accountid,$begindate=null,$enddate=null) '''====
 
===='''get_history($accountid,$begindate=null,$enddate=null) '''====
Строка 64: Строка 103:
 
# Производится формирование sql-фрагмента кода
 
# Производится формирование sql-фрагмента кода
 
# Подсчитывается баланс по счету после каждой проведенной операции, операции, не удовлетворяющие условию по времени, удаляются.
 
# Подсчитывается баланс по счету после каждой проведенной операции, операции, не удовлетворяющие условию по времени, удаляются.
 +
 +
===='''get_account_balance($accountid,$date)'''====
 +
 +
Возвращает баланс по счету $accountid на дату $date.
 +
 +
''Аргументы:''
 +
* $accountid(int) - id счета.
 +
* $date(int) - дата, на которую необходимо получить баланс.
 +
 +
''Возвращаемые значения:''
 +
* float - баланс по счету.
 +
 +
''Структура работы:''
 +
# Метод получает историю по аккаунту  до даты $date
 +
# Проверяются данные истории. Если история - пустой массив, тогда баланс = 0, если false, то произошла ошибка.
 +
# Возвращаем баланс или false в случае ошибки
 +
  
 
===='''Приватные методы:'''====
 
===='''Приватные методы:'''====
 +
 +
===='''get_extentryoptshash($extentryopts)'''====
 +
 +
Возвращает md5-хэш от массива опций.
 +
 +
''Аргументы:''
 +
* $extentryopts(array) - массив опций
 +
 +
''Возвращаемые значения:''
 +
* string - хэш.

Текущая версия на 10:14, 1 декабря 2014

Плагин
Название accentryes
Тип storages


Таблица в базе данных

accentryes - справочник операций по счетам. Все счета хранятся в справочнике Разработка:storages/accounts.

Подробный формат полей в таблице:

  • id - id операции.
  • fromid - id счета-источника.
  • toid - id счета-получателя.
  • amount - сумма операции.
  • orderid - id приказа, на основании которого совершена операция.
  • createdate - дата фактической региcтрации проводки.
  • date - дата выполнения операции.
  • extentryopts - массив с опциями внешнего ключа.
  • extentryoptshash - хеш опций внешнего ключа.
  • about - пояснение операции.
  • status - статус операции.

Дополнительные методы:

Публичные методы:

generate_accentry_record($fromid, $toid, $amount, $date, $extentryopts, $orderid = null, $about = , $status = )

Генерируем объект операции

Метод генерации объекта операции.

Аргументы:

  • $fromid(int) - счет, с которого списываем сумму.
  • $toid(int) - счет, на который переводим сумму.
  • $amount(float) - сумма операции.
  • $date(int) - дата, когда необходимо провести операцию.
  • $extentryopts(array) - массив опций внешнего ключа.
  • $orderid(int) - Id операции, в общем случае добавляется после формирования приказа
  • $about(string) - описание операции.
  • $status(string) - статус операции.

Возвращаемые значения:

  • object - объект операции.
  • bool - false в случае ошибки.

Пояснения: Метод создан для предотвращения циклической зависимости между storage/accentryes и modlib/billing. Для добавления операции мы должны сначала создать приказ, который содержит в себе объект операции. Поэтому для добавления операции мы должны сгенерировать ее объект с помощью данного метоода, затем передать операцию в приказ и создать его, а после этого уже добавить транзакцию в справочник с дозаполненным полем "id приказа".


add_accentry($accentryobj)

Добавить проводку

Добавить проводку на основе передаваемого объекта В объекте должны быть указаны все необходимые поля, а именно

> fromid
> toid
> amount
> orderid
> createdate
> date
> extentryopts
> extentryoptshash
> about
> status

Аргументы:

  • object $accentryobj - Объект операции

Возвращаемые значения:

  • object - объект операции
  • bool - false в случае ошибки

change_status($accentryid, $status )

Сменить статус проводки

Сменяет статус у объекта с переданным id

Аргументы:

  • $accentryid(int) - id объекта операции
  • $status(string) - статус

Возвращаемые значения:

  • bool - false в случае ошибки, true в случае успеха


get_history($accountid,$begindate=null,$enddate=null)

Получает историю операций по счету за определенный период.

Аргументы:

  • $accountid(int) - id счета.
  • $begindate(int) - начальная дата, если null - не учитывается.
  • $enddate(int) - конечная дата, если null - не учитывается.

Возвращаемые значения:

  • array - массив операций.
  • bool - false в случае ошибки.

Структура работы:

  1. Метод проверяет входные данные.
  2. Производится формирование sql-фрагмента кода
  3. Подсчитывается баланс по счету после каждой проведенной операции, операции, не удовлетворяющие условию по времени, удаляются.

get_account_balance($accountid,$date)

Возвращает баланс по счету $accountid на дату $date.

Аргументы:

  • $accountid(int) - id счета.
  • $date(int) - дата, на которую необходимо получить баланс.

Возвращаемые значения:

  • float - баланс по счету.

Структура работы:

  1. Метод получает историю по аккаунту до даты $date
  2. Проверяются данные истории. Если история - пустой массив, тогда баланс = 0, если false, то произошла ошибка.
  3. Возвращаем баланс или false в случае ошибки


Приватные методы:

get_extentryoptshash($extentryopts)

Возвращает md5-хэш от массива опций.

Аргументы:

  • $extentryopts(array) - массив опций

Возвращаемые значения:

  • string - хэш.