/*
* Автор: Галкин А.И.
* Дата: 2013-07-01
* Задача: http://jira.softage.ru/jira/browse/SDFO-56
* Назначение: Добавление обязательности адреса электронной почты в структуро-логический контроль
* Изменяются объекты:
		update table mess_verify_setup
		update table mess_verify_setup_cfm
*/

/*
  ****** Инструкции для SQLPlus (обязательно) ******
  Для печати сообщений:
  DBMS_OUTPUT.put_line('<Message>');
*/
whenever sqlerror exit 1;
set serveroutput on;
set echo off;

declare
	filename      varchar2(256) := 'sfm.database-update.2013-07-01.EmailRequiredForResponsible.sql';
	purpose       varchar2(4000) := 'Добавление обязательности адреса электронной почты в структуро-логический контроль';
	script_exists number := 0;

	verify_id number := 1031;
begin

	--delete from DB_Update_History where script_name = filename;	commit;
	select count(*)
		into script_exists
		from DB_Update_History
	 where script_name = filename;

	if (script_exists > 0) then
		RAISE_APPLICATION_ERROR(-20001, '"' || filename || '" уже присутствует в базе');
	else
		insert into DB_Update_History
			(script_name, purpose)
		values
			(filename, purpose);
	end if;

	/*
    delete from mess_verify_setup_cfm
     where verifyid in
           (select verifyid
              from mess_verify_setup
             where verifydescription like
                   'Указание значения - "Адрес электронной почты"');
    delete from mess_verify_setup
     where verifydescription like
           'Указание значения - "Адрес электронной почты"';
  
    commit;
  */

	insert into mess_verify_setup
		(messagetype,
		 messageversion,
		 verifyid,
		 verifytype,
		 verifystring,
		 verifydescription,
		 isenable,
		 condition_id,
		 condition_value,
		 messid,
		 paramid,
		 verifyxpathid,
		 verifyxpathtype,
		 valuestart,
		 valueend,
		 base_realisaton)
	values
		(11,
		 1,
		 verify_id, -- В СФМ отключен тригер с автоинкрементом(в ОФМ включен)
		 1,
		 'Call PKG_MessVerifyProcs.TestForNullByXPath(:pMessageID, ''/Root/OrganisationData/Persons/Person/Email'', :vVerifyResult)',
		 'Указание значения - "Адрес электронной почты"',
		 1,
		 null,
		 null,
		 11,
		 2042, -- OrganisationData/Persons/Person/Email
		 1, -- Указание значения
		 null,
		 null,
		 null,
		 1)
	returning verifyid into verify_id;

	insert into mess_verify_setup_cfm
		(cfmcode, verifyid, status)
		with cfmcodes as
		 (select distinct s.cfmcode from mess_verify_setup_cfm s),
		Result as
		 (select c.cfmcode cfmcode, verify_id verifyid, 1 status from cfmcodes c)
		select * from Result;

	commit;

exception
	when others then
		rollback;
		raise;
end;
/
	/*
	****** Begin update script ******
	*/
		-- Не транзакционный апдейт
		-- Необходимы свои транзакции, если требуются
	/*
	****** End update script ******
	*/

/*
  ****** Инструкции для SQLPlus (обязательно) ******
*/
