Δημιουργήστε έναν απλό CRM από το μηδέν σε PHP και MySQL

Το Customer Relationship Management (CRM) είναι ένα σύστημα που διαχειρίζεται τις αλληλεπιδράσεις και τα δεδομένα των πελατών καθ 'όλη τη διάρκεια του κύκλου ζωής του πελάτη μεταξύ του πελάτη και της εταιρείας σε διαφορετικά κανάλια. Σε αυτό το σεμινάριο, πρόκειται να δημιουργήσουμε ένα προσαρμοσμένο CRM στο PHP, το οποίο μπορεί να χρησιμοποιήσει μια ομάδα πωλήσεων για να παρακολουθεί τους πελάτες σε ολόκληρο τον κύκλο πωλήσεων.

Θα δημιουργήσουμε ένα απλό σύστημα CRM για τους πωλητές να:

  • Πρόσβαση στις εργασίες τους
  • Δείτε τους δυνητικούς πελάτες τους
  • Δημιουργήστε νέες εργασίες για κάθε δυνητικό πελάτη
  • Δημιουργήστε νέα ευκαιρία
  • Κλείστε μια πώληση

Οι υπεύθυνοι πωλήσεων θα μπορούν:

  • Διαχειριστείτε όλους τους πελάτες
  • Διαχείριση ομάδας πωλήσεων
  • Δείτε τις τρέχουσες δραστηριότητες πωλήσεων

Λήψη αρχείων επίδειξης

Δομικά στοιχεία ενός CRM

Ακολουθεί μια λίστα με τα βασικά στοιχεία του CRM:

  • Οδηγεί : αρχικές επαφές
  • Λογαριασμοί : Πληροφορίες για τις εταιρείες με τις οποίες συνεργάζεστε
  • Επικοινωνία : Πληροφορίες για τα άτομα με τα οποία γνωρίζετε και συνεργάζεστε. Συνήθως, ένας λογαριασμός έχει πολλές επαφές
  • Ευκαιρίες : Πιστοποιημένοι δυνητικοί πελάτες
  • Δραστηριότητες : Εργασίες, συναντήσεις, τηλεφωνικές κλήσεις, email και οποιαδήποτε άλλη δραστηριότητα που σας επιτρέπει να αλληλεπιδράτε με τους πελάτες
  • Πωλήσεις : Η ομάδα πωλήσεών σας
  • Πίνακας ελέγχου : Οι πίνακες ελέγχου CRM είναι κάτι περισσότερο από απλώς καραμέλα ματιών. Θα πρέπει να παρέχουν βασικές πληροφορίες με μια ματιά και να παρέχουν συνδέσμους για αναλυτικές πληροφορίες για περισσότερες λεπτομέρειες.
  • Είσοδος : Οι πωλητές και οι διαχειριστές έχουν διαφορετικούς ρόλους στο σύστημα. Οι διαχειριστές έχουν πρόσβαση σε αναφορές και πληροφορίες σχετικά με τις πωλήσεις.

Απαιτήσεις συστήματος

  • PHP 5.3+,
  • MySQL ή MariaDB
  • phpGrid

Δημιουργία βάσης δεδομένων CRM

Θα ξεκινήσουμε δημιουργώντας την προσαρμοσμένη βάση δεδομένων CRM. Οι κύριοι πίνακες που θα χρησιμοποιήσουμε είναι:

  • Επικοινωνία - περιέχει βασικά δεδομένα πελατών
  • σημειώσεις - κατέχει συλλογή πληροφοριών από την επαφή από πωλητές.
  • χρήστες - πληροφορίες σχετικά με τους πωλητές

Ο πίνακας επαφών περιέχει βασικές πληροφορίες πελατών, όπως ονόματα, διευθύνσεις εταιρείας, πληροφορίες έργου και ούτω καθεξής.

Ο πίνακας Notes αποθηκεύει όλες τις πληροφορίες δραστηριότητας πωλήσεων, όπως συναντήσεις και τηλεφωνικές κλήσεις.

Ο πίνακας χρηστών περιέχει πληροφορίες σύνδεσης για χρήστες του συστήματος, όπως ονόματα χρήστη και κωδικούς πρόσβασης. Οι χρήστες μπορούν επίσης να έχουν ρόλους, όπως Πωλήσεις ή Διαχειριστής.

Όλοι οι άλλοι πίνακες είναι πίνακες αναζήτησης για να ενταχθούν στους τρεις κύριους πίνακες σχεσιακών βάσεων δεδομένων.

  • contact_status - περιέχει κατάσταση επαφής, όπως Lead και Opportunity. Καθένα δείχνει ένα διαφορετικό στάδιο σε έναν τυπικό κύκλο πωλήσεων
  • task_status - η κατάσταση της εργασίας μπορεί να είναι σε εκκρεμότητα ή να ολοκληρωθεί
  • user_status - ένας πωλητής μπορεί να είναι Ενεργός ή Ανενεργός
  • todo_type - ένας τύπος εργασίας είτε Εργασία είτε Σύσκεψη
  • todo_desc - περιγραφή μιας εργασίας όπως Παρακολούθηση Email, Τηλεφωνική κλήση και Διάσκεψη κ.λπ.
  • ρόλοι - ένας χρήστης μπορεί να είναι είτε ένας Πωλητής είτε ένας Διαχειριστής

Πλήρες διάγραμμα σχήματος βάσης δεδομένων

Ένα σχήμα βάσης δεδομένων είναι η δομή που αντιπροσωπεύει τη λογική προβολή, όπως πίνακες, προβολές ή πρωτεύοντα και ξένα κλειδιά ολόκληρης της βάσης δεδομένων. Ένα σχήμα βάσης δεδομένων περιλαμβάνει οντότητες και τη σχέση μεταξύ τους.

Είναι καλή πρακτική να έχετε ένα πρωτεύον κλειδί για κάθε πίνακα σε μια σχεσιακή βάση δεδομένων. Ένα πρωτεύον κλειδί είναι ένα μοναδικό αναγνωριστικό για κάθε εγγραφή. Μπορεί να είναι ο αριθμός κοινωνικής ασφάλισης (SSN), ο αριθμός αναγνώρισης οχήματος (VIN) ή ο αριθμός αυτόματης αύξησης. Αυτός είναι ένας μοναδικός αριθμός που δημιουργείται όταν εισάγεται μια νέα εγγραφή σε έναν πίνακα.

Ακολουθεί το διάγραμμα βάσης δεδομένων του απλού CRM μας. Το σύμβολο κλειδιού σε κάθε πίνακα αντιπροσωπεύει το πρωτεύον κλειδί του πίνακα. Ο μεγεθυντικός φακός δείχνει ξένο κλειδί που συνδέει έναν άλλο πίνακα στη βάση δεδομένων. Μερικές φορές το ονομάζουμε "αναζήτηση" πίνακα.

install.sql

Μόλις κατανοήσετε τη δομή του πίνακα βάσης δεδομένων, βρείτε το σενάριο "install.sql" στο dbφάκελο και χρησιμοποιήστε ένα εργαλείο MySQL όπως το MySQL Workbench ή το Sequel Pro για να εκτελέσετε το σενάριο SQL. Θα πρέπει να δημιουργήσει μια νέα σχεσιακή βάση δεδομένων custom_crmκαι τους πίνακες βάσης δεδομένων της.

Μια δευτερεύουσα σημείωση στο ZenBase

The CRM application is also one of the many application templates readily available at ZenBase (built on the top of phpGrid) for anyone — with or without coding skills — to use and customize for their own needs.

Ρύθμιση phpGrid

Our CRM contains many datagrids. The datagrid is a spreadsheet-like data table that displays rows and columns representing records and fields from the database table. The datagrid gives the end-user ability to read and write to database tables on a webpage. We can use a datagrid tool from phpGrid. We use a tool instead of building them from scratch because developing the datagrid is usually tedious and error-prone. The datagrid library will handle all internal database CRUD (Create, Remove, Update, and Delete) operations for us with better and faster results with little code. To install phpGrid, follow these steps:

  1. Unzip the phpGrid download file.
  2. Upload the phpGrid folder to the phpGrid folder.
  3. Complete the installation by configuring the conf.php file.

Before we begin coding, we must specify the database information in conf.php, the phpGrid configuration file. Here is an example of database connection settings:

  • PHPGRID_DB_HOSTNAME — web server IP or host name
  • PHPGRID_DB_USERNAME — database user name
  • PHPGRID_DB_PASSWORD — database password
  • PHPGRID_DB_NAME — database name of our CRM
  • PHPGRID_DB_TYPE — type of database
  • PHPGRID_DB_CHARSET — always ‘utf8’ in MySQL

To learn more about configuring phpGrid, check out phpGrid complete installation guide.

Page Template

Before we can start building our first page of the CRM, it is a good practice to make the reusable page items such as header and footer.

The page will comprise of a header, menu, body and footer. We will start by creating a reusable page template.

head.php

This is a basic HTML5 template header. It includes a link to a custom stylesheet that will be created in a later step.

menu.php

Notice the usage of $_GET['currentPage']. Each page will set a value which will highlight the name of the current page on the top menu bar.

Include the following code in style.css for menu styling (minified). It will transform the above, unordered list into a menu.

footer.php

Simple closing body and html tags.

Complete Page Template

This is the complete page template. The main content will go after Section Title.

CRM Main Pages

Are you still with me? Good! We can now finally develop the first page in our CRM.

Our CRM for the sales team members has four pages:

  • Tasks
  • Leads
  • Opportunities
  • Customers/Won

Each page indicates a different stage in a typical sales cycle.

Sale People Page Design Mockup

Here’s our CRM design mockup for the sales people.

Tasks Page

When a sales team member logged in, the first page he sees is a list of current tasks.

As you may recall, our Notes table holds all the sales activity information. We can create a datagrid and populate it from the Notes table using phpGrid.

The Tasks page main content is a datagrid. The following two lines will give us a list of tasks of the current sales person.

  • The first line creates a phpGrid object by passing the SELECT SQL statement, its primary key — ID, and then the name of the database table - notes.
  • The second and the final line calls display() function to render the datagrid on the screen. Check out the basic datagrid demo for more detail.

Leads Page

The leads page contains list of current leads that the sales person is responsible for. Each Lead can have one or many Notes. We will use the phpGrid master-detail feature for that.

We also need to use set_query_filter() to display only the leads, Status = 1, and only for the current sales person.

Contact status table

Opportunities Page

A Lead becomes an Opportunity once it is qualified. The Opportunities page is similar to the Leads page. The only difference is the filtered status code in set_query_filter is Status = 2.

Customers/Won Page

Customers/Won has the Status = 3. Similar to Leads and Opportunities, Customers/Won can also have Notes.

That’s all there is to it for sales people in our simple CRM.

Manager Dashboard

The sales manager will have access to all records in the sales pipeline as well as the ability to manage sales team and customer data.

We will have a single web page with tabbed menu similar to the phpGrid tabbed grid demo.

Manager Dashboard Design Mockup

My Sales Reps

Main content

Each tab represents a table in the CRM database. $_GET['gn'] will store the table name. It dynamically generates the datagrid based on table name passed.

It’s very easy to integrate jQueryUI Tabs with phpGrid. Please refer to the phpGrid Tabbed Grid demo for more information.

My Sales Rep Page

Since a sales manager needs to quickly find out whom a sale person is working with, we added a detail grid $sdg populated from contact table and link with the master grid.

sales_rep is the connecting key in contact table to the id that is the foreign key in users table. Remember the users stores all of our sales people information.

Screenshots

CRM — Sales Screen

CRM — Manager Screen

Live Demo

CRM Sales Rep Screen | CRM Managers screen

Need to Write Even Less Code?

If you are new to programming and are not yet comfortable with coding, you may want to check out ZenBase that is built on the top of the phpGrid. The CRM is but one of the many application templates readily available at ZenBase for anyone — with or without coding skills — to use and customize for their own needs.

Complete Source Code on GitHub

phpcontrols/phpgrid-custom-crm

phpgrid-custom-crm - Προσαρμοσμένη επίδειξη CRM - Μάθετε να χτίζετε έναν προσαρμοσμένο CRM σε PHP και MySQL, την οποία μια ομάδα πωλήσεων μπορεί… github.com

Ευχαριστώ για την ανάγνωση. Αν σας άρεσε αυτό το άρθρο, πατήστε αυτό το χειροκρότημα; για να βοηθήσω άλλους να το βρουν και να με ακολουθήσουν στο Twitter.