= Функции, процедури и тригери == Функции Во базата има функции за пресметка и проверка на податоци за претплати, наплата, SIM картички и користење услуги. === Total Monthly Recurring Charge Оваа функција го пресметува вкупниот месечен надомест за даден корисник. Ги собира цените на активните тарифни планови и активните дополнителни услуги што се наплаќаат секој месец. Би се користела за брза проценка на редовниот месечен трошок на корисникот. [attachment:"01 Total monthly recurring charge.sql"] === Outstanding Customer Balance Оваа функција го пресметува вкупниот неплатен износ на даден корисник. За секоја фактура што не е откажана ги одзема успешните уплати и потоа ги собира преостанатите износи. Би се користела од тимот за наплата и корисничката поддршка при проверка на долгови. [attachment:"02 Outstanding customer balance.sql"] === Invoice Remaining Balance Оваа функција го пресметува преостанатиот износ за една фактура, земајќи ги предвид само успешните уплати. Вратениот износ не може да биде помал од нула. Би се користела за проверка на долг по фактура и при обработка на задоцнети плаќања. [attachment:"03 Invoice remaining balance.sql"] === SIM Ready For Use Check Оваа функција проверува дали SIM картичката постои, дали има статус available и дали веќе е доделена на активна претплата. Враќа текстуална порака со резултатот од проверката. Би се користела пред активирање претплата за да се избегне доделување недостапна SIM картичка. [attachment:"04 SIM ready for use check.sql"] === Customer Subscription Summary Оваа функција враќа кратко текстуално резиме за даден корисник: број на активни, суспендирани и завршени претплати, како и вкупен месечен надомест. Би се користела од корисничката поддршка за брз преглед на состојбата на корисникот. [attachment:"05 Customer subscription summary.sql"] === Customer Usage Between Dates Оваа функција ја сумира потрошувачката на корисникот во зададен период, одделно за секоја претплата. Враќа минути разговор, број на SMS пораки, потрошени GB и наплатен износ. Би се користела за анализа на користењето услуги и проверка на трошоците за избрани датуми. [attachment:"06 Customer usage between dates.sql"] == Процедури Процедурите извршуваат повеќе поврзани операции при активирање услуги, промена на план, отворање тикети и наплата. === Customer SIM Activation Оваа процедура создава нова претплата и и доделува SIM картичка. Пред активирањето проверува дали сметката, тарифниот план и договорот се активни и дали SIM картичката е достапна. Би се користела при активирање нова претплата. Покрај претплатата, внесува запис во историјата на статуси и во историјата на доделувањето SIM картички. [attachment:"01 Customer SIM activation.sql"] === Change Plan Procedure Оваа процедура го менува тарифниот план на активна или суспендирана претплата. Проверува дали новиот план е активен и припаѓа на истиот производ како тековниот план. Би се користела кога корисникот бара промена на пакетот. Новиот план се применува на идните фактури. [attachment:"02 Change plan procedure.sql"] === Support Ticket Creation Оваа процедура отвора тикет за корисничка поддршка откако ќе ги провери корисникот, сметката, претплатата, вработениот и вредностите за тип, приоритет и канал. Би се користела за стандардизирано пријавување проблем. Истовремено запишува почетна интеракција и му го доделува тикетот на вработениот. [attachment:"03 Support ticket creation.sql"] === Suspend Overdue Accounts Оваа процедура ги означува неплатените фактури со поминат рок како overdue. Потоа ги суспендира активните сметки со такви фактури и нивните активни претплати. Би се користела како периодична billing постапка за обработка на задоцнет долг. Датумот за проверка може да се зададе при повикот. [attachment:"04 Suspend overdue accounts.sql"] === Record Invoice Payment Оваа процедура евидентира успешно плаќање за дадена фактура. Проверува дали износот е позитивен, фактурата припаѓа на сметката и начинот на плаќање е активен. Би се користела при внесување уплата. Потоа финансиските тригери ги усогласуваат статусот на фактурата и балансот на сметката. [attachment:"05 Record invoice payment.sql"] == Тригери Тригерите автоматски ги спроведуваат правилата за историја на промени, плаќања, SIM картички и усогласување на финансиските податоци. === Subscription Status Change Trigger Овој тригер при промена на статусот на претплата внесува запис со стариот и новиот статус, времето, причината и вработениот кога е зададен. Го менува и статусот на тековно доделената SIM картичка. Би се користел за автоматска историја на претплатата и усогласување на нејзиниот статус со SIM картичката. [attachment:"01 Subscription status change trigger.sql"] === Auto Close Ticket Trigger Овој тригер го пополнува полето closed_at кога тикетот има статус closed. Кога статусот е различен од closed, го празни тоа поле. Би се користел за точна евиденција на времето на затворање или повторно отворање тикет. [attachment:"02 Auto close ticket trigger.sql"] === Prevent Overpaid Invoice Trigger Овој тригер проверува успешно плаќање пред да се внесе или промени. Ја заклучува поврзаната фактура и одбива плаќање на откажана, целосно платена или преплатена фактура. Би се користел за спречување погрешни и истовремени плаќања што би го надминале износот на фактурата. [attachment:"03 Prevent overpaid invoice trigger.sql"] === Payment Financial Sync Trigger Овој тригер по внесување, промена или бришење плаќање повторно го пресметува статусот на засегнатата фактура и тековниот баланс на сметката. При префрлање плаќање ги обработува и старите и новите поврзани записи. Би се користел за автоматско усогласување на плаќањата со фактурите и сметките. [attachment:"04 Payment financial sync trigger.sql"] === Invoice Balance Trigger Овој тригер повторно го пресметува балансот на сметката по внесување, промена или бришење фактура. Ако фактурата се префрли на друга сметка, ги ажурира двете сметки. Би се користел за тековниот баланс секогаш да ги одразува фактурите и успешните уплати. [attachment:"05 Invoice balance trigger.sql"] === SIM History Status Trigger Овој тригер го усогласува статусот на SIM картичката кога ќе се внесе, промени или избрише запис за нејзино доделување. Според тековната претплата, SIM картичката добива статус active, suspended, deactivated или available. Би се користел за статусот на SIM картичката да одговара на нејзината историја. Датотеката дополнително поставува правило една претплата да има најмногу една тековна SIM картичка. [attachment:"06 SIM history status trigger.sql"]