====== DOC_ORDER_PAYS ======
**Оплата заказа**
===== Назначение =====
Репликационная таблица **doc_order_pays** из БД **Химчистка** хранит ссылки на документы оплаты заказов
===== Поля таблицы =====
^ № ^ Поле ^ Описание ^
|1|ID|ВнНомер товара|
|2|DOC_ORDER_ID|Ссылка на заказ, заполняется из [[DOCS_ORDER]]|
|3|DOC_TYPE|Тип документа, заполняется из [[DOC_TYPES]]|
|4|DOC_KASSA_ID|Ссылка на документ в кассовой оплате, связанный с [[DOCS_KASSA]]|
|5|DOC_BANK_ID|Ссылка на документ в банковской оплате, связанный с [[DOCS_BANK]]|
|6|DOC_CARD_ID|Ссылка на документ оплаты по карте, связанный с [[DOCS_CARD]]|
|7|DOC_BONUS_ID|Ссылка на документ оплаты бонусом, связанный с [[DOCS_BONUS]]|
|8|DOC_DEPOSIT_ID|Ссылка на документ оплаты депозитом, связанный с [[DOCS_DEPOSIT]]|
|9|DOC_ID|Ссылка на документ, заполняется из [[DOCS]]. Дублируется из соответствующей ссылки на оплату|
|10|GUID|Уникальный GUID оплаты, используется в мобильных сервисах|
select
dop.id , --
dop.doc_order_id , -- Оплачиваемый заказ
dop.doc_type , --
dop.doc_kassa_id , -- Платеж через кассу
dop.doc_bank_id , -- Платеж через банк
dop.doc_card_id , -- Платеж через карту
dop.doc_bonus_id , -- Платеж через бонус
dop.doc_deposit_id , -- Платеж через депозит
dop.DEP_ID , --
dop.DEP_SRC_ID , --
dop.OWN_ID , --
dop.doc_id , -- Документ об оплате
dop.LAST_DEP_ID --
from doc_order_pays dop
==== Оплата заказов 1 ====
select d.doc_num,
d.debet,
d.kredit,
sum(coalesce(d2.debet, 0) - coalesce(d2.kredit, 0))
from docs d
left join docs_order dor on dor.doc_id = d.doc_id
left join doc_order_pays dop on dop.doc_order_id = dor.id
left join docs d2 on d2.doc_id = dop.doc_id
where d.doc_type = 5
group by 1,2,3
==== Оплата заказов 2 ====
select coalesce(sum(iif(dop.doc_kassa_id is not null, coalesce(d.debet,0) - coalesce(d.kredit,0),0)),0) as SumKassa,
coalesce(sum(iif(dop.doc_bank_id is not null, coalesce(d.debet,0) - coalesce(d.kredit,0),0)),0) as SumBank,
coalesce(sum(iif(dop.doc_card_id is not null, coalesce(d.debet,0) - coalesce(d.kredit,0),0)),0) as SumCard,
coalesce(sum(iif(dop.doc_deposit_id is not null, coalesce(d.debet,0) - coalesce(d.kredit,0),0)),0) as SumDeposit,
coalesce(sum(iif(dop.doc_bonus_id is not null, coalesce(d.debet,0) - coalesce(d.kredit,0),0)),0) as SumBonus
from doc_order_pays dop
inner join docs d on d.doc_id = dop.doc_id
==== Оплата заказов 3 ====
select dop.doc_order_id,
sum(dk.debet) - sum(dk.kredit) as kassa,
sum(dc.debet) - sum(dc.kredit) as cards,
sum(dd.debet) - sum(dd.kredit) as deposits,
sum(dbs.debet)- sum(dbs.kredit) as bonuses,
sum(db.debet) - sum(db.kredit) as banks
from doc_order_pays dop
left join docs_kassa dk on dk.doc_id=dop.doc_kassa_id
left join docs_card dc on dc.doc_id=dop.doc_card_id
left join docs_deposit dd on dd.doc_id=dop.doc_deposit_id
left join docs_bonus dbs on dbs.doc_id=dop.doc_bonus_id
left join docs_bank db on db.doc_id=dop.doc_bank_id
group by 1
==== Оплата заказов 4 ====
select
d.doc_id,
dor.id,
d.doc_date, -- Дата заказ
d.doc_num, -- № заказа
d.kredit, -- начислено
d.debet, -- Уплачено
d.kredit-d.debet as Delta, -- Задолженность
(select sum(dk.debet) from doc_order_pays dop
inner join docs_kassa dk on dk.doc_id=dop.doc_kassa_id
where dop.doc_order_id=dor.id) as SumKassa,
(select sum(dk.debet) from doc_order_pays dop
inner join docs_bank dk on dk.doc_id=dop.doc_bank_id
where dop.doc_order_id=dor.id) as SumBank,
(select sum(dk.debet) from doc_order_pays dop
inner join docs_card dk on dk.doc_id=dop.doc_card_id
where dop.doc_order_id=dor.id) as SumCard,
(select sum(dk.debet) from doc_order_pays dop
inner join docs_deposit dk on dk.doc_id=dop.doc_deposit_id
where dop.doc_order_id=dor.id) as SumDeposit,
(select sum(dk.debet) from doc_order_pays dop
inner join docs_bonus dk on dk.doc_id=dop.doc_bonus_id
where dop.doc_order_id=dor.id) as SumBonus -- Платежи по заказу бонусами
-- (SumKassa+SumBank+SumCard+SumDeposit+SumBonus) as SumTotal
from docs d
left join docs_order dor on dor.doc_id=d.doc_id
where d.doc_type=5 -- заказ
and d.doc_id=614036
==== Оплата заказов - проверка таблиц docs и docs_order ====
select
z.doc_id,
--dor.id,
z.doc_date, -- Дата заказ
z.doc_num, -- № заказа
z.kredit, -- начислено
z.debet, -- Уплачено
z.Delta, -- Задолженность
coalesce(z.SumKassa,0) as SumKassa,
coalesce(z.SumBank,0) as SumBank,
coalesce(z.SumCard,0) as SumCard,
coalesce(z.SumDeposit,0) as SumDeposit,
coalesce(z.SumBonus,0) as SumBonus,
coalesce(SumKassa,0)+coalesce(SumBank,0)+coalesce(SumCard,0)+coalesce(SumDeposit,0)+coalesce(SumBonus,0) as SumTotal,
z.debet-(coalesce(SumKassa,0)+coalesce(SumBank,0)+coalesce(SumCard,0)+coalesce(SumDeposit,0)+coalesce(SumBonus,0)) as differenc
from (select
d.doc_id,
--dor.id,
d.doc_date, -- Дата заказ
d.doc_num, -- № заказа
d.kredit, -- начислено
d.debet, -- Уплачено
d.kredit-d.debet as Delta, -- Задолженность
(select sum(dk.debet) from doc_order_pays dop
inner join docs_kassa dk on dk.doc_id=dop.doc_kassa_id
where dop.doc_order_id=dor.id) as SumKassa,
(select sum(dk.debet) from doc_order_pays dop
inner join docs_bank dk on dk.doc_id=dop.doc_bank_id
where dop.doc_order_id=dor.id) as SumBank,
(select sum(dk.debet) from doc_order_pays dop
inner join docs_card dk on dk.doc_id=dop.doc_card_id
where dop.doc_order_id=dor.id) as SumCard,
(select sum(dk.debet) from doc_order_pays dop
inner join docs_deposit dk on dk.doc_id=dop.doc_deposit_id
where dop.doc_order_id=dor.id) as SumDeposit,
(select sum(dk.debet) from doc_order_pays dop
inner join docs_bonus dk on dk.doc_id=dop.doc_bonus_id
where dop.doc_order_id=dor.id) as SumBonus
from docs d
inner join docs_order dor on dor.doc_id=d.doc_id
-- left join docs_order dor on dor.doc_id=d.doc_id
-- where d.doc_type=5 -- заказ
) z
where z.doc_num='0000542'
===== Использование таблицы =====
[[:таблицы_данных|Назад]]\\