Загрузка данных


INSERT INTO UBRR_DATA.UBRR_SFM_INFO_OPERS_FL1MLN_GTT SELECT
        CCUSNUMNAL,
        CACCACC,
        to_char(doc_date,'dd.mm.yyyy') doc_date,
        DOC_NUM,
        to_char(doc_date,'dd.mm.yyyy') doc_date2,
        PAYER_BIK,
        PAYER_BANK,
        PAYER_CORRACC,
        RESIP_BIK,
        RESIP_BANK,
        RESIP_CORRACC,
        SUMM_DB,
        SUMM_CR,
        SUMM_DB_R,
        SUMM_CR_R,
        PAYER_INN,
        PAYER_NAME,
        PAYER_ACC,
        RESIP_INN,
        RESIP_NAME,
        RESIP_ACC,
        PURP,
        CASE WHEN PAYER_ACC = CACCACC 
             THEN CASE WHEN RESIP_BIK = '046577795'
                       THEN regexp_substr(PURP,'\d{20}') ELSE RESIP_ACC END
             ELSE NULL END AS acc_fl,
        REGEXP_REPLACE(
          REGEXP_SUBSTR(LOWER(REGEXP_REPLACE(REPLACE(PURP,' '), '[0-9]{20}')), '(карт[ауы][^0-9]*)([0-9* ]{12,19})', 1, 1, 'i', 2),
          '[^0-9*]',
          ''
          ) AS card_num
        FROM (WITH tab_acc as (SELECT CACCACC,
                                      cacccur,
                                      idsmr,
                                      to_date('01.05.2026', 'dd.mm.rrrr') dat1,
                                      to_date('15.05.2026', 'dd.mm.rrrr') dat2,
                                      (SELECT ccusnumnal FROM xxi.cus WHERE icusnum = iacccus) AS ccusnumnal
                                 FROM xxi."acc"
                                WHERE iacccus IN (select clid
                                                    from (select clid,
                                                                 summc as sum_value,
                                                                 ctrnclient_inn,
                                                                 (select sum(t.mtrnrsum) summ_deb
                                                                    from xxi."acc" a, xxi."trn" t
                                                                   where a.caccacc = t.ctrnaccd
                                                                     and a.iacccus = clid
                                                                     and a.IACCBS2 IN (40701, 40702, 40703, 40802)
                                                                     and t.idsmr = a.idsmr
                                                                     and t.ctrncur = a.cacccur
                                                                     and t.ctrnclient_inn <> t.ctrninna
                                                                     and t.idsmr = '1'
                                                                     and dtrntrn_trunc between to_date('01.05.2026', 'dd.mm.rrrr')  and to_date('15.05.2026', 'dd.mm.rrrr') ) * 0.2 summd20
                                                            from (select a.iacccus clid, t.ctrnclient_inn, sum(t.mtrnrsum) summc
                                                                    from xxi."acc" a, xxi."trn" t
                                                                   where a.caccacc = t.ctrnaccd
                                                                     and a.idsmr = t.idsmr
                                                                     and a.cacccur = t.ctrncur
                                                                     and substr(t.ctrnaccd, 1, 5) in ('40702', '40703', '40701', '40802')
                                                                     -- Счет получателя равен указанным маскам
                                                                     and (
                                                                          substr(t.ctrnacca, 1, 5) in ('40817','40803','40806','40809','40810','40812','40813',
                                                                                                       '40814','40815','40816','40820','42301','42302','42303',
                                                                                                       '42304','42305','42306','42307','47422','42601','42602',
                                                                                                       '42603','42604','42605','42606','42607')
                                                                          -- Или счет по Кт равен указанным маскам И в назначении платежа присутствуют маски указанных счетов
                                                                          or
                                                                            (
                                                                              (substr(t.ctrnaccc, 1, 5) in ('30232', '30233') or substr(t.ctrnaccc, 1, 3) in ('301', '303', '111', '100'))
                                                                               and
                                                                               substr(regexp_substr(t.ctrnpurp,'\d{20}(\D|$)'), 1, 5) in ('40817','40803','40806','40809','40810','40812','40813',
                                                                                                                                          '40814','40815','40816','40820','42301','42302','42303',
                                                                                                                                          '42304','42305','42306','42307','47422','42601','42602',
                                                                                                                                          '42603','42604','42605','42606','42607')
                                                                            )
                                                                         )
                                                                     and (lower(t.ctrnpurp) not like '%з/п%' and lower(t.ctrnpurp) not like '%зар%плат%' and
                                                                          lower(t.ctrnpurp) not like '%плат% труд%' and lower(t.ctrnpurp) not like '%отпуск%' and
                                                                          lower(t.ctrnpurp) not like '%аванс%' and lower(t.ctrnpurp) not like '%алимент%' and
                                                                          lower(t.ctrnpurp) not like '%увольн%' and lower(t.ctrnpurp) not like '% зп %' and
                                                                          lower(t.ctrnpurp) not like '%больнич%' and lower(t.ctrnpurp) not like '%реестр%' and
                                                                          lower(t.ctrnpurp) not like '%ген%согл%')
                                                                     and (substr(t.ctrnacca, 1, 3) not in ('474') or lower(t.ctrnpurp) not like '%куп%ин%валют%')
                                                                     and dtrntrn_trunc between to_date('01.05.2026', 'dd.mm.rrrr')  and to_date('15.05.2026', 'dd.mm.rrrr')
                                                                     and t.idsmr = '1'
                                                                   group by a.iacccus, t.ctrnclient_inn
                                                                  -- Совокупный объем операций по снятию наличных за период более > 500 тыс. руб.
                                                                  having sum(mtrnrsum) > 1000000))
                                                   -- Совокупный объем больше 20% общего объема списаний
                                                   where sum_value > summd20
                                          ) AND IACCBS2 IN (40701, 40702, 40703, 40802) AND idsmr = '1')
              SELECT /*+ orderd use_nl(tac_acc,t) use_nl(t,s)*/
                    tab_acc.caccacc
                    ,tab_acc.ccusnumnal
                    ,t.idsmr
                    ,t.ctrnaccd
                    ,t.ctrncur
                    ,t.itrnnum
                    ,t.itrnanum
                    ,t.itrntype
                    ,t.itrndocnum doc_num      --"Номер документа"
                    ,dtrntrn_trunc doc_date  ---"Дата операции"
                    --- Плательщик
                    ,replace(CASE WHEN iTrnType IN (5,50,53,52,55,17,41,42,43,44) THEN nvl(t.CTRNMFOA,s.CSMRMFO8)
                          ELSE nvl(t.CTRNMFOO,s.CSMRMFO8)
                     END,chr(10),' ') AS payer_bik --"Плательщик:БИК"
                    ,replace(CASE WHEN iTrnType IN (5,50,53,52,55,17,41,42,43,44) THEN (SELECT f.cfogname FROM xxi.fog f WHERE f.cfogmfo8 = nvl(t.CTRNMFOA,s.CSMRMFO8))
                          ELSE (SELECT f.cfogname FROM xxi.fog f WHERE f.cfogmfo8 = nvl(t.CTRNMFOO,s.CSMRMFO8))
                     END,chr(10),' ') AS payer_bank --"Плательщик:Банк"
                    ,replace(CASE WHEN iTrnType IN (5,50,53,52,55,17,41,42,43,44)
                         THEN t.cTrnOwnA
                         ELSE t.CTRNCLIENT_NAME
                     END,chr(10),' ') AS payer_Name --"Плательщик:Наимен"
                    ,replace(CASE WHEN iTrnType IN (5,50,53,52,55,17,41,42,43,44) THEN t.CTRNINNA
                          ELSE t.CTRNCLIENT_INN
                     END,chr(10),' ') AS payer_INN  --"Плательщик:ИНН"
                    /*,replace(CASE WHEN iTrnType IN (5,50,53,52,55,17,41,42,43,44) THEN t.CTRNKPPA
                          ELSE t.CTRNCLIENT_KPP
                     END,chr(10),' ') AS payer_KPP  --"Плательщик:" КПП  */
                    ,replace(CASE WHEN iTrnType IN (5,50,53,52,55,17,41,42,43,44)THEN t.CTRNACCA
                          ELSE NVL (t.cTrnClient_Acc, t.cTrnAccD)
                     END,chr(10),' ') AS  payer_acc  --"Плательщик:Счет"
                    ,replace(CASE WHEN iTrnType IN (5,50,53,52,55,17,41,42,43,44)THEN t.CTRNCORACCA
                          ELSE NVL (t.CTRNCORACCO, t.cTrnAccD)
                     END,chr(10),' ') AS  payer_corracc  --"Плательщик:КоррСчет"
                    ----- Получатель
                    ,replace(CASE WHEN iTrnType IN (5,50,53,52,55,17,41,42,43,44) THEN nvl(t.CTRNMFOO,s.CSMRMFO8)
                          ELSE nvl(cTrnMfoA,CSMRMFO8)
                     END,chr(10),' ') AS resip_bik --"Получатель:БИК"
                    ,replace(CASE WHEN iTrnType IN (5,50,53,52,55,17,41,42,43,44) THEN (SELECT f.cfogname FROM xxi.fog f WHERE f.cfogmfo8 = nvl(t.CTRNMFOO,s.CSMRMFO8))
                          ELSE (SELECT f.cfogname FROM xxi.fog f WHERE f.cfogmfo8 = nvl(t.cTrnMfoA,s.CSMRMFO8))
                     END,chr(10),' ') AS  resip_bank --"Получатель:Банк"
                    ,replace(CASE WHEN iTrnType IN (5,50,53,52,55,17,41,42,43,44) THEN t.cTrnClient_Name
                          ELSE t.cTrnOwnA
                     END,chr(10),' ') AS resip_name --"Получатель:Наимен"
                    ,replace(CASE WHEN iTrnType IN (5,50,53,52,55,17,41,42,43,44) THEN t.CTRNCLIENT_INN
                          ELSE t.CTRNINNA
                     END,chr(10),' ') AS resip_inn --"Получатель:ИНН"
                    ,/*replace(CASE WHEN iTrnType IN (5,50,53,52,55,17,41,42,43,44) THEN t.CTRNCLIENT_KPP
                          ELSE t.CTRNKPPA
                     END,chr(10),' ') AS resip_kpp --"Получатель:КПП"
                    ,*/ replace(CASE WHEN iTrnType IN (5,50,53,52,55,17,41,42,43,44) THEN NVL (t.cTrnClient_Acc, t.cTrnAccC)
                         ELSE nvl(t.cTrnAccA, t.cTrnAccC)
                    END,chr(10),' ') AS resip_acc --"Получатель:Счет"
                    ,replace(CASE WHEN iTrnType IN (5,50,53,52,55,17,41,42,43,44) THEN t.CTRNCORACCO
                          ELSE NVL (t.CTRNCORACCA, t.cTrnAccC)
                     END,chr(10),' ') AS  resip_corracc  --"Получатель:КоррСчет"
                    ,mtrnsum  summ_db --"Сумма Деб"
                    ,mtrnrsum summ_db_r -- "Сумма Деб Экв"
                    ,cast( null as number ) summ_cr --"Сумма Кред"
                    ,cast( null as number )  summ_cr_r --"Сумма Кред Экв"
                    ,replace(ctrnpurp,chr(10),' ') purp --"Назначение Платежа"
              FROM tab_acc
                  ,xxi."trn" t
                  ,xxi."smr" s
              WHERE dtrntrn_trunc between dat1 AND dat2
              AND ctrnaccd=tab_acc.caccacc
              AND ctrncur=tab_acc.cacccur
              AND t.idsmr=tab_acc.idsmr
              AND s.idsmr=t.idsmr
              union all
              SELECT /*+ orderd use_nl(tac_acc,t) use_nl(t,s)*/
                     tab_acc.caccacc
                    ,tab_acc.ccusnumnal
                    ,t.idsmr
                    ,t.ctrnaccc
                    ,t.ctrncurc
                    ,t.itrnnum
                    ,t.itrnanum
                    ,t.itrntype
                    ,t.itrndocnum "Номер документа"
                    ,dtrntrn_trunc "Дата операции"
                    --- Плательщик
                    ,replace(CASE WHEN iTrnType IN (5,50,53,52,55,17,41,42,43,44) THEN nvl(t.CTRNMFOA,s.CSMRMFO8)
                          WHEN iTrnType=-6 THEN (SELECT  nvl(z.CTRNMFOO,s.CSMRMFO8) FROM xxi."trn" z WHERE z.itrnnum=t.itrnnum AND itrnanum=0)
                          ELSE nvl(t.CTRNMFOO,s.CSMRMFO8)
                     END,chr(10),' ') AS "Плательщик:БИК"
                    ,replace(CASE WHEN iTrnType IN (5,50,53,52,55,17,41,42,43,44)  THEN (SELECT f.cfogname FROM xxi.fog f WHERE f.cfogmfo8 = nvl(t.CTRNMFOA,s.CSMRMFO8))
                          WHEN iTrnType=-6 THEN (SELECT f1.cfogname  FROM xxi."trn" z,xxi.fog f1 WHERE z.itrnnum=t.itrnnum AND itrnanum=0 AND f1.cfogmfo8 = nvl(z.CTRNMFOO,s.CSMRMFO8))
                          ELSE (SELECT f.cfogname FROM xxi.fog f WHERE f.cfogmfo8 = nvl(t.CTRNMFOO,s.CSMRMFO8))
                     END,chr(10),' ') AS "Плательщик:Банк"
                    ,replace(CASE WHEN iTrnType IN (5,50,53,52,55,17,41,42,43,44) THEN t.cTrnOwnA
                          WHEN iTrnType=-6 THEN (SELECT z.CTRNCLIENT_NAME FROM xxi."trn" z WHERE z.itrnnum=t.itrnnum AND itrnanum=0)
                         ELSE t.CTRNCLIENT_NAME
                     END,chr(10),' ') AS "Плательщик:Наимен"
                    ,replace(CASE WHEN iTrnType IN (5,50,53,52,55,17,41,42,43,44) THEN t.CTRNINNA
                          WHEN iTrnType=-6 THEN (SELECT z.CTRNCLIENT_INN FROM xxi."trn" z WHERE z.itrnnum=t.itrnnum AND itrnanum=0)
                          ELSE t.CTRNCLIENT_INN
                     END,chr(10),' ') AS  "Плательщик:ИНН"
                    /*,replace(CASE WHEN iTrnType IN (5,50,53,52,55,17,41,42,43,44) THEN t.CTRNKPPA
                          WHEN iTrnType=-6 THEN (SELECT z.CTRNCLIENT_KPP FROM xxi."trn" z WHERE z.itrnnum=t.itrnnum AND itrnanum=0)
                          ELSE t.CTRNCLIENT_KPP
                     END,chr(10),' ') AS  "Плательщик:КПП"   */
                    ,replace(CASE WHEN iTrnType IN (5,50,53,52,55,17,41,42,43,44) THEN t.CTRNACCA
                          WHEN iTrnType=-6 THEN (SELECT NVL (z.cTrnClient_Acc, z.cTrnAccD) FROM xxi."trn" z WHERE z.itrnnum=t.itrnnum AND itrnanum=0)
                          ELSE NVL (t.cTrnClient_Acc, t.cTrnAccD)
                     END,chr(10),' ') AS "Плательщик:Счет"
                    ,replace(CASE WHEN iTrnType IN (5,50,53,52,55,17,41,42,43,44) THEN nvl(t.CTRNCORACCA,t.cTrnAccD)
                          WHEN iTrnType=-6 THEN (SELECT NVL (z.CTRNCORACCO, z.cTrnAccD) FROM xxi."trn" z WHERE z.itrnnum=t.itrnnum AND itrnanum=0)
                          ELSE NVL (t.CTRNCORACCO, t.cTrnAccD)
                     END,chr(10),' ') AS  payer_corracc  --"Плательщик:КоррСчет"
                    ----- Получатель
                    ,replace(CASE WHEN iTrnType IN (5,50,53,52,55,17,41,42,43,44)  THEN nvl(t.CTRNMFOO,s.CSMRMFO8)
                          WHEN iTrnType=-6 THEN (SELECT  nvl(z.cTrnMfoA,s.CSMRMFO8) FROM xxi."trn" z WHERE z.itrnnum=t.itrnnum AND itrnanum=0)
                          ELSE nvl(t.cTrnMfoA,s.CSMRMFO8)
                     END,chr(10),' ') AS "Получатель:БИК"
                    ,replace(CASE WHEN iTrnType IN (5,50,53,52,55,17,41,42,43,44)  THEN (SELECT f.cfogname FROM xxi.fog f WHERE f.cfogmfo8 = nvl(t.CTRNMFOO,s.CSMRMFO8))
                          WHEN iTrnType=-6 THEN (SELECT f1.cfogname  FROM xxi."trn" z,xxi.fog f1 WHERE z.itrnnum=t.itrnnum AND itrnanum=0
                                                                                 AND f1.cfogmfo8 = nvl(z.cTrnMfoA,s.CSMRMFO8))
                          ELSE (SELECT f.cfogname FROM xxi.fog f WHERE f.cfogmfo8 = nvl(t.cTrnMfoA,s.CSMRMFO8))
                     END,chr(10),' ') AS  "Получатель:Банк"
                    ,replace(CASE WHEN iTrnType IN (5,50,53,52,55,17,41,42,43,44) THEN t.cTrnClient_Name
                          WHEN iTrnType=-6 THEN (SELECT z.cTrnOwnA FROM xxi."trn" z WHERE z.itrnnum=t.itrnnum AND itrnanum=0)
                          ELSE t.cTrnOwnA
                     END,chr(10),' ') AS "Получатель:Наимен"
                    ,replace(CASE WHEN iTrnType IN (5,50,53,52,55,17,41,42,43,44) THEN t.CTRNCLIENT_INN
                          WHEN iTrnType=-6            THEN (SELECT z.CTRNINNA FROM xxi."trn" z WHERE z.itrnnum=t.itrnnum AND itrnanum=0)
                          ELSE t.CTRNINNA
                     END,chr(10),' ') AS "Получатель:ИНН"
                    /*,replace(CASE WHEN iTrnType IN (5,50,53,52,55,17,41,42,43,44)
                          THEN t.CTRNCLIENT_KPP
                          WHEN iTrnType=-6
                          THEN (SELECT z.CTRNKPPA FROM xxi."trn" z WHERE z.itrnnum=t.itrnnum AND itrnanum=0)
                          ELSE t.CTRNKPPA
                     END,chr(10),' ') AS "Получатель:КПП"   */
                    ,replace(CASE WHEN iTrnType IN (5,50,53,52,55,17,41,42,43,44) THEN NVL (t.cTrnClient_Acc, t.cTrnAccC)
                          WHEN iTrnType=-6 THEN (SELECT nvl(z.cTrnAccA, z.cTrnAccC) FROM xxi."trn" z WHERE z.itrnnum=t.itrnnum AND itrnanum=0)
                          ELSE nvl(t.cTrnAccA, t.cTrnAccC)
                    END,chr(10),' ') AS "Получатель:Счет"
                    ,replace(CASE WHEN iTrnType IN (5,50,53,52,55,17,41,42,43,44) THEN nvl(t.CTRNCORACCO,t.cTrnAccC)
                          WHEN iTrnType=-6 THEN (SELECT NVL (z.CTRNCORACCA, z.cTrnAccC) FROM xxi."trn" z WHERE z.itrnnum=t.itrnnum AND itrnanum=0)
                          ELSE NVL (t.CTRNCORACCA, t.cTrnAccC)
                     END,chr(10),' ') AS  recip_corracc  --"Плательщик:КоррСчет"
                    ,cast( null as number )  "Сумма Деб"
                    ,cast( null as number )  "Сумма Деб Экв"
                    ,mtrnsumc  "Сумма Кред"
                    ,mtrnrsum  "Сумма Кред Экв"
                    ,replace(CASE WHEN iTrnType=-6 THEN (SELECT z.ctrnpurp FROM xxi."trn" z WHERE z.itrnnum=t.itrnnum AND itrnanum=0)
                          ELSE ctrnpurp
                     END,chr(10),' ') AS "Назначение Платежа"
              FROM tab_acc
                  ,xxi."trn" t
                  ,xxi."smr" s
              WHERE dtrntrn_trunc between dat1 AND dat2
              AND ctrnaccc=tab_acc.caccacc
              AND ctrncurc=tab_acc.cacccur
              AND t.idsmr=tab_acc.idsmr
              AND s.idsmr=t.idsmr
        ) order by caccacc, doc_date;