Проект "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
Расчет выполняется аналогично Задолженность общая, но с группировкой по клиентам.
<alert info> Вычисляется задолженность на 00:00, то есть документы на дату расчета исключаются из расчета.
</alert>
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)
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)
select aor.Contr_id, min(aor.doc_date) as DT_Start from a_orders aor where [^1] group by aor.contr_id
<!-- -->
<!-- -->
<!-- -->
<!-- -->
<!-- -->
<!-- -->