Manage your Business Needs on a simple WebSite. May Contain REST for Admins and Customers! It depends heavily on jquery and its modules
Here is how to install the tool localy Also the Embed-iframe thingy here
-
- = Added
-
- = Removed
- % = Changed (eg bugfix)
- ? = To be discussed
- Basic Framework
- UserManagement (Database Only)
- CompanyManagenent (Database Only)
- Module Customers
- SubModule Projects
- Module Accounting
- Module Products
- Module Contracts
- SubModule CostEstimating
- SubModule Billing
- SubModule SaleContract
- Export to PDF
- Styling
- Module UserManagement
- Module CompanyManagement
- Module Tickets
- Module Concepting
- Module-REST Combined as global REST
- Graphing using pGraph or jGraph
- robots.txt
- Customer REST Linking (Create Access (pwd, email)
- .htaccess Mod_Rewrite to allow nice RESTing
- installation scripts
- Connect to Google Drive (Save Data, Open Data)
- Login via Google
- Extend REST to be fully CRUD
-
- 2013-12-19: D: Filled Readme.md
- % 2014-01-08: D: Finished Module Definition
The Basic Framework allows for Loading of the Module via JavaScript. It loads all Modules into the navigation and includes the javascript-files. It also Displays the Dashboard, which is a sortable Grid (http://jqueryui.com/sortable/#display-grid) It Handles the Login, which will use tables company and user. These two tables are always there (used by every tool) And it will display the possible embed info (iframe). Variable GET for index.php may be company (then embed). Only try to login for this company. It is multilanguagable!
Table: sbm_t_modules: ID(P) | NAME | NAV_NAME | FOLDER | VERSION
For SBM being a WebApp, multiple companies may use it. So there will be a Table for companies and every DATA-Table will hold a Link to the company_id.
Table: webdad_t_companies: ID(P) | NAME | LOGO | HOMEPAGE | MAIL | MAIN_USER
Forms: Edit my Company Data.
A Company will be created if a User registers for no company.
Everyone working with the WebApp must login as a User or register. On registering you may create a new company or sign up to one. Then the main_user must accept you.
Table: webdad_t_user: COMPANY_ID | ID(P) | NAME | VORNAME | LOGIN | MAIL | PWD
Forms: Edit my Data. Accept User for Company. Delete Me. Login/Logout.
This Module shows customer data and allows for editing, inserting and deleting. Customer Data is:
- id
- name
- street & number
- plz
- city
- phone
- contact
- password
Table: sbm_t_customers: COMPANY_ID | ID(P) | NAME | STREET_NUMBER | PLZ | CITY | MAIL | PHONE | CONTACT | PWD(md5) | CUSTOMER_ID(for internal)
Forms: Table with Data and Buttons for Details, Edit, New, Delete A Password can be created and will be sent to the customer, allowing him to checkup on his Data.
Dashboard: Number of Customers
Every Customer has at least one Project, the one making him a customer. But the same customer may have many Projects. This Module deals with this Problem.
Table: sbm_t_projects: COMPANY_ID | ID(P) | NAME | DESCRIPTION | DUE_DATE | STATE sbm_customer_has_project: CUSTOMER_ID | PROJECT_ID(P)
Forms: Table with Projects for Customer CRUD
Dashboard: Open Projects for all Customers (State not Closed)
This Module enables us to track expenses and income. Also there is exporting for taxes, etc...
Table: sbm_t_accounting: COMPANY_ID | ID(P) | BOOK_DATE | VALUE | DESCRIPTION
Forms: CRUD on Table
Dashboard: Actual Money
This Module has the Products the Company can offer. They are sorted in groups.
Table: sbm_t_products: COMPANY_ID | ID(P) | NAME | COST | COST_TYPE | DESCRIPTION | GROUP_ID sbm_t_products_groups: COMPANY_ID | ID(P) | NAME | DESCRIPTION
Forms: CRUD on table CRUD on groups
Dashboard: Number of Products and Groups "# Products in # Groups"
This Module is the most complex one yet. It allows to generate contracts. Standing Alone, only generic contracts like support or Terms & Conditions are possible. Everything else will be handled by specialicied submodules.
Table: sbm_t_contracts: COMPANY_ID | ID(P) | NAME | DESCRIPTION sbm_t_contract_clauses : COMPANY_ID | ID(P) | HEADLINE | DESCRIPTION | ORDER | CONTRACT_ID
Forms: CRUD all Contracts CRUD + Ordering on single Contract
Dashboard: Number of Clauses in Contracts
This Submodule allows to create a costestimate for a project of a customer, using the products you defined.
Table: sbm_t_costestimate: COMPANY_ID | ID(P) | PROJECT_ID | DESCRIPTION | DISCOUNT sbm_t_costestimate_items: COMPANY_ID | ID(P) | PRODUCT_ID | AMOUNT
Forms: CRUD on costestimate CRUD on items in costestimate
Dashboard: Average Worth of Costestimate
This Module allows to create a Bill to send to a customer. It also Includes creating a bill from a costestimate.
Table: sbm_t_bills: COMPANY_ID | ID(P) | PROJECT_ID | DESCRIPTION | DISCOUNT sbm_t_bills_items: COMPANY_ID | ID(P) | PRODUCT_ID | AMOUNT
Forms: CRUD on bills CRUD on items in bills Create Bill from costestimate
Dashboard: Average Worth of bills
This Module allows to create a SalesContract for a Customer-Project. You Just Define deadlines and link a costestimate
Table: sbm_t_salescontracts: COMPANY_ID | ID(P) | PROJECT_ID | DESCRIPTION | COSTESTIMATE_ID sbm_t_salescontracts_deadlines: COMPANY_ID | ID(P) | NAME | DEADLINE
Forms: CRUD on salescontract + Adding Deadlines CRUD on deadlines per salescontract
DashBoard: Numer of SalesContracts
A Module for the Customers to create Tickets in case of Errors or Bugs in a Project. The Admin can add Information or send it to another user of the company.
Table: sbm_t_tickets: COMPANY_ID | ID(P) | TITLE | DESCRIPTION | STATE | PROJECT_ID | WORKER_ID sbm_t_tickets_information: COMPANY_ID | ID(P) | TITLE | DESCRIPTION | SENDER_ID | INFO_TYPE
Forms: Customer create Ticket Add Information to Ticket Change Ticket State Customer View Ticket See all Tickets
Dashboard: Open Tickets
This is a specialiced and custom module, allowing for creating concepts for websites. You May Create a general Description, Designs, Navigation, Social Media and technical Parts.
Table:
Forms:
Dashboard:
The REST is modular. To ensure only a valid user may see the data of his company only it uses HTTP Authentification. Based on the login, the company_id will be used to filter results Base Object is URL/REST/ After that, every module is an object, e.g. URL/REST/bills The objects are now GET-Only.
Customers that have a password may also login and see objects filtered to them. e.g. URL/REST/tickets/list.html
"list" will be supported by every module and shows a list of object_ids
Returntypes are:
- html
- xml
- json
The Information is visible Online, but the admin may wnat to export information, e.g. to give papers for taxes. Different Options will be avaiable
Print Information as a PDF, styled with the companies logo and title. Every Module may present different exports.
It is planned to allow exporting information to Google Drive as .sbm to take it away. .sbm will be a xml-format and allows for backing up or Offline-Usage of Data. A Re-Import should also be there
- D: @DSigmund
GNU GPL v2 (see LICENSE)