We need a customer and billing management system for our small hosting company. We already have a management system but it's antiquated and although we have started the work to a better version we don't seem to have enough time to really work on it.
A short description of the current database structure so that you can understand how un-normalized is it. We have around 20 tables:
- customers: many times when a new order is added for an existing customer, the customer is inserted again into the database (usually when the order is placed on our website);
- contracts (foreign key to customers)
- services (foreign key to contracts): this contains the domain name but not the service type (hosting, domain name etc), start timestamp, username and servername
- charges: this contains the various invoice elements (foreign key to services and invoices - it's like a lookup table with more data added to it): contains the package (hosting etc), period, quantity, price etc.
- proforma invoice: just id and issue date;
- fiscal invoice (this is generated when the payment is received
- noted introduced by the operators for various contracts, customers etc
So when an invoice is created, for instance with 2 services (one hosting account and one domain), 2 services are generated, with similar data (usually the same domain name) but with different charges (one charge per service per invoice).
- a different database structure is required with a much better normalization that will allow changing customer data without affecting previous proforma invoices and fiscal invoices and without losing any data; also we need to be able to change the hosting account username and main domain name without causing problems (this is not easy right now)
- the application must be made with reasonably sane OOP, observing best practices like SRP but without going over the top; we do not need 1.000.000 classes as we'll have to perform a full internal audit of the entire code base;
- access for the end-users is very much preferred but of course this presents more security concerns;
- the application needs to be able to connect to our servers, to provision accounts and domain names, to suspend and un-suspend accounts, to automatically issue proforma invoices and when payment is received to automatically generate fiscal invoices, to make various checks etc
- all invoices should be sent as PDF attachments (preferably digitally signed) attached to text and HTML emails;
- internal operator note system invisible to enduser
- logging system for all actions took by each operator and by customers (very verbose)
- a very safe login system with multiple safety systems (anti session hijacking, sql injection protection, etc etc)
- various reports (like when new payments are due for each customer with link to the respective customer / order etc)
- a system for aggregating customers that are added multiple times (but not automatically)
- a migration script for the database is required
- older orders must be present and easily accessible but without taking much space (maybe they should appear un-collapsed as a single row)
- search module by email address, company name, person name, fiscal/SSN number etc.
- parts of the database (like the name not the surname, part of the email address, part of the postal address) will need to be encrypted to comply as much as possible with the new European personal data protection directive (we are located within EU).
While the above requirements are the only ones that I can think about right now, there could be other things. In the end we need a well made, well though of system. We need to work together quite a lot to get there and we are available to fully commit.
I am not sure what the budget should be. Bid according to what you consider fair but please do consider that price although not the first consideration, is a consideration. Milestones will be required.
41 pekerja bebas membida secara purata $2040 untuk pekerjaan ini
HI I checked your requirement which is related to ERP system.I understood most of the things but have few [url removed, login to view] you allow me then I can work for you.
You can also check my portfolio: https://www.freelancer.com/u/micheal4299 I also have experience in working on similar projects. Let me know if you are interested in working with me. Thanks!