Защо фактурирането отнема толкова време

Защо фактурирането отнема толкова време?

Въпрос: „Да приемем, че моят оператор прави таксуване (изготвя месечни фактури) в рамките на 5-10 дни. Защо отнема толкова време? Изглежда, че това е бизнес: „изберете сума (оценена сума) от групата оценени разговори по contract_id“ и продължете - отпечатайте фактури.

Нека се опитаме да разберем къде е ровило кучето. Да приемем, че операторска компания има два милиона абонати, които трябва да бъдат таксувани. Всеки от тези абонати на ден прави средно по 10 таксувани събития (изходящи обаждания, SMS, . ) и същия брой нетаксувани събития (входящи повиквания, SMS, . ).

За един месец получаваме: 2 * 10^6 * 20 * 30 = 12 * 10^8 (1 милиард 200 милиона). Това е броят на записите, преминали през рейтинга.

Какво прави процесът на таксуване в най-простия случай? За всеки от 2-те милиона абонати той преглежда кои договори принадлежат на всеки абонат, избира разговорите, направени по договорите, сумира ги, добавя всички необходими месечни абонаментни такси и начислява данъци отгоре. В края на изчислението получените данни се поставят в красива печатна форма (например под формата на PostScript).

Тук вече всеки може да проведе няколко прости експеримента. Например, вземете която и да е база данни, поставете милиард или два записа в нея и се опитайте да изпълните избора, който направих в първите редове на публикацията. Мащабирайте резултатите, като приемете, че операторът ще има супер мощни процесори и Dofigure памет.

Всичко? Не, не всички. Подстригването току що започна. Ние изградихме най-простото таксуване, на практика сферично таксуване във вакуум.

Нека добавим към картината на света услуги, чиято такса зависи от месечната активност на абоната. Например „абонатът заплаща за услугата фиксирана сума на ден, но само в дните, когато е използвал тази услуга“ или„Размерът на месечната абонаментна такса зависи от броя на дните, през които е бил активен договорът.“ За да изчислим такива суми, ще трябва да направим подробен анализ на таблицата на събитията по дни. Да кажем, че такива услуги са популярни и трябва да направим това за по-голямата част от абонатната база.[1]

Нека добавим към картината на света и популярните сега "безплатни" (или включени в месечната такса) минути / SMS / MMS и др. От гледна точка на нашия модел това означава, че за всеки договор има определен брой минути N иопределени(не всички) разговори с обща продължителност не повече от N трябва да бъдат изключени от сметката. Да вземем предвид, че по правило N безплатни минути няма да бъдат изчерпани с помощта на цял брой разговори - ще има разговор, който ще попадне "на границата" и ще трябва да бъде разделен на две части - платена и безплатна. И фактурирането също го прави.[2]

Нека вземем предвид промяната в тарифните модели. Ако абонатът е имал модел A (X_1 UAH на месец, Y_1 „безплатни“ минути) и на 20-то число го е променил на модел B (X_2 UAH на месец, Y_2 безплатни минути), тогава X_1*(20/30) UAH трябва да се таксува от абоната и да му се дадат Y_1*(20/30) минути в рамките на модел A, а в рамките на модел B, изтеглете X_2*(10/30) UAH и му дайте Y_2*(10 /30 ) минути - пропорционално на времето, прекарано във всеки тарифен модел. След това трябва да прегледате всичките му разговори и да разберете кои от тях са безплатни и в кой от „безплатните периоди“ са попаднали. Да, по пътя не трябва да забравяте да преизчислите всички абонаментни такси за услуги, които зависят от месечната активност.[3]

Как, все още се вписват в няколко часа? Съмнявам се.

Чакай малко, но освен сметки за абоната има и счетоводство. Необходимо е да се покаже кои обаждания на абоната "затварят" едно или друго негово плащане. С други думи, ако абонатът е платилдва пъти за 100 гривни и казано за 200 гривни, тогава фактурирането трябва да посочи за всяко обаждане към кое плащане е "свързано" - към първото или второто. И така за всички разговори на всички абонати.[4]

След това ще изчислим данъците и всички цифри за данъчни фактури (това обаче може да се направи само за юридически лица, но те също трябва да бъдат отделени от физическите лица).

По принцип не можете да продължите по-нататък, мисля, че така или иначе всичко трябва да е ясно. Ако някой може да вкара всичко това в рамките на няколко часа, той има пряк път да пише и продава системи за таксуване. Можете да спечелите милиони, правейки това.

И маркетинговият отдел иска да внедри такива услуги. Така се оказва, че или модни услуги, договор и дълго фактуриране, или никакви модерни услуги, предплатени и невъзможност за таксуване като такова.

Всяко разделение/успоредяване обикновено е опит за печелене на време за сметка на някакъв друг ресурс. Обикновено - памет (за информация как сме разделили информацията между "клъстери", за съхраняване на междинни резултати от обработката на всеки клъстер и т.н.). Като се има предвид, че вече говорим за доста големи обеми, може да се окаже, че паметта не е толкова „глобален“ ресурс, че да „купува“ време на цената си.

Таксуването е набор от малки процеси, резултатите от които се обединяват. След като разгледахме всеки от процесите поотделно, можем да предложим такава схема за разделяне на първоначалните данни на "клъстери", което ще ни позволи да паралелизираме и ускорим този процес. Номерът може да бъде да се измисли такова разделяне на данните на "клъстери", което да ускори (или поне да не забави)всичкипроцеси, включени в таксуването.

Не забравяйте, че не само таксуването работи с базата от абонати и разговори- нашето разделяне на "клъстери" не трябва да усложнява/бави аналитичното отчитане, процесите на продажби и CRM, предоставянето на услуги и др.