├── .gitignore ├── README.md ├── erpnext_price_estimation ├── .vscode │ └── settings.json ├── __init__.py ├── config │ └── __init__.py ├── erpnext_price_estimation │ ├── __init__.py │ ├── doctype │ │ ├── __init__.py │ │ ├── erpnext_price_estimation │ │ │ ├── __init__.py │ │ │ ├── erpnext_price_estimation.js │ │ │ ├── erpnext_price_estimation.json │ │ │ ├── erpnext_price_estimation.py │ │ │ └── test_erpnext_price_estimation.py │ │ ├── estimation_detail │ │ │ ├── __init__.py │ │ │ ├── estimation_detail.json │ │ │ └── estimation_detail.py │ │ ├── estimation_document │ │ │ ├── __init__.py │ │ │ ├── estimation_document.js │ │ │ ├── estimation_document.json │ │ │ ├── estimation_document.py │ │ │ └── test_estimation_document.py │ │ ├── estimation_process │ │ │ ├── __init__.py │ │ │ ├── estimation_process.js │ │ │ ├── estimation_process.json │ │ │ ├── estimation_process.py │ │ │ └── test_estimation_process.py │ │ └── module │ │ │ ├── __init__.py │ │ │ ├── module.js │ │ │ ├── module.json │ │ │ ├── module.py │ │ │ └── test_module.py │ └── print_format │ │ ├── __init__.py │ │ └── erpnext_price_estimate │ │ ├── __init__.py │ │ ├── erpnext_price_estimate.css │ │ ├── erpnext_price_estimate.html │ │ └── erpnext_price_estimate.json ├── fixtures │ ├── estimation_document.json │ ├── estimation_process.json │ └── module.json ├── hooks.py ├── modules.txt ├── patches.txt ├── public │ └── .gitkeep └── templates │ ├── __init__.py │ └── pages │ └── __init__.py ├── license.txt └── pyproject.toml /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | *.pyc 3 | *.egg-info 4 | *.swp 5 | tags 6 | node_modules 7 | __pycache__ -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## ERPNext Price Estimation 2 | 3 | ## 🚀 Introduction 4 | 5 | This tool helps ERPNext implementors create a standardised quote. This tool will help a sales / estimation consultant to ask the right question to scope a standard / vanilla implementation. This tool will help you estimate the number of hours. You can choose your own rates. 6 | 7 | ## ✨ Key Features 8 | 9 | 1. Pre-built module masters - list of all tasks associated with implementing a module 10 | 2. Estimation - estimate for a particular customer 11 | 3. Print Format - to present to the customer 12 | 13 | ## 🛠 Installation 14 | 15 | Using bench, [install ERPNext](https://github.com/frappe/bench#installation) as mentioned here. 16 | 17 | Once ERPNext is installed, add PRM app to your bench by running 18 | 19 | ```sh 20 | $ bench get-app erpnext_price_estimation https://github.com/frappe/erpnext_price_estimation.git 21 | ``` 22 | 23 | ## 📘 User Guide 24 | 25 | https://github.com/frappe/erpnext_price_estimation/assets/27720465/10d308af-af89-4152-ac37-aaf3344445f3 26 | 27 | 28 | ### 1. Estimation 29 | 30 | Go to the "ERPNext Price Estimation" module, or create via awesomebar. 31 | 32 | #### 1. Start a new estimate 33 | ![erpnext_price_estimate](https://github.com/frappe/erpnext_price_estimation/assets/27720465/87e15383-33b9-4890-8470-ec2cbb6c0f64) 34 | 35 | 36 | 37 | #### 2. Select the modules 38 | 39 | Once you select the module, the estimate will be auto-updated. Edit as required. 40 | ![select_modules](https://github.com/frappe/erpnext_price_estimation/assets/27720465/e8f36a9d-136d-4675-9b4d-550bd469a17b) 41 | 42 | 43 | 44 | 45 | #### 3. Set your hourly rate 46 | ![hourly_rate](https://github.com/frappe/erpnext_price_estimation/assets/27720465/48760442-a1cb-4435-aeef-d0adf235c875) 47 | 48 | 49 | 50 | 51 | #### 4. Add the Frappe Cloud details 52 | ![frappe_cloud](https://github.com/frappe/erpnext_price_estimation/assets/27720465/b6990e45-704c-404e-9d10-e007f5aab1c7) 53 | 54 | 55 | 56 | 57 | #### 5. Add the AMC details 58 | 59 | ![amc](https://github.com/frappe/erpnext_price_estimation/assets/27720465/c00ccb1d-312d-4975-b567-5158711ca24f) 60 | 61 | 62 | 63 | 64 | 65 | #### 6. Review and Save 66 | 67 | ### 2. Generating Print Formats 68 | 69 | Go to the "Print Formats" section. 70 | Select "ERPNext Price Estimation" 71 | ![ERPNext_Price_Estimate_1](https://github.com/frappe/erpnext_price_estimation/assets/27720465/dcebd259-211c-4438-b462-5bbb1d0900f6) 72 | 73 | ![ERPNext_Price_Estimate_2](https://github.com/frappe/erpnext_price_estimation/assets/27720465/3cbf8975-d46f-4fce-8e1e-7c90e51e30c0) 74 | 75 | 76 | 77 | 78 | Customize the print format if needed and generate the document. 79 | 80 | ### 3. Changing the masters 81 | New modules,Estimation Process, Estimation Document can be added and modified as required. 82 | 83 | Modules: 84 | ![new_module](https://github.com/frappe/erpnext_price_estimation/assets/27720465/cdcaf4e8-87d0-40bc-ac8f-0116bb0a4b25) 85 | 86 | 87 | Estimation Process: 88 | ![estimation_process](https://github.com/frappe/erpnext_price_estimation/assets/27720465/1c1198de-c411-4386-b7ec-ed1bf17c91cc) 89 | 90 | 91 | Estimation Document: 92 | Estimation Document corresponding to the Estimation Document can be added /modified. 93 | ![estimation_doc](https://github.com/frappe/erpnext_price_estimation/assets/27720465/80f667a7-1384-465d-b2a0-d71a51bf0588) 94 | 95 | 96 | Note: Estimation Process Needs to be added for the Setup, Customization Module as per the requirement. 97 | 98 | ## 🤝 Contributing 99 | 100 | Please raise a pull request to add enhancements! 101 | 102 | ## 📜 License 103 | 104 | MIT See [license.txt](https://github.com/frappe/partner_relationship_management/blob/main/license.txt) for more information. 105 | -------------------------------------------------------------------------------- /erpnext_price_estimation/.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "python.testing.unittestArgs": [ 3 | "-v", 4 | "-s", 5 | "./erpnext_price_estimation", 6 | "-p", 7 | "*test*.py" 8 | ], 9 | "python.testing.pytestEnabled": false, 10 | "python.testing.unittestEnabled": true 11 | } -------------------------------------------------------------------------------- /erpnext_price_estimation/__init__.py: -------------------------------------------------------------------------------- 1 | __version__ = "0.0.1" 2 | -------------------------------------------------------------------------------- /erpnext_price_estimation/config/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/erpnext_price_estimation/09f039fd7c76fc7f5e4bc18b843272ceac75ce8c/erpnext_price_estimation/config/__init__.py -------------------------------------------------------------------------------- /erpnext_price_estimation/erpnext_price_estimation/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/erpnext_price_estimation/09f039fd7c76fc7f5e4bc18b843272ceac75ce8c/erpnext_price_estimation/erpnext_price_estimation/__init__.py -------------------------------------------------------------------------------- /erpnext_price_estimation/erpnext_price_estimation/doctype/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/erpnext_price_estimation/09f039fd7c76fc7f5e4bc18b843272ceac75ce8c/erpnext_price_estimation/erpnext_price_estimation/doctype/__init__.py -------------------------------------------------------------------------------- /erpnext_price_estimation/erpnext_price_estimation/doctype/erpnext_price_estimation/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/erpnext_price_estimation/09f039fd7c76fc7f5e4bc18b843272ceac75ce8c/erpnext_price_estimation/erpnext_price_estimation/doctype/erpnext_price_estimation/__init__.py -------------------------------------------------------------------------------- /erpnext_price_estimation/erpnext_price_estimation/doctype/erpnext_price_estimation/erpnext_price_estimation.js: -------------------------------------------------------------------------------- 1 | function add_efforts(frm, table, module) { 2 | frappe.call({ 3 | method: 'erpnext_price_estimation.erpnext_price_estimation.doctype.erpnext_price_estimation.erpnext_price_estimation.get_process_documents', 4 | args: { 5 | module: module 6 | }, 7 | callback: function(r) { 8 | let current_list = []; 9 | $.each(frm.doc[table] || [], function(i, row) { 10 | current_list.push(row.estimation_document); 11 | }); 12 | $.each(r.message || [], function(i, row) { 13 | if (!current_list.includes(row.document_name)) { 14 | let item = frappe.model.add_child(frm.doc, 'Estimation Detail', table); 15 | frappe.model.set_value(item.doctype, item.name, 'estimation_document', row.document_name); 16 | frappe.model.set_value(item.doctype, item.name, 'estimation_process', row.process_name); 17 | frappe.model.set_value(item.doctype, item.name, 'configuration_efforts', row.configuration_effort); 18 | frappe.model.set_value(item.doctype, item.name, 'other_efforts', row.other_effort); 19 | } 20 | }); 21 | frm.refresh_field(table); 22 | } 23 | }); 24 | } 25 | 26 | frappe.ui.form.on('ERPNext Price Estimation', { 27 | accounts: function(frm) { 28 | if (frm.doc.accounts) { 29 | add_efforts(frm, 'accounts_details', 'Accounts'); 30 | } else { 31 | frm.clear_table("accounts_details"); 32 | frm.refresh_field("accounts_details"); 33 | frm.events.calculate_totals(frm); 34 | } 35 | }, 36 | buying: function(frm) { 37 | if (frm.doc.buying) { 38 | add_efforts(frm, 'buying_details', 'Buying'); 39 | } else { 40 | frm.clear_table("buying_details"); 41 | frm.refresh_field("buying_details"); 42 | frm.events.calculate_totals(frm); 43 | } 44 | }, 45 | stock: function(frm) { 46 | if (frm.doc.stock) { 47 | add_efforts(frm, 'stock_details', 'Stock'); 48 | } else { 49 | frm.clear_table("stock_details"); 50 | frm.refresh_field("stock_details"); 51 | frm.events.calculate_totals(frm); 52 | } 53 | }, 54 | crm: function(frm) { 55 | if (frm.doc.crm) { 56 | add_efforts(frm, 'crm_details', 'CRM'); 57 | } else { 58 | frm.clear_table("crm_details"); 59 | frm.refresh_field("crm_details"); 60 | frm.events.calculate_totals(frm); 61 | } 62 | }, 63 | payroll: function(frm) { 64 | if (frm.doc.payroll) { 65 | add_efforts(frm, 'payroll_details', 'Payroll'); 66 | } else { 67 | frm.clear_table("payroll_details"); 68 | frm.refresh_field("payroll_details"); 69 | frm.events.calculate_totals(frm); 70 | } 71 | }, 72 | selling: function(frm) { 73 | if (frm.doc.selling) { 74 | add_efforts(frm, 'selling_details', 'Selling'); 75 | } else { 76 | frm.clear_table("selling_details"); 77 | frm.refresh_field("selling_details"); 78 | frm.events.calculate_totals(frm); 79 | } 80 | }, 81 | hrms: function(frm) { 82 | if (frm.doc.hrms) { 83 | add_efforts(frm, 'hrms_details', 'HR'); 84 | } else { 85 | frm.clear_table("hrms_details"); 86 | frm.refresh_field("hrms_details"); 87 | frm.events.calculate_totals(frm); 88 | } 89 | }, 90 | projects: function(frm) { 91 | if (frm.doc.projects) { 92 | add_efforts(frm, 'projects_details', 'Projects'); 93 | } else { 94 | frm.clear_table("projects_details"); 95 | frm.refresh_field("projects_details"); 96 | frm.events.calculate_totals(frm); 97 | } 98 | }, 99 | manufacturing: function(frm) { 100 | if (frm.doc.manufacturing) { 101 | add_efforts(frm, 'manufacturing_details', 'Manufacturing'); 102 | } else { 103 | frm.clear_table("manufacturing_details"); 104 | frm.refresh_field("manufacturing_details"); 105 | frm.events.calculate_totals(frm); 106 | } 107 | }, 108 | setup: function(frm) { 109 | if (frm.doc.setup) { 110 | add_efforts(frm, 'setup_details', 'Setup'); 111 | } else { 112 | frm.clear_table("setup_details"); 113 | frm.refresh_field("setup_details"); 114 | frm.events.calculate_totals(frm); 115 | } 116 | }, 117 | healthcare: function(frm) { 118 | if (frm.doc.healthcare) { 119 | add_efforts(frm, 'healthcare_details', 'Healthcare'); 120 | } else { 121 | frm.clear_table("healthcare_details"); 122 | frm.refresh_field("healthcare_details"); 123 | frm.events.calculate_totals(frm); 124 | } 125 | }, 126 | education: function(frm) { 127 | if (frm.doc.education) { 128 | add_efforts(frm, 'education_details', 'Education'); 129 | } else { 130 | frm.clear_table("education_details"); 131 | frm.refresh_field("education_details"); 132 | frm.events.calculate_totals(frm); 133 | } 134 | }, 135 | customization: function(frm) { 136 | if (frm.doc.customization) { 137 | add_efforts(frm, 'customizations_details', 'Customization'); 138 | } else { 139 | frm.clear_table("customizations_details"); 140 | frm.refresh_field("customizations_details"); 141 | frm.events.calculate_totals(frm); 142 | } 143 | }, 144 | validate: function(frm) { 145 | frm.events.calculate_totals(frm); 146 | }, 147 | calculate_totals: function(frm) { 148 | frm.doc.total_config_effort = 0; 149 | frm.doc.total_other_effort = 0; 150 | frm.doc.total_efforts = 0; 151 | frm.doc.total_customization_effort = 0; 152 | 153 | let module_tables = [ 154 | "accounts_details", "buying_details", "stock_details", "crm_details", "payroll_details", "selling_details", "hrms_details", "projects_details", "manufacturing_details", "setup_details", "customization_details", "healthcare_details", "education_details", 155 | ]; 156 | 157 | $.each(frm.doc.customization_estimations || [], function(i, d) { 158 | frm.doc.total_customization_effort += flt(d.estimated_time); 159 | }); 160 | 161 | $.each(module_tables || [], function(i, module) { 162 | $.each(frm.doc[module] || [], function(i, row) { 163 | frm.doc.total_config_effort += flt(row.configuration_efforts); 164 | frm.doc.total_other_effort += flt(row.other_efforts); 165 | }); 166 | }); 167 | 168 | frm.set_query("opportunity_from", function () { 169 | return { 170 | filters: { 171 | name: ["in", ["Customer", "Lead", "Prospect"]], 172 | }, 173 | }; 174 | }); 175 | 176 | frm.doc.total_efforts = frm.doc.total_config_effort + frm.doc.total_other_effort + frm.doc.total_customization_effort; 177 | frm.refresh_field('total_config_effort'); 178 | frm.refresh_field('total_other_effort'); 179 | frm.refresh_field('total_efforts'); 180 | frm.refresh_field('total_customization_effort'); 181 | } 182 | }); 183 | 184 | estimation_details_object = { 185 | configuration_efforts: function(frm) { 186 | frm.events.calculate_totals(frm); 187 | }, 188 | other_efforts: function(frm) { 189 | frm.events.calculate_totals(frm); 190 | } 191 | } 192 | 193 | const modules = ["accounts_details", "buying_details", "stock_details", "crm_details", "payroll_details", "selling_details", "hrms_details", "projects_details", "manufacturing_details", "setup_details", "healthcare_details", "education_details"]; 194 | 195 | modules.forEach((module) => { 196 | estimation_details_object[module + "_remove"] = function(frm, cdt, cdn) { 197 | frm.events.calculate_totals(frm); 198 | } 199 | }); 200 | 201 | frappe.ui.form.on('Estimation Detail', estimation_details_object); 202 | 203 | frappe.ui.form.on('ERPNext Price Estimation', { 204 | total_hourly_rate: function(frm) { 205 | update_total_amount(frm); 206 | }, 207 | total_efforts: function(frm) { 208 | update_total_amount(frm); 209 | } 210 | }); 211 | 212 | function update_total_amount(frm) { 213 | let total = frm.doc.total_hourly_rate * frm.doc.total_efforts; 214 | frm.set_value('total_amount', total); 215 | frm.refresh_field('total_amount'); 216 | } 217 | 218 | frappe.ui.form.on('ERPNext Price Estimation', { 219 | validity: function(frm) { 220 | update_amount(frm); 221 | }, 222 | rate: function(frm) { 223 | update_amount(frm); 224 | } 225 | }); 226 | 227 | function update_amount(frm) { 228 | let total = frm.doc.validity * frm.doc.rate; 229 | frm.set_value('amount', total); 230 | frm.refresh_field('amount'); 231 | } 232 | 233 | frappe.ui.form.on('ERPNext Price Estimation', { 234 | amc_validity: function(frm) { 235 | update_amc_amount(frm); 236 | }, 237 | amc_rate: function(frm) { 238 | update_amc_amount(frm); 239 | } 240 | }); 241 | 242 | function update_amc_amount(frm) { 243 | let total = frm.doc.amc_validity * frm.doc.amc_rate; 244 | frm.set_value('amc_amount', total); 245 | frm.refresh_field('amc_amount'); 246 | } 247 | -------------------------------------------------------------------------------- /erpnext_price_estimation/erpnext_price_estimation/doctype/erpnext_price_estimation/erpnext_price_estimation.json: -------------------------------------------------------------------------------- 1 | { 2 | "actions": [], 3 | "autoname": "PRM-EST-.#####", 4 | "creation": "2024-05-14 12:48:08.989509", 5 | "doctype": "DocType", 6 | "editable_grid": 1, 7 | "engine": "InnoDB", 8 | "field_order": [ 9 | "posting_date", 10 | "customer", 11 | "customer_name", 12 | "opportunity_from", 13 | "column_break_28_column", 14 | "company", 15 | "domain", 16 | "status", 17 | "party", 18 | "introduction_section_section", 19 | "introduction", 20 | "customer_details", 21 | "project_and_account_brief", 22 | "qualification_details_section", 23 | "current_state", 24 | "pain_point", 25 | "column_break_qual", 26 | "impact", 27 | "discovery_details_section", 28 | "discovery_call_notes", 29 | "pick_modules_section", 30 | "accounts", 31 | "payroll", 32 | "manufacturing", 33 | "education", 34 | "column_break_8", 35 | "buying", 36 | "selling", 37 | "setup", 38 | "column_break_10", 39 | "stock", 40 | "hrms", 41 | "customization", 42 | "column_break_12", 43 | "crm", 44 | "projects", 45 | "healthcare", 46 | "accounts_module_section", 47 | "accounts_details", 48 | "buying_section", 49 | "buying_details", 50 | "stock_section", 51 | "stock_details", 52 | "crm_section", 53 | "crm_details", 54 | "payroll_section", 55 | "payroll_details", 56 | "selling_section", 57 | "selling_details", 58 | "hrms_section", 59 | "hrms_details", 60 | "projects_section", 61 | "projects_details", 62 | "manufacturing_section_section", 63 | "manufacturing_details", 64 | "setup_section_section", 65 | "setup_details", 66 | "customizations_section", 67 | "customization_details", 68 | "healthcare_section", 69 | "healthcare_details", 70 | "education_section", 71 | "education_details", 72 | "total_hours_section", 73 | "currency", 74 | "total_config_effort", 75 | "total_hourly_rate", 76 | "column_break_25", 77 | "total_other_effort", 78 | "total_efforts", 79 | "total_amount", 80 | "frappe_cloud_details", 81 | "frappe_cloud_plan", 82 | "column_break_26", 83 | "validity", 84 | "rate", 85 | "column_break_27", 86 | "uom", 87 | "amount", 88 | "amc_details", 89 | "amc", 90 | "column_break_28", 91 | "amc_validity", 92 | "amc_rate", 93 | "column_break_29", 94 | "amc_uom", 95 | "amc_amount", 96 | "thanks_section_section", 97 | "thanks" 98 | ], 99 | "fields": [ 100 | { 101 | "fieldname": "column_break_28_column", 102 | "fieldtype": "Column Break" 103 | }, 104 | { 105 | "fieldname": "domain", 106 | "fieldtype": "Select", 107 | "in_list_view": 1, 108 | "in_standard_filter": 1, 109 | "label": "Domain", 110 | "options": "Manufacturing\nServices\nDistribution\nHealthcare\nEducation\nRetail" 111 | }, 112 | { 113 | "default": "Open", 114 | "fieldname": "status", 115 | "fieldtype": "Select", 116 | "in_list_view": 1, 117 | "in_standard_filter": 1, 118 | "label": "Status", 119 | "options": "Open\nEstimated\nConverted\nHanded Over\nLost\nCancelled", 120 | "reqd": 1 121 | }, 122 | { 123 | "fieldname": "customer_details", 124 | "fieldtype": "Section Break", 125 | "label": "Company Details" 126 | }, 127 | { 128 | "fieldname": "project_and_account_brief", 129 | "fieldtype": "Text Editor", 130 | "label": "Project and Account Brief" 131 | }, 132 | { 133 | "depends_on": "eval:doc.lead_qualification", 134 | "fieldname": "qualification_details_section", 135 | "fieldtype": "Section Break", 136 | "label": "Qualification Details" 137 | }, 138 | { 139 | "fetch_from": "lead_qualification.current_state", 140 | "fieldname": "current_state", 141 | "fieldtype": "Text", 142 | "label": "Current State", 143 | "read_only": 1 144 | }, 145 | { 146 | "fetch_from": "lead_qualification.pain_point", 147 | "fieldname": "pain_point", 148 | "fieldtype": "Text", 149 | "label": "Pain Point", 150 | "read_only": 1 151 | }, 152 | { 153 | "fieldname": "column_break_qual", 154 | "fieldtype": "Column Break" 155 | }, 156 | { 157 | "fetch_from": "lead_qualification.impact", 158 | "fetch_if_empty": 1, 159 | "fieldname": "impact", 160 | "fieldtype": "Text", 161 | "label": "Impact", 162 | "read_only": 1 163 | }, 164 | { 165 | "depends_on": "eval:doc.lead_qualification", 166 | "fieldname": "discovery_details_section", 167 | "fieldtype": "Section Break", 168 | "label": "Discovery Details" 169 | }, 170 | { 171 | "fetch_from": "lead_qualification.discovery_call_notes", 172 | "fieldname": "discovery_call_notes", 173 | "fieldtype": "Text Editor", 174 | "label": "Discovery Call Notes", 175 | "read_only": 1 176 | }, 177 | { 178 | "fieldname": "pick_modules_section", 179 | "fieldtype": "Section Break", 180 | "label": "Pick Modules" 181 | }, 182 | { 183 | "default": "0", 184 | "fieldname": "accounts", 185 | "fieldtype": "Check", 186 | "label": "Accounts" 187 | }, 188 | { 189 | "default": "0", 190 | "fieldname": "payroll", 191 | "fieldtype": "Check", 192 | "label": "Payroll" 193 | }, 194 | { 195 | "default": "0", 196 | "fieldname": "manufacturing", 197 | "fieldtype": "Check", 198 | "label": "Manufacturing" 199 | }, 200 | { 201 | "fieldname": "column_break_8", 202 | "fieldtype": "Column Break" 203 | }, 204 | { 205 | "default": "0", 206 | "fieldname": "buying", 207 | "fieldtype": "Check", 208 | "label": "Buying" 209 | }, 210 | { 211 | "default": "0", 212 | "fieldname": "selling", 213 | "fieldtype": "Check", 214 | "label": "Selling" 215 | }, 216 | { 217 | "default": "0", 218 | "fieldname": "setup", 219 | "fieldtype": "Check", 220 | "label": "Setup" 221 | }, 222 | { 223 | "fieldname": "column_break_10", 224 | "fieldtype": "Column Break" 225 | }, 226 | { 227 | "default": "0", 228 | "fieldname": "stock", 229 | "fieldtype": "Check", 230 | "label": "Stock" 231 | }, 232 | { 233 | "default": "0", 234 | "fieldname": "hrms", 235 | "fieldtype": "Check", 236 | "label": "HRMS" 237 | }, 238 | { 239 | "default": "0", 240 | "fieldname": "customization", 241 | "fieldtype": "Check", 242 | "label": "Customization" 243 | }, 244 | { 245 | "fieldname": "column_break_12", 246 | "fieldtype": "Column Break", 247 | "hide_border": 1 248 | }, 249 | { 250 | "default": "0", 251 | "fieldname": "crm", 252 | "fieldtype": "Check", 253 | "label": "CRM" 254 | }, 255 | { 256 | "default": "0", 257 | "fieldname": "projects", 258 | "fieldtype": "Check", 259 | "label": "Projects" 260 | }, 261 | { 262 | "depends_on": "eval:doc.accounts", 263 | "fieldname": "accounts_module_section", 264 | "fieldtype": "Section Break", 265 | "label": "Accounts" 266 | }, 267 | { 268 | "depends_on": "eval:doc.buying", 269 | "fieldname": "buying_section", 270 | "fieldtype": "Section Break", 271 | "label": "Buying" 272 | }, 273 | { 274 | "depends_on": "eval:doc.stock", 275 | "fieldname": "stock_section", 276 | "fieldtype": "Section Break", 277 | "label": "Stock" 278 | }, 279 | { 280 | "depends_on": "eval:doc.crm", 281 | "fieldname": "crm_section", 282 | "fieldtype": "Section Break", 283 | "label": "CRM" 284 | }, 285 | { 286 | "depends_on": "eval:doc.payroll", 287 | "fieldname": "payroll_section", 288 | "fieldtype": "Section Break", 289 | "label": "Payroll" 290 | }, 291 | { 292 | "depends_on": "eval:doc.selling", 293 | "fieldname": "selling_section", 294 | "fieldtype": "Section Break", 295 | "label": "Selling" 296 | }, 297 | { 298 | "depends_on": "eval:doc.hrms", 299 | "fieldname": "hrms_section", 300 | "fieldtype": "Section Break", 301 | "label": "HRMS" 302 | }, 303 | { 304 | "depends_on": "eval:doc.projects", 305 | "fieldname": "projects_section", 306 | "fieldtype": "Section Break", 307 | "label": "Projects" 308 | }, 309 | { 310 | "depends_on": "eval:doc.manufacturing", 311 | "fieldname": "manufacturing_section_section", 312 | "fieldtype": "Section Break", 313 | "label": "Manufacturing Section" 314 | }, 315 | { 316 | "depends_on": "eval:doc.setup", 317 | "fieldname": "setup_section_section", 318 | "fieldtype": "Section Break", 319 | "label": "Setup Section" 320 | }, 321 | { 322 | "depends_on": "eval:doc.customization", 323 | "fieldname": "customizations_section", 324 | "fieldtype": "Section Break", 325 | "label": "Customizations" 326 | }, 327 | { 328 | "fieldname": "total_hours_section", 329 | "fieldtype": "Section Break", 330 | "label": "Total Implementation Hours" 331 | }, 332 | { 333 | "fieldname": "total_config_effort", 334 | "fieldtype": "Float", 335 | "label": "Total Configuration Efforts" 336 | }, 337 | { 338 | "fieldname": "column_break_25", 339 | "fieldtype": "Column Break" 340 | }, 341 | { 342 | "fieldname": "total_other_effort", 343 | "fieldtype": "Float", 344 | "label": "Total Other Efforts" 345 | }, 346 | { 347 | "fieldname": "total_efforts", 348 | "fieldtype": "Float", 349 | "label": "Total Efforts" 350 | }, 351 | { 352 | "fetch_from": "partner_lead.lead_name", 353 | "fieldname": "customer", 354 | "fieldtype": "Link", 355 | "label": "Customer", 356 | "options": "Customer" 357 | }, 358 | { 359 | "fetch_from": "customer.customer_name", 360 | "fieldname": "customer_name", 361 | "fieldtype": "Data", 362 | "label": "Customer Name" 363 | }, 364 | { 365 | "default": "0", 366 | "fieldname": "healthcare", 367 | "fieldtype": "Check", 368 | "label": "Healthcare" 369 | }, 370 | { 371 | "default": "0", 372 | "fieldname": "education", 373 | "fieldtype": "Check", 374 | "label": "Education" 375 | }, 376 | { 377 | "depends_on": "eval:doc.healthcare", 378 | "fieldname": "healthcare_section", 379 | "fieldtype": "Section Break", 380 | "label": "Healthcare" 381 | }, 382 | { 383 | "depends_on": "eval:doc.education", 384 | "fieldname": "education_section", 385 | "fieldtype": "Section Break", 386 | "label": "Education" 387 | }, 388 | { 389 | "fieldname": "total_hourly_rate", 390 | "fieldtype": "Float", 391 | "label": "Total Hourly Rate" 392 | }, 393 | { 394 | "fieldname": "total_amount", 395 | "fieldtype": "Currency", 396 | "label": "Total Amount", 397 | "options": "currency" 398 | }, 399 | { 400 | "default": "Today", 401 | "fieldname": "posting_date", 402 | "fieldtype": "Date", 403 | "label": "Posting Date" 404 | }, 405 | { 406 | "fieldname": "frappe_cloud_details", 407 | "fieldtype": "Section Break", 408 | "label": "Frappe Cloud Details" 409 | }, 410 | { 411 | "fieldname": "amc_details", 412 | "fieldtype": "Section Break", 413 | "label": "AMC Details" 414 | }, 415 | { 416 | "fieldname": "frappe_cloud_plan", 417 | "fieldtype": "Small Text", 418 | "label": "Frappe Cloud Plan" 419 | }, 420 | { 421 | "fieldname": "rate", 422 | "fieldtype": "Currency", 423 | "label": "Rate" 424 | }, 425 | { 426 | "fieldname": "validity", 427 | "fieldtype": "Float", 428 | "label": "Validity" 429 | }, 430 | { 431 | "fieldname": "uom", 432 | "fieldtype": "Select", 433 | "label": "UOM", 434 | "options": "Month\nYear" 435 | }, 436 | { 437 | "fieldname": "amount", 438 | "fieldtype": "Currency", 439 | "label": "Amount", 440 | "options": "currency" 441 | }, 442 | { 443 | "fieldname": "column_break_26", 444 | "fieldtype": "Column Break" 445 | }, 446 | { 447 | "fieldname": "column_break_27", 448 | "fieldtype": "Column Break" 449 | }, 450 | { 451 | "default": "AMC", 452 | "fieldname": "amc", 453 | "fieldtype": "Small Text", 454 | "label": "AMC" 455 | }, 456 | { 457 | "fieldname": "amc_validity", 458 | "fieldtype": "Float", 459 | "label": "Validity" 460 | }, 461 | { 462 | "fieldname": "amc_rate", 463 | "fieldtype": "Currency", 464 | "label": "Rate", 465 | "options": "currency" 466 | }, 467 | { 468 | "fieldname": "amc_uom", 469 | "fieldtype": "Select", 470 | "label": "UOM", 471 | "options": "Month\nYear" 472 | }, 473 | { 474 | "fieldname": "amc_amount", 475 | "fieldtype": "Currency", 476 | "label": "Amount", 477 | "options": "currency" 478 | }, 479 | { 480 | "fieldname": "column_break_28", 481 | "fieldtype": "Column Break" 482 | }, 483 | { 484 | "fieldname": "column_break_29", 485 | "fieldtype": "Column Break" 486 | }, 487 | { 488 | "fieldname": "currency", 489 | "fieldtype": "Link", 490 | "label": "Currency", 491 | "options": "Currency" 492 | }, 493 | { 494 | "fieldname": "introduction", 495 | "fieldtype": "Text Editor", 496 | "label": "Introduction Section" 497 | }, 498 | { 499 | "fieldname": "introduction_section_section", 500 | "fieldtype": "Section Break" 501 | }, 502 | { 503 | "fieldname": "thanks_section_section", 504 | "fieldtype": "Section Break" 505 | }, 506 | { 507 | "fieldname": "thanks", 508 | "fieldtype": "Text Editor", 509 | "label": "End Section" 510 | }, 511 | { 512 | "fieldname": "accounts_details", 513 | "fieldtype": "Table", 514 | "label": "Estimation Details", 515 | "options": "Estimation Detail" 516 | }, 517 | { 518 | "fieldname": "buying_details", 519 | "fieldtype": "Table", 520 | "label": "Estimation Details", 521 | "options": "Estimation Detail" 522 | }, 523 | { 524 | "fieldname": "stock_details", 525 | "fieldtype": "Table", 526 | "label": "Estimation Details", 527 | "options": "Estimation Detail" 528 | }, 529 | { 530 | "fieldname": "crm_details", 531 | "fieldtype": "Table", 532 | "label": "Estimation Details", 533 | "options": "Estimation Detail" 534 | }, 535 | { 536 | "fieldname": "payroll_details", 537 | "fieldtype": "Table", 538 | "label": "Estimation Details", 539 | "options": "Estimation Detail" 540 | }, 541 | { 542 | "fieldname": "selling_details", 543 | "fieldtype": "Table", 544 | "label": "Estimation Details", 545 | "options": "Estimation Detail" 546 | }, 547 | { 548 | "fieldname": "hrms_details", 549 | "fieldtype": "Table", 550 | "label": "Estimation Details", 551 | "options": "Estimation Detail" 552 | }, 553 | { 554 | "fieldname": "projects_details", 555 | "fieldtype": "Table", 556 | "label": "Estimation Details", 557 | "options": "Estimation Detail" 558 | }, 559 | { 560 | "fieldname": "manufacturing_details", 561 | "fieldtype": "Table", 562 | "label": "Estimation Details", 563 | "options": "Estimation Detail" 564 | }, 565 | { 566 | "fieldname": "setup_details", 567 | "fieldtype": "Table", 568 | "label": "Estimation Details", 569 | "options": "Estimation Detail" 570 | }, 571 | { 572 | "fieldname": "healthcare_details", 573 | "fieldtype": "Table", 574 | "label": "Estimation Details", 575 | "options": "Estimation Detail" 576 | }, 577 | { 578 | "fieldname": "education_details", 579 | "fieldtype": "Table", 580 | "label": "Estimation Details", 581 | "options": "Estimation Detail" 582 | }, 583 | { 584 | "fieldname": "customization_details", 585 | "fieldtype": "Table", 586 | "label": "Estimation Details", 587 | "options": "Estimation Detail" 588 | }, 589 | { 590 | "fieldname": "company", 591 | "fieldtype": "Link", 592 | "label": "Company", 593 | "options": "Company" 594 | }, 595 | { 596 | "fieldname": "opportunity_from", 597 | "fieldtype": "Link", 598 | "label": "Opportunity From", 599 | "options": "DocType" 600 | }, 601 | { 602 | "fieldname": "party", 603 | "fieldtype": "Dynamic Link", 604 | "label": "Party", 605 | "options": "opportunity_from" 606 | } 607 | ], 608 | "links": [], 609 | "modified": "2024-07-20 13:44:05.260736", 610 | "modified_by": "Administrator", 611 | "module": "ERPNext Price Estimation", 612 | "name": "ERPNext Price Estimation", 613 | "naming_rule": "Expression (old style)", 614 | "owner": "Administrator", 615 | "permissions": [ 616 | { 617 | "create": 1, 618 | "delete": 1, 619 | "email": 1, 620 | "export": 1, 621 | "print": 1, 622 | "read": 1, 623 | "report": 1, 624 | "role": "System Manager", 625 | "share": 1, 626 | "write": 1 627 | } 628 | ], 629 | "sort_field": "modified", 630 | "sort_order": "DESC", 631 | "states": [ 632 | { 633 | "color": "Orange", 634 | "title": "Open" 635 | }, 636 | { 637 | "color": "Cyan", 638 | "title": "Estimated" 639 | }, 640 | { 641 | "color": "Green", 642 | "title": "Converted" 643 | }, 644 | { 645 | "color": "Blue", 646 | "title": "Handed Over" 647 | }, 648 | { 649 | "color": "Gray", 650 | "title": "Lost" 651 | }, 652 | { 653 | "color": "Gray", 654 | "title": "Cancelled" 655 | } 656 | ], 657 | "track_changes": 1 658 | } -------------------------------------------------------------------------------- /erpnext_price_estimation/erpnext_price_estimation/doctype/erpnext_price_estimation/erpnext_price_estimation.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2024, frappe solutions and contributors 2 | # For license information, please see license.txt 3 | 4 | import frappe 5 | from frappe.model.document import Document 6 | 7 | class ERPNextPriceEstimation(Document): 8 | pass 9 | 10 | @frappe.whitelist() 11 | def get_process_documents(process=None, module=None): 12 | filters = {} 13 | if process: 14 | filters['process'] = process 15 | if module: 16 | filters['module'] = module 17 | 18 | process_details = frappe.get_all( 19 | 'Estimation Document', 20 | fields=['document_name', 'process_name', 'configuration_effort', 'other_effort'], 21 | filters=filters 22 | ) 23 | 24 | return process_details 25 | 26 | -------------------------------------------------------------------------------- /erpnext_price_estimation/erpnext_price_estimation/doctype/erpnext_price_estimation/test_erpnext_price_estimation.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2024, frappe solutions and Contributors 2 | # See license.txt 3 | 4 | # import frappe 5 | from frappe.tests.utils import FrappeTestCase 6 | 7 | 8 | class TestERPNextPriceEstimation(FrappeTestCase): 9 | pass 10 | -------------------------------------------------------------------------------- /erpnext_price_estimation/erpnext_price_estimation/doctype/estimation_detail/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/erpnext_price_estimation/09f039fd7c76fc7f5e4bc18b843272ceac75ce8c/erpnext_price_estimation/erpnext_price_estimation/doctype/estimation_detail/__init__.py -------------------------------------------------------------------------------- /erpnext_price_estimation/erpnext_price_estimation/doctype/estimation_detail/estimation_detail.json: -------------------------------------------------------------------------------- 1 | { 2 | "actions": [], 3 | "creation": "2024-05-13 16:53:52.178639", 4 | "doctype": "DocType", 5 | "editable_grid": 1, 6 | "engine": "InnoDB", 7 | "field_order": [ 8 | "estimation_process", 9 | "estimation_document", 10 | "configuration_efforts", 11 | "other_efforts" 12 | ], 13 | "fields": [ 14 | { 15 | "fieldname": "estimation_process", 16 | "fieldtype": "Link", 17 | "in_list_view": 1, 18 | "label": "Estimation Process", 19 | "options": "Estimation Process" 20 | }, 21 | { 22 | "fieldname": "estimation_document", 23 | "fieldtype": "Link", 24 | "in_list_view": 1, 25 | "label": "Estimation Document", 26 | "options": "Estimation Document" 27 | }, 28 | { 29 | "fieldname": "configuration_efforts", 30 | "fieldtype": "Float", 31 | "in_list_view": 1, 32 | "label": "Configuration Efforts (Hours)" 33 | }, 34 | { 35 | "fieldname": "other_efforts", 36 | "fieldtype": "Float", 37 | "in_list_view": 1, 38 | "label": "Other Efforts (Hours)" 39 | } 40 | ], 41 | "index_web_pages_for_search": 1, 42 | "istable": 1, 43 | "links": [], 44 | "modified": "2024-05-13 17:03:41.125205", 45 | "modified_by": "Administrator", 46 | "module": "ERPNext Price Estimation", 47 | "name": "Estimation Detail", 48 | "owner": "Administrator", 49 | "permissions": [], 50 | "sort_field": "modified", 51 | "sort_order": "DESC", 52 | "states": [], 53 | "track_changes": 1 54 | } -------------------------------------------------------------------------------- /erpnext_price_estimation/erpnext_price_estimation/doctype/estimation_detail/estimation_detail.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2024, frappe solutions and contributors 2 | # For license information, please see license.txt 3 | 4 | # import frappe 5 | from frappe.model.document import Document 6 | 7 | 8 | class EstimationDetail(Document): 9 | pass 10 | -------------------------------------------------------------------------------- /erpnext_price_estimation/erpnext_price_estimation/doctype/estimation_document/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/erpnext_price_estimation/09f039fd7c76fc7f5e4bc18b843272ceac75ce8c/erpnext_price_estimation/erpnext_price_estimation/doctype/estimation_document/__init__.py -------------------------------------------------------------------------------- /erpnext_price_estimation/erpnext_price_estimation/doctype/estimation_document/estimation_document.js: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2024, frappe solutions and contributors 2 | // For license information, please see license.txt 3 | 4 | // frappe.ui.form.on("Estimation Document", { 5 | // refresh(frm) { 6 | 7 | // }, 8 | // }); 9 | -------------------------------------------------------------------------------- /erpnext_price_estimation/erpnext_price_estimation/doctype/estimation_document/estimation_document.json: -------------------------------------------------------------------------------- 1 | { 2 | "actions": [], 3 | "allow_import": 1, 4 | "autoname": "field:document_name", 5 | "creation": "2024-05-13 16:49:36.452740", 6 | "doctype": "DocType", 7 | "editable_grid": 1, 8 | "engine": "InnoDB", 9 | "field_order": [ 10 | "document_name", 11 | "process_name", 12 | "configuration_effort", 13 | "column_break_4", 14 | "module", 15 | "other_effort" 16 | ], 17 | "fields": [ 18 | { 19 | "fieldname": "document_name", 20 | "fieldtype": "Data", 21 | "label": "Document", 22 | "unique": 1 23 | }, 24 | { 25 | "fieldname": "process_name", 26 | "fieldtype": "Link", 27 | "in_list_view": 1, 28 | "in_standard_filter": 1, 29 | "label": "Process", 30 | "options": "Estimation Process", 31 | "reqd": 1 32 | }, 33 | { 34 | "fieldname": "configuration_effort", 35 | "fieldtype": "Float", 36 | "label": "Configuration Effort" 37 | }, 38 | { 39 | "fieldname": "column_break_4", 40 | "fieldtype": "Column Break" 41 | }, 42 | { 43 | "fetch_from": "process_name.module", 44 | "fieldname": "module", 45 | "fieldtype": "Link", 46 | "in_list_view": 1, 47 | "in_standard_filter": 1, 48 | "label": "Module", 49 | "options": "Module" 50 | }, 51 | { 52 | "fieldname": "other_effort", 53 | "fieldtype": "Float", 54 | "label": "Other Effort" 55 | } 56 | ], 57 | "index_web_pages_for_search": 1, 58 | "links": [], 59 | "modified": "2024-06-07 18:10:18.985003", 60 | "modified_by": "Administrator", 61 | "module": "ERPNext Price Estimation", 62 | "name": "Estimation Document", 63 | "owner": "Administrator", 64 | "permissions": [ 65 | { 66 | "create": 1, 67 | "delete": 1, 68 | "email": 1, 69 | "export": 1, 70 | "import": 1, 71 | "print": 1, 72 | "read": 1, 73 | "report": 1, 74 | "role": "System Manager", 75 | "share": 1, 76 | "write": 1 77 | } 78 | ], 79 | "quick_entry": 1, 80 | "sort_field": "modified", 81 | "sort_order": "DESC", 82 | "states": [], 83 | "track_changes": 1 84 | } -------------------------------------------------------------------------------- /erpnext_price_estimation/erpnext_price_estimation/doctype/estimation_document/estimation_document.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2024, frappe solutions and contributors 2 | # For license information, please see license.txt 3 | 4 | # import frappe 5 | from frappe.model.document import Document 6 | 7 | 8 | class EstimationDocument(Document): 9 | pass 10 | -------------------------------------------------------------------------------- /erpnext_price_estimation/erpnext_price_estimation/doctype/estimation_document/test_estimation_document.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2024, frappe solutions and Contributors 2 | # See license.txt 3 | 4 | # import frappe 5 | from frappe.tests.utils import FrappeTestCase 6 | 7 | 8 | class TestEstimationDocument(FrappeTestCase): 9 | pass 10 | -------------------------------------------------------------------------------- /erpnext_price_estimation/erpnext_price_estimation/doctype/estimation_process/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/erpnext_price_estimation/09f039fd7c76fc7f5e4bc18b843272ceac75ce8c/erpnext_price_estimation/erpnext_price_estimation/doctype/estimation_process/__init__.py -------------------------------------------------------------------------------- /erpnext_price_estimation/erpnext_price_estimation/doctype/estimation_process/estimation_process.js: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2024, frappe solutions and contributors 2 | // For license information, please see license.txt 3 | 4 | // frappe.ui.form.on("Estimation Process", { 5 | // refresh(frm) { 6 | 7 | // }, 8 | // }); 9 | -------------------------------------------------------------------------------- /erpnext_price_estimation/erpnext_price_estimation/doctype/estimation_process/estimation_process.json: -------------------------------------------------------------------------------- 1 | { 2 | "actions": [], 3 | "allow_import": 1, 4 | "allow_rename": 1, 5 | "autoname": "field:process_name", 6 | "creation": "2024-05-13 16:42:54.749102", 7 | "doctype": "DocType", 8 | "editable_grid": 1, 9 | "engine": "InnoDB", 10 | "field_order": [ 11 | "process_name", 12 | "module", 13 | "table_fssue" 14 | ], 15 | "fields": [ 16 | { 17 | "fieldname": "process_name", 18 | "fieldtype": "Data", 19 | "label": "Process", 20 | "unique": 1 21 | }, 22 | { 23 | "fieldname": "module", 24 | "fieldtype": "Link", 25 | "in_list_view": 1, 26 | "in_standard_filter": 1, 27 | "label": "Module", 28 | "options": "Module" 29 | }, 30 | { 31 | "fieldname": "table_fssue", 32 | "fieldtype": "Table", 33 | "options": "Estimation Detail" 34 | } 35 | ], 36 | "index_web_pages_for_search": 1, 37 | "links": [], 38 | "modified": "2024-06-07 18:12:32.206306", 39 | "modified_by": "Administrator", 40 | "module": "ERPNext Price Estimation", 41 | "name": "Estimation Process", 42 | "naming_rule": "By fieldname", 43 | "owner": "Administrator", 44 | "permissions": [ 45 | { 46 | "create": 1, 47 | "delete": 1, 48 | "email": 1, 49 | "export": 1, 50 | "print": 1, 51 | "read": 1, 52 | "report": 1, 53 | "role": "System Manager", 54 | "share": 1, 55 | "write": 1 56 | } 57 | ], 58 | "quick_entry": 1, 59 | "sort_field": "modified", 60 | "sort_order": "DESC", 61 | "states": [], 62 | "track_changes": 1 63 | } -------------------------------------------------------------------------------- /erpnext_price_estimation/erpnext_price_estimation/doctype/estimation_process/estimation_process.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2024, frappe solutions and contributors 2 | # For license information, please see license.txt 3 | 4 | # import frappe 5 | from frappe.model.document import Document 6 | 7 | 8 | class EstimationProcess(Document): 9 | pass 10 | -------------------------------------------------------------------------------- /erpnext_price_estimation/erpnext_price_estimation/doctype/estimation_process/test_estimation_process.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2024, frappe solutions and Contributors 2 | # See license.txt 3 | 4 | # import frappe 5 | from frappe.tests.utils import FrappeTestCase 6 | 7 | 8 | class TestEstimationProcess(FrappeTestCase): 9 | pass 10 | -------------------------------------------------------------------------------- /erpnext_price_estimation/erpnext_price_estimation/doctype/module/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/erpnext_price_estimation/09f039fd7c76fc7f5e4bc18b843272ceac75ce8c/erpnext_price_estimation/erpnext_price_estimation/doctype/module/__init__.py -------------------------------------------------------------------------------- /erpnext_price_estimation/erpnext_price_estimation/doctype/module/module.js: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2024, frappe solutions and contributors 2 | // For license information, please see license.txt 3 | 4 | // frappe.ui.form.on("Module", { 5 | // refresh(frm) { 6 | 7 | // }, 8 | // }); 9 | -------------------------------------------------------------------------------- /erpnext_price_estimation/erpnext_price_estimation/doctype/module/module.json: -------------------------------------------------------------------------------- 1 | { 2 | "actions": [], 3 | "allow_import": 1, 4 | "allow_rename": 1, 5 | "autoname": "field:module", 6 | "creation": "2024-05-15 14:29:50.246862", 7 | "doctype": "DocType", 8 | "engine": "InnoDB", 9 | "field_order": [ 10 | "module" 11 | ], 12 | "fields": [ 13 | { 14 | "fieldname": "module", 15 | "fieldtype": "Data", 16 | "label": "Module", 17 | "unique": 1 18 | } 19 | ], 20 | "index_web_pages_for_search": 1, 21 | "links": [], 22 | "modified": "2024-05-15 14:40:39.336327", 23 | "modified_by": "Administrator", 24 | "module": "ERPNext Price Estimation", 25 | "name": "Module", 26 | "naming_rule": "By fieldname", 27 | "owner": "Administrator", 28 | "permissions": [ 29 | { 30 | "create": 1, 31 | "delete": 1, 32 | "email": 1, 33 | "export": 1, 34 | "print": 1, 35 | "read": 1, 36 | "report": 1, 37 | "role": "System Manager", 38 | "share": 1, 39 | "write": 1 40 | } 41 | ], 42 | "sort_field": "creation", 43 | "sort_order": "DESC", 44 | "states": [] 45 | } -------------------------------------------------------------------------------- /erpnext_price_estimation/erpnext_price_estimation/doctype/module/module.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2024, frappe solutions and contributors 2 | # For license information, please see license.txt 3 | 4 | # import frappe 5 | from frappe.model.document import Document 6 | 7 | 8 | class Module(Document): 9 | pass 10 | -------------------------------------------------------------------------------- /erpnext_price_estimation/erpnext_price_estimation/doctype/module/test_module.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2024, frappe solutions and Contributors 2 | # See license.txt 3 | 4 | # import frappe 5 | from frappe.tests.utils import FrappeTestCase 6 | 7 | 8 | class TestModule(FrappeTestCase): 9 | pass 10 | -------------------------------------------------------------------------------- /erpnext_price_estimation/erpnext_price_estimation/print_format/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/erpnext_price_estimation/09f039fd7c76fc7f5e4bc18b843272ceac75ce8c/erpnext_price_estimation/erpnext_price_estimation/print_format/__init__.py -------------------------------------------------------------------------------- /erpnext_price_estimation/erpnext_price_estimation/print_format/erpnext_price_estimate/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/erpnext_price_estimation/09f039fd7c76fc7f5e4bc18b843272ceac75ce8c/erpnext_price_estimation/erpnext_price_estimation/print_format/erpnext_price_estimate/__init__.py -------------------------------------------------------------------------------- /erpnext_price_estimation/erpnext_price_estimation/print_format/erpnext_price_estimate/erpnext_price_estimate.css: -------------------------------------------------------------------------------- 1 | body { 2 | font-family: "Inter"; 3 | font-size: 16px; 4 | } 5 | 6 | .print-format { 7 | /* for wkhtmltopdf */ 8 | margin-top: 10px; 9 | margin-bottom: 10px; 10 | margin-left: 10px; 11 | margin-right: 10px; 12 | padding: 20px; 13 | /* for modern browser */ 14 | margin: 0 auto; 15 | } 16 | 17 | /* modern browser print */ 18 | @page { 19 | margin: 10px !important; 20 | } 21 | 22 | .main-heading { 23 | font-family: "Inter"; 24 | font-size: 24px; 25 | font-weight: 700; 26 | padding: 28px 0; 27 | } 28 | .sub-header { 29 | display: flex; 30 | justify-content: space-between; 31 | padding-bottom: 50px; 32 | } 33 | 34 | .sub-header .estimate-details { 35 | text-align: right; 36 | } 37 | 38 | .sub-header p.main { 39 | font-size: 16px; 40 | font-weight: 600; 41 | } 42 | 43 | .user-text { 44 | padding-bottom: 30px; 45 | } 46 | 47 | .main-title { 48 | font-size: 18px; 49 | font-weight: 600; 50 | padding-bottom: 20px; 51 | } 52 | 53 | .module-text { 54 | font-size: 15px; 55 | margin-top: -5px; 56 | padding-bottom: 10px; 57 | } 58 | .title { 59 | font-size: 14px; 60 | font-weight: 400; 61 | color: #3C3C3C; 62 | } 63 | 64 | .value { 65 | font-size: 15px; 66 | font-weight: 500; 67 | padding-top: 3px; 68 | } 69 | 70 | th:first-child, td:first-child { 71 | width: 30%; 72 | } 73 | 74 | .right-align { 75 | text-align: right; 76 | } 77 | 78 | .table-module-title { 79 | font-size: 15px; 80 | font-weight: 500; 81 | padding-bottom: 10px; 82 | } 83 | 84 | h1 { 85 | margin: 0; 86 | font-size: 28px; 87 | color: #333; 88 | text-align: center; 89 | } 90 | 91 | .left-align { 92 | text-align: left; 93 | } 94 | 95 | .right-align { 96 | text-align: right; 97 | } 98 | 99 | .module-wise-estimate-table { 100 | width: 100%; 101 | border: 1px solid #ddd; 102 | border-collapse: collapse; 103 | font-size: 14px; 104 | margin-bottom: 20px; 105 | } 106 | 107 | .module-wise-estimate-table th, 108 | .module-wise-estimate-table td { 109 | border: 1px solid #ddd; 110 | padding: 8px; 111 | text-align: left; 112 | font-size: 14px; 113 | } 114 | 115 | .module-wise-estimate-table th { 116 | background-color: #ffffff; 117 | color: black; 118 | padding: 5px; 119 | } 120 | 121 | .left-align p, 122 | .right-align p, 123 | .center-align p { 124 | margin: 0 0 10px 0; 125 | } 126 | 127 | .left-align p:last-child, 128 | .right-align p:last-child, 129 | .center-align p:last-child { 130 | margin-bottom: 0; 131 | } 132 | 133 | table { 134 | width: 100%; 135 | border-collapse: collapse; 136 | font-size: 14px; 137 | } 138 | th, 139 | td { 140 | padding: 1px; 141 | } 142 | .left { 143 | text-align: left; 144 | } 145 | .right { 146 | text-align: right; 147 | } 148 | 149 | .vertical { 150 | border-left: 1px solid lightgrey; 151 | height: 50px; 152 | } 153 | 154 | .no-break-inside { 155 | page-break-inside: avoid; 156 | break-inside: avoid; 157 | } 158 | 159 | .no-padding { 160 | padding: 0; 161 | margin: 0; 162 | } 163 | -------------------------------------------------------------------------------- /erpnext_price_estimation/erpnext_price_estimation/print_format/erpnext_price_estimate/erpnext_price_estimate.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | {% if letter_head and not no_letterhead %} 5 |
{{ letter_head }}
6 | {% endif %} 7 |

ERPNext Price Estimation

8 |
9 |
10 |

{{ doc.customer_name or '' }}

11 |

{{ doc.domain or '' }}

12 |
13 |
14 |

{{doc.name or '' }}

15 |

{{ frappe.utils.formatdate(doc.posting_date, "dd-MM-yyyy") or '' }}

16 |
17 |
18 |
19 |

{{ doc.introduction or '' }}

20 |
21 |

Project Brief

22 |
{{ doc.project_and_account_brief or '' }}
23 |

Implementation Modules

24 |
{% set modules = [] %} {% if doc.accounts == 1 %} {% set modules = modules + ['Accounts'] %} {% endif %} {% if doc.payroll == 1 %} {% set modules = modules + ['Payroll'] %} {% endif %} {% if doc.manufacturing == 1 %} {% set modules = modules + ['Manufacturing'] %} {% endif %} {% if doc.buying == 1 %} {% set modules = modules + ['Buying'] %} {% endif %} {% if doc.selling == 1 %} {% set modules = modules + ['Selling'] %} {% endif %} {% if doc.setup == 1 %} {% set modules = modules + ['Setup'] %} {% endif %} {% if doc.stock == 1 %} {% set modules = modules + ['Stock'] %} {% endif %} {% if doc.hrms == 1 %} {% set modules = modules + ['HRMS'] %} {% endif %} {% if doc.customization == 1 %} {% set modules = modules + ['Customization'] %} {% endif %} {% if doc.crm == 1 %} {% set modules = modules + ['CRM'] %} {% endif %} {% if doc.projects == 1 %} {% set modules = modules + ['Projects'] %} {% endif %} {% if doc.healthcare == 1 %} {% set modules = modules + ['Healthcare'] %} {% endif %} {% if doc.education == 1 %} {% set modules = modules + ['Education'] %} {% endif %} {{ modules | join(', ') }}
25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 |

Configuration Efforts

Other Efforts

Total Hours

Rate / Hr

Total Cost

{{ frappe.format(doc.total_config_effort or 0.00, {'fieldtype': "Float", 'options': doc}) }}

{{ frappe.format(doc.total_other_effort or 0.00, {'fieldtype': "Float", 'options': doc}) }}

{{ frappe.format(doc.total_efforts or 0.00, {'fieldtype': "Float", 'options': doc}) }}

{{ frappe.format(doc.total_hourly_rate or 0.00, {'fieldtype': "Currency", 'options': doc}) }}

{{ frappe.format(doc.total_amount or 0.00, {'fieldtype': "Currency", 'options': doc}) }}

42 | 43 |

Frappe Cloud

44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 |

Plan

Duration ( {{doc.uom + "s"}} )

Cost

Total Cost

{{doc.frappe_cloud_plan or 'Frappe Cloud Hosting'}}

{{ frappe.format(doc.validity or 0.00, {'fieldtype': "Float", 'options': doc}) }}

{{ frappe.format(doc.rate or 0.00, {'fieldtype': "Currency", 'options': doc}) }}

{{ frappe.format(doc.amount or 0.00, {'fieldtype': "Currency", 'options': doc}) }}

59 | 60 |

Annual Maintenance Charges

61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 |

Duration ( {{doc.amc_uom + "s"}} )

Rate per {{doc.amc_uom}}

Total Cost

{{ frappe.format(doc.amc_validity or 0.00, {'fieldtype': "Float", 'options': doc}) }}

{{ frappe.format(doc.amc_rate or 0.00, {'fieldtype': "Currency", 'options': doc}) }}

{{ frappe.format(doc.amc_amount or 0.00, {'fieldtype': "Currency", 'options': doc}) }}

74 | 75 |

Module Wise Estimate

76 | {%- set modules = ["accounts", "buying", "stock", "crm", "payroll", "selling", "hrms", "projects", "manufacturing", "setup", "customization", "healthcare", "education"] -%} 77 | {%- set modules_label = {"accounts": "Accounts", "buying": "Buying", "stock": "Stock", "crm": "CRM", "payroll": "Payroll", "selling": "Selling", "hrms": "HRMS", "projects": "Projects", "manufacturing": "Manufacturing", "setup": "Setup", "customization": "Customization", "healthcare": "Healthcare", "education": "Education"} -%} 78 | {%- for module in modules -%} 79 | {% if doc.get(module) == 1 and doc.get(module + "_details") and doc.get(module + "_details")|length > 0 %} 80 |

{{modules_label.get(module)}}

81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | {%- for row in doc.get(module + "_details") -%} 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | {%- endfor -%} 101 | 102 |
Sr.ProcessDocumentConfiguration HoursOther Hours
{{ row.idx }}{{ row.estimation_process }}{{ row.estimation_document }}{{ row.configuration_efforts }}{{ row.other_efforts }}
103 | {%- endif -%} 104 | {%- endfor -%} 105 |
106 |

{{ doc.thanks or '' }}

107 |
108 | {% if not no_letterhead and footer %} 109 | 112 | {% endif %} 113 | -------------------------------------------------------------------------------- /erpnext_price_estimation/erpnext_price_estimation/print_format/erpnext_price_estimate/erpnext_price_estimate.json: -------------------------------------------------------------------------------- 1 | { 2 | "absolute_value": 0, 3 | "align_labels_right": 1, 4 | "creation": "2024-06-05 08:29:41.164176", 5 | "css": "", 6 | "custom_format": 0, 7 | "default_print_language": "en", 8 | "disabled": 0, 9 | "doc_type": "ERPNext Price Estimation", 10 | "docstatus": 0, 11 | "doctype": "Print Format", 12 | "font_size": 14, 13 | "html": "", 14 | "idx": 0, 15 | "line_breaks": 1, 16 | "margin_bottom": 5.0, 17 | "margin_left": 5.0, 18 | "margin_right": 5.0, 19 | "margin_top": 5.0, 20 | "modified": "2024-06-12 17:07:56.450643", 21 | "modified_by": "Administrator", 22 | "module": "ERPNext Price Estimation", 23 | "name": "ERPNext Price Estimate", 24 | "owner": "Administrator", 25 | "page_number": "Hide", 26 | "print_designer": 0, 27 | "print_designer_template_app": "print_designer", 28 | "print_format_builder": 0, 29 | "print_format_builder_beta": 0, 30 | "print_format_type": "Jinja", 31 | "raw_printing": 0, 32 | "show_section_headings": 1, 33 | "standard": "Yes" 34 | } -------------------------------------------------------------------------------- /erpnext_price_estimation/fixtures/estimation_document.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "configuration_effort": 3.0, 4 | "docstatus": 0, 5 | "doctype": "Estimation Document", 6 | "document_name": "Lab Test Sample", 7 | "modified": "2024-06-07 17:57:54.721214", 8 | "module": "Healthcare", 9 | "name": "Lab Test Sample", 10 | "other_effort": 1.0, 11 | "process_name": "Laboratory" 12 | }, 13 | { 14 | "configuration_effort": 1.0, 15 | "docstatus": 0, 16 | "doctype": "Estimation Document", 17 | "document_name": "Lab Test UOM", 18 | "modified": "2024-06-07 17:58:05.751666", 19 | "module": "Healthcare", 20 | "name": "Lab Test UOM", 21 | "other_effort": 1.0, 22 | "process_name": "Laboratory" 23 | }, 24 | { 25 | "configuration_effort": 10.0, 26 | "docstatus": 0, 27 | "doctype": "Estimation Document", 28 | "document_name": "Lab Test Template", 29 | "modified": "2024-06-07 17:58:22.756121", 30 | "module": "Healthcare", 31 | "name": "Lab Test Template", 32 | "other_effort": 1.0, 33 | "process_name": "Laboratory" 34 | }, 35 | { 36 | "configuration_effort": 1.0, 37 | "docstatus": 0, 38 | "doctype": "Estimation Document", 39 | "document_name": "Patient Care Type", 40 | "modified": "2024-06-07 17:59:56.359067", 41 | "module": "Healthcare", 42 | "name": "Patient Care Type", 43 | "other_effort": 1.0, 44 | "process_name": "Inpatient" 45 | }, 46 | { 47 | "configuration_effort": 1.0, 48 | "docstatus": 0, 49 | "doctype": "Estimation Document", 50 | "document_name": "Exercise Type", 51 | "modified": "2024-06-07 18:02:24.047679", 52 | "module": "Healthcare", 53 | "name": "Exercise Type", 54 | "other_effort": 1.0, 55 | "process_name": "Rehabilitation" 56 | }, 57 | { 58 | "configuration_effort": 2.0, 59 | "docstatus": 0, 60 | "doctype": "Estimation Document", 61 | "document_name": "Therapy plan template", 62 | "modified": "2024-06-07 18:03:03.054225", 63 | "module": "Healthcare", 64 | "name": "Therapy plan template", 65 | "other_effort": 1.0, 66 | "process_name": "Rehabilitation" 67 | }, 68 | { 69 | "configuration_effort": 1.0, 70 | "docstatus": 0, 71 | "doctype": "Estimation Document", 72 | "document_name": "Healthcare Practitioner Schedule", 73 | "modified": "2024-06-07 18:04:31.486861", 74 | "module": "Healthcare", 75 | "name": "Healthcare Practitioner Schedule", 76 | "other_effort": 1.0, 77 | "process_name": "Consultation" 78 | }, 79 | { 80 | "configuration_effort": 2.0, 81 | "docstatus": 0, 82 | "doctype": "Estimation Document", 83 | "document_name": "Healthcare Practitioners", 84 | "modified": "2024-06-07 18:04:51.944265", 85 | "module": "Healthcare", 86 | "name": "Healthcare Practitioners", 87 | "other_effort": 1.0, 88 | "process_name": "Consultation" 89 | }, 90 | { 91 | "configuration_effort": 3.0, 92 | "docstatus": 0, 93 | "doctype": "Estimation Document", 94 | "document_name": "Clinical Procedure Template", 95 | "modified": "2024-06-07 18:07:44.033162", 96 | "module": "Healthcare", 97 | "name": "Clinical Procedure Template", 98 | "other_effort": 0.0, 99 | "process_name": "Consultation" 100 | }, 101 | { 102 | "configuration_effort": 2.0, 103 | "docstatus": 0, 104 | "doctype": "Estimation Document", 105 | "document_name": "Therapy Plan", 106 | "modified": "2024-06-07 18:08:36.729358", 107 | "module": "Healthcare", 108 | "name": "Therapy Plan", 109 | "other_effort": 1.0, 110 | "process_name": "Rehabilitation" 111 | }, 112 | { 113 | "configuration_effort": 2.0, 114 | "docstatus": 0, 115 | "doctype": "Estimation Document", 116 | "document_name": "Nursing Checklist Template", 117 | "modified": "2024-06-07 18:14:16.062317", 118 | "module": "Healthcare", 119 | "name": "Nursing Checklist Template", 120 | "other_effort": 1.0, 121 | "process_name": "Inpatient" 122 | }, 123 | { 124 | "configuration_effort": 1.0, 125 | "docstatus": 0, 126 | "doctype": "Estimation Document", 127 | "document_name": "Medical Department", 128 | "modified": "2024-06-07 18:15:10.904041", 129 | "module": "Healthcare", 130 | "name": "Medical Department", 131 | "other_effort": 1.0, 132 | "process_name": "Consultation" 133 | }, 134 | { 135 | "configuration_effort": 3.0, 136 | "docstatus": 0, 137 | "doctype": "Estimation Document", 138 | "document_name": "Observation template", 139 | "modified": "2024-06-07 18:15:36.224502", 140 | "module": "Healthcare", 141 | "name": "Observation template", 142 | "other_effort": 1.0, 143 | "process_name": "Laboratory" 144 | }, 145 | { 146 | "configuration_effort": 10.0, 147 | "docstatus": 0, 148 | "doctype": "Estimation Document", 149 | "document_name": "Topic", 150 | "modified": "2024-06-07 18:22:42.093319", 151 | "module": "Education", 152 | "name": "Topic", 153 | "other_effort": 1.0, 154 | "process_name": "Programs and Courses" 155 | }, 156 | { 157 | "configuration_effort": 5.0, 158 | "docstatus": 0, 159 | "doctype": "Estimation Document", 160 | "document_name": "Course", 161 | "modified": "2024-06-07 18:22:57.719479", 162 | "module": "Education", 163 | "name": "Course", 164 | "other_effort": 1.0, 165 | "process_name": "Programs and Courses" 166 | }, 167 | { 168 | "configuration_effort": 2.0, 169 | "docstatus": 0, 170 | "doctype": "Estimation Document", 171 | "document_name": "Program", 172 | "modified": "2024-06-07 18:23:06.112980", 173 | "module": "Education", 174 | "name": "Program", 175 | "other_effort": 1.0, 176 | "process_name": "Programs and Courses" 177 | }, 178 | { 179 | "configuration_effort": 4.0, 180 | "docstatus": 0, 181 | "doctype": "Estimation Document", 182 | "document_name": "Instructor", 183 | "modified": "2024-06-07 18:23:44.054685", 184 | "module": "Education", 185 | "name": "Instructor", 186 | "other_effort": 1.0, 187 | "process_name": "Topics and Instructors" 188 | }, 189 | { 190 | "configuration_effort": 2.0, 191 | "docstatus": 0, 192 | "doctype": "Estimation Document", 193 | "document_name": "Room", 194 | "modified": "2024-06-07 18:24:52.256481", 195 | "module": "Education", 196 | "name": "Room", 197 | "other_effort": 1.0, 198 | "process_name": "Rooms and Academic Year" 199 | }, 200 | { 201 | "configuration_effort": 5.0, 202 | "docstatus": 0, 203 | "doctype": "Estimation Document", 204 | "document_name": "Fee Structure", 205 | "modified": "2024-06-07 18:25:47.804287", 206 | "module": "Education", 207 | "name": "Fee Structure", 208 | "other_effort": 1.0, 209 | "process_name": "Fees Management" 210 | }, 211 | { 212 | "configuration_effort": 2.0, 213 | "docstatus": 0, 214 | "doctype": "Estimation Document", 215 | "document_name": "Fee Category", 216 | "modified": "2024-06-07 18:26:00.871823", 217 | "module": "Education", 218 | "name": "Fee Category", 219 | "other_effort": 1.0, 220 | "process_name": "Fees Management" 221 | }, 222 | { 223 | "configuration_effort": 2.0, 224 | "docstatus": 0, 225 | "doctype": "Estimation Document", 226 | "document_name": "Fee Schedule", 227 | "modified": "2024-06-07 18:26:09.733748", 228 | "module": "Education", 229 | "name": "Fee Schedule", 230 | "other_effort": 1.0, 231 | "process_name": "Fees Management" 232 | }, 233 | { 234 | "configuration_effort": 5.0, 235 | "docstatus": 0, 236 | "doctype": "Estimation Document", 237 | "document_name": "Assessment Plan", 238 | "modified": "2024-06-07 18:26:43.430944", 239 | "module": "Education", 240 | "name": "Assessment Plan", 241 | "other_effort": 1.0, 242 | "process_name": "Assessment" 243 | }, 244 | { 245 | "configuration_effort": 1.0, 246 | "docstatus": 0, 247 | "doctype": "Estimation Document", 248 | "document_name": "Academic Term", 249 | "modified": "2024-06-07 18:27:23.155697", 250 | "module": "Education", 251 | "name": "Academic Term", 252 | "other_effort": 1.0, 253 | "process_name": "Rooms and Academic Year" 254 | }, 255 | { 256 | "configuration_effort": 1.0, 257 | "docstatus": 0, 258 | "doctype": "Estimation Document", 259 | "document_name": "Academic Year", 260 | "modified": "2024-06-07 18:27:29.705284", 261 | "module": "Education", 262 | "name": "Academic Year", 263 | "other_effort": 1.0, 264 | "process_name": "Rooms and Academic Year" 265 | }, 266 | { 267 | "configuration_effort": 10.0, 268 | "docstatus": 0, 269 | "doctype": "Estimation Document", 270 | "document_name": "Student", 271 | "modified": "2024-06-07 18:28:09.619593", 272 | "module": "Education", 273 | "name": "Student", 274 | "other_effort": 1.0, 275 | "process_name": "Students Migrartion" 276 | }, 277 | { 278 | "configuration_effort": 5.0, 279 | "docstatus": 0, 280 | "doctype": "Estimation Document", 281 | "document_name": "Guardian", 282 | "modified": "2024-06-07 18:28:38.921126", 283 | "module": "Education", 284 | "name": "Guardian", 285 | "other_effort": 1.0, 286 | "process_name": "Students Migrartion" 287 | }, 288 | { 289 | "configuration_effort": 5.0, 290 | "docstatus": 0, 291 | "doctype": "Estimation Document", 292 | "document_name": "Student Group", 293 | "modified": "2024-06-07 18:29:02.147076", 294 | "module": "Education", 295 | "name": "Student Group", 296 | "other_effort": 1.0, 297 | "process_name": "Students Migrartion" 298 | }, 299 | { 300 | "configuration_effort": 1.0, 301 | "docstatus": 0, 302 | "doctype": "Estimation Document", 303 | "document_name": "Education Setting", 304 | "modified": "2024-06-07 18:29:45.677660", 305 | "module": "Education", 306 | "name": "Education Setting", 307 | "other_effort": 1.0, 308 | "process_name": "Programs and Courses" 309 | }, 310 | { 311 | "configuration_effort": 0.5, 312 | "docstatus": 0, 313 | "doctype": "Estimation Document", 314 | "document_name": "Patient History", 315 | "modified": "2024-05-15 14:47:27.727513", 316 | "module": "Utilities", 317 | "name": "Patient History", 318 | "other_effort": 0.0, 319 | "process_name": "Healthcare" 320 | }, 321 | { 322 | "configuration_effort": 3.0, 323 | "docstatus": 0, 324 | "doctype": "Estimation Document", 325 | "document_name": "Rehabilitation and Physiotherapy", 326 | "modified": "2024-05-15 14:47:27.741603", 327 | "module": "Utilities", 328 | "name": "Rehabilitation and Physiotherapy", 329 | "other_effort": 0.0, 330 | "process_name": "Healthcare" 331 | }, 332 | { 333 | "configuration_effort": 2.5, 334 | "docstatus": 0, 335 | "doctype": "Estimation Document", 336 | "document_name": "Laboratory Setup", 337 | "modified": "2024-05-15 14:47:27.752456", 338 | "module": "Utilities", 339 | "name": "Laboratory Setup", 340 | "other_effort": 0.0, 341 | "process_name": "Healthcare" 342 | }, 343 | { 344 | "configuration_effort": 1.5, 345 | "docstatus": 0, 346 | "doctype": "Estimation Document", 347 | "document_name": "Medical Coding", 348 | "modified": "2024-05-15 14:47:27.761515", 349 | "module": "Utilities", 350 | "name": "Medical Coding", 351 | "other_effort": 0.0, 352 | "process_name": "Healthcare" 353 | }, 354 | { 355 | "configuration_effort": 4.0, 356 | "docstatus": 0, 357 | "doctype": "Estimation Document", 358 | "document_name": "Serivce Unit Setup", 359 | "modified": "2024-05-15 14:47:27.769866", 360 | "module": "Utilities", 361 | "name": "Serivce Unit Setup", 362 | "other_effort": 0.0, 363 | "process_name": "Healthcare" 364 | }, 365 | { 366 | "configuration_effort": 2.0, 367 | "docstatus": 0, 368 | "doctype": "Estimation Document", 369 | "document_name": "Doctor Schedule Setup", 370 | "modified": "2024-05-15 14:47:27.776294", 371 | "module": "Utilities", 372 | "name": "Doctor Schedule Setup", 373 | "other_effort": 0.0, 374 | "process_name": "Healthcare" 375 | }, 376 | { 377 | "configuration_effort": 2.0, 378 | "docstatus": 0, 379 | "doctype": "Estimation Document", 380 | "document_name": "Patient Onboarding", 381 | "modified": "2024-05-15 14:47:27.784403", 382 | "module": "Utilities", 383 | "name": "Patient Onboarding", 384 | "other_effort": 0.0, 385 | "process_name": "Healthcare" 386 | }, 387 | { 388 | "configuration_effort": 2.5, 389 | "docstatus": 0, 390 | "doctype": "Estimation Document", 391 | "document_name": "Doctor Onboarding", 392 | "modified": "2024-05-15 14:47:27.791234", 393 | "module": "Utilities", 394 | "name": "Doctor Onboarding", 395 | "other_effort": 0.0, 396 | "process_name": "Healthcare" 397 | }, 398 | { 399 | "configuration_effort": 3.0, 400 | "docstatus": 0, 401 | "doctype": "Estimation Document", 402 | "document_name": "Stock Entry (Send to Subcontractor)", 403 | "modified": "2024-05-15 14:47:27.801314", 404 | "module": "Manufacturing", 405 | "name": "Stock Entry (Send to Subcontractor)", 406 | "other_effort": 0.0, 407 | "process_name": "Subcontracting" 408 | }, 409 | { 410 | "configuration_effort": 1.0, 411 | "docstatus": 0, 412 | "doctype": "Estimation Document", 413 | "document_name": "Supplier Warehouse", 414 | "modified": "2024-05-15 14:47:27.806464", 415 | "module": "Manufacturing", 416 | "name": "Supplier Warehouse", 417 | "other_effort": 0.0, 418 | "process_name": "Subcontracting" 419 | }, 420 | { 421 | "configuration_effort": 5.0, 422 | "docstatus": 0, 423 | "doctype": "Estimation Document", 424 | "document_name": "Stock Entries", 425 | "modified": "2024-05-15 14:47:27.811026", 426 | "module": "Manufacturing", 427 | "name": "Stock Entries", 428 | "other_effort": 0.0, 429 | "process_name": "Manufacturing Cycle" 430 | }, 431 | { 432 | "configuration_effort": 5.0, 433 | "docstatus": 0, 434 | "doctype": "Estimation Document", 435 | "document_name": "Job Card", 436 | "modified": "2024-05-15 14:47:27.815879", 437 | "module": "Manufacturing", 438 | "name": "Job Card", 439 | "other_effort": 0.0, 440 | "process_name": "Manufacturing Cycle" 441 | }, 442 | { 443 | "configuration_effort": 5.0, 444 | "docstatus": 0, 445 | "doctype": "Estimation Document", 446 | "document_name": "Work Order", 447 | "modified": "2024-05-15 14:47:27.820989", 448 | "module": "Manufacturing", 449 | "name": "Work Order", 450 | "other_effort": 0.0, 451 | "process_name": "Manufacturing Cycle" 452 | }, 453 | { 454 | "configuration_effort": 2.0, 455 | "docstatus": 0, 456 | "doctype": "Estimation Document", 457 | "document_name": "Production Plan", 458 | "modified": "2024-05-15 14:47:27.825812", 459 | "module": "Manufacturing", 460 | "name": "Production Plan", 461 | "other_effort": 2.0, 462 | "process_name": "Manufacturing Cycle" 463 | }, 464 | { 465 | "configuration_effort": 1.0, 466 | "docstatus": 0, 467 | "doctype": "Estimation Document", 468 | "document_name": "Routing", 469 | "modified": "2024-05-15 14:47:27.831136", 470 | "module": "Manufacturing", 471 | "name": "Routing", 472 | "other_effort": 0.0, 473 | "process_name": "Master Setup" 474 | }, 475 | { 476 | "configuration_effort": 1.0, 477 | "docstatus": 0, 478 | "doctype": "Estimation Document", 479 | "document_name": "Operations", 480 | "modified": "2024-05-15 14:47:27.836336", 481 | "module": "Manufacturing", 482 | "name": "Operations", 483 | "other_effort": 1.0, 484 | "process_name": "Master Setup" 485 | }, 486 | { 487 | "configuration_effort": 1.0, 488 | "docstatus": 0, 489 | "doctype": "Estimation Document", 490 | "document_name": "Workstation", 491 | "modified": "2024-05-15 14:47:27.842362", 492 | "module": "Manufacturing", 493 | "name": "Workstation", 494 | "other_effort": 0.0, 495 | "process_name": "Master Setup" 496 | }, 497 | { 498 | "configuration_effort": 1.0, 499 | "docstatus": 0, 500 | "doctype": "Estimation Document", 501 | "document_name": "Warehouse", 502 | "modified": "2024-05-15 14:47:27.847025", 503 | "module": "Manufacturing", 504 | "name": "Warehouse", 505 | "other_effort": 0.0, 506 | "process_name": "Master Setup" 507 | }, 508 | { 509 | "configuration_effort": 6.0, 510 | "docstatus": 0, 511 | "doctype": "Estimation Document", 512 | "document_name": "Item (RM, FG)", 513 | "modified": "2024-05-15 14:47:27.852367", 514 | "module": "Manufacturing", 515 | "name": "Item (RM, FG)", 516 | "other_effort": 2.0, 517 | "process_name": "Master Setup" 518 | }, 519 | { 520 | "configuration_effort": 6.0, 521 | "docstatus": 0, 522 | "doctype": "Estimation Document", 523 | "document_name": "BOM", 524 | "modified": "2024-05-15 14:47:27.857102", 525 | "module": "Manufacturing", 526 | "name": "BOM", 527 | "other_effort": 2.0, 528 | "process_name": "Defining Bill of Materials" 529 | }, 530 | { 531 | "configuration_effort": 2.0, 532 | "docstatus": 0, 533 | "doctype": "Estimation Document", 534 | "document_name": "Timesheet", 535 | "modified": "2024-05-15 14:47:27.861945", 536 | "module": "Projects", 537 | "name": "Timesheet", 538 | "other_effort": 0.0, 539 | "process_name": "Timesheet Setup" 540 | }, 541 | { 542 | "configuration_effort": 1.0, 543 | "docstatus": 0, 544 | "doctype": "Estimation Document", 545 | "document_name": "Activity Cost", 546 | "modified": "2024-05-15 14:47:27.867943", 547 | "module": "Projects", 548 | "name": "Activity Cost", 549 | "other_effort": 0.0, 550 | "process_name": "Activty Setup" 551 | }, 552 | { 553 | "configuration_effort": 1.0, 554 | "docstatus": 0, 555 | "doctype": "Estimation Document", 556 | "document_name": "Activity Type", 557 | "modified": "2024-05-15 14:47:27.872817", 558 | "module": "Projects", 559 | "name": "Activity Type", 560 | "other_effort": 0.0, 561 | "process_name": "Activty Setup" 562 | }, 563 | { 564 | "configuration_effort": 1.0, 565 | "docstatus": 0, 566 | "doctype": "Estimation Document", 567 | "document_name": "Newsletter", 568 | "modified": "2024-05-15 14:47:27.879123", 569 | "module": "CRM", 570 | "name": "Newsletter", 571 | "other_effort": 1.0, 572 | "process_name": "Newsletter Setup" 573 | }, 574 | { 575 | "configuration_effort": 1.0, 576 | "docstatus": 0, 577 | "doctype": "Estimation Document", 578 | "document_name": "Email Campaign", 579 | "modified": "2024-05-15 14:47:27.884869", 580 | "module": "CRM", 581 | "name": "Email Campaign", 582 | "other_effort": 1.0, 583 | "process_name": "Email Campaign Setup" 584 | }, 585 | { 586 | "configuration_effort": 2.0, 587 | "docstatus": 0, 588 | "doctype": "Estimation Document", 589 | "document_name": "Campaign", 590 | "modified": "2024-05-15 14:47:27.890014", 591 | "module": "CRM", 592 | "name": "Campaign", 593 | "other_effort": 1.0, 594 | "process_name": "Email Campaign Setup" 595 | }, 596 | { 597 | "configuration_effort": 1.0, 598 | "docstatus": 0, 599 | "doctype": "Estimation Document", 600 | "document_name": "Quotation", 601 | "modified": "2024-05-15 14:47:27.894951", 602 | "module": "CRM", 603 | "name": "Quotation", 604 | "other_effort": 1.0, 605 | "process_name": "Quotation Setup" 606 | }, 607 | { 608 | "configuration_effort": 1.0, 609 | "docstatus": 0, 610 | "doctype": "Estimation Document", 611 | "document_name": "Opportunity", 612 | "modified": "2024-05-15 14:47:27.899665", 613 | "module": "CRM", 614 | "name": "Opportunity", 615 | "other_effort": 1.0, 616 | "process_name": "Opportunity Setup" 617 | }, 618 | { 619 | "configuration_effort": 2.0, 620 | "docstatus": 0, 621 | "doctype": "Estimation Document", 622 | "document_name": "Lead", 623 | "modified": "2024-05-15 14:47:27.904332", 624 | "module": "CRM", 625 | "name": "Lead", 626 | "other_effort": 0.0, 627 | "process_name": "Lead Setup" 628 | }, 629 | { 630 | "configuration_effort": 1.0, 631 | "docstatus": 0, 632 | "doctype": "Estimation Document", 633 | "document_name": "Lead Source", 634 | "modified": "2024-05-15 14:47:27.909099", 635 | "module": "CRM", 636 | "name": "Lead Source", 637 | "other_effort": 1.0, 638 | "process_name": "Lead Setup" 639 | }, 640 | { 641 | "configuration_effort": 1.0, 642 | "docstatus": 0, 643 | "doctype": "Estimation Document", 644 | "document_name": "Stock Settings", 645 | "modified": "2024-05-15 14:47:27.950260", 646 | "module": "Stock", 647 | "name": "Stock Settings", 648 | "other_effort": 1.0, 649 | "process_name": "Stock Settings" 650 | }, 651 | { 652 | "configuration_effort": 2.0, 653 | "docstatus": 0, 654 | "doctype": "Estimation Document", 655 | "document_name": "Quality Inspection Template", 656 | "modified": "2024-05-15 14:47:27.957248", 657 | "module": "Stock", 658 | "name": "Quality Inspection Template", 659 | "other_effort": 1.0, 660 | "process_name": "Setting up Quality Inspection" 661 | }, 662 | { 663 | "configuration_effort": 3.0, 664 | "docstatus": 0, 665 | "doctype": "Estimation Document", 666 | "document_name": "Perpetual Inventory", 667 | "modified": "2024-05-15 14:47:27.961547", 668 | "module": "Stock", 669 | "name": "Perpetual Inventory", 670 | "other_effort": 1.0, 671 | "process_name": "Advanced" 672 | }, 673 | { 674 | "configuration_effort": 2.0, 675 | "docstatus": 0, 676 | "doctype": "Estimation Document", 677 | "document_name": "Projected Quantity", 678 | "modified": "2024-05-15 14:47:27.967915", 679 | "module": "Stock", 680 | "name": "Projected Quantity", 681 | "other_effort": 1.0, 682 | "process_name": "Advanced" 683 | }, 684 | { 685 | "configuration_effort": 2.0, 686 | "docstatus": 0, 687 | "doctype": "Estimation Document", 688 | "document_name": "Delivery Trip", 689 | "modified": "2024-05-15 14:47:27.972455", 690 | "module": "Stock", 691 | "name": "Delivery Trip", 692 | "other_effort": 1.0, 693 | "process_name": "Advanced" 694 | }, 695 | { 696 | "configuration_effort": 3.0, 697 | "docstatus": 0, 698 | "doctype": "Estimation Document", 699 | "document_name": "Landed Cost Voucher", 700 | "modified": "2024-05-15 14:47:27.976609", 701 | "module": "Stock", 702 | "name": "Landed Cost Voucher", 703 | "other_effort": 1.0, 704 | "process_name": "Stock Transactions" 705 | }, 706 | { 707 | "configuration_effort": 1.0, 708 | "docstatus": 0, 709 | "doctype": "Estimation Document", 710 | "document_name": "Retaining Sample Stock", 711 | "modified": "2024-05-15 14:47:27.980380", 712 | "module": "Stock", 713 | "name": "Retaining Sample Stock", 714 | "other_effort": 1.0, 715 | "process_name": "Stock Transactions" 716 | }, 717 | { 718 | "configuration_effort": 1.0, 719 | "docstatus": 0, 720 | "doctype": "Estimation Document", 721 | "document_name": "Package Slip", 722 | "modified": "2024-05-15 14:47:27.985272", 723 | "module": "Stock", 724 | "name": "Package Slip", 725 | "other_effort": 1.0, 726 | "process_name": "Stock Transactions" 727 | }, 728 | { 729 | "configuration_effort": 3.0, 730 | "docstatus": 0, 731 | "doctype": "Estimation Document", 732 | "document_name": "Stock entry", 733 | "modified": "2024-05-15 14:47:27.989995", 734 | "module": "Stock", 735 | "name": "Stock entry", 736 | "other_effort": 1.0, 737 | "process_name": "Stock Transactions" 738 | }, 739 | { 740 | "configuration_effort": 3.0, 741 | "docstatus": 0, 742 | "doctype": "Estimation Document", 743 | "document_name": "Delivery Note", 744 | "modified": "2024-05-15 14:47:27.997730", 745 | "module": "Stock", 746 | "name": "Delivery Note", 747 | "other_effort": 1.0, 748 | "process_name": "Stock Transactions" 749 | }, 750 | { 751 | "configuration_effort": 3.0, 752 | "docstatus": 0, 753 | "doctype": "Estimation Document", 754 | "document_name": "Purchase Receipt", 755 | "modified": "2024-05-15 14:47:28.003898", 756 | "module": "Stock", 757 | "name": "Purchase Receipt", 758 | "other_effort": 1.0, 759 | "process_name": "Stock Transactions" 760 | }, 761 | { 762 | "configuration_effort": 2.0, 763 | "docstatus": 0, 764 | "doctype": "Estimation Document", 765 | "document_name": "Material Request", 766 | "modified": "2024-05-15 14:47:28.008874", 767 | "module": "Stock", 768 | "name": "Material Request", 769 | "other_effort": 1.0, 770 | "process_name": "Stock Transactions" 771 | }, 772 | { 773 | "configuration_effort": 1.0, 774 | "docstatus": 0, 775 | "doctype": "Estimation Document", 776 | "document_name": "Manufacturer", 777 | "modified": "2024-05-15 14:47:28.014999", 778 | "module": "Stock", 779 | "name": "Manufacturer", 780 | "other_effort": 1.0, 781 | "process_name": "Item Setup" 782 | }, 783 | { 784 | "configuration_effort": 1.0, 785 | "docstatus": 0, 786 | "doctype": "Estimation Document", 787 | "document_name": "Reorder level", 788 | "modified": "2024-05-15 14:47:28.019057", 789 | "module": "Stock", 790 | "name": "Reorder level", 791 | "other_effort": 0.0, 792 | "process_name": "Item Setup" 793 | }, 794 | { 795 | "configuration_effort": 0.5, 796 | "docstatus": 0, 797 | "doctype": "Estimation Document", 798 | "document_name": "UOM", 799 | "modified": "2024-05-15 14:47:28.022723", 800 | "module": "Stock", 801 | "name": "UOM", 802 | "other_effort": 1.0, 803 | "process_name": "Item Setup" 804 | }, 805 | { 806 | "configuration_effort": 2.0, 807 | "docstatus": 0, 808 | "doctype": "Estimation Document", 809 | "document_name": "Item Group", 810 | "modified": "2024-05-15 14:47:28.026529", 811 | "module": "Stock", 812 | "name": "Item Group", 813 | "other_effort": 1.0, 814 | "process_name": "Item Setup" 815 | }, 816 | { 817 | "configuration_effort": 0.0, 818 | "docstatus": 0, 819 | "doctype": "Estimation Document", 820 | "document_name": "Price Rule", 821 | "modified": "2024-05-15 14:47:28.030170", 822 | "module": "Stock", 823 | "name": "Price Rule", 824 | "other_effort": 0.0, 825 | "process_name": "Item Setup" 826 | }, 827 | { 828 | "configuration_effort": 0.0, 829 | "docstatus": 0, 830 | "doctype": "Estimation Document", 831 | "document_name": "Price List", 832 | "modified": "2024-05-15 14:47:28.034601", 833 | "module": "Stock", 834 | "name": "Price List", 835 | "other_effort": 0.0, 836 | "process_name": "Item Setup" 837 | }, 838 | { 839 | "configuration_effort": 3.0, 840 | "docstatus": 0, 841 | "doctype": "Estimation Document", 842 | "document_name": "Item price", 843 | "modified": "2024-05-15 14:47:28.038595", 844 | "module": "Stock", 845 | "name": "Item price", 846 | "other_effort": 5.0, 847 | "process_name": "Item Setup" 848 | }, 849 | { 850 | "configuration_effort": 2.0, 851 | "docstatus": 0, 852 | "doctype": "Estimation Document", 853 | "document_name": "Item", 854 | "modified": "2024-05-15 14:47:28.042326", 855 | "module": "Stock", 856 | "name": "Item", 857 | "other_effort": 1.0, 858 | "process_name": "Serial Numbers" 859 | }, 860 | { 861 | "configuration_effort": 1.0, 862 | "docstatus": 0, 863 | "doctype": "Estimation Document", 864 | "document_name": "Attributes", 865 | "modified": "2024-05-15 14:47:28.046300", 866 | "module": "Stock", 867 | "name": "Attributes", 868 | "other_effort": 1.0, 869 | "process_name": "Item Variants" 870 | }, 871 | { 872 | "configuration_effort": 1.0, 873 | "docstatus": 0, 874 | "doctype": "Estimation Document", 875 | "document_name": "Variants", 876 | "modified": "2024-05-15 14:47:28.051104", 877 | "module": "Stock", 878 | "name": "Variants", 879 | "other_effort": 1.0, 880 | "process_name": "Item Variants" 881 | }, 882 | { 883 | "configuration_effort": 4.0, 884 | "docstatus": 0, 885 | "doctype": "Estimation Document", 886 | "document_name": "Stock Reconciliation", 887 | "modified": "2024-05-15 14:47:28.055311", 888 | "module": "Stock", 889 | "name": "Stock Reconciliation", 890 | "other_effort": 1.0, 891 | "process_name": "Opening Stock" 892 | }, 893 | { 894 | "configuration_effort": 1.0, 895 | "docstatus": 0, 896 | "doctype": "Estimation Document", 897 | "document_name": "Buying Settings", 898 | "modified": "2024-05-15 14:47:28.059488", 899 | "module": "Buying", 900 | "name": "Buying Settings", 901 | "other_effort": 1.0, 902 | "process_name": "Buying Settings" 903 | }, 904 | { 905 | "configuration_effort": 4.0, 906 | "docstatus": 0, 907 | "doctype": "Estimation Document", 908 | "document_name": "Purchase Orders / Receipts / Invoices", 909 | "modified": "2024-05-15 14:47:28.064784", 910 | "module": "Buying", 911 | "name": "Purchase Orders / Receipts / Invoices", 912 | "other_effort": 2.0, 913 | "process_name": "Buying Cycle Mapping" 914 | }, 915 | { 916 | "configuration_effort": 1.0, 917 | "docstatus": 0, 918 | "doctype": "Estimation Document", 919 | "document_name": "Supplier Contact", 920 | "modified": "2024-05-15 14:47:28.070162", 921 | "module": "Buying", 922 | "name": "Supplier Contact", 923 | "other_effort": 0.25, 924 | "process_name": "Supplier Setup" 925 | }, 926 | { 927 | "configuration_effort": 2.0, 928 | "docstatus": 0, 929 | "doctype": "Estimation Document", 930 | "document_name": "Supplier Address", 931 | "modified": "2024-05-15 14:47:28.075191", 932 | "module": "Buying", 933 | "name": "Supplier Address", 934 | "other_effort": 0.25, 935 | "process_name": "Supplier Setup" 936 | }, 937 | { 938 | "configuration_effort": 4.0, 939 | "docstatus": 0, 940 | "doctype": "Estimation Document", 941 | "document_name": "Supplier", 942 | "modified": "2024-05-15 14:47:28.079594", 943 | "module": "Buying", 944 | "name": "Supplier", 945 | "other_effort": 0.25, 946 | "process_name": "Supplier Setup" 947 | }, 948 | { 949 | "configuration_effort": 1.0, 950 | "docstatus": 0, 951 | "doctype": "Estimation Document", 952 | "document_name": "Supplier Group", 953 | "modified": "2024-05-15 14:47:28.084979", 954 | "module": "Buying", 955 | "name": "Supplier Group", 956 | "other_effort": 0.25, 957 | "process_name": "Supplier Setup" 958 | }, 959 | { 960 | "configuration_effort": 0.5, 961 | "docstatus": 0, 962 | "doctype": "Estimation Document", 963 | "document_name": "Healthcare Settings", 964 | "modified": "2024-05-16 11:42:04.351845", 965 | "module": "Utilities", 966 | "name": "Healthcare Settings", 967 | "other_effort": 0.0, 968 | "process_name": "Healthcare" 969 | }, 970 | { 971 | "configuration_effort": 1.0, 972 | "docstatus": 0, 973 | "doctype": "Estimation Document", 974 | "document_name": "Selling Settings", 975 | "modified": "2024-05-15 14:47:27.914585", 976 | "module": "Selling", 977 | "name": "Selling Settings", 978 | "other_effort": 1.0, 979 | "process_name": "Selling Settings" 980 | }, 981 | { 982 | "configuration_effort": 3.0, 983 | "docstatus": 0, 984 | "doctype": "Estimation Document", 985 | "document_name": "Selling Cycle Mapping", 986 | "modified": "2024-05-15 14:47:27.919195", 987 | "module": "Selling", 988 | "name": "Selling Cycle Mapping", 989 | "other_effort": 2.0, 990 | "process_name": "Selling Cycle Mapping" 991 | }, 992 | { 993 | "configuration_effort": 2.0, 994 | "docstatus": 0, 995 | "doctype": "Estimation Document", 996 | "document_name": "Sales Person", 997 | "modified": "2024-05-15 14:47:27.923595", 998 | "module": "Selling", 999 | "name": "Sales Person", 1000 | "other_effort": 0.0, 1001 | "process_name": "Sales Person Setup" 1002 | }, 1003 | { 1004 | "configuration_effort": 2.0, 1005 | "docstatus": 0, 1006 | "doctype": "Estimation Document", 1007 | "document_name": "Sales Partner", 1008 | "modified": "2024-05-15 14:47:27.927985", 1009 | "module": "Selling", 1010 | "name": "Sales Partner", 1011 | "other_effort": 1.0, 1012 | "process_name": "Sales Partner Setup" 1013 | }, 1014 | { 1015 | "configuration_effort": 2.0, 1016 | "docstatus": 0, 1017 | "doctype": "Estimation Document", 1018 | "document_name": "Customer Contact", 1019 | "modified": "2024-05-15 14:47:27.932881", 1020 | "module": "Selling", 1021 | "name": "Customer Contact", 1022 | "other_effort": 0.0, 1023 | "process_name": "Customer Setup" 1024 | }, 1025 | { 1026 | "configuration_effort": 2.0, 1027 | "docstatus": 0, 1028 | "doctype": "Estimation Document", 1029 | "document_name": "Customer Address", 1030 | "modified": "2024-05-15 14:47:27.937166", 1031 | "module": "Selling", 1032 | "name": "Customer Address", 1033 | "other_effort": 0.0, 1034 | "process_name": "Customer Setup" 1035 | }, 1036 | { 1037 | "configuration_effort": 2.0, 1038 | "docstatus": 0, 1039 | "doctype": "Estimation Document", 1040 | "document_name": "Customer", 1041 | "modified": "2024-05-15 14:47:27.941628", 1042 | "module": "Selling", 1043 | "name": "Customer", 1044 | "other_effort": 0.0, 1045 | "process_name": "Customer Setup" 1046 | }, 1047 | { 1048 | "configuration_effort": 1.0, 1049 | "docstatus": 0, 1050 | "doctype": "Estimation Document", 1051 | "document_name": "Customer Group", 1052 | "modified": "2024-05-15 14:47:27.945961", 1053 | "module": "Selling", 1054 | "name": "Customer Group", 1055 | "other_effort": 1.0, 1056 | "process_name": "Customer Setup" 1057 | }, 1058 | { 1059 | "configuration_effort": 2.0, 1060 | "docstatus": 0, 1061 | "doctype": "Estimation Document", 1062 | "document_name": "Salary Structure Assignment", 1063 | "modified": "2024-07-10 16:05:19.738009", 1064 | "module": "Payroll", 1065 | "name": "Salary Structure Assignment", 1066 | "other_effort": 0.5, 1067 | "process_name": "Payroll" 1068 | }, 1069 | { 1070 | "configuration_effort": 1.0, 1071 | "docstatus": 0, 1072 | "doctype": "Estimation Document", 1073 | "document_name": "Income Tax Slab", 1074 | "modified": "2024-07-10 16:05:13.434485", 1075 | "module": "Payroll", 1076 | "name": "Income Tax Slab", 1077 | "other_effort": 0.5, 1078 | "process_name": "Payroll" 1079 | }, 1080 | { 1081 | "configuration_effort": 0.5, 1082 | "docstatus": 0, 1083 | "doctype": "Estimation Document", 1084 | "document_name": "Payroll Period", 1085 | "modified": "2024-07-10 16:05:10.440421", 1086 | "module": "Payroll", 1087 | "name": "Payroll Period", 1088 | "other_effort": 0.5, 1089 | "process_name": "Payroll" 1090 | }, 1091 | { 1092 | "configuration_effort": 5.0, 1093 | "docstatus": 0, 1094 | "doctype": "Estimation Document", 1095 | "document_name": "Salary Structure", 1096 | "modified": "2024-07-10 16:05:05.098093", 1097 | "module": "Payroll", 1098 | "name": "Salary Structure", 1099 | "other_effort": 1.0, 1100 | "process_name": "Payroll" 1101 | }, 1102 | { 1103 | "configuration_effort": 1.0, 1104 | "docstatus": 0, 1105 | "doctype": "Estimation Document", 1106 | "document_name": "Salary Component", 1107 | "modified": "2024-07-10 16:04:31.913632", 1108 | "module": "Payroll", 1109 | "name": "Salary Component", 1110 | "other_effort": 0.5, 1111 | "process_name": "Payroll" 1112 | }, 1113 | { 1114 | "configuration_effort": 1.0, 1115 | "docstatus": 0, 1116 | "doctype": "Estimation Document", 1117 | "document_name": "HR Settings", 1118 | "modified": "2024-05-15 14:47:28.134124", 1119 | "module": "HR", 1120 | "name": "HR Settings", 1121 | "other_effort": 1.0, 1122 | "process_name": "HR Settings" 1123 | }, 1124 | { 1125 | "configuration_effort": 1.0, 1126 | "docstatus": 0, 1127 | "doctype": "Estimation Document", 1128 | "document_name": "Employe Separation Template", 1129 | "modified": "2024-05-15 14:47:28.140590", 1130 | "module": "HR", 1131 | "name": "Employe Separation Template", 1132 | "other_effort": 0.5, 1133 | "process_name": "Employee Life Cycle" 1134 | }, 1135 | { 1136 | "configuration_effort": 1.0, 1137 | "docstatus": 0, 1138 | "doctype": "Estimation Document", 1139 | "document_name": "Employe Onboarding Template", 1140 | "modified": "2024-05-15 14:47:28.147665", 1141 | "module": "HR", 1142 | "name": "Employe Onboarding Template", 1143 | "other_effort": 0.5, 1144 | "process_name": "Employee Life Cycle" 1145 | }, 1146 | { 1147 | "configuration_effort": 1.0, 1148 | "docstatus": 0, 1149 | "doctype": "Estimation Document", 1150 | "document_name": "Job Openings", 1151 | "modified": "2024-05-15 14:47:28.152805", 1152 | "module": "HR", 1153 | "name": "Job Openings", 1154 | "other_effort": 0.0, 1155 | "process_name": "Recruitment" 1156 | }, 1157 | { 1158 | "configuration_effort": 1.0, 1159 | "docstatus": 0, 1160 | "doctype": "Estimation Document", 1161 | "document_name": "Staffing Plan", 1162 | "modified": "2024-05-15 14:47:28.157297", 1163 | "module": "HR", 1164 | "name": "Staffing Plan", 1165 | "other_effort": 0.0, 1166 | "process_name": "Recruitment" 1167 | }, 1168 | { 1169 | "configuration_effort": 2.0, 1170 | "docstatus": 0, 1171 | "doctype": "Estimation Document", 1172 | "document_name": "Expense Claim + Employee Advance Upload (if any)", 1173 | "modified": "2024-05-15 14:47:28.161256", 1174 | "module": "HR", 1175 | "name": "Expense Claim + Employee Advance Upload (if any)", 1176 | "other_effort": 1.0, 1177 | "process_name": "Expense Claim" 1178 | }, 1179 | { 1180 | "configuration_effort": 1.0, 1181 | "docstatus": 0, 1182 | "doctype": "Estimation Document", 1183 | "document_name": "Expense Claim Type", 1184 | "modified": "2024-05-15 14:47:28.165652", 1185 | "module": "HR", 1186 | "name": "Expense Claim Type", 1187 | "other_effort": 1.0, 1188 | "process_name": "Expense Claim" 1189 | }, 1190 | { 1191 | "configuration_effort": 2.0, 1192 | "docstatus": 0, 1193 | "doctype": "Estimation Document", 1194 | "document_name": "Attendance Upload", 1195 | "modified": "2024-05-15 14:47:28.170172", 1196 | "module": "HR", 1197 | "name": "Attendance Upload", 1198 | "other_effort": 1.0, 1199 | "process_name": "Attendance" 1200 | }, 1201 | { 1202 | "configuration_effort": 8.0, 1203 | "docstatus": 0, 1204 | "doctype": "Estimation Document", 1205 | "document_name": "Biometric Attendance", 1206 | "modified": "2024-05-15 14:47:28.174286", 1207 | "module": "HR", 1208 | "name": "Biometric Attendance", 1209 | "other_effort": 1.0, 1210 | "process_name": "Attendance" 1211 | }, 1212 | { 1213 | "configuration_effort": 2.0, 1214 | "docstatus": 0, 1215 | "doctype": "Estimation Document", 1216 | "document_name": "Shift Setup + Auto attendance settings", 1217 | "modified": "2024-05-15 14:47:28.178074", 1218 | "module": "HR", 1219 | "name": "Shift Setup + Auto attendance settings", 1220 | "other_effort": 1.0, 1221 | "process_name": "Attendance" 1222 | }, 1223 | { 1224 | "configuration_effort": 3.0, 1225 | "docstatus": 0, 1226 | "doctype": "Estimation Document", 1227 | "document_name": "Leave Allocation", 1228 | "modified": "2024-05-15 14:47:28.181670", 1229 | "module": "HR", 1230 | "name": "Leave Allocation", 1231 | "other_effort": 2.0, 1232 | "process_name": "Leave Setup" 1233 | }, 1234 | { 1235 | "configuration_effort": 1.0, 1236 | "docstatus": 0, 1237 | "doctype": "Estimation Document", 1238 | "document_name": "Leave Policy Assignment", 1239 | "modified": "2024-05-15 14:47:28.187708", 1240 | "module": "HR", 1241 | "name": "Leave Policy Assignment", 1242 | "other_effort": 0.5, 1243 | "process_name": "Leave Setup" 1244 | }, 1245 | { 1246 | "configuration_effort": 1.0, 1247 | "docstatus": 0, 1248 | "doctype": "Estimation Document", 1249 | "document_name": "Holiday List", 1250 | "modified": "2024-05-15 14:47:28.192490", 1251 | "module": "HR", 1252 | "name": "Holiday List", 1253 | "other_effort": 0.5, 1254 | "process_name": "Leave Setup" 1255 | }, 1256 | { 1257 | "configuration_effort": 2.0, 1258 | "docstatus": 0, 1259 | "doctype": "Estimation Document", 1260 | "document_name": "Leave Policy", 1261 | "modified": "2024-05-15 14:47:28.196978", 1262 | "module": "HR", 1263 | "name": "Leave Policy", 1264 | "other_effort": 0.5, 1265 | "process_name": "Leave Setup" 1266 | }, 1267 | { 1268 | "configuration_effort": 2.0, 1269 | "docstatus": 0, 1270 | "doctype": "Estimation Document", 1271 | "document_name": "Leave Period + Leave Type", 1272 | "modified": "2024-05-15 14:47:28.201794", 1273 | "module": "HR", 1274 | "name": "Leave Period + Leave Type", 1275 | "other_effort": 0.5, 1276 | "process_name": "Leave Setup" 1277 | }, 1278 | { 1279 | "configuration_effort": 5.0, 1280 | "docstatus": 0, 1281 | "doctype": "Estimation Document", 1282 | "document_name": "Employee", 1283 | "modified": "2024-05-15 14:47:28.206054", 1284 | "module": "HR", 1285 | "name": "Employee", 1286 | "other_effort": 1.0, 1287 | "process_name": "Employee Setup" 1288 | }, 1289 | { 1290 | "configuration_effort": 1.0, 1291 | "docstatus": 0, 1292 | "doctype": "Estimation Document", 1293 | "document_name": "Designation", 1294 | "modified": "2024-05-15 14:47:28.209881", 1295 | "module": "HR", 1296 | "name": "Designation", 1297 | "other_effort": 1.0, 1298 | "process_name": "Employee Setup" 1299 | }, 1300 | { 1301 | "configuration_effort": 1.0, 1302 | "docstatus": 0, 1303 | "doctype": "Estimation Document", 1304 | "document_name": "Department", 1305 | "modified": "2024-05-15 14:47:28.213552", 1306 | "module": "HR", 1307 | "name": "Department", 1308 | "other_effort": 1.0, 1309 | "process_name": "Employee Setup" 1310 | }, 1311 | { 1312 | "configuration_effort": 1.5, 1313 | "docstatus": 0, 1314 | "doctype": "Estimation Document", 1315 | "document_name": "Employee Tax Exemption Proof Submission", 1316 | "modified": "2024-05-15 14:47:28.089451", 1317 | "module": "Payroll", 1318 | "name": "Employee Tax Exemption Proof Submission", 1319 | "other_effort": 0.5, 1320 | "process_name": "Tax Declarations" 1321 | }, 1322 | { 1323 | "configuration_effort": 3.0, 1324 | "docstatus": 0, 1325 | "doctype": "Estimation Document", 1326 | "document_name": "Employee Tax Exemption Declaration", 1327 | "modified": "2024-05-15 14:47:28.093354", 1328 | "module": "Payroll", 1329 | "name": "Employee Tax Exemption Declaration", 1330 | "other_effort": 0.5, 1331 | "process_name": "Tax Declarations" 1332 | }, 1333 | { 1334 | "configuration_effort": 1.0, 1335 | "docstatus": 0, 1336 | "doctype": "Estimation Document", 1337 | "document_name": "Employee Tax Exemption Sub Category", 1338 | "modified": "2024-05-15 14:47:28.098239", 1339 | "module": "Payroll", 1340 | "name": "Employee Tax Exemption Sub Category", 1341 | "other_effort": 0.5, 1342 | "process_name": "Tax Declarations" 1343 | }, 1344 | { 1345 | "configuration_effort": 1.0, 1346 | "docstatus": 0, 1347 | "doctype": "Estimation Document", 1348 | "document_name": "Employee Tax Exemption Category", 1349 | "modified": "2024-05-15 14:47:28.102957", 1350 | "module": "Payroll", 1351 | "name": "Employee Tax Exemption Category", 1352 | "other_effort": 0.5, 1353 | "process_name": "Tax Declarations" 1354 | }, 1355 | { 1356 | "configuration_effort": 1.0, 1357 | "docstatus": 0, 1358 | "doctype": "Estimation Document", 1359 | "document_name": "Payroll Settings", 1360 | "modified": "2024-05-15 20:02:36.810446", 1361 | "module": "Payroll", 1362 | "name": "Payroll Settings", 1363 | "other_effort": 0.0, 1364 | "process_name": "Payroll Settings" 1365 | }, 1366 | { 1367 | "configuration_effort": 1.0, 1368 | "docstatus": 0, 1369 | "doctype": "Estimation Document", 1370 | "document_name": "Accounts Settings", 1371 | "modified": "2024-05-15 14:47:28.219433", 1372 | "module": "Accounts", 1373 | "name": "Accounts Settings", 1374 | "other_effort": 1.0, 1375 | "process_name": "Accounts Settings" 1376 | }, 1377 | { 1378 | "configuration_effort": 2.0, 1379 | "docstatus": 0, 1380 | "doctype": "Estimation Document", 1381 | "document_name": "Opening Invoice Creation Tool", 1382 | "modified": "2024-05-15 14:47:28.224444", 1383 | "module": "Accounts", 1384 | "name": "Opening Invoice Creation Tool", 1385 | "other_effort": 1.0, 1386 | "process_name": "Opening Balance of Accounts" 1387 | }, 1388 | { 1389 | "configuration_effort": 2.0, 1390 | "docstatus": 0, 1391 | "doctype": "Estimation Document", 1392 | "document_name": "Purchase Taxes and Charges Template", 1393 | "modified": "2024-05-15 14:47:28.229248", 1394 | "module": "Accounts", 1395 | "name": "Purchase Taxes and Charges Template", 1396 | "other_effort": 1.0, 1397 | "process_name": "Taxes Setup" 1398 | }, 1399 | { 1400 | "configuration_effort": 2.0, 1401 | "docstatus": 0, 1402 | "doctype": "Estimation Document", 1403 | "document_name": "Sales Taxes and Charges Template", 1404 | "modified": "2024-05-15 14:47:28.233048", 1405 | "module": "Accounts", 1406 | "name": "Sales Taxes and Charges Template", 1407 | "other_effort": 1.0, 1408 | "process_name": "Taxes Setup" 1409 | }, 1410 | { 1411 | "configuration_effort": 2.0, 1412 | "docstatus": 0, 1413 | "doctype": "Estimation Document", 1414 | "document_name": "Item Tax Template", 1415 | "modified": "2024-05-15 14:47:28.238825", 1416 | "module": "Accounts", 1417 | "name": "Item Tax Template", 1418 | "other_effort": 0.0, 1419 | "process_name": "Taxes Setup" 1420 | }, 1421 | { 1422 | "configuration_effort": 2.0, 1423 | "docstatus": 0, 1424 | "doctype": "Estimation Document", 1425 | "document_name": "Budget", 1426 | "modified": "2024-05-15 14:47:28.243404", 1427 | "module": "Accounts", 1428 | "name": "Budget", 1429 | "other_effort": 1.0, 1430 | "process_name": "Budgeting" 1431 | }, 1432 | { 1433 | "configuration_effort": 1.0, 1434 | "docstatus": 0, 1435 | "doctype": "Estimation Document", 1436 | "document_name": "Accounting Dimensions", 1437 | "modified": "2024-05-15 14:47:28.249179", 1438 | "module": "Accounts", 1439 | "name": "Accounting Dimensions", 1440 | "other_effort": 1.0, 1441 | "process_name": "Cost Center" 1442 | }, 1443 | { 1444 | "configuration_effort": 1.0, 1445 | "docstatus": 0, 1446 | "doctype": "Estimation Document", 1447 | "document_name": "Chart of Cost Center", 1448 | "modified": "2024-05-15 14:47:28.253794", 1449 | "module": "Accounts", 1450 | "name": "Chart of Cost Center", 1451 | "other_effort": 1.0, 1452 | "process_name": "Cost Center" 1453 | }, 1454 | { 1455 | "configuration_effort": 2.0, 1456 | "docstatus": 0, 1457 | "doctype": "Estimation Document", 1458 | "document_name": "Chart of Accounts", 1459 | "modified": "2024-05-15 14:47:28.258122", 1460 | "module": "Accounts", 1461 | "name": "Chart of Accounts", 1462 | "other_effort": 1.0, 1463 | "process_name": "Chart Of Accounts" 1464 | }, 1465 | { 1466 | "configuration_effort": 1.0, 1467 | "docstatus": 0, 1468 | "doctype": "Estimation Document", 1469 | "document_name": "Company", 1470 | "modified": "2024-05-15 14:47:28.263238", 1471 | "module": "Accounts", 1472 | "name": "Company", 1473 | "other_effort": 1.0, 1474 | "process_name": "Company Setup" 1475 | } 1476 | ] -------------------------------------------------------------------------------- /erpnext_price_estimation/fixtures/estimation_process.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "docstatus": 0, 4 | "doctype": "Estimation Process", 5 | "modified": "2024-05-15 14:45:38.051601", 6 | "module": "Setup", 7 | "name": "Workflow Setup", 8 | "process_name": "Workflow Setup", 9 | "table_fssue": [] 10 | }, 11 | { 12 | "docstatus": 0, 13 | "doctype": "Estimation Process", 14 | "modified": "2024-05-15 14:45:38.056551", 15 | "module": "Setup", 16 | "name": "Print Format Setup", 17 | "process_name": "Print Format Setup", 18 | "table_fssue": [] 19 | }, 20 | { 21 | "docstatus": 0, 22 | "doctype": "Estimation Process", 23 | "modified": "2024-05-15 14:45:38.061659", 24 | "module": "Setup", 25 | "name": "Letter Head Setup", 26 | "process_name": "Letter Head Setup", 27 | "table_fssue": [] 28 | }, 29 | { 30 | "docstatus": 0, 31 | "doctype": "Estimation Process", 32 | "modified": "2024-05-15 14:45:38.071154", 33 | "module": "Setup", 34 | "name": "Email Setup", 35 | "process_name": "Email Setup", 36 | "table_fssue": [] 37 | }, 38 | { 39 | "docstatus": 0, 40 | "doctype": "Estimation Process", 41 | "modified": "2024-05-15 14:45:38.080961", 42 | "module": "Setup", 43 | "name": "Permissions Setup", 44 | "process_name": "Permissions Setup", 45 | "table_fssue": [] 46 | }, 47 | { 48 | "docstatus": 0, 49 | "doctype": "Estimation Process", 50 | "modified": "2024-05-15 14:45:38.087064", 51 | "module": "Setup", 52 | "name": "Role Setup", 53 | "process_name": "Role Setup", 54 | "table_fssue": [] 55 | }, 56 | { 57 | "docstatus": 0, 58 | "doctype": "Estimation Process", 59 | "modified": "2024-05-15 14:45:38.091904", 60 | "module": "Setup", 61 | "name": "User Setup", 62 | "process_name": "User Setup", 63 | "table_fssue": [] 64 | }, 65 | { 66 | "docstatus": 0, 67 | "doctype": "Estimation Process", 68 | "modified": "2024-05-15 14:45:38.097771", 69 | "module": "Manufacturing", 70 | "name": "Maufacturing Settings", 71 | "process_name": "Maufacturing Settings", 72 | "table_fssue": [] 73 | }, 74 | { 75 | "docstatus": 0, 76 | "doctype": "Estimation Process", 77 | "modified": "2024-05-15 14:45:38.103705", 78 | "module": "Manufacturing", 79 | "name": "Subcontracting", 80 | "process_name": "Subcontracting", 81 | "table_fssue": [] 82 | }, 83 | { 84 | "docstatus": 0, 85 | "doctype": "Estimation Process", 86 | "modified": "2024-05-15 14:45:38.108255", 87 | "module": "Manufacturing", 88 | "name": "Manufacturing Cycle", 89 | "process_name": "Manufacturing Cycle", 90 | "table_fssue": [] 91 | }, 92 | { 93 | "docstatus": 0, 94 | "doctype": "Estimation Process", 95 | "modified": "2024-05-15 14:45:38.112814", 96 | "module": "Manufacturing", 97 | "name": "Master Setup", 98 | "process_name": "Master Setup", 99 | "table_fssue": [] 100 | }, 101 | { 102 | "docstatus": 0, 103 | "doctype": "Estimation Process", 104 | "modified": "2024-05-15 14:45:38.118137", 105 | "module": "Manufacturing", 106 | "name": "Defining Bill of Materials", 107 | "process_name": "Defining Bill of Materials", 108 | "table_fssue": [] 109 | }, 110 | { 111 | "docstatus": 0, 112 | "doctype": "Estimation Process", 113 | "modified": "2024-05-15 14:45:38.122896", 114 | "module": "CRM", 115 | "name": "Newsletter Setup", 116 | "process_name": "Newsletter Setup", 117 | "table_fssue": [] 118 | }, 119 | { 120 | "docstatus": 0, 121 | "doctype": "Estimation Process", 122 | "modified": "2024-05-15 14:45:38.127968", 123 | "module": "CRM", 124 | "name": "Email Campaign Setup", 125 | "process_name": "Email Campaign Setup", 126 | "table_fssue": [] 127 | }, 128 | { 129 | "docstatus": 0, 130 | "doctype": "Estimation Process", 131 | "modified": "2024-05-15 14:45:38.132901", 132 | "module": "CRM", 133 | "name": "Quotation Setup", 134 | "process_name": "Quotation Setup", 135 | "table_fssue": [] 136 | }, 137 | { 138 | "docstatus": 0, 139 | "doctype": "Estimation Process", 140 | "modified": "2024-05-15 14:45:38.160786", 141 | "module": "Stock", 142 | "name": "Stock Settings", 143 | "process_name": "Stock Settings", 144 | "table_fssue": [] 145 | }, 146 | { 147 | "docstatus": 0, 148 | "doctype": "Estimation Process", 149 | "modified": "2024-05-15 14:45:38.164162", 150 | "module": "Stock", 151 | "name": "Setting up Quality Inspection", 152 | "process_name": "Setting up Quality Inspection", 153 | "table_fssue": [] 154 | }, 155 | { 156 | "docstatus": 0, 157 | "doctype": "Estimation Process", 158 | "modified": "2024-05-15 14:45:38.168487", 159 | "module": "Stock", 160 | "name": "Advanced", 161 | "process_name": "Advanced", 162 | "table_fssue": [] 163 | }, 164 | { 165 | "docstatus": 0, 166 | "doctype": "Estimation Process", 167 | "modified": "2024-05-15 14:45:38.172974", 168 | "module": "Stock", 169 | "name": "Stock Transactions", 170 | "process_name": "Stock Transactions", 171 | "table_fssue": [] 172 | }, 173 | { 174 | "docstatus": 0, 175 | "doctype": "Estimation Process", 176 | "modified": "2024-05-15 14:45:38.176924", 177 | "module": "Stock", 178 | "name": "Item Setup", 179 | "process_name": "Item Setup", 180 | "table_fssue": [] 181 | }, 182 | { 183 | "docstatus": 0, 184 | "doctype": "Estimation Process", 185 | "modified": "2024-05-15 14:45:38.183868", 186 | "module": "Stock", 187 | "name": "Batch", 188 | "process_name": "Batch", 189 | "table_fssue": [] 190 | }, 191 | { 192 | "docstatus": 0, 193 | "doctype": "Estimation Process", 194 | "modified": "2024-05-15 14:45:38.192946", 195 | "module": "Stock", 196 | "name": "Serial Numbers", 197 | "process_name": "Serial Numbers", 198 | "table_fssue": [] 199 | }, 200 | { 201 | "docstatus": 0, 202 | "doctype": "Estimation Process", 203 | "modified": "2024-05-15 14:45:38.197052", 204 | "module": "Stock", 205 | "name": "Item Variants", 206 | "process_name": "Item Variants", 207 | "table_fssue": [] 208 | }, 209 | { 210 | "docstatus": 0, 211 | "doctype": "Estimation Process", 212 | "modified": "2024-05-15 14:45:38.202356", 213 | "module": "Stock", 214 | "name": "Opening Stock", 215 | "process_name": "Opening Stock", 216 | "table_fssue": [] 217 | }, 218 | { 219 | "docstatus": 0, 220 | "doctype": "Estimation Process", 221 | "modified": "2024-05-15 14:45:38.206755", 222 | "module": "Stock", 223 | "name": "Warehouse Setup", 224 | "process_name": "Warehouse Setup", 225 | "table_fssue": [] 226 | }, 227 | { 228 | "docstatus": 0, 229 | "doctype": "Estimation Process", 230 | "modified": "2024-05-15 14:45:38.223235", 231 | "module": "Projects", 232 | "name": "Timesheet Setup", 233 | "process_name": "Timesheet Setup", 234 | "table_fssue": [] 235 | }, 236 | { 237 | "docstatus": 0, 238 | "doctype": "Estimation Process", 239 | "modified": "2024-05-15 14:45:38.226787", 240 | "module": "Projects", 241 | "name": "Activty Setup", 242 | "process_name": "Activty Setup", 243 | "table_fssue": [] 244 | }, 245 | { 246 | "docstatus": 0, 247 | "doctype": "Estimation Process", 248 | "modified": "2024-05-15 14:45:38.230749", 249 | "module": "Projects", 250 | "name": "Tasks Setup", 251 | "process_name": "Tasks Setup", 252 | "table_fssue": [] 253 | }, 254 | { 255 | "docstatus": 0, 256 | "doctype": "Estimation Process", 257 | "modified": "2024-05-15 14:45:38.236560", 258 | "module": "Projects", 259 | "name": "Projects Setup", 260 | "process_name": "Projects Setup", 261 | "table_fssue": [] 262 | }, 263 | { 264 | "docstatus": 0, 265 | "doctype": "Estimation Process", 266 | "modified": "2024-05-15 14:45:38.251431", 267 | "module": "CRM", 268 | "name": "Opportunity Setup", 269 | "process_name": "Opportunity Setup", 270 | "table_fssue": [] 271 | }, 272 | { 273 | "docstatus": 0, 274 | "doctype": "Estimation Process", 275 | "modified": "2024-05-15 14:45:38.255720", 276 | "module": "CRM", 277 | "name": "Lead Setup", 278 | "process_name": "Lead Setup", 279 | "table_fssue": [] 280 | }, 281 | { 282 | "docstatus": 0, 283 | "doctype": "Estimation Process", 284 | "modified": "2024-05-16 14:37:26.259421", 285 | "module": "Healthcare", 286 | "name": "Configuration", 287 | "process_name": "Configuration", 288 | "table_fssue": [] 289 | }, 290 | { 291 | "docstatus": 0, 292 | "doctype": "Estimation Process", 293 | "modified": "2024-05-16 14:37:36.228441", 294 | "module": "Healthcare", 295 | "name": "Consultation", 296 | "process_name": "Consultation", 297 | "table_fssue": [] 298 | }, 299 | { 300 | "docstatus": 0, 301 | "doctype": "Estimation Process", 302 | "modified": "2024-05-16 14:38:20.715285", 303 | "module": "Healthcare", 304 | "name": "Inpatient", 305 | "process_name": "Inpatient", 306 | "table_fssue": [] 307 | }, 308 | { 309 | "docstatus": 0, 310 | "doctype": "Estimation Process", 311 | "modified": "2024-05-16 14:38:52.406893", 312 | "module": "Healthcare", 313 | "name": "Laboratory", 314 | "process_name": "Laboratory", 315 | "table_fssue": [] 316 | }, 317 | { 318 | "docstatus": 0, 319 | "doctype": "Estimation Process", 320 | "modified": "2024-05-16 14:39:31.572773", 321 | "module": "Healthcare", 322 | "name": "Rehabilitation", 323 | "process_name": "Rehabilitation", 324 | "table_fssue": [] 325 | }, 326 | { 327 | "docstatus": 0, 328 | "doctype": "Estimation Process", 329 | "modified": "2024-05-16 14:40:32.034901", 330 | "module": "Healthcare", 331 | "name": "Data Migration", 332 | "process_name": "Data Migration", 333 | "table_fssue": [] 334 | }, 335 | { 336 | "docstatus": 0, 337 | "doctype": "Estimation Process", 338 | "modified": "2024-05-16 14:47:34.060248", 339 | "module": "Education", 340 | "name": "Programs and Courses", 341 | "process_name": "Programs and Courses", 342 | "table_fssue": [] 343 | }, 344 | { 345 | "docstatus": 0, 346 | "doctype": "Estimation Process", 347 | "modified": "2024-05-16 14:48:56.426203", 348 | "module": "Education", 349 | "name": "Topics and Instructors", 350 | "process_name": "Topics and Instructors", 351 | "table_fssue": [] 352 | }, 353 | { 354 | "docstatus": 0, 355 | "doctype": "Estimation Process", 356 | "modified": "2024-05-16 14:49:56.896775", 357 | "module": "Education", 358 | "name": "Rooms and Academic Year", 359 | "process_name": "Rooms and Academic Year", 360 | "table_fssue": [] 361 | }, 362 | { 363 | "docstatus": 0, 364 | "doctype": "Estimation Process", 365 | "modified": "2024-05-16 14:50:31.449286", 366 | "module": "Education", 367 | "name": "Students Migrartion", 368 | "process_name": "Students Migrartion", 369 | "table_fssue": [] 370 | }, 371 | { 372 | "docstatus": 0, 373 | "doctype": "Estimation Process", 374 | "modified": "2024-05-16 14:50:57.160120", 375 | "module": "Education", 376 | "name": "Fees Management", 377 | "process_name": "Fees Management", 378 | "table_fssue": [] 379 | }, 380 | { 381 | "docstatus": 0, 382 | "doctype": "Estimation Process", 383 | "modified": "2024-05-16 14:51:35.548924", 384 | "module": "Education", 385 | "name": "Course Schedule", 386 | "process_name": "Course Schedule", 387 | "table_fssue": [] 388 | }, 389 | { 390 | "docstatus": 0, 391 | "doctype": "Estimation Process", 392 | "modified": "2024-05-16 14:51:52.753424", 393 | "module": "Education", 394 | "name": "Assessment", 395 | "process_name": "Assessment", 396 | "table_fssue": [] 397 | }, 398 | { 399 | "docstatus": 0, 400 | "doctype": "Estimation Process", 401 | "modified": "2024-05-15 14:45:38.036798", 402 | "module": "Utilities", 403 | "name": "Healthcare", 404 | "process_name": "Healthcare", 405 | "table_fssue": [] 406 | }, 407 | { 408 | "docstatus": 0, 409 | "doctype": "Estimation Process", 410 | "modified": "2024-05-15 14:45:38.210551", 411 | "module": "Buying", 412 | "name": "Buying Settings", 413 | "process_name": "Buying Settings", 414 | "table_fssue": [] 415 | }, 416 | { 417 | "docstatus": 0, 418 | "doctype": "Estimation Process", 419 | "modified": "2024-05-15 14:45:38.214808", 420 | "module": "Buying", 421 | "name": "Buying Cycle Mapping", 422 | "process_name": "Buying Cycle Mapping", 423 | "table_fssue": [] 424 | }, 425 | { 426 | "docstatus": 0, 427 | "doctype": "Estimation Process", 428 | "modified": "2024-05-15 14:45:38.137700", 429 | "module": "Selling", 430 | "name": "Selling Settings", 431 | "process_name": "Selling Settings", 432 | "table_fssue": [] 433 | }, 434 | { 435 | "docstatus": 0, 436 | "doctype": "Estimation Process", 437 | "modified": "2024-05-15 14:45:38.143617", 438 | "module": "Selling", 439 | "name": "Selling Cycle Mapping", 440 | "process_name": "Selling Cycle Mapping", 441 | "table_fssue": [] 442 | }, 443 | { 444 | "docstatus": 0, 445 | "doctype": "Estimation Process", 446 | "modified": "2024-05-15 14:45:38.147744", 447 | "module": "Selling", 448 | "name": "Sales Person Setup", 449 | "process_name": "Sales Person Setup", 450 | "table_fssue": [] 451 | }, 452 | { 453 | "docstatus": 0, 454 | "doctype": "Estimation Process", 455 | "modified": "2024-05-15 14:45:38.152790", 456 | "module": "Selling", 457 | "name": "Sales Partner Setup", 458 | "process_name": "Sales Partner Setup", 459 | "table_fssue": [] 460 | }, 461 | { 462 | "docstatus": 0, 463 | "doctype": "Estimation Process", 464 | "modified": "2024-05-15 14:45:38.267249", 465 | "module": "HR", 466 | "name": "HR Settings", 467 | "process_name": "HR Settings", 468 | "table_fssue": [] 469 | }, 470 | { 471 | "docstatus": 0, 472 | "doctype": "Estimation Process", 473 | "modified": "2024-05-15 14:45:38.218951", 474 | "module": "Buying", 475 | "name": "Supplier Setup", 476 | "process_name": "Supplier Setup", 477 | "table_fssue": [] 478 | }, 479 | { 480 | "docstatus": 0, 481 | "doctype": "Estimation Process", 482 | "modified": "2024-05-15 20:02:52.543622", 483 | "module": "Payroll", 484 | "name": "Payroll Settings", 485 | "process_name": "Payroll Settings", 486 | "table_fssue": [] 487 | }, 488 | { 489 | "docstatus": 0, 490 | "doctype": "Estimation Process", 491 | "modified": "2024-05-15 14:45:38.295900", 492 | "module": "Accounts", 493 | "name": "Accounts Settings", 494 | "process_name": "Accounts Settings", 495 | "table_fssue": [] 496 | }, 497 | { 498 | "docstatus": 0, 499 | "doctype": "Estimation Process", 500 | "modified": "2024-05-15 14:45:38.300073", 501 | "module": "Accounts", 502 | "name": "Opening Balance of Accounts", 503 | "process_name": "Opening Balance of Accounts", 504 | "table_fssue": [] 505 | }, 506 | { 507 | "docstatus": 0, 508 | "doctype": "Estimation Process", 509 | "modified": "2024-05-15 14:45:38.310924", 510 | "module": "Accounts", 511 | "name": "Budgeting", 512 | "process_name": "Budgeting", 513 | "table_fssue": [] 514 | }, 515 | { 516 | "docstatus": 0, 517 | "doctype": "Estimation Process", 518 | "modified": "2024-05-15 14:45:38.319399", 519 | "module": "Accounts", 520 | "name": "Chart Of Accounts", 521 | "process_name": "Chart Of Accounts", 522 | "table_fssue": [] 523 | }, 524 | { 525 | "docstatus": 0, 526 | "doctype": "Estimation Process", 527 | "modified": "2024-05-15 14:45:38.323927", 528 | "module": "Accounts", 529 | "name": "Company Setup", 530 | "process_name": "Company Setup", 531 | "table_fssue": [] 532 | }, 533 | { 534 | "docstatus": 0, 535 | "doctype": "Estimation Process", 536 | "modified": "2024-05-15 14:45:38.272668", 537 | "module": "HR", 538 | "name": "Employee Life Cycle", 539 | "process_name": "Employee Life Cycle", 540 | "table_fssue": [] 541 | }, 542 | { 543 | "docstatus": 0, 544 | "doctype": "Estimation Process", 545 | "modified": "2024-05-15 14:45:38.277135", 546 | "module": "HR", 547 | "name": "Recruitment", 548 | "process_name": "Recruitment", 549 | "table_fssue": [] 550 | }, 551 | { 552 | "docstatus": 0, 553 | "doctype": "Estimation Process", 554 | "modified": "2024-05-15 14:45:38.281171", 555 | "module": "HR", 556 | "name": "Expense Claim", 557 | "process_name": "Expense Claim", 558 | "table_fssue": [] 559 | }, 560 | { 561 | "docstatus": 0, 562 | "doctype": "Estimation Process", 563 | "modified": "2024-05-15 14:45:38.284857", 564 | "module": "HR", 565 | "name": "Attendance", 566 | "process_name": "Attendance", 567 | "table_fssue": [] 568 | }, 569 | { 570 | "docstatus": 0, 571 | "doctype": "Estimation Process", 572 | "modified": "2024-05-15 14:45:38.292307", 573 | "module": "HR", 574 | "name": "Employee Setup", 575 | "process_name": "Employee Setup", 576 | "table_fssue": [] 577 | }, 578 | { 579 | "docstatus": 0, 580 | "doctype": "Estimation Process", 581 | "modified": "2024-05-15 14:45:38.315008", 582 | "module": "Accounts", 583 | "name": "Cost Center", 584 | "process_name": "Cost Center", 585 | "table_fssue": [] 586 | }, 587 | { 588 | "docstatus": 0, 589 | "doctype": "Estimation Process", 590 | "modified": "2024-05-15 14:45:38.157175", 591 | "module": "Selling", 592 | "name": "Customer Setup", 593 | "process_name": "Customer Setup", 594 | "table_fssue": [] 595 | }, 596 | { 597 | "docstatus": 0, 598 | "doctype": "Estimation Process", 599 | "modified": "2024-07-10 16:04:05.684365", 600 | "module": "Payroll", 601 | "name": "Payroll", 602 | "process_name": "Payroll", 603 | "table_fssue": [] 604 | }, 605 | { 606 | "docstatus": 0, 607 | "doctype": "Estimation Process", 608 | "modified": "2024-05-15 14:45:38.288520", 609 | "module": "HR", 610 | "name": "Leave Setup", 611 | "process_name": "Leave Setup", 612 | "table_fssue": [] 613 | }, 614 | { 615 | "docstatus": 0, 616 | "doctype": "Estimation Process", 617 | "modified": "2024-05-15 14:45:38.306727", 618 | "module": "Accounts", 619 | "name": "Taxes Setup", 620 | "process_name": "Taxes Setup", 621 | "table_fssue": [] 622 | }, 623 | { 624 | "docstatus": 0, 625 | "doctype": "Estimation Process", 626 | "modified": "2024-05-15 14:45:38.246070", 627 | "module": "Payroll", 628 | "name": "Tax Declarations", 629 | "process_name": "Tax Declarations", 630 | "table_fssue": [] 631 | } 632 | ] -------------------------------------------------------------------------------- /erpnext_price_estimation/fixtures/module.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "docstatus": 0, 4 | "doctype": "Module", 5 | "modified": "2024-06-07 17:18:24.084433", 6 | "module": "ERPNext Price Estimation", 7 | "name": "ERPNext Price Estimation" 8 | }, 9 | { 10 | "docstatus": 0, 11 | "doctype": "Module", 12 | "modified": "2024-06-07 17:18:24.110137", 13 | "module": "Subcontracting", 14 | "name": "Subcontracting" 15 | }, 16 | { 17 | "docstatus": 0, 18 | "doctype": "Module", 19 | "modified": "2024-06-07 17:18:24.116475", 20 | "module": "Bulk Transaction", 21 | "name": "Bulk Transaction" 22 | }, 23 | { 24 | "docstatus": 0, 25 | "doctype": "Module", 26 | "modified": "2024-06-07 17:18:24.120578", 27 | "module": "Telephony", 28 | "name": "Telephony" 29 | }, 30 | { 31 | "docstatus": 0, 32 | "doctype": "Module", 33 | "modified": "2024-06-07 17:18:24.125471", 34 | "module": "Communication", 35 | "name": "Communication" 36 | }, 37 | { 38 | "docstatus": 0, 39 | "doctype": "Module", 40 | "modified": "2024-06-07 17:18:24.129690", 41 | "module": "Quality Management", 42 | "name": "Quality Management" 43 | }, 44 | { 45 | "docstatus": 0, 46 | "doctype": "Module", 47 | "modified": "2024-06-07 17:18:24.133739", 48 | "module": "ERPNext Integrations", 49 | "name": "ERPNext Integrations" 50 | }, 51 | { 52 | "docstatus": 0, 53 | "doctype": "Module", 54 | "modified": "2024-06-07 17:18:24.137648", 55 | "module": "Regional", 56 | "name": "Regional" 57 | }, 58 | { 59 | "docstatus": 0, 60 | "doctype": "Module", 61 | "modified": "2024-06-07 17:18:24.142428", 62 | "module": "Maintenance", 63 | "name": "Maintenance" 64 | }, 65 | { 66 | "docstatus": 0, 67 | "doctype": "Module", 68 | "modified": "2024-06-07 17:18:24.146179", 69 | "module": "Portal", 70 | "name": "Portal" 71 | }, 72 | { 73 | "docstatus": 0, 74 | "doctype": "Module", 75 | "modified": "2024-06-07 17:18:24.150259", 76 | "module": "Assets", 77 | "name": "Assets" 78 | }, 79 | { 80 | "docstatus": 0, 81 | "doctype": "Module", 82 | "modified": "2024-06-07 17:18:24.153707", 83 | "module": "Utilities", 84 | "name": "Utilities" 85 | }, 86 | { 87 | "docstatus": 0, 88 | "doctype": "Module", 89 | "modified": "2024-06-07 17:18:24.157092", 90 | "module": "Support", 91 | "name": "Support" 92 | }, 93 | { 94 | "docstatus": 0, 95 | "doctype": "Module", 96 | "modified": "2024-06-07 17:18:24.162589", 97 | "module": "Stock", 98 | "name": "Stock" 99 | }, 100 | { 101 | "docstatus": 0, 102 | "doctype": "Module", 103 | "modified": "2024-06-07 17:18:24.166586", 104 | "module": "Manufacturing", 105 | "name": "Manufacturing" 106 | }, 107 | { 108 | "docstatus": 0, 109 | "doctype": "Module", 110 | "modified": "2024-06-07 17:18:24.170284", 111 | "module": "Setup", 112 | "name": "Setup" 113 | }, 114 | { 115 | "docstatus": 0, 116 | "doctype": "Module", 117 | "modified": "2024-06-07 17:18:24.174753", 118 | "module": "Selling", 119 | "name": "Selling" 120 | }, 121 | { 122 | "docstatus": 0, 123 | "doctype": "Module", 124 | "modified": "2024-06-07 17:18:24.178985", 125 | "module": "Projects", 126 | "name": "Projects" 127 | }, 128 | { 129 | "docstatus": 0, 130 | "doctype": "Module", 131 | "modified": "2024-06-07 17:18:24.182639", 132 | "module": "Buying", 133 | "name": "Buying" 134 | }, 135 | { 136 | "docstatus": 0, 137 | "doctype": "Module", 138 | "modified": "2024-06-07 17:18:24.186013", 139 | "module": "CRM", 140 | "name": "CRM" 141 | }, 142 | { 143 | "docstatus": 0, 144 | "doctype": "Module", 145 | "modified": "2024-06-07 17:18:24.189626", 146 | "module": "Accounts", 147 | "name": "Accounts" 148 | }, 149 | { 150 | "docstatus": 0, 151 | "doctype": "Module", 152 | "modified": "2024-06-07 17:18:24.193135", 153 | "module": "Automation", 154 | "name": "Automation" 155 | }, 156 | { 157 | "docstatus": 0, 158 | "doctype": "Module", 159 | "modified": "2024-06-07 17:18:24.196718", 160 | "module": "Social", 161 | "name": "Social" 162 | }, 163 | { 164 | "docstatus": 0, 165 | "doctype": "Module", 166 | "modified": "2024-06-07 17:18:24.200155", 167 | "module": "Contacts", 168 | "name": "Contacts" 169 | }, 170 | { 171 | "docstatus": 0, 172 | "doctype": "Module", 173 | "modified": "2024-06-07 17:18:24.204468", 174 | "module": "Printing", 175 | "name": "Printing" 176 | }, 177 | { 178 | "docstatus": 0, 179 | "doctype": "Module", 180 | "modified": "2024-06-07 17:18:24.209273", 181 | "module": "Integrations", 182 | "name": "Integrations" 183 | }, 184 | { 185 | "docstatus": 0, 186 | "doctype": "Module", 187 | "modified": "2024-06-07 17:18:24.213316", 188 | "module": "Desk", 189 | "name": "Desk" 190 | }, 191 | { 192 | "docstatus": 0, 193 | "doctype": "Module", 194 | "modified": "2024-06-07 17:18:24.217999", 195 | "module": "Geo", 196 | "name": "Geo" 197 | }, 198 | { 199 | "docstatus": 0, 200 | "doctype": "Module", 201 | "modified": "2024-06-07 17:18:24.223411", 202 | "module": "Custom", 203 | "name": "Custom" 204 | }, 205 | { 206 | "docstatus": 0, 207 | "doctype": "Module", 208 | "modified": "2024-06-07 17:18:24.228894", 209 | "module": "Email", 210 | "name": "Email" 211 | }, 212 | { 213 | "docstatus": 0, 214 | "doctype": "Module", 215 | "modified": "2024-06-07 17:18:24.233289", 216 | "module": "Workflow", 217 | "name": "Workflow" 218 | }, 219 | { 220 | "docstatus": 0, 221 | "doctype": "Module", 222 | "modified": "2024-06-07 17:18:24.237454", 223 | "module": "Website", 224 | "name": "Website" 225 | }, 226 | { 227 | "docstatus": 0, 228 | "doctype": "Module", 229 | "modified": "2024-06-07 17:18:24.241566", 230 | "module": "Core", 231 | "name": "Core" 232 | }, 233 | { 234 | "docstatus": 0, 235 | "doctype": "Module", 236 | "modified": "2024-06-07 17:18:24.245284", 237 | "module": "Healthcare", 238 | "name": "Healthcare" 239 | }, 240 | { 241 | "docstatus": 0, 242 | "doctype": "Module", 243 | "modified": "2024-06-07 17:18:24.249188", 244 | "module": "Education", 245 | "name": "Education" 246 | }, 247 | { 248 | "docstatus": 0, 249 | "doctype": "Module", 250 | "modified": "2024-07-10 15:21:57.152319", 251 | "module": "HR", 252 | "name": "HR" 253 | }, 254 | { 255 | "docstatus": 0, 256 | "doctype": "Module", 257 | "modified": "2024-07-10 15:22:03.540501", 258 | "module": "Payroll", 259 | "name": "Payroll" 260 | } 261 | ] -------------------------------------------------------------------------------- /erpnext_price_estimation/hooks.py: -------------------------------------------------------------------------------- 1 | app_name = "erpnext_price_estimation" 2 | app_title = "ERPNext Price Estimation" 3 | app_publisher = "frappe solutions" 4 | app_description = "ERPNext Price Estimation" 5 | app_email = "poorvi@frappe.io" 6 | app_license = "mit" 7 | 8 | fixtures = [ 9 | "Estimation Process", 10 | "Estimation Document", 11 | "Module" 12 | ] 13 | -------------------------------------------------------------------------------- /erpnext_price_estimation/modules.txt: -------------------------------------------------------------------------------- 1 | ERPNext Price Estimation -------------------------------------------------------------------------------- /erpnext_price_estimation/patches.txt: -------------------------------------------------------------------------------- 1 | [pre_model_sync] 2 | # Patches added in this section will be executed before doctypes are migrated 3 | # Read docs to understand patches: https://frappeframework.com/docs/v14/user/en/database-migrations 4 | 5 | [post_model_sync] 6 | # Patches added in this section will be executed after doctypes are migrated -------------------------------------------------------------------------------- /erpnext_price_estimation/public/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/erpnext_price_estimation/09f039fd7c76fc7f5e4bc18b843272ceac75ce8c/erpnext_price_estimation/public/.gitkeep -------------------------------------------------------------------------------- /erpnext_price_estimation/templates/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/erpnext_price_estimation/09f039fd7c76fc7f5e4bc18b843272ceac75ce8c/erpnext_price_estimation/templates/__init__.py -------------------------------------------------------------------------------- /erpnext_price_estimation/templates/pages/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frappe/erpnext_price_estimation/09f039fd7c76fc7f5e4bc18b843272ceac75ce8c/erpnext_price_estimation/templates/pages/__init__.py -------------------------------------------------------------------------------- /license.txt: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) [year] [fullname] 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /pyproject.toml: -------------------------------------------------------------------------------- 1 | [project] 2 | name = "erpnext_price_estimation" 3 | authors = [ 4 | { name = "frappe solutions", email = "poorvi@frappe.io"} 5 | ] 6 | description = "ERPNext Price Estimation" 7 | requires-python = ">=3.10" 8 | readme = "README.md" 9 | dynamic = ["version"] 10 | dependencies = [ 11 | # "frappe~=15.0.0" # Installed and managed by bench. 12 | ] 13 | 14 | [build-system] 15 | requires = ["flit_core >=3.4,<4"] 16 | build-backend = "flit_core.buildapi" 17 | 18 | # These dependencies are only installed when developer mode is enabled 19 | [tool.bench.dev-dependencies] 20 | # package_name = "~=1.1.0" 21 | --------------------------------------------------------------------------------