====== Форма "Тесты" ====== Проект **[[:analiticdb|"AnaliticDB"]]**\\ Форма **"Тесты"** открывается из главного меню программы кнопкой **"Тесты"**.\\ {{:pasted:20200617-075258.png}} ==== Кнопки ==== * **Последний заказ** - Загружает только значения из файла WarningTypes.xml * **ID услуги для начисления пени** - Сохраняет таблицу в файл WarningTypes.xml * **Статистика по ошибкам в закзах** - Вычисление количества ошибок в платежах или начислениях заказов через таблицу [[:a_orders|a_orders]]\\ * **Статистика по ошибкам в закзах 2** - Вычисление количества ошибок в платежах или начислениях заказов через исходную базу данных с помощью хранимой процедуры SP_CHECK_ORDERS\\ * **Заказы с ошибкой** - * **Заказы с ошибкой в платежах** - * **Заказы с ошибкой в начислениях** - * **Экспорт заказов с ошибкой в Excel** - === Последний заказ === Возвращает количество заказов в базе данных и дату последнего заказа, что позволяет оценить актуальность базы данных.\\ Возвращает текст в поле отчета:\\ Количество заказов = 2906656 дата последнего заказа = 13.02.2020 select count(*) cnt, max(doc_date) as doc_date from a_orders === ID услуги для начисления пени === Для начисления пени заводится специальная услуга с настройкой tovars_tb.accrual_penalty=1.\\ Если такой услуги нет, то начисление пени не предусмотрено.\\ Возвращает ID и наименование услуги для начисления пени.\\ Возвращает текст в поле отчета:\\ Нет услуги для начисления пени select t.tovar_id, t.name from tovars_tbl t where t.accrual_penalty=1 === Статистика по ошибкам в закзах === Вычисление количества ошибок в платежах или начислениях заказов через таблицу [[:a_orders|a_orders]]\\ Возвращает текст в поле отчета:\\ Количество заказов = 2906656 Количество заказов с правильными суммами оплат и начислений = 2869925 Количество заказов с несовпадающими суммами оплат или начислений = 36731 Несоответствия суммы заказа в зависимости от метода получения Количество заказов с правильными суммами начислений = 2876800 Количество заказов с несовпадающими суммами начислений = 29856 Количество заказов с docs_order.kredit<>docs.kredit = 2078 Количество заказов с docs_order.kredit<>сумма (doc_order_services, doc_order_lines, doc_laud_services) = 27799 Сумма задолженности по правильным заказам = 12914119,27 Сумма задолженности по заказам с ошибкой = 35588651,64 Несоответствия суммы оплаты заказа в зависимости от метода получения Количество заказов с правильными суммами оплат = 2897606 Количество заказов с несовпадающими суммами оплат = 9050 Количество заказов с docs_order.debet<>payments = 7018 Количество заказов с docs_order.debet<>docs.debet = 2057 Количество заказов с docs_order.debet<>сумма из платежных документов (docs) = 6834 Количество заказов с docs_order.debet<>сумма из платежных документов (docs_bonus, docs_deposit, docs_bank, docs_card, docs_kassa) = 6732 Сумма задолженности по правильным заказам = 54563347,64 Сумма задолженности по заказам с ошибкой = -6060576,73 select count(*) as total, sum(iif((aor.ok_kredit=1) and (aor.ok_debet=1),1,0)) as cnt_ok, sum(iif((aor.ok_kredit=1) and (aor.ok_debet=1),0,1)) as cnt_bad, sum(iif(aor.ok_kredit=1,1,0)) as cnt_ok_kredit, sum(iif(aor.ok_kredit=1,0,1)) as cnt_bad_kredit, sum(iif(abs(coalesce(aor.dor_kredit,0)- coalesce(aor.doc_kredit,0))>1,1,0)) as cnt_doc_kredit, sum(iif(abs(coalesce(aor.dor_kredit,0)- coalesce(aor.dos_kredit,0))>1,1,0)) as cnt_dos_kredit, sum(iif(aor.ok_kredit=1,coalesce(aor.Debts,0),0)) as Debts_ok_kredit, sum(iif(aor.ok_kredit=1,0,coalesce(aor.Debts,0))) as Debts_bad_kredit, sum(iif(aor.ok_debet=1,1,0)) as cnt_ok_debet, sum(iif(aor.ok_debet=1,0,1)) as cnt_bad_debet, sum(iif(abs(coalesce(aor.dor_debet,0)- coalesce(aor.payments,0))>1,1,0)) as cnt_payments, sum(iif(abs(coalesce(aor.dor_debet,0)- coalesce(aor.doc_debet,0))>1,1,0)) as cnt_doc_debet, sum(iif(abs(coalesce(aor.dor_debet,0)- coalesce(aor.dpc_debet,0))>1,1,0)) as cnt_dpc_debet, sum(iif(abs(coalesce(aor.dor_debet,0)- coalesce(aor.dpx_debet,0))>1,1,0)) as cnt_dpx_debet, sum(iif(aor.ok_debet=1,coalesce(aor.Debts,0),0)) as Debts_ok_debet, sum(iif(aor.ok_debet=1,0,coalesce(aor.Debts,0))) as Debts_bad_debet from a_orders aor === Статистика по ошибкам в закзах 2 === Вычисление количества ошибок в платежах или начислениях заказов через исходную базу данных с помощью хранимой процедуры SP_CHECK_ORDERS\\ Возвращает текст в поле отчета:\\ Количество заказов = 2906656 Количество заказов с правильными суммами оплат и начислений = 2870004 Количество заказов с несовпадающими суммами оплат или начислений = 36652 Несоответствия суммы заказа в зависимости от метода получения Количество заказов с правильными суммами начислений = 2876800 Количество заказов с несовпадающими суммами начислений = 29856 Количество заказов с docs_order.kredit<>docs.kredit = 2078 Количество заказов с docs_order.kredit<>сумма (doc_order_services, doc_order_lines, doc_laud_services) = 27799 Несоответствия суммы оплаты заказа в зависимости от метода получения Количество заказов с правильными суммами оплат = 2897685 Количество заказов с несовпадающими суммами оплат = 8971 Количество заказов с docs_order.debet<>docs.debet = 2057 Количество заказов с docs_order.debet<>сумма из платежных документов (docs) = 6834 Количество заказов с docs_order.debet<>сумма из платежных документов (docs_bonus, docs_deposit, docs_bank, docs_card, docs_kassa) = 6732 SET TERM ^ ; create or alter procedure SP_CHECK_ORDERS ( data_begin D_DATE, data_end D_DATE) returns ( cnt_total d_integer, cnt_ok d_integer, cnt_bad d_integer, cnt_ok_kredit d_integer, cnt_bad_kredit d_integer, cnt_doc_kredit d_integer, cnt_dos_kredit d_integer, cnt_ok_debet d_integer, cnt_bad_debet d_integer, cnt_doc_debet d_integer, cnt_dpc_debet d_integer, cnt_dpx_debet d_integer) as declare variable dor_id D_INT64; declare variable doc_debet D_NUM_15_2; declare variable doc_kredit D_NUM_15_2; declare variable kind_id D_INT64; declare variable summ_from_details D_BOOLEAN; declare variable use_simple_laundry D_BOOLEAN; declare variable dor_debet D_NUM_15_2; declare variable dor_kredit D_NUM_15_2; declare variable dos_kredit D_NUM_15_2; declare variable PenaltyID D_INT64; declare variable dpc_debet D_NUM_15_2; declare variable dpx_debet D_NUM_15_2; declare variable is_ok d_integer; declare variable s1 D_NUM_15_2; declare variable s2 D_NUM_15_2; begin select first 1 t.tovar_id from tovars_tbl t where t.accrual_penalty=1 into :PenaltyID; PenaltyID = coalesce(PenaltyID,-1); cnt_total = 0; cnt_ok = 0; cnt_bad = 0; cnt_ok_kredit = 0; cnt_bad_kredit = 0; cnt_doc_kredit = 0; cnt_dos_kredit = 0; cnt_ok_debet = 0; cnt_bad_debet = 0; cnt_doc_debet = 0; cnt_dpc_debet = 0; cnt_dpx_debet = 0; FOR select dor.id as dor_id, d.debet as doc_debet, d.kredit as doc_kredit, dor.kind_id as kind_id, dor.summ_from_details, dor.use_simple_laundry, dor.debet as dor_debet, dor.kredit as dor_kredit from docs d inner join docs_order dor on dor.doc_id=d.doc_id where (d.doc_date>=:data_begin) and (d.doc_date<:data_end) INTO :dor_id, :doc_debet, :doc_kredit, :kind_id, :summ_from_details, :use_simple_laundry, :dor_debet, :dor_kredit DO BEGIN if ((:kind_id=1) and (coalesce(:summ_from_details,0)=1) and (coalesce(:use_simple_laundry,0)=0)) then begin select sum(dl.contr_kredit) from doc_order_services dos left join doc_laud_services dl on dl.dos_id=dos.id where dos.doc_order_id=:dor_id into :dos_kredit; end else begin select sum(dos.kredit) from doc_order_services dos where dos.doc_order_id=:dor_id and (dos.status_id<>7) and (dos.tovar_id<>:PenaltyID) into :S1; select sum(dol.kredit) from doc_order_lines dol where dol.doc_order_id=:dor_id into :S2; dos_kredit = coalesce(S1,0) + coalesce(S2,0); end -- Оплата заказа через docs select sum(coalesce(d2.debet,0) - coalesce(d2.kredit,0)) as dpc_debet from doc_order_pays dop left join docs d2 on d2.doc_id = dop.doc_id where (dop.doc_order_id=:dor_id) into :dpc_debet; -- Оплата заказа через docs_xxx select sum( coalesce(dk.debet,0) - coalesce(dk.kredit,0)+ coalesce(dc.debet,0) - coalesce(dc.kredit,0)+ coalesce(db.debet,0) - coalesce(db.kredit,0)+ coalesce(bo.debet,0) - coalesce(bo.kredit,0)+ coalesce(dd.debet,0) - coalesce(dd.kredit,0) ) as dpx_debet -- Сумма платежа 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 bo on bo.doc_id=dop.doc_bonus_id left join docs_bank db on db.doc_id=dop.doc_bank_id where (dop.doc_order_id=:dor_id) into :dpx_debet; cnt_total = cnt_total + 1; is_ok = 1; if ((abs(coalesce(dor_kredit,0)- coalesce(doc_kredit,0))<1) and (abs(coalesce(dor_kredit,0)- coalesce(dos_kredit,0))<1)) then begin cnt_ok_kredit = cnt_ok_kredit + 1; end else begin is_ok = 0; cnt_bad_kredit = cnt_bad_kredit + 1; if (abs(coalesce(dor_kredit,0)- coalesce(doc_kredit,0))>1) then cnt_doc_kredit = cnt_doc_kredit + 1; if (abs(coalesce(dor_kredit,0)- coalesce(dos_kredit,0))>1) then cnt_dos_kredit = cnt_dos_kredit + 1; end if ((abs(coalesce(dor_debet,0)- coalesce(doc_debet,0))<1) and (abs(coalesce(dor_debet,0)- coalesce(dpc_debet,0))<1) and (abs(coalesce(dor_debet,0)- coalesce(dpx_debet,0))<1)) then begin cnt_ok_debet = cnt_ok_debet + 1; end else begin is_ok = 0; cnt_bad_debet = cnt_bad_debet + 1; if (abs(coalesce(dor_debet,0)- coalesce(doc_debet,0))>1) then cnt_doc_debet = cnt_doc_debet + 1; if (abs(coalesce(dor_debet,0)- coalesce(dpc_debet,0))>1) then cnt_dpc_debet = cnt_dpc_debet + 1; if (abs(coalesce(dor_debet,0)- coalesce(dpx_debet,0))>1) then cnt_dpx_debet = cnt_dpx_debet + 1; end if (is_ok = 1) then cnt_ok = cnt_ok + 1; else cnt_bad = cnt_bad + 1; END suspend; end^ SET TERM ; ^ === "Заказы с ошибкой", "Заказы с ошибкой в платежах", "Заказы с ошибкой в начислениях" === Вычисляется общее количество заказов с ошибкой и записывается в поле отчета:\\ select count(*) from a_orders aor where (aor.ok_kredit=0) or (aor.ok_debet=0) Загружаются первые 100 записей для просмотра на форме.\\ select first 100 aor.id, aor.dttm, aor.doc_id, aor.dor_id, aor.doc_date, aor.doc_num, aor.status_id, aor.firm_id, aor.Contr_id, aor.Sclad_id, aor.IS_Closed, aor.DT_Closed, aor.IS_Debts, aor.DT_NO_Debts, aor.Debts, aor.Sales, aor.Sales_after_Discount, aor.Sales_Returns, aor.Sales_Additional, aor.Net_sales, aor.doc_kredit, aor.dor_kredit, aor.dos_kredit, aor.ok_kredit, aor.pay_Bonuses, aor.pay_Deposits, aor.pay_Bank, aor.pay_Card, aor.pay_Cash, aor.payments, aor.doc_debet, aor.dor_debet, aor.dpc_debet, aor.dpx_debet, aor.ok_debet, aor.kind_id, aor.summ_from_details, aor.use_simple_laundry, aor.pay_status_id, aor.date_full_pay, aor.date_out_fact, aor.date_complete, aor.is_order_confirmed, aor.waiting_confirm, aor.is_not_confirmed, aor.contr_name, aor.sclad_name from a_orders aor where (aor.ok_kredit=0) or (aor.ok_debet=0) === Экспорт заказов с ошибкой в Excel === Выгружаются в Excel-таблицу все записи заказов с ошибкой.\\ Скрипт для получения данных смотри в предыдущем пункте.\\ ===== Дополнительная информация ===== [[:analiticdb|Назад]]\\