Pogledajte određenu poruku
Staro 09. 06. 2005.   #1
bluesman
Goran Pilipović
Sir Write-a-Lot
 
Avatar bluesman
 
Datum učlanjenja: 18.05.2005
Lokacija: Beograd
Poruke: 5.450
Hvala: 288
1.247 "Hvala" u 446 poruka
bluesman je osoba koju treba slušatibluesman je osoba koju treba slušatibluesman je osoba koju treba slušatibluesman je osoba koju treba slušatibluesman je osoba koju treba slušatibluesman je osoba koju treba slušatibluesman je osoba koju treba slušatibluesman je osoba koju treba slušatibluesman je osoba koju treba slušati
Pošaljite ICQ poruku za bluesman
Lightbulb [brainstrorming] Billing sistem

Malo da razmrdamo vijuge, a i da krene bar jedan post ovde

Dakle, billing sistem.

- Postoje services
- Postoje premium_services (velika je razlika u odnosu na services)
- Postoje users
- Postoje user_services
- Postoje user_premium_services

Jedan korisnik može biti prijavljen na više servisa, kao što i više korisnika može biti prijavljeno na isti servis. Klasična M2M. Isto važi i za premium services.

Neke services su besplatne, neke se naplaćuju odmah (one-time), neke na kraju meseca, neke su recurring i to na periode weekly, bi-weekly, monhtly, quarterly. Pored toga, postoje i support, gde se neke stvari naplaćuju a neke ne. Recimo ne naplaćuje se otvaranje servisa, ali modifikacija postojećih servisa se naplaćuje.

Dakle, kako organizovati bazu podataka?

- Tabela billings u kojoj se nalaze sve payable items: negativne vrednosti su plaćanja user-a, pozivine stavke su dugovanja usera. Nešto kao izvod sa bankovnog računa. Napomena: billing items se ne naplaćuju same po sebi već se kreiraju Invoices (fakture) u kojoj može biti jedna ili više billing items.

Ovde korisnik ili admin može da vidi kompletno stanje, zajedno sa history, kao i trenutni balans sa računa. Može da izabere period po želji, i tu mora biti sve što se tiče naplate korisnika.

- Tabela invoices u kojoj se nalaze računi korisnika koje on plaća. Invoice može biti kreiran samo jednom i plaćen samo jednom. Za svako novo recurring plaćanje se kreira novi invoice.

- Tabela recurring u kojoj su samo pravila kako i kada se kreiraju billing items. Znači, jednom dnevno, cronjob čita iz te tabele da li je nešto dospelo za billing i ako jeste kreira billing item

Pošto se neke invoices kreiraju odmah, odnosno korisnik mora prvo da plati da bi mogao da koristi sistem, pa se tek onda aktivira servis, a neke korisnik može da plati na kraju meseca, ideja je da postoje i flag-ovi koji određuju invoice rules.

Ko ima malo vremena? Neke dodatne ideje?
Napomena: pitanje je samo normalizacija baze podatak, ne sam kod ili bilo šta slično.
__________________
Goran Pilipović a.k.a. Ugly Fingers Bradley f.k.a. bluesman
I don't always know what I'm talking about but I know I'm right!
bluesman je offline   Odgovorite uz citat