diff --git a/README.md b/README.md index a7fe6885..ed962a2a 100644 --- a/README.md +++ b/README.md @@ -45,10 +45,42 @@ ## Getting Started -### Cloud Hosting +### 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. diff --git a/crm/install.py b/crm/install.py index da660f78..594b1ea5 100644 --- a/crm/install.py +++ b/crm/install.py @@ -144,6 +144,14 @@ def add_default_fields_layout(force=False): "doctype": "CRM Deal", "layout": '[{"label":"Contacts","name":"contacts_section","opened":true,"editable":false,"contacts":[]},{"label":"Organization Details","name":"organization_tab","opened":true,"fields":["organization","website","territory","annual_revenue","close_date","probability","next_step","deal_owner"]}]' }, + "Contact-Side Panel": { + "doctype": "Contact", + "layout": '[{"label":"Details","name":"details","opened":true,"fields":["salutation","first_name","last_name","email_id","mobile_no","gender","company_name","designation","address"]}]' + }, + "CRM Organization-Side Panel": { + "doctype": "CRM Organization", + "layout": '[{"label":"Details","name":"details","opened":true,"fields":["organization_name","website","territory","industry","no_of_employees","address"]}]' + }, } for layout in quick_entry_layouts: diff --git a/crm/patches.txt b/crm/patches.txt index 89401dda..b14faf13 100644 --- a/crm/patches.txt +++ b/crm/patches.txt @@ -6,6 +6,6 @@ crm.patches.v1_0.move_crm_note_data_to_fcrm_note [post_model_sync] # Patches added in this section will be executed after doctypes are migrated crm.patches.v1_0.create_email_template_custom_fields -crm.patches.v1_0.create_default_fields_layout #13/09/2024 +crm.patches.v1_0.create_default_fields_layout #31/10/2024 crm.patches.v1_0.create_default_sidebar_fields_layout crm.patches.v1_0.update_deal_quick_entry_layout \ No newline at end of file diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml index b4c8d7c4..75e2d142 100644 --- a/docker/docker-compose.yml +++ b/docker/docker-compose.yml @@ -2,7 +2,7 @@ version: "3.7" name: crm services: mariadb: - image: mariadb:10.6 + image: mariadb:10.8 command: - --character-set-server=utf8mb4 - --collation-server=utf8mb4_unicode_ci diff --git a/docker/init.sh b/docker/init.sh index 1fb4b01f..d9b89d81 100644 --- a/docker/init.sh +++ b/docker/init.sh @@ -22,7 +22,7 @@ bench set-redis-socketio-host redis:6379 sed -i '/redis/d' ./Procfile sed -i '/watch/d' ./Procfile -bench get-app crm +bench get-app crm --branch develop bench new-site crm.localhost \ --force \ @@ -34,7 +34,6 @@ bench --site crm.localhost install-app crm bench --site crm.localhost set-config developer_mode 1 bench --site crm.localhost clear-cache bench --site crm.localhost set-config mute_emails 1 -bench --site crm.localhost add-user alex@example.com --first-name Alex --last-name Scott --password 123 --user-type 'System User' --add-role 'crm Admin' bench use crm.localhost bench start \ No newline at end of file diff --git a/frontend/src/components/Activities/WhatsAppArea.vue b/frontend/src/components/Activities/WhatsAppArea.vue index fd7509bb..da5d8fdb 100644 --- a/frontend/src/components/Activities/WhatsAppArea.vue +++ b/frontend/src/components/Activities/WhatsAppArea.vue @@ -79,6 +79,10 @@ v-else-if="whatsapp.content_type == 'text'" v-html="formatWhatsAppMessage(whatsapp.message)" /> +
-
+
{{ option.value }}
+
- +
-
- +
+
@@ -93,7 +96,8 @@ const toggleEditMode = () => { editMode.value && nextTick(() => inputRef.value.el.focus()) } -const saveOption = () => { +const saveOption = (e) => { + if (!e.target.value) return toggleEditMode() props.option.onSave(props.option, isNew.value) isNew.value = false diff --git a/frontend/src/components/Fields.vue b/frontend/src/components/Fields.vue index 41a4d8c1..2eba0a77 100644 --- a/frontend/src/components/Fields.vue +++ b/frontend/src/components/Fields.vue @@ -130,55 +130,6 @@ -
- - - - -
import EditIcon from '@/components/Icons/EditIcon.vue' -import NestedPopover from '@/components/NestedPopover.vue' -import DropdownItem from '@/components/DropdownItem.vue' import IndicatorIcon from '@/components/Icons/IndicatorIcon.vue' import UserAvatar from '@/components/UserAvatar.vue' import Link from '@/components/Controls/Link.vue' diff --git a/frontend/src/components/Icons/DetailsIcon.vue b/frontend/src/components/Icons/DetailsIcon.vue index afc0cb0a..d66f7075 100644 --- a/frontend/src/components/Icons/DetailsIcon.vue +++ b/frontend/src/components/Icons/DetailsIcon.vue @@ -1,20 +1,16 @@ diff --git a/frontend/src/components/Icons/MenuIcon.vue b/frontend/src/components/Icons/MenuIcon.vue new file mode 100644 index 00000000..f194dcc4 --- /dev/null +++ b/frontend/src/components/Icons/MenuIcon.vue @@ -0,0 +1,16 @@ + diff --git a/frontend/src/components/LayoutHeader.vue b/frontend/src/components/LayoutHeader.vue index 14183680..cff6d5da 100644 --- a/frontend/src/components/LayoutHeader.vue +++ b/frontend/src/components/LayoutHeader.vue @@ -1,7 +1,7 @@