أنشئ لنفسك CRM بسيطًا من البداية في PHP و MySQL

إدارة علاقات العملاء (CRM) هي نظام يدير تفاعلات العملاء وبياناتهم طوال دورة حياة العميل بين العميل والشركة عبر قنوات مختلفة. في هذا البرنامج التعليمي ، سنقوم ببناء CRM مخصص في PHP ، والذي يمكن لفريق المبيعات استخدامه لتتبع العملاء خلال دورة المبيعات بأكملها.

سننشئ نظام CRM بسيطًا لمندوبي المبيعات من أجل:

  • الوصول إلى مهامهم
  • عرض خيوطهم
  • إنشاء مهام جديدة لكل عميل متوقع
  • خلق فرصة جديدة
  • إغلاق عملية بيع

سيكون مديرو المبيعات قادرين على:

  • إدارة جميع العملاء
  • إدارة فريق المبيعات
  • عرض أنشطة المبيعات الحالية

تنزيل ملفات تجريبية

اللبنات الأساسية لإدارة علاقات العملاء

فيما يلي قائمة بالمكونات الأساسية لـ CRM:

  • يؤدي : الاتصالات الأولية
  • الحسابات : معلومات عن الشركات التي تتعامل معها
  • جهة الاتصال : معلومات عن الأشخاص الذين تعرفهم وتعمل معهم. عادة ، حساب واحد لديه العديد من جهات الاتصال
  • الفرص : العملاء المحتملون المؤهلون
  • الأنشطة : المهام والاجتماعات والمكالمات الهاتفية ورسائل البريد الإلكتروني وأي أنشطة أخرى تسمح لك بالتفاعل مع العملاء
  • المبيعات : فريق المبيعات الخاص بك
  • لوحة القيادة : تعد لوحات معلومات CRM أكثر بكثير من مجرد حلوى للعين. يجب عليهم تقديم المعلومات الأساسية في لمحة وتوفير روابط للتنقل لأسفل لمزيد من التفاصيل.
  • تسجيل الدخول : لمندوبي المبيعات والمديرين أدوار مختلفة في النظام. يمكن للمديرين الوصول إلى التقارير ومعلومات خط أنابيب المبيعات.

متطلبات النظام

  • PHP 5.3+ ،
  • MySQL أو MariaDB
  • phpGrid

إنشاء قاعدة بيانات CRM

سنبدأ بإنشاء قاعدة بيانات CRM المخصصة الخاصة بنا. الجداول الرئيسية التي سنستخدمها هي:

  • جهة اتصال - يحتوي على بيانات العملاء الأساسية
  • ملاحظات - يحتفظ بجمع المعلومات من جهة الاتصال بواسطة أفراد المبيعات.
  • المستخدمين - معلومات حول مندوبي المبيعات

و الاتصال يحتوي الجدول معلومات العملاء الأساسية بما في ذلك أسماء وعناوين الشركة، معلومات المشروع، وهكذا دواليك.

في ملاحظات الجدول بتخزين كافة المعلومات نشاط المبيعات مثل الاجتماعات والمكالمات الهاتفية.

على المستخدمين الجدول يحمل معلومات تسجيل الدخول عن مستخدمي النظام مثل أسماء المستخدمين وكلمات السر. يمكن للمستخدمين أيضًا الحصول على أدوار ، مثل المبيعات أو المدير.

جميع الجداول الأخرى هي جداول بحث للانضمام إلى جداول قاعدة البيانات العلائقية الرئيسية الثلاثة.

  • contact_status - يحتوي على حالة جهة الاتصال مثل العميل المحتمل والفرصة . يشير كل منها إلى مرحلة مختلفة في دورة مبيعات نموذجية
  • Task_status - يمكن أن تكون حالة المهمة معلقة أو مكتملة
  • user_status - يمكن أن يكون شخص البيع نشطًا أو غير نشط
  • todo_type - نوع من المهام إما مهمة أو اجتماع
  • todo_desc - وصف مهمة مثل متابعة البريد الإلكتروني والمكالمة الهاتفية والمؤتمر وما إلى ذلك.
  • الأدوار - يمكن أن يكون المستخدم إما مندوب مبيعات أو مديرًا

إكمال مخطط قاعدة البيانات

مخطط قاعدة البيانات هو الهيكل الذي يمثل طريقة العرض المنطقية مثل الجداول أو طرق العرض أو المفاتيح الأساسية والخارجية لقاعدة البيانات بأكملها. يتضمن مخطط قاعدة البيانات الكيانات والعلاقة فيما بينها.

من الممارسات الجيدة أن يكون لديك مفتاح أساسي واحد لكل جدول في قاعدة بيانات علائقية. المفتاح الأساسي هو معرف فريد لكل سجل. يمكن أن يكون رقم الضمان الاجتماعي (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

يحتوي CRM الخاص بنا على العديد من خوادم البيانات. شبكة البيانات هي جدول بيانات يشبه جدول البيانات يعرض الصفوف والأعمدة التي تمثل السجلات والحقول من جدول قاعدة البيانات. تمنح شبكة البيانات للمستخدم النهائي القدرة على القراءة والكتابة إلى جداول قاعدة البيانات على صفحة ويب. يمكننا استخدام أداة datagrid من phpGrid. نحن نستخدم أداة بدلاً من بنائها من نقطة الصفر لأن تطوير شبكة البيانات عادةً ما يكون مملاً وعرضة للخطأ. ستتعامل مكتبة datagrid مع جميع عمليات قاعدة البيانات الداخلية CRUD (إنشاء وإزالة وتحديث وحذف) بالنسبة لنا مع نتائج أفضل وأسرع مع القليل من التعليمات البرمجية. لتثبيت phpGrid ، اتبع الخطوات التالية:

  1. قم بفك ضغط ملف تنزيل phpGrid.
  2. قم بتحميل مجلد phpGrid إلى phpGridالمجلد.
  3. أكمل التثبيت عن طريق تكوين conf.phpالملف.

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 - Custom CRM Demo - تعلم كيف تبني لنفسك CRM مخصصًا في PHP و MySQL ، والذي يمكن لفريق المبيعات ... github.com

شكرا للقراءة. إذا استمتعت بهذا المقال ، من فضلك اضغط على زر التصفيق هذا؟ لمساعدة الآخرين في العثور عليه ومتابعي على Twitter.