CRM
Samuel Taylor - July 19, 2008 - 10:17
Hey everyone,
I want to create a simple CRM using CCK and Views. The problem I'm having is that when I create a new content I want it to create a new user that will relate to the node and also for the contact to be emailed with an single-time logon link.
Can anyone give me any ideas?
Cheers
Samuel

You are in a way looking at
You are in a way looking at it backwards. Look at node profile (plus node family) and possibly user node. Node profile allows you to associate content type as part of a user profile and optionally allows you to collect the information when the user registers. So in this case the node is create when the user is created (versus what you asked).
I understand on what you are
I understand on what you are saying, but I just want an nice way of it being in create content. I really want it to be a nice replacement for STORM as the module has a lot of bug and not quite complete.
Thanks for replying so quickly! :D
Cheers
Sam
Let's share ideas
I'm an architect. One reason I'm attracted to CMS is that I want to create a site which will enable collaboration between myself, clients, and consultants. I'm not familiar with existing CRM software, but am open to incorporating many features.
Here's a list of some things I'd like to integrate:
Much of the above is already available in modules. I'm waiting for D6 versions of many before I jump in. I think that many of these features would be useful to people in other lines of business, and features desired by others might be useful to me. I've thought that I couldn't justify developing this off without making it a commercial module, but if it could be easily pieced together it could be GPL. The Drupal community seems to frown on commercial modules anyway.
So if you're interested in developing this type of thing into a well-integratedsystem, let's keep a thread going here. I'll be buying the Pro Drupal Development book when it's available, and then be ready to add some code.
Great Idea
I wouldn't mind trying this. I'm sure there wouldn't be much to do, as a lot of features wanted are available in other modules.
I was thinking of using OG as a company then add contacts that are related to the company as a user. This would allow the contacts to update there own contact details and track the project and submit bugs. This is why I wanted to be able to add a user using the create content.
Sam
Infact I have changed my
Infact I have changed my mind! It really should be the project as an OG. and a company as a content type.
This link give some ideas http://pingv.com/blog/cyberswat/200706/project-management-drupal
Sam
Flexibility is good
I've always thought of companies as groups, OG's are probably better. But the system should be able to handle access control under multiple paradigms. Since not every project member is privy to all project info, access & deny permissions should be available. If this isn't available with current modules, we should do our own.
Invoice Management
Invoice Management would be a great feature, but I don't know of any module that would do this. Any ideas?
I was think of something in CCK and Views?
Sam
Thanks for reminding me
I also need a timeclock to keep track of hours worked on projects. Perhaps this could export to Quickbooks, or produce invoices on its own. Creating an invoicing system is not trivial but not complicated either, it's just SQL, with data summarized on a form which looks like your company's stationary. I've been running my business off of Quicken, so I'm not acquainted with the impex capabilities of Quickbooks. Perhaps it could import line items into its A/R register.
My concept
This project is comprehensive enough to justify a dedicated subdomain in most cases. Or run in a directory under multisite. Minimally it should be themeable separately from its parent site.
Initial screen:
Authenticated users get a screen with a list of projects which they have access permissions for.
This includes a sandbox project for demo and training.
Inauthenticated users are shown guest login details.
All may request access to specific projects/files.
A link to the proper page of the user manual book is on every page. Install/config documentation is separate.
Choose a project off the initial screen. There could also be a block with a dropdown list to choose projects. Optionally, choosing a project could log you out of one project on your timecard, and log you into the new one. Also, to log out of a project, you could be required to enter info as to what you were doing. Choosing a project for less than a few minutes would bill time to overhead instead. Supervisors would also have an administrative link on the project select page.
Each project shows a page to choose a function: Forum, Repository, Database, Timeline, etc. Some of these could be available in mini-app blocks.
Forum is rather basic, with the ability to deny access to threads.
File repository is basic upload & download with versioning. I'm not a real programmer, so I'm not yet familiar with CVS, so I don't know if it could be made to work well with business docs instead of code. The document's owner (company?) should control versions, cleanup to keep within disk quotas, archiving, etc. I use CADD files of several megabytes, and the trend is for files to get bigger. Users should be able to browse files based on company, date, filename, etc.
Timeline displays as a table. Time periods are in the table header, while task names are in links in the left column. Perhaps summary info in right column. You click on the task name to enter info. Projects can be defined in terms of predecessors, dates, durations, etc. There would be a summary timeline showing the schedule for the entire firm, which could be made public. Scrolling & zooming to different time periods. Subtasks. If my tasks are dependent on another player's, I could create the other player's task & transfer ownership of that task to them. I'm not all that interested in resource allocation, but if others want to add it, fine. I'm not trying to clone every feature of M$ Project, just produce a simple, useful tool.
The database would have several views: mainly a treeview, but with one key difference. Records can have more than one parent. Although I call it freeform, it can be structured. Perhaps this is too lengthy to adequately convey in this post. Briefly, records have parents, if parent = 0 it is a root record. Users can just start entering stuff in random records, then when it's apparent how to structure the DB, you add categories with parents. So telephone number could be a child record of person. After the categories are created, you could check for nonconforming records and properly categorize them.
Contact info & web links could easily be part of the database, but may justify separate modules. For example, granting access to a project should add the company to the project's contact page, Web links are broader in scope than projects; access control is to streamline the experience rather than enforce security. I envision users being able to promote their links so others can see them, and managers/supervisors can undo this.
The timeclock is simple, with ability to clock into projects and track tasks, phases, etc. and leave comments, and output invoicing info.
I'm thinking of two overseeing roles: supervisors control access to projects, and managers control within projects. So those with manager permission would have a manage link on their project page.
Not a lot to it. Note that AutoDesk and others sell systems of varying capabilities for hundreds of dollars per month, so the possibility for providing service is huge.
Bump
Another need is an "Open Issue" list. This could consist of database records, but I think it would be better to integrate it into the forum. So a thread could have a field that makes it an issue, and posts could have fields for "resolution" and "reopen".
Example: someone starts a topic titled "Beam interferes with heating duct", and checks the "At Issue" box. after discussion posts, a solution is decided on, and someone checks the "Resolved" box on this post. If the matter becomes contentious again, someone adds a post and checks the "Reopen" box. A query can produce a list of open issues, or a historical list of issues and resolutions, with the in-between discussion omitted.
Of course, chat capabilities, restricted to project members. While chatting, someone could open a file from the repository & have it framed below the chat window for all to see. Javascript could scroll the view window so all chatters would see the same thing.
Gantt Chart -
Gantt Chart - http://drupal.org/node/226598
Missed that one
Good to know about this effort. I'll try to get in touch with them.
Bump
I forgot to mention that the file repository should store "release" documents as well as "in progress" docs, which can be checked out for write for configurable time periods. When someone has a doc checked out, they are the only ones who can overwrite it. If they neglect to check it in when the lock expires, then anyone has a shot at it.
I'm sure that these types of features exist in other systems, so I'm open to suggestions.
An other idea would be, a
An other idea would be, a company as og and a project as sub og
Sam
OK for now, think modular design
It looks like I'm proposing a set of modules that use some common functions, primarily access control. So functions that are useful to more than one module should be segregated out. Then if we want to change the access control paradigm, or enable multiple paradigms, the change works across the board.
Based on what I've written earlier, I think I'm proposing the following modules:
Some of these seem trivial to implement, and others are significant projects. I've already done some work in VB on the database and time clock. Note that there are commercial products available that do these things, and we should look to eventually surpass their capabilities.
worklog?
i think it would be usefull to have a timesheet for reporting time spent on tasks..
also node hierachy can help to build relationships. http://drupal.org/project/nodehierarchy
-- ease your mind ...
Thanks for your code
for the Gantt chart module. Right now I'm perusing listings of available modules to see what I can use to piece together my system, so your work will be helpful.
I believe that Sam is working on a timesheet or invoicing system, hopefully both combined. I don't have the knowledge to begin coding yet, and my ability to code will depend on my time.
Glad to have you in this discussion, as I'm sure you will have valuable input.
Our current approach
For the moment we're using drupal 5 with the folllowing modules / setup
- og, og subgroups for our client and client-client companies
- casetracker for the project management
- custom nodes to record stuff like hosting, print jobs, ...
- comments to record feedback
- workflow for project approval by client, ...
benefits: all our clients can login and see what they are allowed to see.
Next is to find a way our suppliers can login to do the same, ...
Attiks - graphic design and web applications
This looks like it going to
This looks like it going to be easy, a part from the invoice manager. Could do with some more ideas on this
Cheers
Sam
Timekeeping
Table has fields for personID, timeIn, timeOut, projectID, projectPhase, taskID, comments, etc.
Related tables link project, phase, task numbers to translatable phrases. People already have names & other info through Drupal.
Worker Form has dropdown lists for the above, and pushbuttons to clock in/out (starting to sound more like JS than PHP). Possibly login/logout, or rely on Drupal and OS login/out.
Administrative form restricts availability (You can't clock in to a project phase that was finished last year, etc.), controls billing (this person is billed at $X, this task is billed at $X). Weird things happen (he'll kill us if we bill him for that!) so the capacity to make adjustments after the fact is needed. Perhaps a middleware layer with business rules & exceptions, system of hooks (very Drupal-like).
Reporting layer consists of a query builder that's comprehensible to someone who's taken a correspondence course in office management, a query engine (could probably borrow someone's library) which probably puts stuff in variables, and finally a theme layer. Need to be able to filter queries by time range, employees, project, etc.
Proper bookkeeping practice involves periodic close-out: once something's been billed it gets archived away so it can't get billed again. Option to show individual items or summaries. Output should probably be a table, with plenty of classes & ID's for CSS magic.
Oops, I've been thinking service-oriented. I'm being selfish. Of course you need to bill for things, too. Is it your intent to expand this into an order/inventory system? Should probably eventually be part of the suite. Seems like we need the ability to look up pricing, enter quantities, use a middleware layer to determine the extent of haggling,
Sounds like a medium complexity piece of work. You should probably start with a simple db that tracks hours worked, items sold, and generates simple reports, and go from there.
subscribing
Attiks - graphic design and web applications
Subs "All truths are easy to
Subs
"All truths are easy to understand once they are discovered; the point is to discover them." -
-- Galileo Galilei
lfhub.com is the community I am building now..I wish to learn programing..any mentors out there?
:)
just subscribing
interesting thread...