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


WITH tessa (path) AS (
  SELECT value 
  FROM tools.npf360_settings 
  WHERE "name" = 'TESSA_API'
),
result AS (
  SELECT
    case 
      when td.canceled is null then '<span class="glyphicon glyphicon-ok" style="color: green; align-items: center; justify-content: center;"></span>'
      when td.canceled is not null then '<span class="glyphicon glyphicon-remove" style="color: red;  align-items: center; justify-content: center;"></span>' 
      else 'не определено>'
    end as actual,

    case 
      when contract.entity_id is null then 
        '<a target="_blank" href="view?viewCode=Client_list&id=' || contract.individual_id || '">' 
        || apdi.last_name || ' ' || apdi.first_name || coalesce(' ' || apdi.middle_name, '') 
        || '</a>'
      else 
        '<a target="_blank" href="view?viewCode=NCIuIMAW&id=' || contract.entity_id || '">' 
        || e.short_name 
        || '</a>'
    end as client_full_name,

    td.number as document_number,
    td.year as year,
    to_char(td.version, 'DD.MM.YYYY') as created_at,
    to_char(td.date, 'DD.MM.YYYY') as certificate_date,

    case sat.service_type
      when 'NPO' then 'НПО'
      when 'OPS' then 'ОПС'
      when 'PDS' then 'ПДС'
    end as contract_activity_type,

    contract.number as contract_number,

    '<a target="_blank" href="view?viewCode=7HPZX8vF&id=' || contract.id || '">' 
      || contract.number 
      || '</a>' as contract_number_link,

    to_char(contract.date, 'DD.MM.YYYY') as contract_date,
    sh.number as account_number,

    a.last_name || ' ' || a.first_name || ' ' || a.middle_name as created_by_username,

    CASE 
      WHEN EXISTS (
        SELECT 1 
        FROM report.fns_reference_request_journal fj 
        WHERE fj.contract_number = contract.number 
          AND fj.response_received = true
      ) THEN 'ФНС'
      ELSE info.name 
    END as receive_method,

    '<a target="_blank" href="view?viewCode=application_rd_npo_pds&id=' || atc.id || '">' 
      || atc.number 
      || '</a>' as application_id,

    td.comment as comment_text,
    atc.number as atc_number,
    atc.id as atc_id,
    ind.id as i_id,

    '<a target="_blank" href="' || tessa.path || 'card/' || td.tessa_card_id || '" target="_blank">' 
      || td.tessa_card_id 
      || '</a>' as tessa_card_id,

    apdi.last_name || ' ' || apdi.first_name || coalesce(' ' || apdi.middle_name, '') as full_fl_name,

    to_char(td.accepted, 'DD.MM.YYYY HH24:MI:SS') as accepted,
    to_char(td.canceled, 'DD.MM.YYYY HH24:MI:SS') as canceled,

    td.id as id,

    dev.get_history_link2(
      'gYRJIbh0',
      'ourpension.year_tax_deduction',
      td.id,
      'История изменений'
    ) as history

  FROM ourpension.year_tax_deduction td
  LEFT JOIN ourpension.application_termination_contract atc 
    ON atc.id = td.application_termination_contract_id
  LEFT JOIN ourpension.application_personal_data_individual apdi 
    ON apdi.id = atc.application_personal_data_individual_id
  LEFT JOIN ourpension.application_termination_contract_data atcd 
    ON atcd.application_termination_contract_id = atc.id
  LEFT JOIN ourpension.individual ind 
    ON ind.id = apdi.individual_id 
  LEFT JOIN ourpension.sharer sh 
    ON sh.id = atcd.sharer_id
  LEFT JOIN ourpension.contract contract 
    ON contract.id = sh.contract_id
  LEFT JOIN ourpension.service_app_type sat 
    ON atc.service_app_type_code = sat.code
  LEFT JOIN ourpension.agent a 
    ON td.agent_id = a.id
  LEFT JOIN ourpension.information_source info 
    ON info.id = atc.information_source_id
  LEFT JOIN ourpension.entity e 
    ON e.id = contract.entity_id
  CROSS JOIN tessa

  WHERE td.type != 'NONE'
    and 1 = 1

  #if ( ("$!contract_number" == "") 
     && ("$!client_full_name" == "") 
     && ("$!contract_activity_type" == "") 
     && ("$!account_number" == "") 
     && ("$!created_at_from" == "") 
     && ("$!created_at_to" == "") )
    and 1 = 0
  #end

  #if ("$!contract_number" != "")
    and contract.number ILIKE '%' || replace(:contract_number, chr(92), chr(92) || chr(92)) || '%' ESCAPE chr(92)
  #end

  #if ("$!client_full_name" != "")
    and apdi.last_name || ' ' || apdi.first_name || ' ' || apdi.middle_name ILIKE '%' || :client_full_name || '%'
  #end

  #if ("$!contract_activity_type" != "")
    and sat.service_type = cast(:contract_activity_type as ourpension.service_type) 
  #end

  #if ("$!account_number" != "")
    and sh.number ILIKE '%' || :account_number || '%'
  #end

  #if ("$!created_at_from" != "")
    and td.version >= to_date(:created_at_from, 'YYYY-MM-DD')
  #end

  #if ("$!created_at_to" != "")
    and td.version < to_date(:created_at_to, 'YYYY-MM-DD') + interval '1 day'
  #end

  ORDER BY 
    td.canceled IS NOT NULL,
    td.version DESC
)
SELECT *
FROM result