Ehitage endale PHP-s ja MySQL-is nullist lihtne CRM

Kliendisuhete haldamine (CRM) on süsteem, mis haldab kliendi interaktsioone ja andmeid kogu kliendi elutsükli jooksul kliendi ja ettevõtte vahel erinevate kanalite kaudu. Selles õpetuses ehitame PHP-s kohandatud CRM-i, mida müügimeeskond saab kasutada klientide jälgimiseks kogu müügitsükli jooksul.

Loome müüjatele lihtsa CRM-süsteemi, et:

  • Juurdepääs nende ülesannetele
  • Vaadake nende müügivihjeid
  • Looge igale müügivihjele uued ülesanded
  • Looge uus võimalus
  • Sulgege müük

Müügijuhid saavad:

  • Kõigi klientide haldamine
  • Halda müügimeeskonda
  • Vaadake jooksvaid müügitegevusi

Laadige alla demofailid

CRM-i ehitusplokid

Siin on loetelu CRM-i olulistest komponentidest:

  • Potentsiaalsed kontaktid: esialgsed kontaktid
  • Kontod : teave ettevõtete kohta, kellega te äri ajate
  • Kontakt : teave inimeste kohta, keda tunnete ja kellega töötate. Tavaliselt on ühel kontol palju kontakte
  • Võimalused : kvalifitseeritud müügivihjed
  • Tegevused : ülesanded, koosolekud, telefonikõned, meilid ja muud tegevused, mis võimaldavad teil klientidega suhelda
  • Müük : teie müügimeeskond
  • Armatuurlaud : CRM-i armatuurlauad on palju enamat kui lihtsalt silmailu. Nad peaksid põhiteabe edastama lühidalt ja lisama üksikasjadele linke.
  • Sisselogimine : müüjatel ja juhtidel on süsteemis erinevad rollid. Juhtidel on juurdepääs aruannetele ja müügiliinide teabele.

Nõuded süsteemile

  • PHP 5.3+,
  • MySQL või MariaDB
  • phpGrid

Looge CRM-i andmebaas

Alustame oma kohandatud CRM-i andmebaasi loomisega. Peamised kasutatavad tabelid on järgmised:

  • kontakt - sisaldab kliendi põhiandmeid
  • märkused - hoiab müügiinimeste poolt Kontaktis kogutud teavet.
  • kasutajad - teave müügiinimeste kohta

Kontakt Tabelis põhi kliendiinfo sealhulgas nime, firma aadressid, projekti andmed ja nii edasi.

Märkused tabeli salvestab kõik müügitegevust teavet, nagu koosolekute ja telefonikõnesid.

Kasutajad tabelis hoiab login teavet kasutajate süsteemi nagu kasutajanimed ja paroolid. Kasutajatel võivad olla ka rollid, näiteks Müük või Haldur.

Kõik muud tabelid on otsingu tabelid, et liituda kolme peamise relatsioonilise andmebaasi tabeliga.

  • contact_status - sisaldab kontakti olekut nagu müügivihje ja võimalus. Mõlemad tähistavad tavapärase müügitsükli erinevat etappi
  • task_status - ülesande olek võib olla kas Ootel või Lõpetatud
  • user_status - müüja võib olla aktiivne või passiivne
  • todo_type - ülesande tüüp, kas ülesanne või koosolek
  • todo_desc - sellise ülesande kirjeldus nagu e-posti jälgimine, telefonikõne ja konverents jne.
  • rollid - kasutaja võib olla kas müügiesindaja või haldur

Täielik andmebaasiskeemi skeem

Andmebaasiskeem on struktuur, mis esindab kogu andmebaasi loogilist vaadet, näiteks tabeleid, vaateid või esmaseid ja võõrvõtmeid. Andmebaasiskeem sisaldab üksusi ja nende omavahelist suhet.

Hea tava on, et relatsioonide andmebaasis on iga tabeli jaoks üks esmane võti. Esmane võti on iga kirje kordumatu tunnus. See võib olla sotsiaalkindlustuse number (SSN), sõiduki identifitseerimisnumber (VIN) või automaatne juurdekasvu number. See on kordumatu number, mis genereeritakse, kui tabelisse sisestatakse uus kirje.

Allpool on meie lihtsa CRM-i andmebaasiskeem. Iga tabeli võtmesümbol tähistab tabeli esmast võtit. Luup tähistab võõrast võtit, mis seob andmebaasi teise tabeli. Mõnikord nimetame seda otsingu tabeliks.

install.sql

Kui olete andmebaasitabeli struktuurist aru saanud, leidke dbkaustast skript “install.sql” ja kasutage SQL-i skripti käivitamiseks MySQL-i tööriista, näiteks MySQL Workbench või Sequel Pro. See peaks looma uue relatsiooniandmebaasi nimega custom_crmja selle andmebaasitabelid.

Märkus ZenBase'ist

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.

Seadista phpGrid

Meie CRM sisaldab palju andmesidemeid. Andmeside on arvutustabeli laadne andmetabel, mis kuvab ridu ja veerge, mis tähistavad andmebaasi tabeli kirjeid ja välju. Andmeside annab lõppkasutajale võimaluse veebilehel andmebaasi tabeleid lugeda ja nendesse kirjutada. Saame kasutada andmepõhist tööriista phpGridilt. Me kasutame tööriista selle asemel, et neid nullist üles ehitada, kuna andmeside arendamine on tavaliselt tüütu ja veaohtlik. Andmevõrgu teek haldab kõiki meie sisemisi andmebaasi CRUD (loomine, eemaldamine, värskendamine ja kustutamine) toiminguid parema ja kiirema tulemuse ning vähese koodiga. PhpGridi installimiseks toimige järgmiselt.

  1. Paki lahti phpGridi allalaadimisfail.
  2. Laadige kaust phpGrid üles phpGrid.
  3. Viige installimine lõpule conf.phpfaili konfigureerimisega .

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 - kohandatud CRM-i demo - õppige endale PHP-s ja MySQL-is kohandatud CRM-i ehitama, mida müügimeeskond saab teha ... github.com

Täname lugemast. Kui teile see artikkel meeldis, vajutage palun seda plaksunuppu? aidata teistel seda leida ja mind Twitteris jälgida.