Разработка:storages/accentryes

Материал из DOF
Версия от 10:14, 1 декабря 2014; Polikarpov (обсуждение | вклад)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск
Плагин
Название 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 - хэш.