From 2af96092579b4fa9666cfd93d899103b13be3f53 Mon Sep 17 00:00:00 2001 From: Jishnu-Epics Date: Sat, 21 Jun 2025 15:52:25 +0530 Subject: [PATCH] feat:updated dashboard quotation --- virtual_pro/events/quotation_dashboard.py | 15 ++++++++++++++ virtual_pro/hooks.py | 6 +++--- .../virtual_pro/doctype/enquiry/enquiry.js | 15 +++++++------- .../virtual_pro/doctype/enquiry/enquiry.json | 4 ++-- .../print_format/invoice/invoice.json | 4 ++-- .../workspace/virtual_pro/virtual_pro.json | 20 +++++++++++++++++-- 6 files changed, 48 insertions(+), 16 deletions(-) create mode 100644 virtual_pro/events/quotation_dashboard.py diff --git a/virtual_pro/events/quotation_dashboard.py b/virtual_pro/events/quotation_dashboard.py new file mode 100644 index 0000000..3a68803 --- /dev/null +++ b/virtual_pro/events/quotation_dashboard.py @@ -0,0 +1,15 @@ +from frappe import _ + + +def get_quotation_dashboard(data): + return { + "fieldname": "prevdoc_docname", + "non_standard_fieldnames": { + "Auto Repeat": "reference_document", + "Sales Invoice": "custom_quotation", + }, + "transactions": [ + {"label": _("Sales Order"), "items": ["Sales Order", "Sales Invoice"]}, + {"label": _("Subscription"), "items": ["Auto Repeat"]}, + ], + } diff --git a/virtual_pro/hooks.py b/virtual_pro/hooks.py index 064a97f..3fdd934 100644 --- a/virtual_pro/hooks.py +++ b/virtual_pro/hooks.py @@ -192,9 +192,9 @@ # each overriding function accepts a `data` argument; # generated from the base implementation of the doctype dashboard, # along with any modifications made in other Frappe apps -# override_doctype_dashboards = { -# "Task": "virtual_pro.task.get_dashboard_data" -# } +override_doctype_dashboards = { + "Quotation": "virtual_pro.events.quotation_dashboard.get_quotation_dashboard" +} # exempt linked doctypes from being automatically cancelled # diff --git a/virtual_pro/virtual_pro/doctype/enquiry/enquiry.js b/virtual_pro/virtual_pro/doctype/enquiry/enquiry.js index 385899d..87ed174 100644 --- a/virtual_pro/virtual_pro/doctype/enquiry/enquiry.js +++ b/virtual_pro/virtual_pro/doctype/enquiry/enquiry.js @@ -6,13 +6,14 @@ frappe.ui.form.on('Enquiry', { frm.add_custom_button('Change Status', () => { show_status_dialog(frm); }); - - frm.add_custom_button("Create Quotation", function() { - frappe.model.open_mapped_doc({ - method: "virtual_pro.virtual_pro.doctype.enquiry.enquiry.make_quotation", - frm: frm - }); - },__('Create')); + if (!frm.doc.quotation) { + frm.add_custom_button("Create Quotation", function() { + frappe.model.open_mapped_doc({ + method: "virtual_pro.virtual_pro.doctype.enquiry.enquiry.make_quotation", + frm: frm + }); + }, __('Create')); + } } cur_frm.page.set_inner_btn_group_as_primary(__("Create")); } diff --git a/virtual_pro/virtual_pro/doctype/enquiry/enquiry.json b/virtual_pro/virtual_pro/doctype/enquiry/enquiry.json index be3ec52..2e22695 100644 --- a/virtual_pro/virtual_pro/doctype/enquiry/enquiry.json +++ b/virtual_pro/virtual_pro/doctype/enquiry/enquiry.json @@ -175,7 +175,7 @@ "fieldname": "source_name", "fieldtype": "Select", "label": "Source", - "options": "\nGoogle Ads\nSEO\nMeta Ads\nReference\nVpro clients", + "options": "\nGoogle Ads\nSEO\nMeta Ads\nReference\nVpro clients\nWhatsApp", "reqd": 1 }, { @@ -188,7 +188,7 @@ "index_web_pages_for_search": 1, "is_submittable": 1, "links": [], - "modified": "2025-06-21 09:53:36.995758", + "modified": "2025-06-21 13:08:54.716395", "modified_by": "Administrator", "module": "Virtual Pro", "name": "Enquiry", diff --git a/virtual_pro/virtual_pro/print_format/invoice/invoice.json b/virtual_pro/virtual_pro/print_format/invoice/invoice.json index fdfa88e..703d65e 100644 --- a/virtual_pro/virtual_pro/print_format/invoice/invoice.json +++ b/virtual_pro/virtual_pro/print_format/invoice/invoice.json @@ -9,14 +9,14 @@ "docstatus": 0, "doctype": "Print Format", "font_size": 14, - "html": "\n\n\n \n Virtual PRO Invoice\n \n\n\n
\n \n
\n
\n
\n \n \n
\n \n
\n
\n

INVOICE

\n

# {{ doc.name }}

\n
\n
Balance Due
\n
{{ doc.currency }} {{ \"%.2f\"|format(doc.grand_total) }}
\n
\n
\n
\n\n \n
\n
\n

Virtual PRO

\n
\n #Wafi Residence Office LHEU
\n Dubai Health Care City
\n #Innov8 Incubator
\n Al quoz 1, Dubai

\n Email: info@virtualpro.ae
\n Mobile: +971 581537204\n
\n
\n
\n
\n Invoice Date:\n {{ doc.posting_date }}\n
\n
\n Terms:\n {{ doc.payment_terms_template or \"Net 30\" }}\n
\n
\n Due Date:\n {{ doc.due_date }}\n
\n
\n
\n\n \n
\n Bill To: {{ doc.customer_name or doc.customer }}\n
\n\n \n \n \n \n \n \n \n \n \n \n \n \n {% for item in doc.items %}\n \n \n \n \n \n \n \n {% endfor %}\n \n
#DescriptionQtyRateAmount
{{ loop.index }}{{ item.item_name or item.description }}{{ \"%.2f\"|format(item.qty) }}{{ doc.currency }} {{ \"%.2f\"|format(item.rate) }}{{ doc.currency }} {{ \"%.2f\"|format(item.amount) }}
\n\n \n
\n
\n Sub Total\n {{ doc.currency }} {{ \"%.2f\"|format(doc.net_total) }}\n
\n \n {% if doc.taxes %}\n {% for tax in doc.taxes %}\n
\n {{ tax.description }}\n {{ doc.currency }} {{ \"%.2f\"|format(tax.tax_amount) }}\n
\n {% endfor %}\n {% endif %}\n \n
\n Total\n {{ doc.currency }} {{ \"%.2f\"|format(doc.grand_total) }}\n
\n \n
\n Balance Due\n {{ doc.currency }} {{ \"%.2f\"|format(doc.outstanding_amount or doc.grand_total) }}\n
\n
\n\n \n
\n
\n Thank you for your business!\n
\n
\n

BANK ACCOUNT DETAILS

\n
\n
\n NAME:\n VIRTUAL PRO DOCUMENTS CLEAR CO LLC\n
\n
\n BANK NAME:\n ADCB\n
\n
\n ACCOUNT NO:\n 12539998920001\n
\n
\n IBAN:\n AE61 0030 0125 3999 8920 001\n
\n
\n BRANCH:\n DUBAI MALL\n
\n
\n
\n
\n
\n\n", + "html": "\n\n\n \n Virtual PRO Invoice\n \n\n\n
\n \n
\n
\n
\n \n \n
\n \n
\n
\n

INVOICE

\n

# {{ doc.name }}

\n
\n
Balance Due
\n
{{ doc.currency }} {{ \"%.2f\"|format(doc.grand_total) }}
\n
\n
\n
\n\n \n
\n
\n

Virtual PRO

\n
\n #Wafi Residence Office LHEU
\n Dubai Health Care City
\n #Innov8 Incubator
\n Al quoz 1, Dubai

\n Email: info@virtualpro.ae
\n Mobile: +971 581537204\n
\n
\n
\n
\n Invoice Date:\n {{ doc.posting_date }}\n
\n
\n Terms:\n {{ doc.payment_terms_template or \"Net 30\" }}\n
\n
\n Due Date:\n {{ doc.due_date }}\n
\n
\n
\n\n \n
\n Bill To: {{ doc.customer_name or doc.customer }}\n
\n\n \n \n \n \n \n \n \n \n \n \n \n \n {% for item in doc.items %}\n \n \n \n \n \n \n \n {% endfor %}\n \n
#DescriptionQtyRateAmount
{{ loop.index }}{{ item.item_name or item.description }}{{ \"%.2f\"|format(item.qty) }}{{ doc.currency }} {{ \"%.2f\"|format(item.rate) }}{{ doc.currency }} {{ \"%.2f\"|format(item.amount) }}
\n\n \n
\n
\n Sub Total\n {{ doc.currency }} {{ \"%.2f\"|format(doc.net_total) }}\n
\n \n {% if doc.taxes %}\n {% for tax in doc.taxes %}\n
\n {{ tax.description }}\n {{ doc.currency }} {{ \"%.2f\"|format(tax.tax_amount) }}\n
\n {% endfor %}\n {% endif %}\n \n
\n Total\n {{ doc.currency }} {{ \"%.2f\"|format(doc.grand_total) }}\n
\n \n
\n Balance Due\n {{ doc.currency }} {{ \"%.2f\"|format(doc.outstanding_amount or doc.grand_total) }}\n
\n
\n\n \n
\n
\n Thank you for your business!\n
\n
\n

BANK ACCOUNT DETAILS

\n
\n
\n NAME:\n VIRTUAL PRO DOCUMENTS CLEAR CO LLC\n
\n
\n BANK NAME:\n ADCB\n
\n
\n ACCOUNT NO:\n 12539998920001\n
\n
\n IBAN:\n AE61 0030 0125 3999 8920 001\n
\n
\n BRANCH:\n DUBAI MALL\n
\n
\n
\n
\n
\n\n", "idx": 0, "line_breaks": 0, "margin_bottom": 15.0, "margin_left": 15.0, "margin_right": 15.0, "margin_top": 15.0, - "modified": "2025-06-21 09:54:33.745687", + "modified": "2025-06-21 12:48:13.533966", "modified_by": "Administrator", "module": "Virtual Pro", "name": "invoice", diff --git a/virtual_pro/virtual_pro/workspace/virtual_pro/virtual_pro.json b/virtual_pro/virtual_pro/workspace/virtual_pro/virtual_pro.json index 51d97b7..c1e73d4 100644 --- a/virtual_pro/virtual_pro/workspace/virtual_pro/virtual_pro.json +++ b/virtual_pro/virtual_pro/workspace/virtual_pro/virtual_pro.json @@ -1,6 +1,6 @@ { "charts": [], - "content": "[{\"id\":\"-R9HiknfVA\",\"type\":\"header\",\"data\":{\"text\":\"Virtual Pro\",\"col\":12}},{\"id\":\"4WYhjFAFqF\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"Enquiry\",\"col\":3}},{\"id\":\"Xj0wFLq0xb\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"Service Request\",\"col\":3}},{\"id\":\"nlekOW0Vww\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"ToDo\",\"col\":3}},{\"id\":\"YyHNwxyaAf\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"Task\",\"col\":3}},{\"id\":\"PQrkTjaOwh\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"Sales Order\",\"col\":3}},{\"id\":\"UMIROPe2Ju\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"Payment Entry\",\"col\":3}},{\"id\":\"CH_jUkf7ta\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"Sales Invoice\",\"col\":3}},{\"id\":\"en_3CTXRJE\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"Virtual Pro Settings\",\"col\":3}},{\"id\":\"p_MEl48Nse\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"Services\",\"col\":3}}]", + "content": "[{\"id\":\"-R9HiknfVA\",\"type\":\"header\",\"data\":{\"text\":\"Virtual Pro\",\"col\":12}},{\"id\":\"4WYhjFAFqF\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"Enquiry\",\"col\":3}},{\"id\":\"Xj0wFLq0xb\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"Service Request\",\"col\":3}},{\"id\":\"nlekOW0Vww\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"ToDo\",\"col\":3}},{\"id\":\"YyHNwxyaAf\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"Task\",\"col\":3}},{\"id\":\"PQrkTjaOwh\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"Sales Order\",\"col\":3}},{\"id\":\"UMIROPe2Ju\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"Payment Entry\",\"col\":3}},{\"id\":\"CH_jUkf7ta\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"Sales Invoice\",\"col\":3}},{\"id\":\"en_3CTXRJE\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"Virtual Pro Settings\",\"col\":3}},{\"id\":\"p_MEl48Nse\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"Services\",\"col\":3}},{\"id\":\"b2NzE7fjHI\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"Type\",\"col\":3}},{\"id\":\"ahNtXWwuaz\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"Service Steps\",\"col\":3}}]", "creation": "2025-06-07 11:46:58.272112", "custom_blocks": [], "docstatus": 0, @@ -13,7 +13,7 @@ "is_hidden": 0, "label": "Virtual Pro", "links": [], - "modified": "2025-06-17 10:10:17.123918", + "modified": "2025-06-21 12:33:07.951876", "modified_by": "Administrator", "module": "Virtual Pro", "name": "Virtual Pro", @@ -41,6 +41,14 @@ "stats_filter": "[]", "type": "DocType" }, + { + "color": "Grey", + "doc_view": "List", + "label": "Type", + "link_to": "Type", + "stats_filter": "[]", + "type": "DocType" + }, { "color": "Grey", "doc_view": "List", @@ -49,6 +57,14 @@ "stats_filter": "[]", "type": "DocType" }, + { + "color": "Grey", + "doc_view": "List", + "label": "Service Steps", + "link_to": "Service Steps", + "stats_filter": "[]", + "type": "DocType" + }, { "color": "Grey", "doc_view": "List",