Merge branch 'develop' into cont-temp
diff --git a/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts_with_account_number.py b/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts_with_account_number.py
index 6c83e3b..acb11e5 100644
--- a/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts_with_account_number.py
+++ b/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts_with_account_number.py
@@ -245,6 +245,9 @@
"account_number": "2200"
},
_("Duties and Taxes"): {
+ _("TDS Payable"): {
+ "account_number": "2310"
+ },
"account_type": "Tax",
"is_group": 1,
"account_number": "2300"
diff --git a/erpnext/accounts/doctype/bank_transaction/test_bank_transaction.py b/erpnext/accounts/doctype/bank_transaction/test_bank_transaction.py
index 2754633..e9fc5f0 100644
--- a/erpnext/accounts/doctype/bank_transaction/test_bank_transaction.py
+++ b/erpnext/accounts/doctype/bank_transaction/test_bank_transaction.py
@@ -9,11 +9,13 @@
from erpnext.accounts.doctype.purchase_invoice.test_purchase_invoice import make_purchase_invoice
from erpnext.accounts.doctype.payment_entry.test_payment_entry import get_payment_entry
from erpnext.accounts.page.bank_reconciliation.bank_reconciliation import reconcile, get_linked_payments
+from erpnext.accounts.doctype.pos_profile.test_pos_profile import make_pos_profile
test_dependencies = ["Item", "Cost Center"]
class TestBankTransaction(unittest.TestCase):
def setUp(self):
+ make_pos_profile()
add_transactions()
add_payments()
@@ -27,6 +29,9 @@
frappe.db.sql("""delete from `tabPayment Entry Reference`""")
frappe.db.sql("""delete from `tabPayment Entry`""")
+ # Delete POS Profile
+ frappe.db.sql("delete from `tabPOS Profile`")
+
frappe.flags.test_bank_transactions_created = False
frappe.flags.test_payments_created = False
diff --git a/erpnext/accounts/doctype/pos_profile/test_pos_profile.py b/erpnext/accounts/doctype/pos_profile/test_pos_profile.py
index edf8659..62dc1fc 100644
--- a/erpnext/accounts/doctype/pos_profile/test_pos_profile.py
+++ b/erpnext/accounts/doctype/pos_profile/test_pos_profile.py
@@ -70,6 +70,7 @@
""".format(cond=cond), tuple([company] + args_list), as_dict=1)
def make_pos_profile(**args):
+ frappe.db.sql("delete from `tabPOS Payment Method`")
frappe.db.sql("delete from `tabPOS Profile`")
args = frappe._dict(args)
diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
index 0b16763..81f425f 100644
--- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
+++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
@@ -405,6 +405,8 @@
from erpnext.stock.get_item_details import get_pos_profile_item_details, get_pos_profile
if not self.pos_profile:
pos_profile = get_pos_profile(self.company) or {}
+ if not pos_profile:
+ frappe.throw(_("No POS Profile found. Please create a New POS Profile first"))
self.pos_profile = pos_profile.get('name')
pos = {}
diff --git a/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py b/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py
index 9660c95..46e954d 100644
--- a/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py
+++ b/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py
@@ -690,7 +690,8 @@
self.assertTrue(gle)
def test_pos_gl_entry_with_perpetual_inventory(self):
- make_pos_profile()
+ make_pos_profile(company="_Test Company with perpetual inventory", income_account = "Sales - TCP1",
+ expense_account = "Cost of Goods Sold - TCP1", warehouse="Stores - TCP1", cost_center = "Main - TCP1", write_off_account="_Test Write Off - TCP1")
pr = make_purchase_receipt(company= "_Test Company with perpetual inventory", item_code= "_Test FG Item",warehouse= "Stores - TCP1",cost_center= "Main - TCP1")
@@ -746,7 +747,8 @@
self.assertEqual(pos_return.get('payments')[0].amount, -1000)
def test_pos_change_amount(self):
- make_pos_profile()
+ make_pos_profile(company="_Test Company with perpetual inventory", income_account = "Sales - TCP1",
+ expense_account = "Cost of Goods Sold - TCP1", warehouse="Stores - TCP1", cost_center = "Main - TCP1", write_off_account="_Test Write Off - TCP1")
pr = make_purchase_receipt(company= "_Test Company with perpetual inventory",
item_code= "_Test FG Item",warehouse= "Stores - TCP1", cost_center= "Main - TCP1")
diff --git a/erpnext/accounts/utils.py b/erpnext/accounts/utils.py
index 53677cd..550aaef 100644
--- a/erpnext/accounts/utils.py
+++ b/erpnext/accounts/utils.py
@@ -78,7 +78,10 @@
else:
return ((fy.name, fy.year_start_date, fy.year_end_date),)
- error_msg = _("""{0} {1} not in any active Fiscal Year.""").format(label, formatdate(transaction_date))
+ error_msg = _("""{0} {1} is not in any active Fiscal Year""").format(label, formatdate(transaction_date))
+ if company:
+ error_msg = _("""{0} for {1}""").format(error_msg, frappe.bold(company))
+
if verbose==1: frappe.msgprint(error_msg)
raise FiscalYearError(error_msg)
diff --git a/erpnext/buying/doctype/purchase_order/purchase_order.json b/erpnext/buying/doctype/purchase_order/purchase_order.json
index 71231f6..75da71c 100644
--- a/erpnext/buying/doctype/purchase_order/purchase_order.json
+++ b/erpnext/buying/doctype/purchase_order/purchase_order.json
@@ -168,6 +168,7 @@
"bold": 1,
"fieldname": "supplier",
"fieldtype": "Link",
+ "in_global_search": 1,
"in_standard_filter": 1,
"label": "Supplier",
"oldfieldname": "supplier",
@@ -1106,7 +1107,7 @@
"idx": 105,
"is_submittable": 1,
"links": [],
- "modified": "2020-10-30 13:58:14.697921",
+ "modified": "2020-12-03 16:46:44.229351",
"modified_by": "Administrator",
"module": "Buying",
"name": "Purchase Order",
diff --git a/erpnext/controllers/selling_controller.py b/erpnext/controllers/selling_controller.py
index 515239a..4dbd7bf 100644
--- a/erpnext/controllers/selling_controller.py
+++ b/erpnext/controllers/selling_controller.py
@@ -42,7 +42,7 @@
self.validate_max_discount()
self.validate_selling_price()
self.set_qty_as_per_stock_uom()
- self.set_po_nos()
+ self.set_po_nos(for_validate=True)
self.set_gross_profit()
set_default_income_account_for_item(self)
self.set_customer_address()
@@ -370,20 +370,28 @@
}))
self.make_sl_entries(sl_entries)
- def set_po_nos(self):
+ def set_po_nos(self, for_validate=False):
if self.doctype == 'Sales Invoice' and hasattr(self, "items"):
+ if for_validate and self.po_no:
+ return
self.set_pos_for_sales_invoice()
if self.doctype == 'Delivery Note' and hasattr(self, "items"):
+ if for_validate and self.po_no:
+ return
self.set_pos_for_delivery_note()
def set_pos_for_sales_invoice(self):
po_nos = []
+ if self.po_no:
+ po_nos.append(self.po_no)
self.get_po_nos('Sales Order', 'sales_order', po_nos)
self.get_po_nos('Delivery Note', 'delivery_note', po_nos)
self.po_no = ', '.join(list(set(x.strip() for x in ','.join(po_nos).split(','))))
def set_pos_for_delivery_note(self):
po_nos = []
+ if self.po_no:
+ po_nos.append(self.po_no)
self.get_po_nos('Sales Order', 'against_sales_order', po_nos)
self.get_po_nos('Sales Invoice', 'against_sales_invoice', po_nos)
self.po_no = ', '.join(list(set(x.strip() for x in ','.join(po_nos).split(','))))
diff --git a/erpnext/controllers/taxes_and_totals.py b/erpnext/controllers/taxes_and_totals.py
index 81d07c1..ad58f13 100644
--- a/erpnext/controllers/taxes_and_totals.py
+++ b/erpnext/controllers/taxes_and_totals.py
@@ -641,7 +641,8 @@
if default_mode_of_payment:
self.doc.append('payments', {
'mode_of_payment': default_mode_of_payment.mode_of_payment,
- 'amount': total_amount_to_pay
+ 'amount': total_amount_to_pay,
+ 'default': 1
})
else:
self.doc.is_pos = 0
diff --git a/erpnext/healthcare/doctype/fee_validity/test_fee_validity.py b/erpnext/healthcare/doctype/fee_validity/test_fee_validity.py
index cdf692e..7e7fd82 100644
--- a/erpnext/healthcare/doctype/fee_validity/test_fee_validity.py
+++ b/erpnext/healthcare/doctype/fee_validity/test_fee_validity.py
@@ -7,6 +7,7 @@
import unittest
from frappe.utils import nowdate, add_days
from erpnext.healthcare.doctype.patient_appointment.test_patient_appointment import create_healthcare_docs, create_appointment, create_healthcare_service_items
+from erpnext.accounts.doctype.pos_profile.test_pos_profile import make_pos_profile
test_dependencies = ["Company"]
@@ -15,6 +16,7 @@
frappe.db.sql("""delete from `tabPatient Appointment`""")
frappe.db.sql("""delete from `tabFee Validity`""")
frappe.db.sql("""delete from `tabPatient`""")
+ make_pos_profile()
def test_fee_validity(self):
item = create_healthcare_service_items()
diff --git a/erpnext/healthcare/doctype/patient_appointment/test_patient_appointment.py b/erpnext/healthcare/doctype/patient_appointment/test_patient_appointment.py
index eeed157..3df7ba1 100644
--- a/erpnext/healthcare/doctype/patient_appointment/test_patient_appointment.py
+++ b/erpnext/healthcare/doctype/patient_appointment/test_patient_appointment.py
@@ -7,12 +7,14 @@
from erpnext.healthcare.doctype.patient_appointment.patient_appointment import update_status, make_encounter
from frappe.utils import nowdate, add_days
from frappe.utils.make_random import get_random
+from erpnext.accounts.doctype.pos_profile.test_pos_profile import make_pos_profile
class TestPatientAppointment(unittest.TestCase):
def setUp(self):
frappe.db.sql("""delete from `tabPatient Appointment`""")
frappe.db.sql("""delete from `tabFee Validity`""")
frappe.db.sql("""delete from `tabPatient Encounter`""")
+ make_pos_profile()
def test_status(self):
patient, medical_department, practitioner = create_healthcare_docs()
diff --git a/erpnext/healthcare/doctype/patient_medical_record/test_patient_medical_record.py b/erpnext/healthcare/doctype/patient_medical_record/test_patient_medical_record.py
index aa85a23..419d956 100644
--- a/erpnext/healthcare/doctype/patient_medical_record/test_patient_medical_record.py
+++ b/erpnext/healthcare/doctype/patient_medical_record/test_patient_medical_record.py
@@ -6,11 +6,13 @@
import frappe
from frappe.utils import nowdate
from erpnext.healthcare.doctype.patient_appointment.test_patient_appointment import create_encounter, create_healthcare_docs, create_appointment
+from erpnext.accounts.doctype.pos_profile.test_pos_profile import make_pos_profile
class TestPatientMedicalRecord(unittest.TestCase):
def setUp(self):
frappe.db.set_value('Healthcare Settings', None, 'enable_free_follow_ups', 0)
frappe.db.set_value('Healthcare Settings', None, 'automate_appointment_invoicing', 1)
+ make_pos_profile()
def test_medical_record(self):
patient, medical_department, practitioner = create_healthcare_docs()
diff --git a/erpnext/hooks.py b/erpnext/hooks.py
index 9873456..1e3bb6a 100644
--- a/erpnext/hooks.py
+++ b/erpnext/hooks.py
@@ -441,42 +441,43 @@
{"doctype": "Sales Order", "index": 8},
{"doctype": "Quotation", "index": 9},
{"doctype": "Work Order", "index": 10},
- {"doctype": "Purchase Receipt", "index": 11},
- {"doctype": "Purchase Invoice", "index": 12},
- {"doctype": "Delivery Note", "index": 13},
- {"doctype": "Stock Entry", "index": 14},
- {"doctype": "Material Request", "index": 15},
- {"doctype": "Delivery Trip", "index": 16},
- {"doctype": "Pick List", "index": 17},
- {"doctype": "Salary Slip", "index": 18},
- {"doctype": "Leave Application", "index": 19},
- {"doctype": "Expense Claim", "index": 20},
- {"doctype": "Payment Entry", "index": 21},
- {"doctype": "Lead", "index": 22},
- {"doctype": "Opportunity", "index": 23},
- {"doctype": "Item Price", "index": 24},
- {"doctype": "Purchase Taxes and Charges Template", "index": 25},
- {"doctype": "Sales Taxes and Charges", "index": 26},
- {"doctype": "Asset", "index": 27},
- {"doctype": "Project", "index": 28},
- {"doctype": "Task", "index": 29},
- {"doctype": "Timesheet", "index": 30},
- {"doctype": "Issue", "index": 31},
- {"doctype": "Serial No", "index": 32},
- {"doctype": "Batch", "index": 33},
- {"doctype": "Branch", "index": 34},
- {"doctype": "Department", "index": 35},
- {"doctype": "Employee Grade", "index": 36},
- {"doctype": "Designation", "index": 37},
- {"doctype": "Job Opening", "index": 38},
- {"doctype": "Job Applicant", "index": 39},
- {"doctype": "Job Offer", "index": 40},
- {"doctype": "Salary Structure Assignment", "index": 41},
- {"doctype": "Appraisal", "index": 42},
- {"doctype": "Loan", "index": 43},
- {"doctype": "Maintenance Schedule", "index": 44},
- {"doctype": "Maintenance Visit", "index": 45},
- {"doctype": "Warranty Claim", "index": 46},
+ {"doctype": "Purchase Order", "index": 11},
+ {"doctype": "Purchase Receipt", "index": 12},
+ {"doctype": "Purchase Invoice", "index": 13},
+ {"doctype": "Delivery Note", "index": 14},
+ {"doctype": "Stock Entry", "index": 15},
+ {"doctype": "Material Request", "index": 16},
+ {"doctype": "Delivery Trip", "index": 17},
+ {"doctype": "Pick List", "index": 18},
+ {"doctype": "Salary Slip", "index": 19},
+ {"doctype": "Leave Application", "index": 20},
+ {"doctype": "Expense Claim", "index": 21},
+ {"doctype": "Payment Entry", "index": 22},
+ {"doctype": "Lead", "index": 23},
+ {"doctype": "Opportunity", "index": 24},
+ {"doctype": "Item Price", "index": 25},
+ {"doctype": "Purchase Taxes and Charges Template", "index": 26},
+ {"doctype": "Sales Taxes and Charges", "index": 27},
+ {"doctype": "Asset", "index": 28},
+ {"doctype": "Project", "index": 29},
+ {"doctype": "Task", "index": 30},
+ {"doctype": "Timesheet", "index": 31},
+ {"doctype": "Issue", "index": 32},
+ {"doctype": "Serial No", "index": 33},
+ {"doctype": "Batch", "index": 34},
+ {"doctype": "Branch", "index": 35},
+ {"doctype": "Department", "index": 36},
+ {"doctype": "Employee Grade", "index": 37},
+ {"doctype": "Designation", "index": 38},
+ {"doctype": "Job Opening", "index": 39},
+ {"doctype": "Job Applicant", "index": 40},
+ {"doctype": "Job Offer", "index": 41},
+ {"doctype": "Salary Structure Assignment", "index": 42},
+ {"doctype": "Appraisal", "index": 43},
+ {"doctype": "Loan", "index": 44},
+ {"doctype": "Maintenance Schedule", "index": 45},
+ {"doctype": "Maintenance Visit", "index": 46},
+ {"doctype": "Warranty Claim", "index": 47},
],
"Healthcare": [
{'doctype': 'Patient', 'index': 1},
diff --git a/erpnext/manufacturing/report/production_planning_report/production_planning_report.py b/erpnext/manufacturing/report/production_planning_report/production_planning_report.py
index ebc01c6..806d268 100644
--- a/erpnext/manufacturing/report/production_planning_report/production_planning_report.py
+++ b/erpnext/manufacturing/report/production_planning_report/production_planning_report.py
@@ -124,7 +124,7 @@
if self.filters.include_subassembly_raw_materials else "(bom_item.qty / bom.quantity)")
raw_materials = frappe.db.sql(""" SELECT bom_item.parent, bom_item.item_code,
- bom_item.item_name as raw_material_name, {0} as required_qty
+ bom_item.item_name as raw_material_name, {0} as required_qty_per_unit
FROM
`tabBOM` as bom, `tab{1}` as bom_item
WHERE
@@ -208,7 +208,7 @@
warehouses = self.mrp_warehouses or []
for d in self.raw_materials_dict.get(key):
if self.filters.based_on != "Work Order":
- d.required_qty = d.required_qty * data.qty_to_manufacture
+ d.required_qty = d.required_qty_per_unit * data.qty_to_manufacture
if not warehouses:
warehouses = [data.warehouse]
diff --git a/erpnext/patches.txt b/erpnext/patches.txt
index a5c5254..86ac613 100644
--- a/erpnext/patches.txt
+++ b/erpnext/patches.txt
@@ -739,4 +739,5 @@
execute:frappe.delete_doc("Report", "Quoted Item Comparison")
erpnext.patches.v13_0.updates_for_multi_currency_payroll
erpnext.patches.v13_0.create_leave_policy_assignment_based_on_employee_current_leave_policy
+erpnext.patches.v13_0.add_po_to_global_search
erpnext.patches.v13_0.update_returned_qty_in_pr_dn
diff --git a/erpnext/patches/v13_0/add_po_to_global_search.py b/erpnext/patches/v13_0/add_po_to_global_search.py
new file mode 100644
index 0000000..1c60b18
--- /dev/null
+++ b/erpnext/patches/v13_0/add_po_to_global_search.py
@@ -0,0 +1,17 @@
+from __future__ import unicode_literals
+import frappe
+
+
+def execute():
+ global_search_settings = frappe.get_single("Global Search Settings")
+
+ if "Purchase Order" in (
+ dt.document_type for dt in global_search_settings.allowed_in_global_search
+ ):
+ return
+
+ global_search_settings.append(
+ "allowed_in_global_search", {"document_type": "Purchase Order"}
+ )
+
+ global_search_settings.save(ignore_permissions=True)
diff --git a/erpnext/patches/v13_0/rename_issue_doctype_fields.py b/erpnext/patches/v13_0/rename_issue_doctype_fields.py
index 96a6362..fa1dfed 100644
--- a/erpnext/patches/v13_0/rename_issue_doctype_fields.py
+++ b/erpnext/patches/v13_0/rename_issue_doctype_fields.py
@@ -29,7 +29,7 @@
'response_by_variance': response_by_variance,
'resolution_by_variance': resolution_by_variance,
'first_response_time': mins_to_first_response
- })
+ }, update_modified=False)
# commit after every 100 updates
count += 1
if count%100 == 0:
@@ -44,7 +44,7 @@
count = 0
for entry in opportunities:
mins_to_first_response = convert_to_seconds(entry.mins_to_first_response, 'Minutes')
- frappe.db.set_value('Opportunity', entry.name, 'first_response_time', mins_to_first_response)
+ frappe.db.set_value('Opportunity', entry.name, 'first_response_time', mins_to_first_response, update_modified=False)
# commit after every 100 updates
count += 1
if count%100 == 0:
diff --git a/erpnext/payroll/doctype/payroll_entry/payroll_entry.py b/erpnext/payroll/doctype/payroll_entry/payroll_entry.py
index 67ee231..8c2d974 100644
--- a/erpnext/payroll/doctype/payroll_entry/payroll_entry.py
+++ b/erpnext/payroll/doctype/payroll_entry/payroll_entry.py
@@ -289,7 +289,9 @@
jv_name = journal_entry.name
self.update_salary_slip_status(jv_name = jv_name)
except Exception as e:
- frappe.msgprint(e)
+ if type(e) in (str, list, tuple):
+ frappe.msgprint(e)
+ raise
return jv_name
diff --git a/erpnext/selling/doctype/sales_order/sales_order.js b/erpnext/selling/doctype/sales_order/sales_order.js
index 1d890bb..d4fb07c 100644
--- a/erpnext/selling/doctype/sales_order/sales_order.js
+++ b/erpnext/selling/doctype/sales_order/sales_order.js
@@ -8,7 +8,7 @@
frm.custom_make_buttons = {
'Delivery Note': 'Delivery Note',
'Pick List': 'Pick List',
- 'Sales Invoice': 'Invoice',
+ 'Sales Invoice': 'Sales Invoice',
'Material Request': 'Material Request',
'Purchase Order': 'Purchase Order',
'Project': 'Project',
diff --git a/erpnext/setup/desk_page/home/home.json b/erpnext/setup/desk_page/home/home.json
index 9cf9f41..0fbd0ec 100644
--- a/erpnext/setup/desk_page/home/home.json
+++ b/erpnext/setup/desk_page/home/home.json
@@ -2,26 +2,6 @@
"cards": [
{
"hidden": 0,
- "label": "Healthcare",
- "links": "[\n {\n \"label\": \"Patient\",\n \"name\": \"Patient\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Diagnosis\",\n \"name\": \"Diagnosis\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n }\n]"
- },
- {
- "hidden": 0,
- "label": "Agriculture",
- "links": "[\n {\n \"label\": \"Crop\",\n \"name\": \"Crop\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Crop Cycle\",\n \"name\": \"Crop Cycle\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Location\",\n \"name\": \"Location\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Fertilizer\",\n \"name\": \"Fertilizer\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n }\n]"
- },
- {
- "hidden": 0,
- "label": "Education",
- "links": "[\n {\n \"label\": \"Student\",\n \"name\": \"Student\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Course\",\n \"name\": \"Course\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Instructor\",\n \"name\": \"Instructor\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Room\",\n \"name\": \"Room\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n }\n]"
- },
- {
- "hidden": 0,
- "label": "Non Profit",
- "links": "[\n {\n \"description\": \"Member information.\",\n \"label\": \"Member\",\n \"name\": \"Member\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"description\": \"Volunteer information.\",\n \"label\": \"Volunteer\",\n \"name\": \"Volunteer\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"description\": \"Chapter information.\",\n \"label\": \"Chapter\",\n \"name\": \"Chapter\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"description\": \"Donor information.\",\n \"label\": \"Donor\",\n \"name\": \"Donor\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n }\n]"
- },
- {
- "hidden": 0,
"label": "Stock",
"links": "[\n {\n \"label\": \"Warehouse\",\n \"name\": \"Warehouse\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Brand\",\n \"name\": \"Brand\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Unit of Measure (UOM)\",\n \"name\": \"UOM\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Stock Reconciliation\",\n \"name\": \"Stock Reconciliation\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n }\n]"
},
@@ -54,10 +34,11 @@
"docstatus": 0,
"doctype": "Desk Page",
"extends_another_page": 0,
+ "hide_custom": 0,
"idx": 0,
"is_standard": 1,
"label": "Home",
- "modified": "2020-05-11 10:20:37.358701",
+ "modified": "2020-12-07 14:22:38.667767",
"modified_by": "Administrator",
"module": "Setup",
"name": "Home",
@@ -96,4 +77,4 @@
"type": "Page"
}
]
-}
\ No newline at end of file
+}