====== 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' ===== Использование таблицы ===== [[:таблицы_данных|Назад]]\\