Invoicing for a mainly Service company
Specification for Invoicing System.
This is a standard contact table but have split the address info as some of my client's have two addresses How I see this working is you create a Contact then add addresses.
Default Address id
Notes ---> Nice big blob field where I can write private notes
Address Line 1
Address Line 2
Address Line 3
This will contain my products that I regularly bill for, there are not many, my time being the major one.
This is the master invoice record
Invoice opened date --> this is the date of the first item that was added
Invoice date --> this is the date the invoice was compiled
Product Name --> Can be entered or come from product table. The reason for this is that I sell a lot of one off items that don't need to clog up the products table
Product Description --> This should default from the product table, if product was there, but can be edited or just be entered
Product Price --> This Should default from the product table if product was there but can be edited or just be entered
Status --> Examples of this are --> Open, Sent, Bank Transfer, Cheque In Post, Overdue, Paid, Cancelled
I also do a fair bit of domain registration for people so this needs to keep track of them
Domain --> I have split the domain from its tag for easy filtering, for example. Domain-->[url removed, login to view]
Tag Holder --> ie. Fasthosts, 1and1, Joker etc
This is for things like Retainers, Domain Registrations, Server Products
Start Date --> Default Today
Recurrence --> This will be Weekly(Monday 1am), Monthly(1st 1am), Quarterly(1st of Jan, Apr, June, Sept), or Yearly (Every 12 months from start date)
Price Override --> By default it should use product price if field is NUL not 0 as some people I do for free, but never hurts to remind them of the fact.
This will be where all the single fields will be stored. I have listed a few
Value --> ie. Mileage Charge
Text --> ie. Covering emails. This needs a WYSIWYG editor to edit them and needs to be able to have variables like Customer Name, Invoice Amount, and there will be others
With all this information I need the following.
Web interface using php, css, Ajax and anything else that makes life easy
The following features are required
* Enter/Edit/Delete Customers/Addresses remembering that a customer can have more than one address
* Enter/Edit/Delete Products
* Enter/Edit/Delete Configuration settings like statuses and any others that are added for ease of use/programing
* Enter/Edit/Delete Domains
* Enter/Edit/Delete Recurring Billing
* Enter/Edit/Delete Invoices, Refer to invoice process below
An interface for adding invoices from my Blackberry
This will be a very simple interface just for adding customers and invoices no graphics no frills
* Add Customer + Address info
* Add invoice
Invoicing Step by Step
1. Find Customer, if Customer not in database add Customer
2. If there is no open invoice for customer, create a new invoice, if there is an open invoice continue with the open invoice
3. Add items. They will come from the product list or be entered manually. Products from the product list will use the data as a default value but can be changed
4. Choose to close invoice or leave open
5. If invoice is closed change status to closed
6. Create PDF of invoice
7. File copy of invoice PDF on server
8. Send Copy of PDF to customer by email with covering email.
9. In email there is a link with a random string that identify invoice. This takes them to a web page where the customer can click a link corresponding to the payment method the used ie. Bank Transfer then update status reflect this
10. I will then change status to confirm payment received
Will need to generate a statement for a customer with summary's of Invoices for the month and if they have been paid or not Create PDF send by email and file on server
1. Unpaid invoices
2. Monthly Totals
3. Customer History --> This need to be listed under the customer when viewed invoice by invoice
System it will run on
A LAMP server running apache2 MySQL 5 and PHP5
In your Quote please add the following
Date you can have it done by and keep it real as I not want this to take forever!
I will not add any major changes to the project after you quote
any extras you can quote as extra
I will Open Source this invoicing system when I am happy with it so the coding needs to be tidy, structured and commented. Your name will be accredited when it is Open Sourced so keep it to a standard that when people want changes made, they come to you. This could be a good little ongoing earner too.
I also have a much bigger project for another company of mine that, if I am impressed with your work, will be put your way.