B_DEBT_CLIENT

Проект «AnaliticDB»

Задолженность по клиентам

Назначение

Нерепликационная таблица B_DEBT_CLIENT из БД Срезы содержит величину задолженности суммарную по всем заказам сгруппированную по клиентам на первое число каждого месяца.

Поля таблицы

select
  bc.id           , -- ВнНомер
  bc.dttm         , -- Дата и время расчета
  bc.DT           , -- Задолженность на дату
  bc.contr_id     , -- Контрагент
  bc.DT_Start     , -- Дата возникновения задолженности
  bc.Debts        , -- Сумма задолженности
  bc.Sales        , -- Сумма продаж
  bc.net_sales    , -- Сумма заказов с учетом скидки = Чистая сумма продаж
  bc.payments     , -- Сумма оплат
  bc.pay_Bonuses  , -- Сумма оплат заказов через бонусы
  bc.pay_Deposits , -- Сумма оплат заказов через депозит
  bc.pay_Bank     , -- Сумма оплат заказов через банк
  bc.pay_Card     , -- Сумма оплат заказов через кредитные карты
  bc.pay_Cash     , -- Сумма оплат заказов наличными
  bc.db_Deposits  , -- Сумма поступлений депозитов
  bc.db_Bonuses   , -- Сумма начисленных бонусов
  bc.rest_Deposits, -- Сумма остатка депозитов
  bc.rest_Bonuses , -- Сумма остатка бонусов
  bc.IS_Debts     , -- Есть задолженность
  bc.IS_Name      , -- Есть в справчнике contragents
  bc.contr_name     -- Контрагент 
from b_debt_client bc -- Задолженность по клиентам

dttm - Дата и время расчета.
DT - Задолженность на дату. Вычисляется задолженность на 00:00, то есть документы на указанную дату исключаются из расчета.

contr_id - ID контрагента в справочнике contragents из базы данных «Химчистка».
contr_name - Контрагент - краткое наименование клиента (contragents.name).
DT_Start - Дата возникновения задолженности - дата первого заказа, который имеет задолженность.
IS_Debts - Есть задолженность - [1, если |Debts|>0.001 и 0, если |Debts|>0.001]. Предназначено для удобства визуальной обработки таблицы.
IS_Name - Есть в справчнике contragents - [1, если есть запись и 0, если запись отсутствует]. Предназначено для удобства визуальной обработки таблицы.

Debts - Сумма задолженности вычисляется как Net_sales - pay_ments

Sales - Сумма продаж вычисляется как сумма заказов без учета скидки.
Net_sales - Чистая сумма продаж вычисляется как сумма заказов с учетом скидки, то есть сумм к оплате.

payments - Сумма оплат вычисляется как сумма всех видов платежей по заказам = pay_Bonuses + pay_Deposits + pay_Cash + pay_Bank + pay_Card

pay_Bonuses - Сумма оплат заказов через бонусы
pay_Deposits - Сумма оплат заказов через депозит
pay_Cash - Сумма оплат заказов наличными
pay_Bank - Сумма оплат заказов через банк
pay_Card - Сумма оплат заказов через кредитные карты

db_Deposits - Сумма поступлений депозитов
db_Bonuses - Сумма начисленных бонусов

rest_Deposits - Сумма остатка депозитов - сумма на депозитных счетах клиентов вычисляется как сумма всех платежей, которые поступили на депозитные счета клиентов за минусом использованных.
rest_Bonuses - Сумма остатка бонусов - Сумма начисленных и неизрасходованных бонусов на счетах клиентов.

Формирование таблицы

Расчет выполняется функцией TMain.CalcB_DEBT_CLIENT
Расчет выполняется аналогично Задолженность общая, но с группировкой по клиентам.

  1. В качестве даты расчета берется первое число месяца от выбранной даты, котора будет записана в поле DT «Задолженность на дату»
  2. В качестве базовой даты расчета берется первое число предыдущего месяца от даты расчета
  3. Считывается базовая запись из b_debt_client на базовую дату расчета
  4. Считаются обороты реализации за месяц из A_Sales
  5. Считаются обороты платежей за месяц из a_Payments
  6. К значениям базовой записи из b_debt_client добавляются обороты и расчитывается задолженность

Вычисляется задолженность на 00:00, то есть документы на дату расчета исключаются из расчета.

Обороты платежей за месяц из a_Payments

select 
  z.contr_id,
  sum(iif(z.type_id=2,coalesce(z.debet,0)-coalesce(z.kredit,0),0)) as payments, 
  sum(iif((z.type_id=2) and (z.case_id=1),coalesce(z.debet,0)-coalesce(z.kredit,0),0)) as pay_Bonuses, 
  sum(iif((z.type_id=2) and (z.case_id=2),coalesce(z.debet,0)-coalesce(z.kredit,0),0)) as pay_Deposits, 
  sum(iif((z.type_id=2) and (z.case_id=3),coalesce(z.debet,0)-coalesce(z.kredit,0),0)) as pay_Bank, 
  sum(iif((z.type_id=2) and (z.case_id=4),coalesce(z.debet,0)-coalesce(z.kredit,0),0)) as pay_Card, 
  sum(iif((z.type_id=2) and (z.case_id=5),coalesce(z.debet,0)-coalesce(z.kredit,0),0)) as pay_Cash, 
  sum(iif((z.type_id=3) and (z.case_id=1),coalesce(z.debet,0)-coalesce(z.kredit,0),0)) as db_Bonuses, 
  sum(iif((z.type_id=4),coalesce(z.debet,0)-coalesce(z.kredit,0),0)) as db_Deposits 
from A_Payments z   
where (z.doc_date<:p1) and (z.doc_date>=:p2)
group by z.contr_id 

Первый расчет выполняется на 01.01.2019 с начала существования базы данных where (z.doc_date<:p1)

Обороты реализации за месяц из A_Sales

select 
  z.contr_id, 
  sum(z.net_sales) as net_sales, 
  sum(z.sales) as sales 
from A_Sales z  
where (z.doc_date<:p1) and (z.doc_date>=:p2)
group by z.contr_id 

Первый расчет выполняется на 01.01.2019 с начала существования базы данных where (z.doc_date<:p1)

Дата возникновения задолженности из a_orders

select aor.Contr_id, min(aor.doc_date) as DT_Start 
from  a_orders aor 
where ((aor.IS_Debts=1) or (aor.DT_NO_Debts>:p1)) 
group by aor.contr_id 

b_debt_client на дату расчета

  • dttm - «Дата и время расчета» выставляется автоматически как системное время.
  • DT - «Задолженность на дату». Дату расчета, совпадающая с первым числом месяца на 00:00, поэтому документы на указанную дату исключаются из расчета.
  • Sales - «Сумма продаж» = базовая.Sales+обороты.Sales
  • Net_sales - «Чистая сумма продаж» = базовая.Net_sales+обороты.Net_sales
  • pay_Bonuses - «Сумма оплат заказов через бонусы» = базовая.pay_Bonuses+обороты.pay_Bonuses
  • pay_Deposits - «Сумма оплат заказов через депозит» = базовая.pay_Deposits+обороты.pay_Deposits
  • pay_Cash - «Сумма оплат заказов наличными» = базовая.pay_Cash+обороты.pay_Cash
  • pay_Bank - «Сумма оплат заказов через банк» = базовая.pay_Bank+обороты.pay_Bank
  • pay_Card - «Сумма оплат заказов через кредитные карты» = базовая.pay_Card+обороты.pay_Card
  • payments - «Сумма оплат заказов» = pay_Bonuses + pay_Deposits + pay_Cash + pay_Bank + pay_Card
  • Debts - «Сумма задолженности» = Net_sales - payments
  • db_Deposits - «Сумма поступлений депозитов» = базовая.db_Deposits+обороты.db_Deposits
  • db_Bonuses - «Сумма начисленных бонусов» = базовая.db_Bonuses+обороты.db_Bonuses
  • rest_Deposits - «Сумма остатка депозитов» = db_Deposits - pay_Deposits
  • rest_Bonuses - «Сумма остатка бонусов» = db_Bonuses - pay_Bonuses
  • contr_id - ID контрагента в справочнике contragents из базы данных «Химчистка».
  • contr_name - Контрагент - краткое наименование клиента (contragents.name).
  • DT_Start - Дата возникновения задолженности - дата первого заказа, который имеет задолженность.
  • IS_Debts - Есть задолженность - [1, если |Debts|>0.001 и 0, если |Debts|>0.001]. Предназначено для удобства визуальной обработки таблицы.
  • IS_Name - Есть в справчнике contragents - [1, если есть запись и 0, если запись отсутствует]. Предназначено для удобства визуальной обработки таблицы.

Использование таблицы

Дополнительная информация