Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: Use ERP Next Doctypes instead of redundant Frappe CRM ones #10

Open
wants to merge 97 commits into
base: develop
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
97 commits
Select commit Hold shift + click to select a range
2b9bcb1
feat: use Industry Type instead of CRM Industry
Aryan20 Oct 31, 2024
6962a04
Merge pull request #1 from rtCamp/feat/use-industry-type
Aryan20 Oct 31, 2024
b564678
feat: use ERP Next Holiday and Holiday List
Aryan20 Oct 31, 2024
e330666
Merge pull request #2 from rtCamp/feat/port-holiday
Aryan20 Oct 31, 2024
2b93485
feat: use ERP Next territory
Aryan20 Oct 31, 2024
464313a
Merge pull request #3 from rtCamp/feat/use-territory
Aryan20 Oct 31, 2024
b613ff0
feat: use ERP Next lead source instead of CRM lead source
Aryan20 Oct 31, 2024
931602b
Merge pull request #4 from rtCamp/feat/use-lead-source
Aryan20 Oct 31, 2024
4041360
feat: use ERP Next service day instead of CRM service day
Aryan20 Oct 31, 2024
50d15a4
Merge pull request #5 from rtCamp/feat/use-service-day
Aryan20 Oct 31, 2024
e4c4379
feat: use customer instead of organization
Aryan20 Oct 31, 2024
2bcdf93
Merge pull request #6 from rtCamp/feat/use-customer
Aryan20 Nov 4, 2024
36dcd50
feat: use ERP Next lead instead of CRM Lead
Aryan20 Nov 7, 2024
da1ff91
Merge pull request #7 from rtCamp/feat/use-lead
Aryan20 Nov 7, 2024
142a386
feat: use ERP Next opportunity instead of CRM Deals
Aryan20 Nov 11, 2024
4bb3e35
Merge pull request #8 from rtCamp/feat/use-opportunity
Aryan20 Nov 11, 2024
f6e3351
fix: use fixtures for customer doc custom fields
Aryan20 Nov 11, 2024
98738ce
Merge pull request #9 from rtCamp/fix/customer-use-fixture
Aryan20 Nov 11, 2024
983bd86
fix: use Opportunity amount instead of annual revenue
Aryan20 Nov 12, 2024
06994a5
Merge pull request #11 from rtCamp/fix/use-opp-amount
Aryan20 Nov 12, 2024
4991072
fix: add log to lead and use customer_name
Aryan20 Nov 12, 2024
d049067
Merge pull request #12 from rtCamp/fix/lead-quick-entry
Aryan20 Nov 12, 2024
05edc26
chore: rename app to Next CRM (#13)
Aryan20 Nov 13, 2024
db66375
fix: resolve CSRF token errors in console
Aryan20 Nov 14, 2024
0ed70d9
Merge pull request #14 from rtCamp/fix/csrf-error
Aryan20 Nov 14, 2024
132e547
fix: fix page address in package.json
Aryan20 Nov 14, 2024
c2b52a3
Merge pull request #15 from rtCamp/fix/csrf-2
Aryan20 Nov 14, 2024
6afb2db
fix: customer override for listview
Aryan20 Nov 14, 2024
daa4cb2
Merge pull request #16 from rtCamp/fix/customer-list
Aryan20 Nov 14, 2024
eb5bf95
fix: typo in mobileopportunity page
Aryan20 Nov 14, 2024
544632c
Merge pull request #17 from rtCamp/fix/opp-typo
Aryan20 Nov 14, 2024
22d2cef
feat: remove CRM Invitation feature
Aryan20 Nov 15, 2024
ef1de63
Merge pull request #18 from rtCamp/feat/remove-invitation
Aryan20 Nov 15, 2024
c7b72e8
feat: use ERP Next Service Level Priority
Aryan20 Nov 15, 2024
3628f5c
Merge pull request #19 from rtCamp/feat/use-slp
Aryan20 Nov 15, 2024
d9ca66c
feat: Use ERP Next ToDo instead of Tasks
Aryan20 Nov 18, 2024
0154eff
Merge pull request #20 from rtCamp/feat/use-todo
Aryan20 Nov 18, 2024
8ab29bf
chore: disable ERP Next integration setting page
Aryan20 Nov 18, 2024
38b7a83
Merge pull request #21 from rtCamp/chore/disable-erpnext-settings
Aryan20 Nov 18, 2024
7c24b9a
fix: lead statuses button link to CRM Lead Status
Aryan20 Nov 18, 2024
3daded3
fix: add status change log to opportunity
Aryan20 Nov 18, 2024
e34ba6f
Merge pull request #22 from rtCamp/fix/dashboard-lead-status
Aryan20 Nov 18, 2024
dffd1bd
Merge pull request #23 from rtCamp/fix/opp-logs
Aryan20 Nov 18, 2024
a5d7281
chore: remove settings for remote ERP Next instance
Aryan20 Nov 18, 2024
1a8c7e3
Merge pull request #24 from rtCamp/chore/remove-remote-erpnext
Aryan20 Nov 18, 2024
e005dab
feat: add API to link to ERP Next instance
Aryan20 Nov 18, 2024
bf1e0f7
Merge pull request #25 from rtCamp/feat/add_erpnext_api
Aryan20 Nov 18, 2024
11e186b
fix: enable ERP Next integration by default
Aryan20 Nov 20, 2024
cc66b8e
fix: rename FCRM instances to NCRM
Aryan20 Nov 20, 2024
2bf30f0
Revert "chore: disable ERP Next integration setting page"
Aryan20 Nov 20, 2024
b6e7622
Merge pull request #26 from rtCamp/revert-21-chore/disable-erpnext-se…
Aryan20 Nov 20, 2024
f59e254
Merge pull request #27 from rtCamp/fix/small-fixes
Aryan20 Nov 20, 2024
598cb71
fix: rename crm to next_crm in js files
Aryan20 Nov 21, 2024
c4bb492
Merge pull request #28 from rtCamp/fix/crm-to-next-crm
Aryan20 Nov 21, 2024
63c2782
fix: add logic for title field and use date
Aryan20 Nov 21, 2024
ef83388
Merge pull request #29 from rtCamp/fix/todo-title-date
Aryan20 Nov 21, 2024
2ef7141
fix: rename deal to opportunity in statusOptions
Aryan20 Nov 21, 2024
3af0367
Merge pull request #30 from rtCamp/fix/opp-status
Aryan20 Nov 21, 2024
fc052fb
fix: add exception handling to customer and contact delete
Aryan20 Nov 21, 2024
14a1059
Merge pull request #31 from rtCamp/fix/exception-handling-linked
Aryan20 Nov 21, 2024
60e716f
fix: add_todo_custom_title_field in install hooks
Aryan20 Nov 21, 2024
58fd9e7
Merge pull request #32 from rtCamp/fix/install-hook
Aryan20 Nov 21, 2024
4eb3ee7
fix: CRM should not send company name in quotation
Aryan20 Nov 22, 2024
01d58f2
Merge pull request #33 from rtCamp/fix/erpnext-company
Aryan20 Nov 22, 2024
323cc9b
fix: todo title install hook should have doctype filter
Aryan20 Nov 22, 2024
65554da
Merge pull request #34 from rtCamp/fix/todo-title-install-hook
Aryan20 Nov 22, 2024
0e3f1b0
fix: rename customerByName to customersByName in store
Aryan20 Nov 22, 2024
c0c91c9
Merge pull request #35 from rtCamp/fix/contact-store-typo
Aryan20 Nov 22, 2024
a769166
fix: reintroduce contact creation on opportunity entry
Aryan20 Nov 22, 2024
9dac781
Merge pull request #36 from rtCamp/fix/re-opp-contact
Aryan20 Nov 22, 2024
bfc222d
chore: change app icon for Next CRM
Aryan20 Nov 22, 2024
a80d7fa
Merge pull request #37 from rtCamp/chore/change-app-icon
Aryan20 Nov 22, 2024
95d9691
fix: update status set logic for opportunity
Aryan20 Nov 25, 2024
f5f3b5b
Merge pull request #38 from rtCamp/fix/opp-status-overide
Aryan20 Nov 25, 2024
6b52fe6
fix: use ERPNext lead opportunity convert logic
Aryan20 Nov 25, 2024
fd4a331
fix: don't throw error on existing contact
Aryan20 Nov 25, 2024
17a488f
Merge pull request #39 from rtCamp/fix/lead-contact-manual
Aryan20 Nov 25, 2024
097943d
chore: add pre-commit and re-format all files
Aryan20 Nov 25, 2024
1e06ed5
chore: add pre-commit and re-format all files
Aryan20 Nov 25, 2024
57f2be0
fix: merge conflict in lead override
Aryan20 Nov 25, 2024
f2373e7
Merge pull request #40 from rtCamp/chore/add-pre-commit
Aryan20 Nov 25, 2024
33f2cb5
chore: update readme for Next CRM
Aryan20 Nov 25, 2024
83b8174
Merge pull request #41 from rtCamp/chore/readme
Aryan20 Nov 25, 2024
7bd6207
Update README.md
KanchanChauhan Nov 25, 2024
eeab06f
Update README.md
KanchanChauhan Nov 25, 2024
9392d53
fix: update email and mobile fieldnames in contact
Aryan20 Nov 26, 2024
fe566f0
Merge pull request #42 from rtCamp/fix/contact-email-mobile
Aryan20 Nov 26, 2024
711d165
chore: update deals to opportunities in readme
Aryan20 Nov 26, 2024
7f2b651
Update README.md
KanchanChauhan Nov 26, 2024
9ca5a3c
Update README.md
KanchanChauhan Nov 26, 2024
52c9342
fix: add filter to opportunity from in opportunities list view
Aryan20 Nov 26, 2024
b7609a9
Merge pull request #43 from rtCamp/fix/opp-from-filter
Aryan20 Nov 26, 2024
600548d
Update README.md
KanchanChauhan Nov 26, 2024
86aa506
fix: add error on attempting install alongside Frappe CRM
Aryan20 Nov 29, 2024
f4113f6
Merge pull request #44 from rtCamp/fix/before-install
Aryan20 Nov 29, 2024
d400433
fix: give option to create opportunity from customer or lead
Aryan20 Nov 29, 2024
22d7ced
Merge pull request #45 from rtCamp/fix/opp-customer-or-lead
Aryan20 Nov 29, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
20 changes: 20 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# Root editor config file
root = true

# Common settings
[*]
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true
charset = utf-8

# pythonindentation settings
[{*.py}]
indent_style = space
indent_size = 4
max_line_length = 120

[{*.js,*.tsx,*.jsx,*.vue,*.css,*.scss,*.html}]
indent_style = space
indent_size = 2
max_line_length = 120
10 changes: 10 additions & 0 deletions .eslintrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{
"parserOptions": {
"ecmaVersion": "latest",
"sourceType": "module"
},

"env": {
"es6": true
}
}
72 changes: 72 additions & 0 deletions .flake8
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
[flake8]
ignore =
B007,
B950,
E101,
E111,
E114,
E116,
E117,
E121,
E122,
E123,
E124,
E125,
E126,
E127,
E128,
E131,
E201,
E202,
E203,
E211,
E221,
E222,
E223,
E224,
E225,
E226,
E228,
E231,
E241,
E242,
E251,
E261,
E262,
E265,
E266,
E271,
E272,
E273,
E274,
E301,
E302,
E303,
E305,
E306,
E401,
E402,
E501,
E502,
E701,
E702,
E703,
E741,
F403,
W191,
W291,
W292,
W293,
W391,
W503,
W504,
I001,
I005,
I004,
I003

per-file-ignores =
# syntax: [comma-separated path/to/file: comma-separated ERROR CODES]
__init__.py, hooks.py: F401

max-line-length = 200
Binary file modified .github/logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed .github/screenshots/CallLogs.png
Binary file not shown.
Binary file removed .github/screenshots/CallUI.png
Binary file not shown.
Binary file removed .github/screenshots/DealsList.png
Binary file not shown.
Binary file removed .github/screenshots/Emailtemplates.png
Binary file not shown.
Binary file removed .github/screenshots/LeadPage.png
Binary file not shown.
Binary file removed .github/screenshots/MainDealPage.png
Binary file not shown.
Binary file added .github/screenshots/OpportunityPage.jpeg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
6 changes: 3 additions & 3 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ __pycache__
dev-dist
tags
node_modules
crm/public/frontend
next_crm/public/frontend
frontend/yarn.lock
crm/www/crm.html
build
next_crm/www/next-crm/index.html
build
80 changes: 80 additions & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
exclude: "node_modules|.git"
default_stages: [commit]
fail_fast: false

repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.5.0
hooks:
- id: end-of-file-fixer
- id: trailing-whitespace
files: '^next_crm/.*\.py'
exclude: ".*json$|.*txt$|.*csv|.*md|.*svg"
- id: check-yaml
- id: check-merge-conflict
- id: check-ast
- id: check-json
- id: check-toml
- id: check-yaml
- id: debug-statements
files: '^next_crm/.*\.py'

- repo: https://github.com/asottile/pyupgrade
rev: v3.15.0
hooks:
- id: pyupgrade
args: ["--py310-plus"]

- repo: https://github.com/psf/black
rev: 24.2.0
hooks:
- id: black
files: '^next_crm/.*\.py'

- repo: https://github.com/pre-commit/mirrors-prettier
rev: v3.1.0
hooks:
- id: prettier
files: '^next_crm/.*\.js|jsx|ts|tsx'
# Ignore any files that might contain jinja / bundles
exclude: |
(?x)^(
next_crm/public/dist/.*|
.*node_modules.*|
.*boilerplate.*|
next_crm/www/website_script.js|
next_crm/templates/includes/.*|
next_crm/public/js/lib/.*|
next_crm/website/doctype/website_theme/website_theme_template.scss
)$

- repo: https://github.com/pre-commit/mirrors-eslint
rev: v8.56.0
hooks:
- id: eslint
files: '^next_crm/.*\.js|jsx|ts|tsx'
args: ["--quiet"]
# Ignore any files that might contain jinja / bundles
exclude: |
(?x)^(
next_crm/public/dist/.*|
cypress/.*|
.*node_modules.*|
.*boilerplate.*|
next_crm/www/website_script.js|
next_crm/templates/includes/.*|
next_crm/public/js/lib/.*
)$

- repo: https://github.com/PyCQA/isort
rev: 5.13.2
hooks:
- id: isort
args: ["--profile", "black"]
files: '^next_crm/.*\.py'

- repo: https://github.com/PyCQA/flake8
rev: 7.0.0
hooks:
- id: flake8
additional_dependencies: ["flake8-isort", "flake8-bugbear"]
4 changes: 2 additions & 2 deletions .releaserc
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,12 @@
"@semantic-release/release-notes-generator",
[
"@semantic-release/exec", {
"prepareCmd": 'sed -ir "s/[0-9]*\.[0-9]*\.[0-9]*/${nextRelease.version}/" crm/__init__.py'
"prepareCmd": 'sed -ir "s/[0-9]*\.[0-9]*\.[0-9]*/${nextRelease.version}/" next_crm/__init__.py'
}
],
[
"@semantic-release/git", {
"assets": ["crm/__init__.py"],
"assets": ["next_crm/__init__.py"],
"message": "chore(release): Bumped to Version ${nextRelease.version}"
}
],
Expand Down
30 changes: 30 additions & 0 deletions .semgrepignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# Common large paths
node_modules/
build/
dist/
vendor/
.env/
.venv/
.tox/
*.min.js
.npm/
.yarn/

# Common test paths
test/
tests/
testsuite/
*_test.go
test*.py

# Semgrep rules folder
.frappe-semgrep

# Semgrep-action log folder
.semgrep_logs/

# Github Actions
.github/

# Markdown files
*.md
115 changes: 27 additions & 88 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,126 +1,65 @@
<div align="center">
<img width="60" src=".github/logo.png" alt="Next CRM Logo">
<h1>Next CRM</h1>
</div>

<div align="center">
<a href="https://frappe.io/products/crm">
<img width="1402" alt="Screenshot 2022-09-18 at 9 16 08 PM" src=".github/screenshots/MainDealPage.png">
<img width="800" alt="Screenshot of Opportunity page" src=".github/screenshots/OpportunityPage.jpeg">
</a>
</div>

<p align="center">
<a href="https://img.shields.io/github/issues/frappe/crm">
<img alt="issues" src="https://img.shields.io/github/issues/frappe/crm">
</a>
<a href="https://img.shields.io/github/license/frappe/crm">
<img alt="license" src="https://img.shields.io/github/license/frappe/crm">
</a>
</p>

<details>
<summary>Show more screenshots</summary>
<img width="1402" alt="Screenshot 2022-09-18 at 9 18 17 PM" src=".github/screenshots/DealsList.png">
<img width="1402" alt="Screenshot 2022-09-18 at 11 47 06 PM" src=".github/screenshots/LeadPage.png">
<img width="1402" alt="Screenshot 2022-09-18 at 9 18 47 PM" src=".github/screenshots/Emailtemplates.png">
<img width="1402" alt="Screenshot 2022-09-18 at 9 18 47 PM" src=".github/screenshots/CallUI.png">
<img width="1402" alt="Screenshot 2022-09-18 at 9 18 47 PM" src=".github/screenshots/CallLogs.png">
</details>

## Key Features

- **Views:** Create custom views which is a combination of filters, sort and columns.
- **Pinned View:** Pin important leads and deals in the sidebar.
- **Pinned View:** Pin important leads and opportunities in the sidebar.
- **Public View:** Share views with all users.
- **Saved View:** Save views for later use.
- **Email Communication:** Send and receive emails directly from the Lead/Deal Page.
- **Email Communication:** Send and receive emails directly from the Lead/Opportunity Page.
- **Email Templates:** Create and use email templates for faster communication.
- **Comments:** Add comments to leads and deals to keep track of the conversation.
- **Comments:** Add comments to leads and opportunities to keep track of the conversation.
- **Notifications:** Get notified when someone mentions you in a comment.
- **Service Level Agreement:** Set SLA for leads and deals and get notified when the SLA is breached.
- **Assignment Rule:** Automatically assign leads and deals to users based on the criteria.
- **Tasks:** Create tasks for leads and deals.
- **Notes:** Add notes to leads and deals.
- **Service Level Agreement:** Set SLA for leads and opportunities and get notified when the SLA is breached.
- **Assignment Rule:** Automatically assign leads and opportunities to users based on the criteria.
- **ToDos:** Create todos for leads and opportunity.
- **Notes:** Add notes to leads and opportunity.
- **Call Logs:** See the call logs with call details and recordings.

## Integrations

- **Twilio:** Integrate Twilio to make and receive calls from the CRM. You can also record calls. It is a built-in integration.
- **WhatsApp:** Integrate WhatsApp to send and receive messages from the CRM. [Frappe WhatsApp](https://github.com/shridarpatil/frappe_whatsapp) is used for this integration.

## Getting Started

### Managed Hosting

Get started with your personal or business site with a few clicks on [Frappe Cloud](https://frappecloud.com/marketplace/apps/crm).

### Docker (Recommended)

The quickest way to set up Frappe CRM and take it for a test ride.

Frappe framework is multi-tenant and supports multiple apps by default. This docker compose is just a standalone version with Frappe CRM pre-installed. Just put it behind your desired reverse-proxy if needed, and you're good to go.

If you wish to use multiple Frappe apps or need multi-tenancy. Take a look at our production ready self-hosted workflow, or join us on Frappe Cloud to get first party support and hassle-free hosting.

**Step 1**: Setup folder and download the required files

mkdir frappe-crm
cd frappe-crm

**Step 2**: Download the required files

Docker Compose File:

wget -O docker-compose.yml https://raw.githubusercontent.com/frappe/crm/develop/docker/docker-compose.yml

Frappe CRM bench setup script

wget -O init.sh https://raw.githubusercontent.com/frappe/crm/develop/docker/init.sh

**Step 3**: Run the container and daemonize it

docker compose up -d

**Step 4**: The site [http://crm.localhost](http://crm.localhost) should now be available. The default credentials are:

> username: administrator
> password: admin

### Self-hosting

If you prefer self-hosting, follow the official [Frappe Bench Installation](https://github.com/frappe/bench#installation) instructions.

## Want to Just Try Out or Contribute?

### Codespaces

1. Open [this link](https://github.com/codespaces/new?hide_repo_select=true&ref=master&repo=668199241&skip_quickstart=true&machine=standardLinux32gb&devcontainer_path=.devcontainer%2Fdevcontainer.json&geo=SoutheastAsia) and click on "Create Codespace".
2. Wait for initialization (~15 mins).
3. Run `bench start` from the terminal tab.
4. Click on the link beside "8000" port under "Ports" tab.
5. Log in with "Administrator" as the username and "admin" as the password.
6. Go to `<random-id>.github.dev/crm` to access the crm interface.

### Local Setup

1. [Install Bench](https://github.com/frappe/bench).
2. Install Frappe CRM app:
2. [Install ERPNext](https://github.com/frappe/erpnext)
2. Get the Next CRM app:
```sh
$ bench get-app crm
$ bench get-app https://github.com/rtCamp/next-crm --branch next-develop
```
3. Create a site with the crm app:
```sh
$ bench --site sitename.localhost install-app crm
$ bench --site sitename.localhost install-app next_crm
```
4. Open the site in the browser:
```sh
$ bench browse sitename.localhost --user Administrator
```
5. Access the crm page at `sitename.localhost:8000/crm` in your web browser.

## Need help?

Join our [telegram group](https://t.me/frappecrm) for instant help.
5. Access the crm page at `sitename.localhost:8000/next-crm` in your web browser.

## Documentation
### Changes other than DocType

Check out the [official documentation](https://docs.frappe.io/crm) for more details.
1. App renamed to Next CRM
2. URL changed from /crm to /next-crm
3. Lead is compulsory to create Opportunity (being reconsidered)
4. ERPNext integration enabled by default

## License
### Removed Features
1. CRM Invitation – Permissions from the ERPNext CRM module are used directly.
2. Ability to link to ERPNext on a different site – Not required as this is tightly integrated with the ERPNext CRM module.

[GNU Affero General Public License v3.0](LICENSE)
We’d love your feedback! Please check it out and share your thoughts on <a href="https://discuss.frappe.io/t/next-crm-integrating-frappe-crm-seamlessly-with-erpnexts-crm-module/138001">Discuss Forum</a>.
Loading