Загрузка данных
-- DROP FUNCTION ourpension.f_app_outgoing_tessa(int8, varchar, int8, bool, int8, varchar, bool);
CREATE OR REPLACE FUNCTION ourpension.f_app_outgoing_tessa(p_app_id bigint, p_code character varying, p_file_id bigint DEFAULT NULL::bigint, p_is_reject boolean DEFAULT false, p_signed_by bigint DEFAULT NULL::bigint, p_author character varying DEFAULT NULL::character varying(50), p_is_send boolean DEFAULT false)
RETURNS text
LANGUAGE plpgsql
AS $function$
declare
v_card_id text;
v_doc_id text;
v_first_name varchar(50);
v_last_name varchar(50);
v_middle_name varchar(50);
v_insurance_number varchar(15);
v_reg_number varchar(50);
v_registration_date date;
v_author varchar(50);
v_tessa_param json;
v_web_base varchar(500);
v_file_name text;
v_file bytea;
v_tessa_path text = 'Integration/CreateCard';
v_in_card_link_id text;
v_post_address text;
v_signed_by text;
v_individual_id bigint;
v_actual_address text;
v_card_sub_type_id varchar(50) = '';
v_card_sub_type_name varchar(200) = '';
v_delivery_method_id bigint;
v_delivery_method_name varchar(200);
v_delivery_type_id bigint = 2;
v_delivery_type_name varchar(200) = 'Письмо простое';
v_representative varchar(200);
v_deaded varchar(200) = '';
v_deaded_insurance_number varchar(15);
v_client_full_name varchar(200) = '';
v_recipient_full_name varchar(200) = '';
v_requester_full_name varchar(200) = '';
v_requester_insurance_number varchar(15);
v_summary text = '';
v_tessa_auto_accept boolean = false;
v_state text;
BEGIN
select web_base into v_web_base from tools.settings limit 1;
select value || v_tessa_path into v_tessa_path from tools.npf360_settings where "name" = 'TESSA_API';
-- if p_signed_by is not null then
--select u.username into v_signed_by from "security"."USER" u where id = p_signed_by;
--end if;
if p_signed_by is not null then
select u.username into v_signed_by
from ourpension.agent a
left join "security"."USER" u on u.id = a.user_id
where a.id = p_signed_by;
end if;
if p_code in ('PDN', 'BR', 'PDN_BR') then
PERFORM ourpension.app_pdn_to_tessa(p_app_id);
select i.first_name, i.last_name, i.middle_name, coalesce(i.insurance_number,'') , i.number, i.date, u.username, i.card_link_id, i.individual_id, coalesce(nullif(adr.address_text, ''), nullif(adr1.address_text, ''), nullif(adr2.address_text, ''), ''), ifs.tessa_id dm_id, ifs."name" dm_name
into v_first_name, v_last_name, v_middle_name, v_insurance_number, v_reg_number, v_registration_date, v_author, v_in_card_link_id, v_individual_id, v_actual_address, v_delivery_method_id, v_delivery_method_name
from ourpension.application_personal_data_individual i
inner join ourpension.agent e on e.id = i.agent_id
inner join "security"."USER" u on u.id = e.user_id
inner join ourpension.information_source ifs on i.information_source_id = ifs.id
left join ourpension.address adr on adr.id = i.actual_address_id
left join ourpension.address adr1 on adr1.id = i.registration_address_id
left join ourpension.address adr2 on adr2.id = i.post_address_id
where i.id = p_app_id
;
IF NOT FOUND then
return 'Error: Заявление не найдено.';
end if;
elseif p_code in ('CNL') then
PERFORM ourpension.app_cnl_to_tessa(p_app_id);
select coalesce(pdn.first_name, i.first_name), coalesce(pdn.last_name, i.last_name), coalesce(pdn.middle_name, i.middle_name), coalesce(pdn.insurance_number, i.insurance_number,''),
a.number, a.date, u.username, a.card_link_id, a.individual_id, coalesce(nullif(adr.address_text, ''), nullif(adr1.address_text, ''), nullif(adr2.address_text, ''), nullif(adr3.address_text, ''), nullif(adr4.address_text, ''), nullif(adr5.address_text, ''), ''), ifs.tessa_id dm_id, ifs."name" dm_name
into v_first_name, v_last_name, v_middle_name, v_insurance_number, v_reg_number, v_registration_date, v_author, v_in_card_link_id, v_individual_id, v_actual_address, v_delivery_method_id, v_delivery_method_name
from ourpension.individual i
inner join ourpension.application_for_cancellation a on a.individual_id = i.id
left join ourpension.application_personal_data_individual pdn on a.application_personal_data_individual_id = pdn.id
inner join ourpension.agent e on e.id = a.agent_id
inner join "security"."USER" u on u.id = e.user_id
inner join ourpension.information_source ifs on a.information_source_id = ifs.id
left join ourpension.address adr on adr.id = pdn.actual_address_id
left join ourpension.address adr1 on adr1.id = pdn.registration_address_id
left join ourpension.address adr2 on adr2.id = pdn.post_address_id
left join ourpension.address adr3 on adr3.id = i.actual_address_id
left join ourpension.address adr4 on adr4.id = i.registration_address_id
left join ourpension.address adr5 on adr5.id = i.post_address_id
where a.id = p_app_id
;
IF NOT FOUND then
return 'Error: Заявление не найдено.';
end if;
elseif p_code in ('NP', 'SPV') then
PERFORM ourpension.app_np_spv_to_tessa(p_app_id, p_code);
select pdn.first_name, pdn.last_name, pdn.middle_name, coalesce(pdn.insurance_number,'') , a.number, a.date, u.username, a.card_link_id, s.individual_id, coalesce(nullif(adr.address_text, ''), nullif(adr1.address_text, ''), nullif(adr2.address_text, ''), nullif(adr3.address_text, ''), nullif(adr4.address_text, ''), nullif(adr5.address_text, ''), ''), ifs.tessa_id dm_id, ifs."name" dm_name
into v_first_name, v_last_name, v_middle_name, v_insurance_number, v_reg_number, v_registration_date, v_author, v_in_card_link_id, v_individual_id, v_actual_address, v_delivery_method_id, v_delivery_method_name
from ourpension.individual i
inner join ourpension.sharer s on s.individual_id = i.id
inner join ourpension.ops_pension_assignment_application a on a.sharer_id = s.id
inner join ourpension.agent e on e.id = a.agent_id
inner join "security"."USER" u on u.id = e.user_id
inner join ourpension.information_source ifs on a.information_source_id = ifs.id
inner join ourpension.application_personal_data_individual pdn on a.client_personal_data_id = pdn.id
left join ourpension.address adr on adr.id = pdn.actual_address_id
left join ourpension.address adr1 on adr1.id = pdn.registration_address_id
left join ourpension.address adr2 on adr2.id = pdn.post_address_id
left join ourpension.address adr3 on adr3.id = i.actual_address_id
left join ourpension.address adr4 on adr4.id = i.registration_address_id
left join ourpension.address adr5 on adr5.id = i.post_address_id
where a.id = p_app_id
;
IF NOT FOUND then
return 'Error: Заявление не найдено.';
end if;
elseif p_code in ('SNV') then
PERFORM ourpension.app_snv_to_tessa(p_app_id);
select coalesce(pdn.first_name, i.first_name), coalesce(pdn.last_name, i.last_name), coalesce(pdn.middle_name, i.middle_name), coalesce(pdn.insurance_number, i.insurance_number,'') ,
a.number, a.date, u.username, a.card_link_id, a.individual_id, coalesce(nullif(adr.address_text, ''), nullif(adr1.address_text, ''), nullif(adr2.address_text, ''), nullif(adr3.address_text, ''), nullif(adr4.address_text, ''), nullif(adr5.address_text, ''), ''), ifs.tessa_id dm_id, ifs."name" dm_name
into v_first_name, v_last_name, v_middle_name, v_insurance_number, v_reg_number, v_registration_date, v_author, v_in_card_link_id, v_individual_id, v_actual_address, v_delivery_method_id, v_delivery_method_name
from ourpension.individual i
inner join ourpension.application_standart_tax_deduction a on a.individual_id = i.id
left join ourpension.application_personal_data_individual pdn on a.application_personal_data_individual_id = pdn.id
inner join ourpension.agent e on e.id = a.agent_id
inner join "security"."USER" u on u.id = e.user_id
inner join ourpension.information_source ifs on a.information_source_id = ifs.id
left join ourpension.address adr on adr.id = pdn.actual_address_id
left join ourpension.address adr1 on adr1.id = pdn.registration_address_id
left join ourpension.address adr2 on adr2.id = pdn.post_address_id
left join ourpension.address adr3 on adr3.id = i.actual_address_id
left join ourpension.address adr4 on adr4.id = i.registration_address_id
left join ourpension.address adr5 on adr5.id = i.post_address_id
where a.id = p_app_id
;
IF NOT FOUND then
return 'Error: Заявление не найдено.';
end if;
elseif p_code in ('SPN', 'OPNPO', 'OPPDS') then
PERFORM ourpension.app_rspn_to_tessa(p_app_id, p_code);
select coalesce(pdn.first_name, i.first_name), coalesce(pdn.last_name, i.last_name), coalesce(pdn.middle_name, i.middle_name), coalesce(pdn.insurance_number, i.insurance_number,''),
a.number, a.date, u.username, a.card_link_id, i.id, coalesce(nullif(adr.address_text, ''), nullif(adr1.address_text, ''), nullif(adr2.address_text, ''), nullif(adr3.address_text, ''), nullif(adr4.address_text, ''), nullif(adr5.address_text, ''), ''), ifs.tessa_id dm_id, ifs."name" dm_name
into v_first_name, v_last_name, v_middle_name, v_insurance_number, v_reg_number, v_registration_date, v_author, v_in_card_link_id, v_individual_id, v_actual_address, v_delivery_method_id, v_delivery_method_name
from ourpension.individual i
inner join ourpension.application_assignee_distribution a on a.individual_id = i.id
left join ourpension.application_personal_data_individual pdn on a.application_personal_data_individual_id = pdn.id
inner join ourpension.agent e on e.id = a.agent_id
inner join "security"."USER" u on u.id = e.user_id
inner join ourpension.information_source ifs on a.information_source_id = ifs.id
left join ourpension.address adr on adr.id = pdn.actual_address_id
left join ourpension.address adr1 on adr1.id = pdn.registration_address_id
left join ourpension.address adr2 on adr2.id = pdn.post_address_id
left join ourpension.address adr3 on adr3.id = i.actual_address_id
left join ourpension.address adr4 on adr4.id = i.registration_address_id
left join ourpension.address adr5 on adr5.id = i.post_address_id
where a.id = p_app_id
;
IF NOT FOUND then
return 'Error: Заявление не найдено.';
end if;
elseif p_code in ('PP', 'OPSO') then
PERFORM ourpension.app_pp_to_tessa(p_app_id, p_code);
select coalesce(pdn.first_name, i.first_name), coalesce(pdn.last_name, i.last_name), coalesce(pdn.middle_name, i.middle_name), coalesce(pdn.insurance_number, i.insurance_number,''),
a.number, a.date, u.username, a.card_link_id, i.id, coalesce(nullif(adr.address_text, ''), nullif(adr1.address_text, ''), nullif(adr2.address_text, ''), nullif(adr3.address_text, ''), nullif(adr4.address_text, ''), nullif(adr5.address_text, ''), ''), ifs.tessa_id dm_id, ifs."name" dm_name
, ', ' || concat_ws(' ', d.last_name, d.first_name, d.middle_name), coalesce(d.insurance_number,''), ', ' || concat_ws(' ', rpdn.last_name, rpdn.first_name, rpdn.middle_name)
into v_first_name, v_last_name, v_middle_name, v_insurance_number, v_reg_number, v_registration_date, v_author, v_in_card_link_id, v_individual_id, v_actual_address, v_delivery_method_id, v_delivery_method_name, v_deaded, v_deaded_insurance_number, v_representative
from ourpension.individual i
inner join ourpension.ops_assignee_payment a on a.assignee_id = i.id
inner join ourpension.individual d on a.individual_id = d.id
left join ourpension.application_personal_data_individual pdn on a.assignee_application_personal_data_id = pdn.id
left join ourpension.application_personal_data_individual rpdn on a.representative_application_personal_data_individual_id = rpdn.id
inner join ourpension.agent e on e.id = a.agent_id
inner join "security"."USER" u on u.id = e.user_id
inner join ourpension.information_source ifs on a.information_source_id = ifs.id
left join ourpension.address adr on adr.id = pdn.actual_address_id
left join ourpension.address adr1 on adr1.id = pdn.registration_address_id
left join ourpension.address adr2 on adr2.id = pdn.post_address_id
left join ourpension.address adr3 on adr3.id = i.actual_address_id
left join ourpension.address adr4 on adr4.id = i.registration_address_id
left join ourpension.address adr5 on adr5.id = i.post_address_id
--left join ourpension.address adr6 on adr6.id = rpdn.actual_address_id
--left join ourpension.address adr7 on adr7.id = rpdn.registration_address_id
--left join ourpension.address adr8 on adr8.id = rpdn.post_address_id
where a.id = p_app_id
;
IF NOT FOUND then
return 'Error: Заявление не найдено.';
end if;
elseif p_code in ('PDSPP', 'VNS') then
PERFORM ourpension.app_pdspp_vns_to_tessa(p_app_id, p_code);
select coalesce(pdn.first_name, i.first_name), coalesce(pdn.last_name, i.last_name), coalesce(pdn.middle_name, i.middle_name), coalesce(pdn.insurance_number, i.insurance_number,''),
a.number, a.date, u.username, a.card_link_id, i.id, coalesce(nullif(adr.address_text, ''), nullif(adr1.address_text, ''), nullif(adr2.address_text, ''), nullif(adr3.address_text, ''), nullif(adr4.address_text, ''), nullif(adr5.address_text, ''), ''), ifs.tessa_id dm_id, ifs."name" dm_name
, ', ' || concat_ws(' ', d.last_name, d.first_name, d.middle_name), coalesce(d.insurance_number,''), ', ' || concat_ws(' ', rpdn.first_name, rpdn.last_name, rpdn.middle_name, rpdn.insurance_number)
into v_first_name, v_last_name, v_middle_name, v_insurance_number, v_reg_number, v_registration_date, v_author, v_in_card_link_id, v_individual_id, v_actual_address, v_delivery_method_id, v_delivery_method_name, v_deaded, v_deaded_insurance_number, v_representative
from ourpension.individual i
inner join ourpension.inherited_payment a on a.inheritor_id = i.id
left join ourpension.application_personal_data_individual pdn on a.assignee_application_personal_data_id = pdn.id
left join ourpension.application_personal_data_individual rpdn on a.representative_application_personal_data_individual_id = rpdn.id
inner join ourpension.individual d on a.individual_id = d.id
inner join ourpension.agent e on e.id = a.agent_id
inner join "security"."USER" u on u.id = e.user_id
inner join ourpension.information_source ifs on a.information_source_id = ifs.id
left join ourpension.address adr on adr.id = pdn.actual_address_id
left join ourpension.address adr1 on adr1.id = pdn.registration_address_id
left join ourpension.address adr2 on adr2.id = pdn.post_address_id
left join ourpension.address adr3 on adr3.id = i.actual_address_id
left join ourpension.address adr4 on adr4.id = i.registration_address_id
left join ourpension.address adr5 on adr5.id = i.post_address_id
--left join ourpension.address adr6 on adr6.id = rpdn.actual_address_id
--left join ourpension.address adr7 on adr7.id = rpdn.registration_address_id
--left join ourpension.address adr8 on adr8.id = rpdn.post_address_id
where a.id = p_app_id
;
IF NOT FOUND then
return 'Error: Заявление не найдено.';
end if;
elseif p_code in ('PROVO') then
PERFORM ourpension.app_provo_to_tessa(p_app_id, p_code);
select coalesce(pdn.first_name, i.first_name), coalesce(pdn.last_name, i.last_name), coalesce(pdn.middle_name, i.middle_name), coalesce(pdn.insurance_number, i.insurance_number,''),
a.number, a.date, u.username, a.card_link_id, i.id, coalesce(nullif(adr.address_text, ''), nullif(adr1.address_text, ''), nullif(adr2.address_text, ''), nullif(adr3.address_text, ''), nullif(adr4.address_text, ''), nullif(adr5.address_text, ''), ''), ifs.tessa_id dm_id, ifs."name" dm_name
into v_first_name, v_last_name, v_middle_name, v_insurance_number, v_reg_number, v_registration_date, v_author, v_in_card_link_id, v_individual_id, v_actual_address, v_delivery_method_id, v_delivery_method_name
from ourpension.individual i
inner join ourpension.suspense_or_renewal_application a on a.individual_id = i.id
left join ourpension.application_personal_data_individual pdn on a.application_personal_data_individual_id = pdn.id
inner join ourpension.agent e on e.id = a.agent_id
inner join "security"."USER" u on u.id = e.user_id
inner join ourpension.information_source ifs on a.information_source_id = ifs.id
left join ourpension.address adr on adr.id = pdn.actual_address_id
left join ourpension.address adr1 on adr1.id = pdn.registration_address_id
left join ourpension.address adr2 on adr2.id = pdn.post_address_id
left join ourpension.address adr3 on adr3.id = i.actual_address_id
left join ourpension.address adr4 on adr4.id = i.registration_address_id
left join ourpension.address adr5 on adr5.id = i.post_address_id
where a.id = p_app_id
;
IF NOT FOUND then
return 'Error: Заявление не найдено.';
end if;
elseif p_code in ('RDNPO', 'RDPDS_TRANSFER', 'RDPDS_PAYMENT', 'RDPDS_LIFE_SITUATION') then
PERFORM ourpension.app_rdnpo_rdpds_to_tessa(p_app_id, p_code);
select coalesce(pdn.first_name, i.first_name), coalesce(pdn.last_name, i.last_name), coalesce(pdn.middle_name, i.middle_name), coalesce(pdn.insurance_number, i.insurance_number,''),
a.number, a.date, u.username, a.card_link_id, a.individual_id, coalesce(nullif(adr.address_text, ''), nullif(adr1.address_text, ''), nullif(adr2.address_text, ''), nullif(adr3.address_text, ''), nullif(adr4.address_text, ''), nullif(adr5.address_text, ''), ''), ifs.tessa_id dm_id, ifs."name" dm_name
into v_first_name, v_last_name, v_middle_name, v_insurance_number, v_reg_number, v_registration_date, v_author, v_in_card_link_id, v_individual_id, v_actual_address, v_delivery_method_id, v_delivery_method_name
from ourpension.individual i
inner join ourpension.application_termination_contract a on a.individual_id = i.id
left join ourpension.application_personal_data_individual pdn on a.application_personal_data_individual_id = pdn.id
inner join ourpension.agent e on e.id = a.agent_id
inner join "security"."USER" u on u.id = e.user_id
inner join ourpension.information_source ifs on a.information_source_id = ifs.id
left join ourpension.address adr on adr.id = pdn.actual_address_id
left join ourpension.address adr1 on adr1.id = pdn.registration_address_id
left join ourpension.address adr2 on adr2.id = pdn.post_address_id
left join ourpension.address adr3 on adr3.id = i.actual_address_id
left join ourpension.address adr4 on adr4.id = i.registration_address_id
left join ourpension.address adr5 on adr5.id = i.post_address_id
where a.id = p_app_id
;
IF NOT FOUND then
return 'Error: Заявление не найдено.';
end if;
elseif p_code in ('NPDS', 'NNPO') then
PERFORM ourpension.app_npds_nnpo_to_tessa(p_app_id, p_code);
select coalesce(pdn.first_name, i.first_name), coalesce(pdn.last_name, i.last_name), coalesce(pdn.middle_name, i.middle_name), coalesce(pdn.insurance_number, i.insurance_number,''),
a.number, a.date, u.username, a.card_link_id, a.individual_id, coalesce(nullif(adr.address_text, ''), nullif(adr1.address_text, ''), nullif(adr2.address_text, ''), nullif(adr3.address_text, ''), nullif(adr4.address_text, ''), nullif(adr5.address_text, ''), ''), ifs.tessa_id dm_id, ifs."name" dm_name
into v_first_name, v_last_name, v_middle_name, v_insurance_number, v_reg_number, v_registration_date, v_author, v_in_card_link_id, v_individual_id, v_actual_address, v_delivery_method_id, v_delivery_method_name
from ourpension.individual i
inner join ourpension.npo_pension_assignment_application a on a.individual_id = i.id
left join ourpension.application_personal_data_individual pdn on a.application_personal_data_individual_id = pdn.id
inner join ourpension.agent e on e.id = a.agent_id
inner join "security"."USER" u on u.id = e.user_id
inner join ourpension.information_source ifs on a.information_source_id = ifs.id
left join ourpension.address adr on adr.id = pdn.actual_address_id
left join ourpension.address adr1 on adr1.id = pdn.registration_address_id
left join ourpension.address adr2 on adr2.id = pdn.post_address_id
left join ourpension.address adr3 on adr3.id = i.actual_address_id
left join ourpension.address adr4 on adr4.id = i.registration_address_id
left join ourpension.address adr5 on adr5.id = i.post_address_id
where a.id = p_app_id
;
IF NOT FOUND then
return 'Error: Заявление не найдено.';
end if;
elseif p_code in ('ZEV', 'UOEF') then
PERFORM ourpension.app_zev_ouef_to_tessa(p_app_id, p_code);
select coalesce(pdn.first_name, i.first_name), coalesce(pdn.last_name, i.last_name), coalesce(pdn.middle_name, i.middle_name), coalesce(pdn.insurance_number, i.insurance_number,''),
a.number, a.date, u.username, a.card_link_id, a.individual_id, coalesce(nullif(adr.address_text, ''), nullif(adr1.address_text, ''), nullif(adr2.address_text, ''), nullif(adr3.address_text, ''), nullif(adr4.address_text, ''), nullif(adr5.address_text, ''), ''), ifs.tessa_id dm_id, ifs."name" dm_name
into v_first_name, v_last_name, v_middle_name, v_insurance_number, v_reg_number, v_registration_date, v_author, v_in_card_link_id, v_individual_id, v_actual_address, v_delivery_method_id, v_delivery_method_name
from ourpension.individual i
inner join ourpension.application_for_one_time_contribution a on a.individual_id = i.id
left join ourpension.application_personal_data_individual pdn on a.client_personal_data_id = pdn.id
inner join ourpension.agent e on e.id = a.agent_id
inner join "security"."USER" u on u.id = e.user_id
inner join ourpension.information_source ifs on a.information_source_id = ifs.id
left join ourpension.address adr on adr.id = pdn.actual_address_id
left join ourpension.address adr1 on adr1.id = pdn.registration_address_id
left join ourpension.address adr2 on adr2.id = pdn.post_address_id
left join ourpension.address adr3 on adr3.id = i.actual_address_id
left join ourpension.address adr4 on adr4.id = i.registration_address_id
left join ourpension.address adr5 on adr5.id = i.post_address_id
where a.id = p_app_id
;
IF NOT FOUND then
return 'Error: Заявление не найдено.';
end if;
end if;
select sat.tessa_code_out, sat.tessa_name_out, v_web_base || sat.npf360_path || p_app_id, coalesce(sed_auto_accept, v_tessa_auto_accept)
into v_card_sub_type_id, v_card_sub_type_name, v_web_base, v_tessa_auto_accept
from ourpension.service_app_type sat
left join ourpension.service_app_notice_type nt on nt.service_app_type_id = sat.id and nt.notice_kind = 'ACCEPT'
where sat.code = p_code;
v_summary = 'Ответ на сервисное заявление ФЛ ' || concat_ws(' ', trim(v_last_name), trim(v_first_name), trim(v_middle_name), trim(v_deaded));
v_delivery_method_id := 0;
v_delivery_method_name := 'Почта России';
if p_is_reject then
select coalesce(sed_auto_accept, false)
into v_tessa_auto_accept
from ourpension.service_app_type sat
left join ourpension.service_app_notice_type nt on nt.service_app_type_id = sat.id and nt.notice_kind = 'REJECT'
where sat.code = p_code;
if p_code in ('PROVO') then
if (select service_type from ourpension.suspense_or_renewal_application where id = p_app_id) = 'PDS' then
v_card_sub_type_id := '6D11F6DE-ACFC-48BD-8E3B-7064FF52476F';
v_card_sub_type_name := 'Иное';
else
v_card_sub_type_id := '321BF23E-61C6-4384-86AC-8CFB0B50C44D';
v_card_sub_type_name := 'Отказ в приеме заявления (НПО)';
end if;
else
select tessa_code_reject, tessa_name_reject into v_card_sub_type_id, v_card_sub_type_name
from ourpension.service_app_type
where code = p_code;
end if;
if p_author is not null then
v_author := p_author;
end if;
if p_code in ('PP', 'OPSO', 'PDSPP', 'VNS') then
v_summary = 'Возврат сервисного заявления ФЛ ' || concat_ws(' ', trim(v_last_name), trim(v_first_name), trim(v_middle_name), trim(nullif(v_representative, '')), trim(v_deaded));
if p_code in ('PP', 'OPSO') then
if EXISTS(select 1 from ourpension.ops_assignee_payment a inner join ourpension.application_death_info d on d.id = a.death_info_id where a.id = p_app_id and d.is_svo = true) then
v_delivery_type_id := 0;
v_delivery_type_name := 'Письмо заказное';
end if;
elseif p_code in ('PDSPP') then
if EXISTS(select 1 from ourpension.inherited_payment a inner join ourpension.application_death_info d on d.id = a.deathinfoid where a.id = p_app_id and d.is_svo = true) then
v_delivery_type_id := 0;
v_delivery_type_name := 'Письмо заказное';
end if;
end if;
else
v_summary = 'Отказ в приеме сервисного заявления ФЛ ' || concat_ws(' ', trim(v_last_name), trim(v_first_name), trim(v_middle_name), trim(v_deaded));
end if;
end if;
if p_is_send then
select coalesce(sed_auto_accept, false)
into v_tessa_auto_accept
from ourpension.service_app_type sat
left join ourpension.service_app_notice_type nt on nt.service_app_type_id = sat.id and nt.notice_kind = 'SEND'
where sat.code = p_code;
select tessa_code_send, tessa_name_send into v_card_sub_type_id, v_card_sub_type_name
from ourpension.service_app_type
where code = p_code;
if p_author is not null then
v_author := p_author;
end if;
if p_code in ('PP', 'OPSO') then
if EXISTS(select 1 from ourpension.ops_assignee_payment a inner join ourpension.application_death_info d on d.id = a.death_info_id where a.id = p_app_id and d.is_svo = true) then
v_delivery_type_id := 0;
v_delivery_type_name := 'Письмо заказное';
end if;
elseif p_code in ('PDSPP') then
if EXISTS(select 1 from ourpension.inherited_payment a inner join ourpension.application_death_info d on d.id = a.deathinfoid where a.id = p_app_id and d.is_svo = true) then
v_delivery_type_id := 0;
v_delivery_type_name := 'Письмо заказное';
end if;
end if;
v_summary = 'Запрос досыла документов на сервисное заявление ФЛ ' || concat_ws(' ', trim(v_last_name), trim(v_first_name), trim(v_middle_name), trim(nullif(v_representative, '')), trim(v_deaded), v_deaded_insurance_number);
end if;
if p_code in ('PP', 'OPSO', 'PDSPP', 'VNS') then
v_recipient_full_name := concat_ws(' ', trim(v_last_name), trim(v_first_name), trim(v_middle_name));
v_requester_full_name := concat_ws(' ', trim(v_last_name), trim(v_first_name), trim(v_middle_name));
v_requester_insurance_number := v_insurance_number;
v_client_full_name := concat_ws(' ', trim(v_last_name), trim(v_first_name), trim(v_middle_name)); --:= ltrim(v_deaded, ',');
v_insurance_number := v_insurance_number;--= v_deaded_insurance_number;
else
v_client_full_name := concat_ws(' ', trim(v_last_name), trim(v_first_name), trim(v_middle_name));
v_recipient_full_name := concat_ws(' ', trim(v_last_name), trim(v_first_name), trim(v_middle_name));
v_requester_full_name := concat_ws(' ', trim(v_last_name), trim(v_first_name), trim(v_middle_name));
v_requester_insurance_number := v_insurance_number;
end if;
v_tessa_param := json_build_object(
'system', '5',
'CardTypeID', 'e8b0557b-6410-4e8c-bfbf-7cb254da2621',
'AuthorAdLogin', v_author,
'RegistratorAdLogin', v_author,
'SubTypeID', '27EB9085-B123-4EA8-8FEC-DB4C67B90735',
'SubTypeName', 'Ответ на сервисное заявление ФЛ',
'Summary', v_summary,
'DeliveryMethodID', v_delivery_method_id,
'DeliveryMethodName', v_delivery_method_name,
'DeliveryTypeID', v_delivery_type_id,
'DeliveryTypeName', v_delivery_type_name,
'OutgoingSubTypeID', v_card_sub_type_id,
'OutgoingSubTypeName', v_card_sub_type_name,
'FIORecipient', v_recipient_full_name,
'RecipientAddress', v_actual_address,
'RequesterFullName', v_requester_full_name,
'RequesterSNILS', v_requester_insurance_number,
'AddressPost', v_actual_address,
'FullName', v_client_full_name,
'SNILS', v_insurance_number,
'InsuranceNumber', v_insurance_number,
'DocumentNumber', v_reg_number,
'ClientID', v_individual_id,
'DocumentDate', to_char(v_registration_date, 'YYYY-MM-DD') || 'T00:00:00Z',
'LinkCardID', v_in_card_link_id,
'NPF360Link', v_web_base,
'IDSource', p_code || p_app_id::text || current_timestamp::text,
'SignedByAdLogin', coalesce(v_signed_by, v_author)
);
RAISE notice 'Json param: "%"', v_tessa_param::text;
v_card_id := convert_from(robot.post_json( v_tessa_path, v_tessa_param), 'UTF8');
if utils.f_is_tessa_guid(v_card_id) then
if p_file_id > 0 then
if p_is_reject then
select file_name, file into v_file_name, v_file from ourpension.service_app_notice where id = p_file_id;
else
select "name", bytes into v_file_name, v_file from dev.query_report_result_file where id = p_file_id;
end if;
v_doc_id := utils.post_file_to_tessa_card(v_card_id, v_author, v_file_name, v_file);
if not utils.f_is_tessa_guid(v_doc_id) then
return v_doc_id;
end if;
if p_is_reject then
update ourpension.service_app_notice set file_link = v_doc_id, file = 'Смотри файл в Тесса' where id = p_file_id;
end if;
end if;
if v_tessa_auto_accept then
call utils.tessa_change_state(v_card_id, 'Draft', 'StartWithoutSigning');
-- call utils.tessa_change_state(v_card_id, 'На исполнении', 'StartWithoutSigning');
/*
v_state := utils.f_get_tessa_card_state(v_card_id)->>'stateName';
if v_state = 'На исполнении' then
for i in 1..3 loop
if utils.send_signal_to_tessa(v_card_id, 'StartWithoutSigning') then
insert into logs.tessa_send_signal_log (start_state, signal, card_id, success)
values ('На исполнении', 'StartWithoutSigning', v_card_id, true);
return v_card_id;
end if;
perform pg_sleep(3); -- Засыпаем на 3 секунды и пробуем еще разок
end loop;
insert into logs.tessa_send_signal_log (start_state, signal, card_id, success)
values ('На исполнении', 'StartWithoutSigning', v_card_id, false);
end if;
*/
end if;
end if;
return v_card_id;
END;
$function$
;