\encoding UTF8

-- upomienkovanie prepaid uctov

-- stavy:
-- D-15 pripomienka,
-- D-7 druha pripomienka,
-- D obmedzenie sluzby a prva upomienka,
-- D+15 druha upomienka, vypnutie sluzby?
-- D+30 tretia upomienka, vypnutie sluzby?
-- D+45 zrusenie zmluvy

-- v kazdom jednom pripade sa stav eviduje ku zmluve (evid)
-- potrebujeme ku zmluve evidovat aktualny stav v tom rozsahu ci je sluzba obmedzena, alebo vypnuta


-- pouzivatelom zadany limit, pri ktorom sa ma poslat upozornenie na dochadzajuci kredit
ALTER TABLE contract ADD COLUMN prepaid_notify_limit NUMERIC(12,2);

COMMENT ON COLUMN contract.prepaid_notify_limit IS 'suma v eurach, pri prekroceni ktorej je prepaid zakaznik upozorneny';

-- poznacenie ci zmluva je obmedzena
ALTER TABLE contract ADD COLUMN restricted_unpaid BOOLEAN NOT NULL DEFAULT FALSE;
ALTER TABLE contract ADD COLUMN restricted_tech BOOLEAN NOT NULL DEFAULT FALSE;

COMMENT ON COLUMN contract.restricted_unpaid IS 'priznak ci je sluzba obmedzena kvoli neplateniu';
COMMENT ON COLUMN contract.restricted_tech IS 'priznak ci je sluzba obmedzena z technickych pricin';

-- ciselnik stavov upomienkovania kreditovych uctov
CREATE TABLE prepaid_remind_status (
	id SERIAL NOT NULL,
	name VARCHAR NOT NULL,
	sysname VARCHAR NOT NULL,
	min_debt NUMERIC(12,2),
	min_interval VARCHAR,
	set_restricted BOOLEAN,
	set_disabled BOOLEAN,
	PRIMARY KEY (id)
);

COMMENT ON TABLE prepaid_remind_status IS 'ciselnik stavov pre upomienkovanie kreditovych prepaid uctov';
COMMENT ON COLUMN prepaid_remind_status.name IS 'ludsky popis stavu';
COMMENT ON COLUMN prepaid_remind_status.sysname IS 'kod stavu, podla ktoreho sa orientuje globis';
COMMENT ON COLUMN prepaid_remind_status.min_debt IS 'minimalna vyska dlhu pre vstup do tohto stavu';
COMMENT ON COLUMN prepaid_remind_status.min_interval IS 'minimalna pauza, ktora musi ubehnut pred vstupom do tohto stavu';
COMMENT ON COLUMN prepaid_remind_status.set_restricted IS 'nastavit priznak zmluvy "restricted_unpaid" pri vstupe do tohto stavu';
COMMENT ON COLUMN prepaid_remind_status.set_disabled IS 'ci sa ma vypnut sluzba pri vstupe do tohto stavu';

GRANT SELECT ON prepaid_remind_status TO extranet;
GRANT SELECT ON prepaid_remind_status TO billing;

INSERT INTO prepaid_remind_status (sysname, name, min_debt, min_interval, set_restricted, set_disabled) VALUES
('clean','Všetko v poriadku', NULL, NULL, FALSE, NULL), -- zrusit priznak 'obmedzena'
('limit','Prekročený používateľom zadaný limit', NULL, NULL, NULL, NULL),
('pre15','Dopredná pripomienka (D-15)', 0, NULL, NULL, NULL), -- o 15 dni klient prekroci nulu
('pre7','Druhá dopredná pripomienka (D-7)', 0, NULL, NULL, NULL), -- o 7 dni klient prekroci nulu
('zero','Prvá upomienka, obmedzenie služby', 1, NULL, TRUE, NULL), -- obmedzit sluzbu
('post15','Druhá upomienka (D+15)', 30, '15 days', TRUE, NULL),
('post30','Tretia upomienka (D+30)', 30, '15 days', TRUE, TRUE), -- vypnut sluzbu
('turnoff','Zrušenie zmluvy', 100, '15 days', TRUE, TRUE),
('debt_collection','Vymáhanie', 100, '15 days', TRUE, TRUE)
;


-- aktualny stav a log upomienkovania daneho kreditoveho uctu
CREATE TABLE prepaid_remind_log (
	id SERIAL NOT NULL,
	evid INT NOT NULL,
	status INT NOT NULL REFERENCES prepaid_remind_status (id) ON UPDATE CASCADE ON DELETE RESTRICT,
	changed TIMESTAMP NOT NULL DEFAULT NOW(),
	PRIMARY KEY (id)
);

COMMENT ON TABLE prepaid_remind_log IS 'aktualny stav a historia upomienkovania kreditoveho uctu';
COMMENT ON COLUMN prepaid_remind_log.evid IS 'zmluva, ktorej sa kredit tyka';
COMMENT ON COLUMN prepaid_remind_log.status IS 'stav z tabulky prepaid_remind_status';
COMMENT ON COLUMN prepaid_remind_log.changed IS 'datum a cas, kedy tento stav zacal platit';

GRANT SELECT, INSERT, UPDATE ON prepaid_remind_log TO extranet;
GRANT USAGE ON prepaid_remind_log_id_seq TO extranet;
GRANT SELECT, INSERT, UPDATE ON prepaid_remind_log TO billing;
GRANT USAGE ON prepaid_remind_log_id_seq TO billing;


-- sablony pre prepaid upomienky
BEGIN;

INSERT INTO message_template (
	name, sysname,
	type, description
) VALUES (
	'Pripomienka pri poklese prepaid kreditu pod limit', 'prepaidreminder/limit',
	21, 'Automatická správa informujúca zákazníka, že jeho prepaid kredit klesol pod zadanú úroveň'
);
INSERT INTO message_template_variant (
	template, layout, medium_variant, attachment, cost,
	subject, body
) VALUES (
	CURRVAL('message_template_id_seq'), 1, 10, null, 10,
	'',''
);


INSERT INTO message_template (
	name, sysname,
	type, description
) VALUES (
	'Pripomienka pred minutím prepaid kreditu o 7/15 dní', 'prepaidreminder/pre',
	21, 'Automatická správa informujúca zákazníka, že jeho prepaid kredit sa pravdepodobne minie o 7 alebo 15 dní'
);
INSERT INTO message_template_variant (
	template, layout, medium_variant, attachment, cost,
	subject, body
) VALUES (
	CURRVAL('message_template_id_seq'), 1, 10, null, 10,
	'',''
);


INSERT INTO message_template (
	name, sysname,
	type, description
) VALUES (
	'Prvá upomienka prepaid kreditu (D+0)', 'prepaidreminder/1st',
	20, 'Automatická správa informujúca zákazníka, že sa mu minul kredit'
);
INSERT INTO message_template_variant (
	template, layout, medium_variant, attachment, cost,
	subject, body
) VALUES (
	CURRVAL('message_template_id_seq'), 1, 10, null, 10,
	'',''
);


INSERT INTO message_template (
	name, sysname,
	type, description
) VALUES (
	'Druhá upomienka prepaid kreditu (D+15)', 'prepaidreminder/2nd',
	20, 'Automatická správa informujúca zákazníka, že sa mu minul kredit pred 15 dňami'
);
INSERT INTO message_template_variant (
	template, layout, medium_variant, attachment, cost,
	subject, body
) VALUES (
	CURRVAL('message_template_id_seq'), 1, 10, null, 10,
	'',''
);


INSERT INTO message_template (
	name, sysname,
	type, description
) VALUES (
	'Tretia upomienka prepaid kreditu (D+30)', 'prepaidreminder/3rd',
	20, 'Automatická správa informujúca zákazníka, že sa mu minul kredit pred 30 dňami'
);
INSERT INTO message_template_variant (
	template, layout, medium_variant, attachment, cost,
	subject, body
) VALUES (
	CURRVAL('message_template_id_seq'), 1, 10, null, 10,
	'',''
);


INSERT INTO message_template (
	name, sysname,
	type, description
) VALUES (
	'Upozornenie do RT o potrebe konať vo veci prepaid kreditu', 'prepaidreminder/rt',
	25, 'Automatická správa emailom do RT informujúca prevádzkovateľa, že je potrebné vypnúť prepaid službu, odstúpiť od zmluvy, alebo vymáhať pohľadávku'
);
INSERT INTO message_template_variant (
	template, layout, medium_variant, attachment, cost,
	subject, body
) VALUES (
	CURRVAL('message_template_id_seq'), 1, 10, null, 10,
	'{if $type=="turnoff"}Vypnutie služby{elseif $type=="debt_collection"}Možnosť postúpiť pohľadávku na vymáhanie{/if} {$evid}, {$recipient->data[name]}, {$credit} EUR',
	'{if !empty($evid)}AddCF.{l}Contract{r}: {$evid}
{/if}
{if !empty($pid)}AddCF.{l}Person{r}: {$pid}
{/if}

{if $type=="turnoff"}
Z dôvodu nezaplatenia kreditu je možné odstúpiť od zmluvy (D+45):
{elseif $type=="debt_collection"}
Z dôvodu nezaplatenia kreditu je možné postúpiť pohľadávku na vymáhanie (D+90):
{/if}

Poskytovateľ: {$supplier}

Odberateľ na faktúre: {$customer}

Stav kreditu: {$credit}'
);


COMMIT;
