From f14b809ab55f793acee330d0f6258d994c43cefd Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Thu, 3 Apr 2014 14:30:42 +0530 Subject: [PATCH] frappe/frappe#478, more changes, removed bean --- .../SalesInvoice/SalesInvoice.html | 4 +- erpnext/accounts/doctype/account/account.py | 8 ++-- .../accounts_settings/accounts_settings.py | 4 +- .../budget_distribution/test_records.json | 45 ++++++++++++++++++- .../chart_of_accounts/import_charts.py | 4 +- .../doctype/cost_center/cost_center.py | 2 +- .../doctype/fiscal_year/test_fiscal_year.py | 2 + .../journal_voucher/journal_voucher.py | 10 ++--- .../purchase_taxes_and_charges.py | 2 +- .../purchase_taxes_and_charges_master.py | 2 +- .../doctype/sales_invoice/sales_invoice.py | 10 ++--- .../sales_invoice/test_sales_invoice.py | 2 +- .../sales_taxes_and_charges.py | 2 +- .../sales_taxes_and_charges_master.py | 2 +- .../doctype/shipping_rule/shipping_rule.py | 2 +- erpnext/accounts/party.py | 6 +-- .../doctype/purchase_order/purchase_order.py | 8 ++-- .../purchase_order/test_purchase_order.py | 16 +++---- .../supplier_quotation/supplier_quotation.py | 6 +-- erpnext/controllers/accounts_controller.py | 19 ++++---- erpnext/controllers/selling_controller.py | 4 +- erpnext/home/__init__.py | 2 +- .../hr/doctype/department/test_records.json | 5 ++- .../hr/doctype/hr_settings/hr_settings.json | 2 +- .../job_applicant/get_job_applications.py | 2 +- .../leave_application/leave_application.py | 2 +- .../doctype/salary_manager/salary_manager.py | 4 +- .../production_order/production_order.py | 2 +- .../production_order/test_production_order.py | 12 ++--- .../production_planning_tool.py | 2 +- erpnext/selling/doctype/lead/get_leads.py | 4 +- erpnext/selling/doctype/lead/lead.py | 9 ++-- erpnext/selling/doctype/lead/test_lead.py | 4 +- .../doctype/sales_order/sales_order.py | 12 ++--- .../doctype/sales_order/test_sales_order.py | 7 ++- erpnext/setup/doctype/company/company.py | 10 ++--- erpnext/setup/doctype/company/test_company.py | 4 +- .../global_defaults/global_defaults.py | 10 ++--- .../doctype/item_group/test_item_group.py | 6 +-- .../doctype/naming_series/naming_series.py | 2 +- erpnext/setup/install.py | 2 +- .../setup/page/setup_wizard/setup_wizard.py | 2 +- .../doctype/delivery_note/delivery_note.py | 3 +- .../doctype/item_price/test_item_price.py | 4 +- .../landed_cost_wizard/landed_cost_wizard.py | 26 +++++------ .../material_request/material_request.py | 14 +++--- .../doctype/packing_slip/packing_slip.py | 4 +- .../purchase_receipt/purchase_receipt.py | 4 +- erpnext/stock/doctype/serial_no/serial_no.py | 2 +- .../stock/doctype/serial_no/test_serial_no.py | 2 +- .../stock/doctype/stock_entry/stock_entry.py | 34 +++++++------- .../doctype/stock_entry/test_stock_entry.py | 9 ++-- .../stock_ledger_entry/stock_ledger_entry.py | 2 +- .../stock_uom_replace_utility.py | 6 +-- erpnext/stock/doctype/warehouse/warehouse.py | 16 +++---- erpnext/stock/get_item_details.py | 32 ++++++------- erpnext/stock/utils.py | 8 ++-- .../maintenance_schedule.py | 6 +-- .../support_ticket/get_support_mails.py | 4 +- 59 files changed, 243 insertions(+), 198 deletions(-) diff --git a/erpnext/accounts/Print Format/SalesInvoice/SalesInvoice.html b/erpnext/accounts/Print Format/SalesInvoice/SalesInvoice.html index d4a49ef503..8dc39f9482 100644 --- a/erpnext/accounts/Print Format/SalesInvoice/SalesInvoice.html +++ b/erpnext/accounts/Print Format/SalesInvoice/SalesInvoice.html @@ -65,7 +65,7 @@ Basic Rate Amount - {%- for row in doclist.get({"doctype":"Sales Invoice Item"}) %} + {%- for row in doc.get({"doctype":"Sales Invoice Item"}) %} {{ row.idx }} {{ row.item_name }} @@ -106,7 +106,7 @@ utils.fmt_money(doc.net_total_export, currency=doc.currency) }} - {%- for charge in doclist.get({"doctype":"Sales Taxes and Charges"}) -%} + {%- for charge in doc.get({"doctype":"Sales Taxes and Charges"}) -%} {%- if not charge.included_in_print_rate -%} {{ charge.description }} diff --git a/erpnext/accounts/doctype/account/account.py b/erpnext/accounts/doctype/account/account.py index 094edd0d2c..59637a5979 100644 --- a/erpnext/accounts/doctype/account/account.py +++ b/erpnext/accounts/doctype/account/account.py @@ -40,13 +40,13 @@ class Account(Document): ["name", "group_or_ledger", "report_type"], as_dict=1) if not par: throw(_("Parent account does not exists")) - elif par[0]["name"] == self.name: + elif par["name"] == self.name: throw(_("You can not assign itself as parent account")) - elif par[0]["group_or_ledger"] != 'Group': + elif par["group_or_ledger"] != 'Group': throw(_("Parent account can not be a ledger")) - if par[0]["report_type"]: - self.report_type = par[0]["report_type"] + if par["report_type"]: + self.report_type = par["report_type"] def validate_duplicate_account(self): if self.get('__islocal') or not self.name: diff --git a/erpnext/accounts/doctype/accounts_settings/accounts_settings.py b/erpnext/accounts/doctype/accounts_settings/accounts_settings.py index bc950d59af..b7288e0469 100644 --- a/erpnext/accounts/doctype/accounts_settings/accounts_settings.py +++ b/erpnext/accounts/doctype/accounts_settings/accounts_settings.py @@ -25,5 +25,5 @@ class AccountsSettings(Document): frappe.throw(_("Company is missing in following warehouses") + ": \n" + "\n".join(warehouse_with_no_company)) for wh in warehouse_list: - wh_bean = frappe.get_doc("Warehouse", wh.name) - wh_bean.save() \ No newline at end of file + wh_doc = frappe.get_doc("Warehouse", wh.name) + wh_doc.save() \ No newline at end of file diff --git a/erpnext/accounts/doctype/budget_distribution/test_records.json b/erpnext/accounts/doctype/budget_distribution/test_records.json index 0637a088a0..7e8c640dd7 100644 --- a/erpnext/accounts/doctype/budget_distribution/test_records.json +++ b/erpnext/accounts/doctype/budget_distribution/test_records.json @@ -1 +1,44 @@ -[] \ No newline at end of file +[{ + "doctype": "Budget Distribution", + "distribution_id": "_Test Distribution", + "fiscal_year": "_Test Fiscal Year 2013", + "budget_distribution_details": [ + { + "month": "January", + "percentage_allocation": "8" + }, { + "month": "February", + "percentage_allocation": "8" + }, { + "month": "March", + "percentage_allocation": "8" + }, { + "month": "April", + "percentage_allocation": "8" + }, { + "month": "May", + "percentage_allocation": "8" + }, { + "month": "June", + "percentage_allocation": "8" + }, { + "month": "July", + "percentage_allocation": "8" + }, { + "month": "August", + "percentage_allocation": "8" + }, { + "month": "September", + "percentage_allocation": "8" + }, { + "month": "October", + "percentage_allocation": "8" + }, { + "month": "November", + "percentage_allocation": "10" + }, { + "month": "December", + "percentage_allocation": "10" + } + ] +}] diff --git a/erpnext/accounts/doctype/chart_of_accounts/import_charts.py b/erpnext/accounts/doctype/chart_of_accounts/import_charts.py index fd36bf8a86..9e60551665 100644 --- a/erpnext/accounts/doctype/chart_of_accounts/import_charts.py +++ b/erpnext/accounts/doctype/chart_of_accounts/import_charts.py @@ -13,13 +13,13 @@ def import_charts(): chart = json.loads(f.read()) country = frappe.db.get_value("Country", {"code": fname.split("_", 1)[0]}) if country: - bean = frappe.get_doc({ + doc = frappe.get_doc({ "doctype":"Chart of Accounts", "chart_name": chart.get("name"), "source_file": fname, "country": country }).insert() - print bean.name.encode("utf-8") + print doc.name.encode("utf-8") else: print "No chart for: " + chart.get("name").encode("utf-8") diff --git a/erpnext/accounts/doctype/cost_center/cost_center.py b/erpnext/accounts/doctype/cost_center/cost_center.py index ac69e75f13..7013ffb30d 100644 --- a/erpnext/accounts/doctype/cost_center/cost_center.py +++ b/erpnext/accounts/doctype/cost_center/cost_center.py @@ -13,7 +13,7 @@ class CostCenter(DocTypeNestedSet): def autoname(self): self.name = self.cost_center_name.strip() + ' - ' + \ - frappe.get_value("Company", self.company, "abbr") + frappe.db.get_value("Company", self.company, "abbr") def validate_mandatory(self): if not self.group_or_ledger: diff --git a/erpnext/accounts/doctype/fiscal_year/test_fiscal_year.py b/erpnext/accounts/doctype/fiscal_year/test_fiscal_year.py index d0e6c6cd0f..edceddb5f1 100644 --- a/erpnext/accounts/doctype/fiscal_year/test_fiscal_year.py +++ b/erpnext/accounts/doctype/fiscal_year/test_fiscal_year.py @@ -3,4 +3,6 @@ from __future__ import unicode_literals +import frappe + test_records = frappe.get_test_records('Fiscal Year') \ No newline at end of file diff --git a/erpnext/accounts/doctype/journal_voucher/journal_voucher.py b/erpnext/accounts/doctype/journal_voucher/journal_voucher.py index 3af9a03766..9829a17954 100644 --- a/erpnext/accounts/doctype/journal_voucher/journal_voucher.py +++ b/erpnext/accounts/doctype/journal_voucher/journal_voucher.py @@ -349,8 +349,8 @@ def get_default_bank_cash_account(company, voucher_type): def get_payment_entry_from_sales_invoice(sales_invoice): from erpnext.accounts.utils import get_balance_on si = frappe.get_doc("Sales Invoice", sales_invoice) - jv = get_payment_entry(si.doc) - jv.remark = 'Payment received against Sales Invoice %(name)s. %(remarks)s' % si.fields + jv = get_payment_entry(si) + jv.remark = 'Payment received against Sales Invoice {0}. {1}'.format(si.name, si.remarks) # credit customer jv.doclist[1].account = si.debit_to @@ -367,8 +367,8 @@ def get_payment_entry_from_sales_invoice(sales_invoice): def get_payment_entry_from_purchase_invoice(purchase_invoice): from erpnext.accounts.utils import get_balance_on pi = frappe.get_doc("Purchase Invoice", purchase_invoice) - jv = get_payment_entry(pi.doc) - jv.remark = 'Payment against Purchase Invoice %(name)s. %(remarks)s' % pi.fields + jv = get_payment_entry(pi) + jv.remark = 'Payment against Purchase Invoice {0}. {1}'.format(pi.name, pi.remarks) # credit supplier jv.doclist[1].account = pi.credit_to @@ -384,7 +384,7 @@ def get_payment_entry_from_purchase_invoice(purchase_invoice): def get_payment_entry(doc): bank_account = get_default_bank_cash_account(doc.company, "Bank Voucher") - jv = frappe.new_bean('Journal Voucher') + jv = frappe.new_doc('Journal Voucher') jv.voucher_type = 'Bank Voucher' jv.company = doc.company diff --git a/erpnext/accounts/doctype/purchase_taxes_and_charges/purchase_taxes_and_charges.py b/erpnext/accounts/doctype/purchase_taxes_and_charges/purchase_taxes_and_charges.py index 910e380dcf..25dbf9569c 100644 --- a/erpnext/accounts/doctype/purchase_taxes_and_charges/purchase_taxes_and_charges.py +++ b/erpnext/accounts/doctype/purchase_taxes_and_charges/purchase_taxes_and_charges.py @@ -6,5 +6,5 @@ import frappe from frappe.model.document import Document -class PurchaseTaxesAndCharges(Document): +class PurchaseTaxesandCharges(Document): pass \ No newline at end of file diff --git a/erpnext/accounts/doctype/purchase_taxes_and_charges_master/purchase_taxes_and_charges_master.py b/erpnext/accounts/doctype/purchase_taxes_and_charges_master/purchase_taxes_and_charges_master.py index fb9a0ab674..e93c57263f 100644 --- a/erpnext/accounts/doctype/purchase_taxes_and_charges_master/purchase_taxes_and_charges_master.py +++ b/erpnext/accounts/doctype/purchase_taxes_and_charges_master/purchase_taxes_and_charges_master.py @@ -5,5 +5,5 @@ from __future__ import unicode_literals import frappe from frappe.model.document import Document -class PurchaseTaxesAndChargesMaster(Document): +class PurchaseTaxesandChargesMaster(Document): pass diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py index e9e9869864..ba34b49154 100644 --- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py +++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py @@ -192,7 +192,7 @@ class SalesInvoice(SellingController): for item in self.get("entries"): if item.get('item_code'): for fname, val in get_pos_settings_item_details(pos, - frappe._dict(item.fields), pos).items(): + frappe._dict(item.as_dict()), pos).items(): if (not for_validate) or (for_validate and not item.get(fname)): item.set(fname, val) @@ -696,7 +696,7 @@ def manage_recurring_invoices(next_date=None, commit=True): raise Exception, exception_message def make_new_invoice(ref_wrapper, posting_date): - from frappe.model.bean import clone + from frappe.model.doc import clone from erpnext.accounts.utils import get_fiscal_year new_invoice = clone(ref_wrapper) @@ -736,7 +736,7 @@ def send_notification(new_rv): from frappe.core.doctype.print_format.print_format import get_html frappe.sendmail(new_rv.notification_email_address, subject="New Invoice : " + new_rv.name, - message = get_html(new_rv.doc, new_rv, "SalesInvoice")) + message = get_html(new_rv, new_rv, "SalesInvoice")) def notify_errors(inv, customer, owner): from frappe.utils.user import get_system_managers @@ -797,8 +797,8 @@ def make_delivery_note(source_name, target_doc=None): from frappe.model.mapper import get_mapped_doc def set_missing_values(source, target): - bean = frappe.get_doc(target) - bean.run_method("onload_post_render") + doc = frappe.get_doc(target) + doc.run_method("onload_post_render") def update_item(source_doc, target_doc, source_parent): target_doc.base_amount = (flt(source_doc.qty) - flt(source_doc.delivered_qty)) * \ diff --git a/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py b/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py index 7879dcb93d..109d0e505f 100644 --- a/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py +++ b/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py @@ -4,7 +4,7 @@ import frappe import unittest, json from frappe.utils import flt -from frappe.model.bean import DocstatusTransitionError, TimestampMismatchError +from frappe.model.doc import DocstatusTransitionError, TimestampMismatchError from erpnext.accounts.utils import get_stock_and_account_difference from erpnext.stock.doctype.purchase_receipt.test_purchase_receipt import set_perpetual_inventory diff --git a/erpnext/accounts/doctype/sales_taxes_and_charges/sales_taxes_and_charges.py b/erpnext/accounts/doctype/sales_taxes_and_charges/sales_taxes_and_charges.py index 8f621de86d..f4a9448534 100644 --- a/erpnext/accounts/doctype/sales_taxes_and_charges/sales_taxes_and_charges.py +++ b/erpnext/accounts/doctype/sales_taxes_and_charges/sales_taxes_and_charges.py @@ -6,5 +6,5 @@ import frappe from frappe.model.document import Document -class SalesTaxesAndCharges(Document): +class SalesTaxesandCharges(Document): pass \ No newline at end of file diff --git a/erpnext/accounts/doctype/sales_taxes_and_charges_master/sales_taxes_and_charges_master.py b/erpnext/accounts/doctype/sales_taxes_and_charges_master/sales_taxes_and_charges_master.py index 76417e369e..f63a767ba5 100644 --- a/erpnext/accounts/doctype/sales_taxes_and_charges_master/sales_taxes_and_charges_master.py +++ b/erpnext/accounts/doctype/sales_taxes_and_charges_master/sales_taxes_and_charges_master.py @@ -6,7 +6,7 @@ import frappe from frappe.utils import cint from frappe.model.controller import DocListController -class SalesTaxesAndChargesMaster(DocListController): +class SalesTaxesandChargesMaster(DocListController): def validate(self): if self.is_default == 1: frappe.db.sql("""update `tabSales Taxes and Charges Master` set is_default = 0 diff --git a/erpnext/accounts/doctype/shipping_rule/shipping_rule.py b/erpnext/accounts/doctype/shipping_rule/shipping_rule.py index d27565e89a..9e88f222fe 100644 --- a/erpnext/accounts/doctype/shipping_rule/shipping_rule.py +++ b/erpnext/accounts/doctype/shipping_rule/shipping_rule.py @@ -66,7 +66,7 @@ class ShippingRule(DocListController): for i in xrange(0, len(self.shipping_rule_conditions)): for j in xrange(i+1, len(self.shipping_rule_conditions)): d1, d2 = self.shipping_rule_conditions[i], self.shipping_rule_conditions[j] - if d1.fields != d2.fields: + if d1.as_dict() != d2.as_dict(): # in our case, to_value can be zero, hence pass the from_value if so range_a = (d1.from_value, d1.to_value or d1.from_value) range_b = (d2.from_value, d2.to_value or d2.from_value) diff --git a/erpnext/accounts/party.py b/erpnext/accounts/party.py index e86d6a9edb..a159a7383b 100644 --- a/erpnext/accounts/party.py +++ b/erpnext/accounts/party.py @@ -25,8 +25,8 @@ def _get_party_details(party=None, account=None, party_type="Customer", company= if not ignore_permissions and not frappe.has_permission(party_type, "read", party): frappe.throw("Not Permitted", frappe.PermissionError) - party_bean = frappe.get_doc(party_type, party) - party = party_bean.doc + party_doc = frappe.get_doc(party_type, party) + party = party_doc set_address_details(out, party, party_type) set_contact_details(out, party, party_type) @@ -41,7 +41,7 @@ def _get_party_details(party=None, account=None, party_type="Customer", company= out["sales_team"] = [{ "sales_person": d.sales_person, "sales_designation": d.sales_designation - } for d in party_bean.get("sales_team")] + } for d in party_doc.get("sales_team")] return out diff --git a/erpnext/buying/doctype/purchase_order/purchase_order.py b/erpnext/buying/doctype/purchase_order/purchase_order.py index 9458ecc9ce..afa9748add 100644 --- a/erpnext/buying/doctype/purchase_order/purchase_order.py +++ b/erpnext/buying/doctype/purchase_order/purchase_order.py @@ -184,8 +184,8 @@ def make_purchase_receipt(source_name, target_doc=None): from frappe.model.mapper import get_mapped_doc def set_missing_values(source, target): - bean = frappe.get_doc(target) - bean.run_method("set_missing_values") + doc = frappe.get_doc(target) + doc.run_method("set_missing_values") def update_item(obj, target, source_parent): target.qty = flt(obj.qty) - flt(obj.received_qty) @@ -223,8 +223,8 @@ def make_purchase_invoice(source_name, target_doc=None): from frappe.model.mapper import get_mapped_doc def set_missing_values(source, target): - bean = frappe.get_doc(target) - bean.run_method("set_missing_values") + doc = frappe.get_doc(target) + doc.run_method("set_missing_values") def update_item(obj, target, source_parent): target.amount = flt(obj.amount) - flt(obj.billed_amt) diff --git a/erpnext/buying/doctype/purchase_order/test_purchase_order.py b/erpnext/buying/doctype/purchase_order/test_purchase_order.py index 0acb83688f..358023383d 100644 --- a/erpnext/buying/doctype/purchase_order/test_purchase_order.py +++ b/erpnext/buying/doctype/purchase_order/test_purchase_order.py @@ -26,8 +26,8 @@ class TestPurchaseOrder(unittest.TestCase): self.assertEquals(len(pr), len(test_records[0])) pr[0]["naming_series"] = "_T-Purchase Receipt-" - pr_bean = frappe.get_doc(pr) - pr_bean.insert() + pr_doc = frappe.get_doc(pr) + pr_doc.insert() def test_ordered_qty(self): frappe.db.sql("delete from tabBin") @@ -54,9 +54,9 @@ class TestPurchaseOrder(unittest.TestCase): pr[0]["posting_date"] = "2013-05-12" pr[0]["naming_series"] = "_T-Purchase Receipt-" pr[1]["qty"] = 4.0 - pr_bean = frappe.get_doc(pr) - pr_bean.insert() - pr_bean.submit() + pr_doc = frappe.get_doc(pr) + pr_doc.insert() + pr_doc.submit() self.assertEquals(flt(frappe.db.get_value("Bin", {"item_code": "_Test Item", "warehouse": "_Test Warehouse - _TC"}, "ordered_qty")), 6.0) @@ -67,9 +67,9 @@ class TestPurchaseOrder(unittest.TestCase): pr1[0]["naming_series"] = "_T-Purchase Receipt-" pr1[0]["posting_date"] = "2013-05-12" pr1[1]["qty"] = 8 - pr1_bean = frappe.get_doc(pr1) - pr1_bean.insert() - pr1_bean.submit() + pr1_doc = frappe.get_doc(pr1) + pr1_doc.insert() + pr1_doc.submit() self.assertEquals(flt(frappe.db.get_value("Bin", {"item_code": "_Test Item", "warehouse": "_Test Warehouse - _TC"}, "ordered_qty")), 0.0) diff --git a/erpnext/buying/doctype/supplier_quotation/supplier_quotation.py b/erpnext/buying/doctype/supplier_quotation/supplier_quotation.py index ff7e6df6ec..e937735111 100644 --- a/erpnext/buying/doctype/supplier_quotation/supplier_quotation.py +++ b/erpnext/buying/doctype/supplier_quotation/supplier_quotation.py @@ -55,9 +55,9 @@ def make_purchase_order(source_name, target_doc=None): from frappe.model.mapper import get_mapped_doc def set_missing_values(source, target): - bean = frappe.get_doc(target) - bean.run_method("set_missing_values") - bean.run_method("get_schedule_dates") + doc = frappe.get_doc(target) + doc.run_method("set_missing_values") + doc.run_method("get_schedule_dates") def update_item(obj, target, source_parent): target.conversion_factor = 1 diff --git a/erpnext/controllers/accounts_controller.py b/erpnext/controllers/accounts_controller.py index 083f0a6aaa..1b050d7fe5 100644 --- a/erpnext/controllers/accounts_controller.py +++ b/erpnext/controllers/accounts_controller.py @@ -86,15 +86,16 @@ class AccountsController(TransactionBase): def set_missing_item_details(self): """set missing item values""" from erpnext.stock.get_item_details import get_item_details - for item in self.get(self.fname): - if item.get("item_code"): - args = item.fields.copy() - args.update(self.fields) - ret = get_item_details(args) - for fieldname, value in ret.items(): - if self.meta.get_field(fieldname, parentfield=self.fname) and \ - item.get(fieldname) is None and value is not None: - item.set(fieldname, value) + if hasattr(self, "fname"): + for item in self.get(self.fname): + if item.get("item_code"): + args = item.as_dict() + args.update(self.as_dict()) + ret = get_item_details(args) + for fieldname, value in ret.items(): + if self.meta.get_field(fieldname, parentfield=self.fname) and \ + item.get(fieldname) is None and value is not None: + item.set(fieldname, value) def set_taxes(self, tax_parentfield, tax_master_field): if not self.meta.get_field(tax_parentfield): diff --git a/erpnext/controllers/selling_controller.py b/erpnext/controllers/selling_controller.py index 77b62caf8a..bcc46bbc20 100644 --- a/erpnext/controllers/selling_controller.py +++ b/erpnext/controllers/selling_controller.py @@ -32,12 +32,12 @@ class SellingController(StockController): self.set_taxes("other_charges", "taxes_and_charges") def set_missing_lead_customer_details(self): - if self.customer: + if getattr(self, "customer", None): from erpnext.accounts.party import _get_party_details self.update_if_missing(_get_party_details(self.customer, ignore_permissions=self.ignore_permissions)) - elif self.lead: + elif getattr(self, "lead", None): from erpnext.selling.doctype.lead.lead import get_lead_details self.update_if_missing(get_lead_details(self.lead)) diff --git a/erpnext/home/__init__.py b/erpnext/home/__init__.py index 25e92aa5f9..ea8997a814 100644 --- a/erpnext/home/__init__.py +++ b/erpnext/home/__init__.py @@ -86,7 +86,7 @@ def update_feed(doc, method=None): if method in ['on_update', 'on_submit']: subject, color = feed_dict.get(doc.doctype, [None, None]) if subject: - make_feed('', doc.doctype, doc.name, doc.owner, subject % doc.fields, color) + make_feed('', doc.doctype, doc.name, doc.owner, subject % doc.as_dict(), color) def make_comment_feed(doc, method): """add comment to feed""" diff --git a/erpnext/hr/doctype/department/test_records.json b/erpnext/hr/doctype/department/test_records.json index 0637a088a0..5bb5871d4c 100644 --- a/erpnext/hr/doctype/department/test_records.json +++ b/erpnext/hr/doctype/department/test_records.json @@ -1 +1,4 @@ -[] \ No newline at end of file +[ + {"doctype":"Department", "department_name":"_Test Department"}, + {"doctype":"Department", "department_name":"_Test Department 1"} +] \ No newline at end of file diff --git a/erpnext/hr/doctype/hr_settings/hr_settings.json b/erpnext/hr/doctype/hr_settings/hr_settings.json index 15443db685..227a3b3513 100644 --- a/erpnext/hr/doctype/hr_settings/hr_settings.json +++ b/erpnext/hr/doctype/hr_settings/hr_settings.json @@ -43,7 +43,7 @@ "icon": "icon-cog", "idx": 1, "issingle": 1, - "modified": "2014-02-19 17:40:18.000000", + "modified": "2014-02-19 17:40:18.000001", "modified_by": "Administrator", "module": "HR", "name": "HR Settings", diff --git a/erpnext/hr/doctype/job_applicant/get_job_applications.py b/erpnext/hr/doctype/job_applicant/get_job_applications.py index a94325d562..e4a8d70cf5 100644 --- a/erpnext/hr/doctype/job_applicant/get_job_applications.py +++ b/erpnext/hr/doctype/job_applicant/get_job_applications.py @@ -37,7 +37,7 @@ class JobsMailbox(POP3Mailbox): applicant.ignore_mandatory = True applicant.insert() - mail.save_attachments_in_doc(applicant.doc) + mail.save_attachments_in_doc(applicant) _make(content=mail.content, sender=mail.from_email, subject=mail.subject or "No Subject", doctype="Job Applicant", name=applicant.name, sent_or_received="Received") diff --git a/erpnext/hr/doctype/leave_application/leave_application.py b/erpnext/hr/doctype/leave_application/leave_application.py index f2f95bfa36..e1bc1f9ae4 100755 --- a/erpnext/hr/doctype/leave_application/leave_application.py +++ b/erpnext/hr/doctype/leave_application/leave_application.py @@ -136,7 +136,7 @@ class LeaveApplication(DocListController): and (from_date between %(from_date)s and %(to_date)s or to_date between %(from_date)s and %(to_date)s or %(from_date)s between from_date and to_date) - and name != %(name)s""", self.fields, as_dict = 1): + and name != %(name)s""", self.as_dict(), as_dict = 1): msgprint("Employee : %s has already applied for %s between %s and %s on %s. Please refer Leave Application : %s" % (self.employee, cstr(d['leave_type']), formatdate(d['from_date']), formatdate(d['to_date']), formatdate(d['posting_date']), d['name'], d['name']), raise_exception = OverlapError) diff --git a/erpnext/hr/doctype/salary_manager/salary_manager.py b/erpnext/hr/doctype/salary_manager/salary_manager.py index 5bb0be56da..05d73c7f49 100644 --- a/erpnext/hr/doctype/salary_manager/salary_manager.py +++ b/erpnext/hr/doctype/salary_manager/salary_manager.py @@ -129,11 +129,11 @@ class SalaryManager(Document): for ss in ss_list: ss_obj = frappe.get_doc("Salary Slip",ss[0]) try: - frappe.db.set(ss_obj.doc, 'email_check', cint(self.send_mail)) + frappe.db.set(ss_obj, 'email_check', cint(self.send_mail)) if cint(self.send_email) == 1: ss_obj.send_mail_funct() - frappe.db.set(ss_obj.doc, 'docstatus', 1) + frappe.db.set(ss_obj, 'docstatus', 1) except Exception,e: not_submitted_ss.append(ss[0]) msgprint(e) diff --git a/erpnext/manufacturing/doctype/production_order/production_order.py b/erpnext/manufacturing/doctype/production_order/production_order.py index 75f40fa1ef..af92413be6 100644 --- a/erpnext/manufacturing/doctype/production_order/production_order.py +++ b/erpnext/manufacturing/doctype/production_order/production_order.py @@ -153,7 +153,7 @@ def get_item_details(item): def make_stock_entry(production_order_id, purpose): production_order = frappe.get_doc("Production Order", production_order_id) - stock_entry = frappe.new_bean("Stock Entry") + stock_entry = frappe.new_doc("Stock Entry") stock_entry.purpose = purpose stock_entry.production_order = production_order_id stock_entry.company = production_order.company diff --git a/erpnext/manufacturing/doctype/production_order/test_production_order.py b/erpnext/manufacturing/doctype/production_order/test_production_order.py index 1af4815aa1..d7d41988bb 100644 --- a/erpnext/manufacturing/doctype/production_order/test_production_order.py +++ b/erpnext/manufacturing/doctype/production_order/test_production_order.py @@ -17,9 +17,9 @@ class TestProductionOrder(unittest.TestCase): frappe.db.sql("""delete from `tabBin`""") frappe.db.sql("""delete from `tabGL Entry`""") - pro_bean = frappe.copy_doc(test_records[0]) - pro_bean.insert() - pro_bean.submit() + pro_doc = frappe.copy_doc(test_records[0]) + pro_doc.insert() + pro_doc.submit() from erpnext.stock.doctype.stock_entry.test_stock_entry import test_records as se_test_records mr1 = frappe.copy_doc(se_test_records[0]) @@ -31,7 +31,7 @@ class TestProductionOrder(unittest.TestCase): mr2.insert() mr2.submit() - stock_entry = make_stock_entry(pro_bean.name, "Manufacture/Repack") + stock_entry = make_stock_entry(pro_doc.name, "Manufacture/Repack") stock_entry = frappe.get_doc(stock_entry) stock_entry.fiscal_year = "_Test Fiscal Year 2013" stock_entry.fg_completed_qty = 4 @@ -40,12 +40,12 @@ class TestProductionOrder(unittest.TestCase): stock_entry.run_method("get_items") stock_entry.submit() - self.assertEqual(frappe.db.get_value("Production Order", pro_bean.name, + self.assertEqual(frappe.db.get_value("Production Order", pro_doc.name, "produced_qty"), 4) self.assertEqual(frappe.db.get_value("Bin", {"item_code": "_Test FG Item", "warehouse": "_Test Warehouse 1 - _TC"}, "planned_qty"), 6) - return pro_bean.name + return pro_doc.name def test_over_production(self): from erpnext.stock.doctype.stock_entry.stock_entry import StockOverProductionError diff --git a/erpnext/manufacturing/doctype/production_planning_tool/production_planning_tool.py b/erpnext/manufacturing/doctype/production_planning_tool/production_planning_tool.py index c94a72ca43..e3fe7c3d9a 100644 --- a/erpnext/manufacturing/doctype/production_planning_tool/production_planning_tool.py +++ b/erpnext/manufacturing/doctype/production_planning_tool/production_planning_tool.py @@ -214,7 +214,7 @@ class ProductionPlanningTool(Document): pro_list = [] for key in items: - pro = frappe.new_bean("Production Order") + pro = frappe.new_doc("Production Order") pro.update(items[key]) frappe.flags.mute_messages = True diff --git a/erpnext/selling/doctype/lead/get_leads.py b/erpnext/selling/doctype/lead/get_leads.py index 661021ef0a..b765db6237 100644 --- a/erpnext/selling/doctype/lead/get_leads.py +++ b/erpnext/selling/doctype/lead/get_leads.py @@ -34,8 +34,8 @@ def add_sales_communication(subject, content, sender, real_name, mail=None, if mail: # save attachments to parent if from mail - bean = frappe.get_doc(parent_doctype, parent_name) - mail.save_attachments_in_doc(bean.doc) + doc = frappe.get_doc(parent_doctype, parent_name) + mail.save_attachments_in_doc(doc) class SalesMailbox(POP3Mailbox): def setup(self, args=None): diff --git a/erpnext/selling/doctype/lead/lead.py b/erpnext/selling/doctype/lead/lead.py index df57cf5bc1..2c16a1d7e0 100644 --- a/erpnext/selling/doctype/lead/lead.py +++ b/erpnext/selling/doctype/lead/lead.py @@ -42,8 +42,7 @@ class Lead(SellingController): "owner": self.lead_owner, "subject": ('Contact ' + cstr(self.lead_name)), "description": ('Contact ' + cstr(self.lead_name)) + \ - (self.contact_by and ('. By : ' + cstr(self.contact_by)) or '') + \ - (self.remark and ('.To Discuss : ' + cstr(self.remark)) or '') + (self.contact_by and ('. By : ' + cstr(self.contact_by)) or '') }, force) def check_email_id_is_unique(self): @@ -117,7 +116,7 @@ def make_opportunity(source_name, target_doc=None): } }}, target_doc) - return [d if isinstance(d, dict) else d.fields for d in doclist] + return doclist @frappe.whitelist() def get_lead_details(lead): @@ -126,8 +125,8 @@ def get_lead_details(lead): from erpnext.accounts.party import set_address_details out = frappe._dict() - lead_bean = frappe.get_doc("Lead", lead) - lead = lead_bean.doc + lead_doc = frappe.get_doc("Lead", lead) + lead = lead_doc out.update({ "territory": lead.territory, diff --git a/erpnext/selling/doctype/lead/test_lead.py b/erpnext/selling/doctype/lead/test_lead.py index 697f2e156f..b2533e0819 100644 --- a/erpnext/selling/doctype/lead/test_lead.py +++ b/erpnext/selling/doctype/lead/test_lead.py @@ -3,11 +3,11 @@ from __future__ import unicode_literals -test_records = frappe.get_test_records('Lead') - import frappe import unittest +test_records = frappe.get_test_records('Lead') + class TestLead(unittest.TestCase): def test_make_customer(self): print "test_make_customer" diff --git a/erpnext/selling/doctype/sales_order/sales_order.py b/erpnext/selling/doctype/sales_order/sales_order.py index 42b3596f3e..d420e967b2 100644 --- a/erpnext/selling/doctype/sales_order/sales_order.py +++ b/erpnext/selling/doctype/sales_order/sales_order.py @@ -253,8 +253,8 @@ class SalesOrder(SellingController): return "order" if self.docstatus==1 else None def set_missing_values(source, target): - bean = frappe.get_doc(target) - bean.run_method("onload_post_render") + doc = frappe.get_doc(target) + doc.run_method("onload_post_render") @frappe.whitelist() def make_material_request(source_name, target_doc=None): @@ -277,7 +277,7 @@ def make_material_request(source_name, target_doc=None): } }, target_doc, postprocess) - return [(d if isinstance(d, dict) else d.fields) for d in doclist] + return doclist @frappe.whitelist() def make_delivery_note(source_name, target_doc=None): @@ -322,9 +322,9 @@ def make_delivery_note(source_name, target_doc=None): @frappe.whitelist() def make_sales_invoice(source_name, target_doc=None): def set_missing_values(source, target): - bean = frappe.get_doc(target) - bean.is_pos = 0 - bean.run_method("onload_post_render") + doc = frappe.get_doc(target) + doc.is_pos = 0 + doc.run_method("onload_post_render") def update_item(obj, target, source_parent): target.amount = flt(obj.amount) - flt(obj.billed_amt) diff --git a/erpnext/selling/doctype/sales_order/test_sales_order.py b/erpnext/selling/doctype/sales_order/test_sales_order.py index e56de33db5..435ad65757 100644 --- a/erpnext/selling/doctype/sales_order/test_sales_order.py +++ b/erpnext/selling/doctype/sales_order/test_sales_order.py @@ -281,21 +281,20 @@ class TestSalesOrder(unittest.TestCase): def test_warehouse_user(self): frappe.defaults.add_default("Warehouse", "_Test Warehouse 1 - _TC1", "test@example.com", "Restriction") - frappe.get_doc("User", "test@example.com").get_controller()\ + frappe.get_doc("User", "test@example.com")\ .add_roles("Sales User", "Sales Manager", "Material User", "Material Manager") - frappe.get_doc("User", "test2@example.com").get_controller()\ + frappe.get_doc("User", "test2@example.com")\ .add_roles("Sales User", "Sales Manager", "Material User", "Material Manager") frappe.set_user("test@example.com") - from frappe.model.bean import BeanPermissionError so = frappe.copy_doc(test_records[0]) so.company = "_Test Company 1" so.conversion_rate = 0.02 so.plc_conversion_rate = 0.02 so.doclist[1].warehouse = "_Test Warehouse 2 - _TC1" - self.assertRaises(BeanPermissionError, so.insert) + self.assertRaises(frappe.PermissionError, so.insert) frappe.set_user("test2@example.com") so.insert() diff --git a/erpnext/setup/doctype/company/company.py b/erpnext/setup/doctype/company/company.py index 1880ffd3cd..111a180257 100644 --- a/erpnext/setup/doctype/company/company.py +++ b/erpnext/setup/doctype/company/company.py @@ -78,7 +78,7 @@ class Company(Document): "title": self.name + " Home", "published": 1, "description": "Standard Home Page for " + self.name, - "main_section": webfile.read() % self.fields + "main_section": webfile.read() % self.as_dict() }).insert() # update in home page in settings @@ -163,12 +163,12 @@ class Company(Document): ] for cc in cc_list: cc.update({"doctype": "Cost Center"}) - cc_bean = frappe.get_doc(cc) - cc_bean.ignore_permissions = True + cc_doc = frappe.get_doc(cc) + cc_doc.ignore_permissions = True if cc.get("cost_center_name") == self.name: - cc_bean.ignore_mandatory = True - cc_bean.insert() + cc_doc.ignore_mandatory = True + cc_doc.insert() frappe.db.set(self, "cost_center", "Main - " + self.abbr) diff --git a/erpnext/setup/doctype/company/test_company.py b/erpnext/setup/doctype/company/test_company.py index 570cd23aa9..06db121531 100644 --- a/erpnext/setup/doctype/company/test_company.py +++ b/erpnext/setup/doctype/company/test_company.py @@ -13,7 +13,7 @@ class TestCompany(unittest.TestCase): print "Country: ", country print "Chart Name: ", chart_name - company_bean = frappe.get_doc({ + company_doc = frappe.get_doc({ "doctype": "Company", "company_name": "_Test Company 2", "abbr": "_TC2", @@ -22,7 +22,7 @@ class TestCompany(unittest.TestCase): "chart_of_accounts": chart_name }) - company_bean.insert() + company_doc.insert() self.assertTrue(frappe.db.sql("""select count(*) from tabAccount where company='_Test Company 2'""")[0][0] > 10) diff --git a/erpnext/setup/doctype/global_defaults/global_defaults.py b/erpnext/setup/doctype/global_defaults/global_defaults.py index a9896dcd16..dce4f60587 100644 --- a/erpnext/setup/doctype/global_defaults/global_defaults.py +++ b/erpnext/setup/doctype/global_defaults/global_defaults.py @@ -60,13 +60,13 @@ class GlobalDefaults(Document): raise_exception=1) def update_control_panel(self): - cp_bean = frappe.get_doc("Control Panel") + cp_doc = frappe.get_doc("Control Panel") if self.country: - cp_bean.country = self.country + cp_doc.country = self.country if self.time_zone: - cp_bean.time_zone = self.time_zone - cp_bean.ignore_permissions = True - cp_bean.save() + cp_doc.time_zone = self.time_zone + cp_doc.ignore_permissions = True + cp_doc.save() def get_defaults(self): return frappe.defaults.get_defaults() diff --git a/erpnext/setup/doctype/item_group/test_item_group.py b/erpnext/setup/doctype/item_group/test_item_group.py index ae23499620..6f1d4dbd71 100644 --- a/erpnext/setup/doctype/item_group/test_item_group.py +++ b/erpnext/setup/doctype/item_group/test_item_group.py @@ -183,9 +183,9 @@ class TestItem(unittest.TestCase): for name in frappe.db.sql_list("""select name from `tabItem Group` where parent_item_group='_Test Item Group C'"""): - bean = frappe.get_doc("Item Group", name) - bean.parent_item_group = "_Test Item Group B" - bean.save() + doc = frappe.get_doc("Item Group", name) + doc.parent_item_group = "_Test Item Group B" + doc.save() self.test_basic_tree() diff --git a/erpnext/setup/doctype/naming_series/naming_series.py b/erpnext/setup/doctype/naming_series/naming_series.py index cf2c29fe1f..e93af3c387 100644 --- a/erpnext/setup/doctype/naming_series/naming_series.py +++ b/erpnext/setup/doctype/naming_series/naming_series.py @@ -169,6 +169,6 @@ def set_by_naming_series(doctype, fieldname, naming_series, hide_name_field=True ifnull({fieldname}, '')=''""".format(doctype=doctype, fieldname=fieldname)) def get_default_naming_series(doctype): - naming_series = frappe.model.get_meta(doctype).get_field("naming_series").options or "" + naming_series = frappe.get_meta(doctype).get_field("naming_series").options or "" naming_series = naming_series.split("\n") return naming_series[0] or naming_series[1] \ No newline at end of file diff --git a/erpnext/setup/install.py b/erpnext/setup/install.py index a7e91d1605..6f4669eeae 100644 --- a/erpnext/setup/install.py +++ b/erpnext/setup/install.py @@ -139,7 +139,7 @@ def feature_setup(): def set_single_defaults(): for dt in frappe.db.sql_list("""select name from `tabDocType` where issingle=1"""): default_values = frappe.db.sql("""select fieldname, `default` from `tabDocField` - where parent=%s""", dt, as_dict=True) + where parent=%s""", dt) if default_values: try: b = frappe.get_doc(dt, dt) diff --git a/erpnext/setup/page/setup_wizard/setup_wizard.py b/erpnext/setup/page/setup_wizard/setup_wizard.py index d635e08e28..61a3c71ac3 100644 --- a/erpnext/setup/page/setup_wizard/setup_wizard.py +++ b/erpnext/setup/page/setup_wizard/setup_wizard.py @@ -202,7 +202,7 @@ def create_email_digest(): # scheduler errors digest if companies: - edigest = frappe.new_bean("Email Digest") + edigest = frappe.new_doc("Email Digest") edigest.update({ "name": "Scheduler Errors", "company": companies[0], diff --git a/erpnext/stock/doctype/delivery_note/delivery_note.py b/erpnext/stock/doctype/delivery_note/delivery_note.py index 9b3095dd1d..8dcdde1a06 100644 --- a/erpnext/stock/doctype/delivery_note/delivery_note.py +++ b/erpnext/stock/doctype/delivery_note/delivery_note.py @@ -222,9 +222,8 @@ class DeliveryNote(SellingController): AND docstatus = 1""", self.name) if res: - from frappe.model.bean import Bean for r in res: - ps = Bean(dt='Packing Slip', dn=r[0]) + ps = frappe.get_doc('Packing Slip', r[0]) ps.cancel() frappe.msgprint(_("Packing Slip(s) Cancelled")) diff --git a/erpnext/stock/doctype/item_price/test_item_price.py b/erpnext/stock/doctype/item_price/test_item_price.py index a1a10bae55..1a430bf9f0 100644 --- a/erpnext/stock/doctype/item_price/test_item_price.py +++ b/erpnext/stock/doctype/item_price/test_item_price.py @@ -8,7 +8,7 @@ import frappe class TestItem(unittest.TestCase): def test_duplicate_item(self): from erpnext.stock.doctype.item_price.item_price import ItemPriceDuplicateItem - bean = frappe.copy_doc(test_records[0]) - self.assertRaises(ItemPriceDuplicateItem, bean.insert) + doc = frappe.copy_doc(test_records[0]) + self.assertRaises(ItemPriceDuplicateItem, doc.insert) test_records = frappe.get_test_records('Item Price') \ No newline at end of file diff --git a/erpnext/stock/doctype/landed_cost_wizard/landed_cost_wizard.py b/erpnext/stock/doctype/landed_cost_wizard/landed_cost_wizard.py index 968969d267..e7cb41035b 100644 --- a/erpnext/stock/doctype/landed_cost_wizard/landed_cost_wizard.py +++ b/erpnext/stock/doctype/landed_cost_wizard/landed_cost_wizard.py @@ -34,13 +34,13 @@ class LandedCostWizard(Document): total_amt = self.get_total_pr_amt(purchase_receipts) for pr in purchase_receipts: - pr_bean = frappe.get_doc('Purchase Receipt', pr) - pr_items = pr_bean.get("purchase_tax_details") + pr_doc = frappe.get_doc('Purchase Receipt', pr) + pr_items = pr_doc.get("purchase_tax_details") for lc in self.get("landed_cost_details"): - amt = flt(lc.amount) * flt(pr_bean.net_total)/ flt(total_amt) + amt = flt(lc.amount) * flt(pr_doc.net_total)/ flt(total_amt) - matched_row = pr_bean.get("other_charges", { + matched_row = pr_doc.get("other_charges", { "category": "Valuation", "add_deduct_tax": "Add", "charge_type": "Actual", @@ -48,7 +48,7 @@ class LandedCostWizard(Document): }) if not matched_row: # add if not exists - ch = pr_bean.append("other_charges") + ch = pr_doc.append("other_charges") ch.category = 'Valuation' ch.add_deduct_tax = 'Add' ch.charge_type = 'Actual' @@ -64,8 +64,8 @@ class LandedCostWizard(Document): matched_row[0].tax_amount = amt matched_row[0].cost_center = lc.cost_center - pr_bean.run_method("validate") - for d in pr_bean.get_all_children(): + pr_doc.run_method("validate") + for d in pr_doc.get_all_children(): d.db_update() def get_total_pr_amt(self, purchase_receipts): @@ -75,9 +75,9 @@ class LandedCostWizard(Document): def cancel_pr(self, purchase_receipts): for pr in purchase_receipts: - pr_bean = frappe.get_doc("Purchase Receipt", pr) + pr_doc = frappe.get_doc("Purchase Receipt", pr) - pr_bean.run_method("update_ordered_qty") + pr_doc.run_method("update_ordered_qty") frappe.db.sql("""delete from `tabStock Ledger Entry` where voucher_type='Purchase Receipt' and voucher_no=%s""", pr) @@ -86,7 +86,7 @@ class LandedCostWizard(Document): def submit_pr(self, purchase_receipts): for pr in purchase_receipts: - pr_bean = frappe.get_doc("Purchase Receipt", pr) - pr_bean.run_method("update_ordered_qty") - pr_bean.run_method("update_stock") - pr_bean.run_method("make_gl_entries") \ No newline at end of file + pr_doc = frappe.get_doc("Purchase Receipt", pr) + pr_doc.run_method("update_ordered_qty") + pr_doc.run_method("update_stock") + pr_doc.run_method("make_gl_entries") \ No newline at end of file diff --git a/erpnext/stock/doctype/material_request/material_request.py b/erpnext/stock/doctype/material_request/material_request.py index 296dda9714..1cabce73c8 100644 --- a/erpnext/stock/doctype/material_request/material_request.py +++ b/erpnext/stock/doctype/material_request/material_request.py @@ -165,11 +165,11 @@ class MaterialRequest(BuyingController): self.per_ordered = flt((per_ordered / flt(len(item_doclist))) * 100.0, 2) frappe.db.set_value(self.doctype, self.name, "per_ordered", self.per_ordered) -def update_completed_qty(bean, method): - if bean.doctype == "Stock Entry": +def update_completed_qty(doc, method): + if doc.doctype == "Stock Entry": material_request_map = {} - for d in bean.get("mtn_details"): + for d in doc.get("mtn_details"): if d.material_request: material_request_map.setdefault(d.material_request, []).append(d.material_request_item) @@ -182,17 +182,17 @@ def update_completed_qty(bean, method): + _(mr_doctype.get_label("status")) + " = %s. " % _(mr_obj.status) + _("Cannot continue."), exc=frappe.InvalidStatusError) - _update_requested_qty(bean, mr_obj, mr_items) + _update_requested_qty(doc, mr_obj, mr_items) # update ordered percentage and qty mr_obj.update_completed_qty(mr_items) -def _update_requested_qty(bean, mr_obj, mr_items): +def _update_requested_qty(doc, mr_obj, mr_items): """update requested qty (before ordered_qty is updated)""" from erpnext.stock.utils import update_bin for mr_item_name in mr_items: mr_item = mr_obj.get("indent_details", {"name": mr_item_name}) - se_detail = bean.get("mtn_details", {"material_request": mr_obj.name, + se_detail = doc.get("mtn_details", {"material_request": mr_obj.name, "material_request_item": mr_item_name}) if mr_item and se_detail: @@ -215,7 +215,7 @@ def _update_requested_qty(bean, mr_obj, mr_items): "item_code": se_detail.item_code, "warehouse": se_detail.t_warehouse, "indented_qty": (se_detail.docstatus==2 and 1 or -1) * add_indented_qty, - "posting_date": bean.posting_date, + "posting_date": doc.posting_date, }) def set_missing_values(source, target_doc): diff --git a/erpnext/stock/doctype/packing_slip/packing_slip.py b/erpnext/stock/doctype/packing_slip/packing_slip.py index 18609831fe..b4b64cd648 100644 --- a/erpnext/stock/doctype/packing_slip/packing_slip.py +++ b/erpnext/stock/doctype/packing_slip/packing_slip.py @@ -57,7 +57,7 @@ class PackingSlip(Document): (from_case_no BETWEEN %(from_case_no)s AND %(to_case_no)s OR to_case_no BETWEEN %(from_case_no)s AND %(to_case_no)s OR %(from_case_no)s BETWEEN from_case_no AND to_case_no) - """, self.fields) + """, self.as_dict()) if res: frappe.msgprint(_("""Case No(s) already in use. Please rectify and try again. @@ -145,7 +145,7 @@ class PackingSlip(Document): note """ recommended_case_no = frappe.db.sql("""SELECT MAX(to_case_no) FROM `tabPacking Slip` - WHERE delivery_note = %(delivery_note)s AND docstatus=1""", self.fields) + WHERE delivery_note = %(delivery_note)s AND docstatus=1""", self.as_dict()) return cint(recommended_case_no[0][0]) + 1 diff --git a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py index 8dde16b32c..59b9c981e7 100644 --- a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py +++ b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py @@ -298,8 +298,8 @@ def make_purchase_invoice(source_name, target_doc=None): from frappe.model.mapper import get_mapped_doc def set_missing_values(source, target): - bean = frappe.get_doc(target) - bean.run_method("set_missing_values") + doc = frappe.get_doc(target) + doc.run_method("set_missing_values") doclist = get_mapped_doc("Purchase Receipt", source_name, { "Purchase Receipt": { diff --git a/erpnext/stock/doctype/serial_no/serial_no.py b/erpnext/stock/doctype/serial_no/serial_no.py index cab1424cba..d6b1ef26e7 100644 --- a/erpnext/stock/doctype/serial_no/serial_no.py +++ b/erpnext/stock/doctype/serial_no/serial_no.py @@ -280,7 +280,7 @@ def get_serial_nos(serial_no): if s.strip()] def make_serial_no(serial_no, sle): - sr = frappe.new_bean("Serial No") + sr = frappe.new_doc("Serial No") sr.serial_no = serial_no sr.item_code = sle.item_code sr.warehouse = None diff --git a/erpnext/stock/doctype/serial_no/test_serial_no.py b/erpnext/stock/doctype/serial_no/test_serial_no.py index 30368b6393..9518e78c86 100644 --- a/erpnext/stock/doctype/serial_no/test_serial_no.py +++ b/erpnext/stock/doctype/serial_no/test_serial_no.py @@ -14,7 +14,7 @@ from erpnext.stock.doctype.serial_no.serial_no import * class TestSerialNo(unittest.TestCase): def test_cannot_create_direct(self): - sr = frappe.new_bean("Serial No") + sr = frappe.new_doc("Serial No") sr.item_code = "_Test Serialized Item" sr.warehouse = "_Test Warehouse - _TC" sr.serial_no = "_TCSER0001" diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.py b/erpnext/stock/doctype/stock_entry/stock_entry.py index 8841b96e88..56ba780e96 100644 --- a/erpnext/stock/doctype/stock_entry/stock_entry.py +++ b/erpnext/stock/doctype/stock_entry/stock_entry.py @@ -325,41 +325,41 @@ class StockEntry(StockController): self.make_sl_entries(sl_entries, self.amended_from and 'Yes' or 'No') def update_production_order(self): - def _validate_production_order(pro_bean): - if flt(pro_bean.docstatus) != 1: + def _validate_production_order(pro_doc): + if flt(pro_doc.docstatus) != 1: frappe.throw(_("Production Order must be submitted") + ": " + self.production_order) - if pro_bean.status == 'Stopped': + if pro_doc.status == 'Stopped': msgprint(_("Transaction not allowed against stopped Production Order") + ": " + self.production_order) if self.production_order: - pro_bean = frappe.get_doc("Production Order", self.production_order) - _validate_production_order(pro_bean) - self.update_produced_qty(pro_bean) + pro_doc = frappe.get_doc("Production Order", self.production_order) + _validate_production_order(pro_doc) + self.update_produced_qty(pro_doc) if self.purpose == "Manufacture/Repack": - self.update_planned_qty(pro_bean) + self.update_planned_qty(pro_doc) - def update_produced_qty(self, pro_bean): + def update_produced_qty(self, pro_doc): if self.purpose == "Manufacture/Repack": - produced_qty = flt(pro_bean.produced_qty) + \ + produced_qty = flt(pro_doc.produced_qty) + \ (self.docstatus==1 and 1 or -1 ) * flt(self.fg_completed_qty) - if produced_qty > flt(pro_bean.qty): + if produced_qty > flt(pro_doc.qty): frappe.throw(_("Production Order") + ": " + self.production_order + "\n" + _("Total Manufactured Qty can not be greater than Planned qty to manufacture") - + "(%s/%s)" % (produced_qty, flt(pro_bean.qty)), StockOverProductionError) + + "(%s/%s)" % (produced_qty, flt(pro_doc.qty)), StockOverProductionError) - status = 'Completed' if flt(produced_qty) >= flt(pro_bean.qty) else 'In Process' + status = 'Completed' if flt(produced_qty) >= flt(pro_doc.qty) else 'In Process' frappe.db.sql("""update `tabProduction Order` set status=%s, produced_qty=%s where name=%s""", (status, produced_qty, self.production_order)) - def update_planned_qty(self, pro_bean): + def update_planned_qty(self, pro_doc): from erpnext.stock.utils import update_bin update_bin({ - "item_code": pro_bean.production_item, - "warehouse": pro_bean.fg_warehouse, + "item_code": pro_doc.production_item, + "warehouse": pro_doc.fg_warehouse, "posting_date": self.posting_date, "planned_qty": (self.docstatus==1 and -1 or 1 ) * flt(self.fg_completed_qty) }) @@ -725,7 +725,7 @@ def get_return_doc_and_details(args): for fieldname, val in return_map[args["purpose"]].items(): if args.get(fieldname): ref.fieldname = fieldname - ref.doc = frappe.get_doc(val[0], args[fieldname]) + ref.doc = frappe.get_doc(val[0], args.get(fieldname)) ref.parentfields = val[1] break @@ -748,7 +748,7 @@ def make_return_jv(stock_entry): if not se.purpose in ["Sales Return", "Purchase Return"]: return - ref = get_return_doc_and_details(se.fields) + ref = get_return_doc_and_details(se) if ref.doc.doctype == "Delivery Note": result = make_return_jv_from_delivery_note(se, ref) diff --git a/erpnext/stock/doctype/stock_entry/test_stock_entry.py b/erpnext/stock/doctype/stock_entry/test_stock_entry.py index 98e1b00811..38e99c155b 100644 --- a/erpnext/stock/doctype/stock_entry/test_stock_entry.py +++ b/erpnext/stock/doctype/stock_entry/test_stock_entry.py @@ -765,7 +765,7 @@ class TestStockEntry(unittest.TestCase): def test_warehouse_company_validation(self): set_perpetual_inventory(0) self._clear_stock_account_balance() - frappe.get_doc("User", "test2@example.com").get_controller()\ + frappe.get_doc("User", "test2@example.com")\ .add_roles("Sales User", "Sales Manager", "Material User", "Material Manager") frappe.set_user("test2@example.com") @@ -778,21 +778,20 @@ class TestStockEntry(unittest.TestCase): # permission tests def test_warehouse_user(self): import frappe.defaults - from frappe.model.bean import BeanPermissionError set_perpetual_inventory(0) frappe.defaults.add_default("Warehouse", "_Test Warehouse 1 - _TC1", "test@example.com", "Restriction") frappe.defaults.add_default("Warehouse", "_Test Warehouse 2 - _TC1", "test2@example.com", "Restriction") - frappe.get_doc("User", "test@example.com").get_controller()\ + frappe.get_doc("User", "test@example.com")\ .add_roles("Sales User", "Sales Manager", "Material User", "Material Manager") - frappe.get_doc("User", "test2@example.com").get_controller()\ + frappe.get_doc("User", "test2@example.com")\ .add_roles("Sales User", "Sales Manager", "Material User", "Material Manager") frappe.set_user("test@example.com") st1 = frappe.copy_doc(test_records[0]) st1.company = "_Test Company 1" st1.doclist[1].t_warehouse="_Test Warehouse 2 - _TC1" - self.assertRaises(BeanPermissionError, st1.insert) + self.assertRaises(frappe.PermissionError, st1.insert) frappe.set_user("test2@example.com") st1 = frappe.copy_doc(test_records[0]) diff --git a/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.py b/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.py index 0482dd33b0..17d4282f49 100644 --- a/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.py +++ b/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.py @@ -47,7 +47,7 @@ class StockLedgerEntry(DocListController): frappe.throw("""Not enough quantity (requested: %(actual_qty)s, \ current: %(batch_bal)s in Batch %(batch_no)s for Item \ %(item_code)s at Warehouse %(warehouse)s \ - as on %(posting_date)s %(posting_time)s""" % self.fields) + as on %(posting_date)s %(posting_time)s""" % self.as_dict()) self.pop('batch_bal') diff --git a/erpnext/stock/doctype/stock_uom_replace_utility/stock_uom_replace_utility.py b/erpnext/stock/doctype/stock_uom_replace_utility/stock_uom_replace_utility.py index 770c6df2ad..80354ec9fa 100644 --- a/erpnext/stock/doctype/stock_uom_replace_utility/stock_uom_replace_utility.py +++ b/erpnext/stock/doctype/stock_uom_replace_utility/stock_uom_replace_utility.py @@ -34,9 +34,9 @@ class StockUOMReplaceUtility(Document): raise Exception def update_item_master(self): - item_bean = frappe.get_doc("Item", self.item_code) - item_bean.stock_uom = self.new_stock_uom - item_bean.save() + item_doc = frappe.get_doc("Item", self.item_code) + item_doc.stock_uom = self.new_stock_uom + item_doc.save() msgprint(_("Default UOM updated in item ") + self.item_code) diff --git a/erpnext/stock/doctype/warehouse/warehouse.py b/erpnext/stock/doctype/warehouse/warehouse.py index 0bb70a5a7a..3b159fc710 100644 --- a/erpnext/stock/doctype/warehouse/warehouse.py +++ b/erpnext/stock/doctype/warehouse/warehouse.py @@ -22,15 +22,15 @@ class Warehouse(Document): self.update_parent_account() def update_parent_account(self): - if not self.__islocal and (self.create_account_under != + if not getattr(self, "__islocal", None) and (self.create_account_under != frappe.db.get_value("Warehouse", self.name, "create_account_under")): warehouse_account = frappe.db.get_value("Account", {"account_type": "Warehouse", "company": self.company, "master_name": self.name}, ["name", "parent_account"]) if warehouse_account and warehouse_account[1] != self.create_account_under: - acc_bean = frappe.get_doc("Account", warehouse_account[0]) - acc_bean.parent_account = self.create_account_under - acc_bean.save() + acc_doc = frappe.get_doc("Account", warehouse_account[0]) + acc_doc.parent_account = self.create_account_under + acc_doc.save() def on_update(self): self.create_account_head() @@ -43,7 +43,7 @@ class Warehouse(Document): if self.get("__islocal") or not frappe.db.get_value( "Stock Ledger Entry", {"warehouse": self.name}): self.validate_parent_account() - ac_bean = frappe.get_doc({ + ac_doc = frappe.get_doc({ "doctype": "Account", 'account_name': self.warehouse_name, 'parent_account': self.create_account_under, @@ -53,10 +53,10 @@ class Warehouse(Document): "master_name": self.name, "freeze_account": "No" }) - ac_bean.ignore_permissions = True - ac_bean.insert() + ac_doc.ignore_permissions = True + ac_doc.insert() - msgprint(_("Account Head") + ": " + ac_bean.name + _(" created")) + msgprint(_("Account Head") + ": " + ac_doc.name + _(" created")) def validate_parent_account(self): if not self.create_account_under: diff --git a/erpnext/stock/get_item_details.py b/erpnext/stock/get_item_details.py index ed23cf7595..eeff2750ef 100644 --- a/erpnext/stock/get_item_details.py +++ b/erpnext/stock/get_item_details.py @@ -46,20 +46,20 @@ def get_item_details(args): elif not args.item_code and args.serial_no: args.item_code = get_item_code(serial_no=args.serial_no) - item_bean = frappe.get_doc("Item", args.item_code) - item = item_bean.doc + item_doc = frappe.get_doc("Item", args.item_code) + item = item_doc validate_item_details(args, item) - out = get_basic_details(args, item_bean) + out = get_basic_details(args, item_doc) - get_party_item_code(args, item_bean, out) + get_party_item_code(args, item_doc, out) if out.get("warehouse"): out.update(get_available_qty(args.item_code, out.warehouse)) out.update(get_projected_qty(item.name, out.warehouse)) - get_price_list_rate(args, item_bean, out) + get_price_list_rate(args, item_doc, out) if args.transaction_type == "selling" and cint(args.is_pos): out.update(get_pos_settings_item_details(args.company, args)) @@ -67,8 +67,8 @@ def get_item_details(args): apply_pricing_rule(out, args) if args.get("doctype") in ("Sales Invoice", "Delivery Note"): - if item_bean.has_serial_no == "Yes" and not args.serial_no: - out.serial_no = get_serial_nos_by_fifo(args, item_bean) + if item_doc.has_serial_no == "Yes" and not args.serial_no: + out.serial_no = get_serial_nos_by_fifo(args, item_doc) if args.transaction_date and item.lead_time_days: out.schedule_date = out.lead_time_date = add_days(args.transaction_date, @@ -116,8 +116,8 @@ def validate_item_details(args, item): _("not a sub-contracted item.") + _("Please select a sub-contracted item or do not sub-contract the transaction.")) -def get_basic_details(args, item_bean): - item = item_bean.doc +def get_basic_details(args, item_doc): + item = item_doc from frappe.defaults import get_user_default_as_list user_default_warehouse_list = get_user_default_as_list('warehouse') @@ -137,7 +137,7 @@ def get_basic_details(args, item_bean): if args.transaction_type == "selling" else item.buying_cost_center, "batch_no": None, "item_tax_rate": json.dumps(dict(([d.tax_type, d.tax_rate] for d in - item_bean.get("item_tax")))), + item_doc.get("item_tax")))), "uom": item.stock_uom, "min_order_qty": flt(item.min_order_qty) if args.doctype == "Material Request" else "", "conversion_factor": 1.0, @@ -156,7 +156,7 @@ def get_basic_details(args, item_bean): return out -def get_price_list_rate(args, item_bean, out): +def get_price_list_rate(args, item_doc, out): meta = frappe.get_meta(args.doctype) if meta.get_field("currency"): @@ -173,7 +173,7 @@ def get_price_list_rate(args, item_bean, out): if not out.price_list_rate and args.transaction_type == "buying": from erpnext.stock.doctype.item.item import get_last_purchase_details - out.update(get_last_purchase_details(item_bean.name, + out.update(get_last_purchase_details(item_doc.name, args.docname, args.conversion_rate)) def validate_price_list(args): @@ -207,12 +207,12 @@ def validate_conversion_rate(args, meta): get_field_precision(meta.get_field("plc_conversion_rate"), frappe._dict({"fields": args}))) -def get_party_item_code(args, item_bean, out): +def get_party_item_code(args, item_doc, out): if args.transaction_type == "selling": - customer_item_code = item_bean.get("item_customer_details", {"customer_name": args.customer}) + customer_item_code = item_doc.get("item_customer_details", {"customer_name": args.customer}) out.customer_item_code = customer_item_code[0].ref_code if customer_item_code else None else: - item_supplier = item_bean.get({"item_supplier_details", {"supplier": args.supplier}) + item_supplier = item_doc.get("item_supplier_details", {"supplier": args.supplier}) out.supplier_part_no = item_supplier[0].supplier_part_no if item_supplier else None @@ -351,7 +351,7 @@ def apply_internal_priority(pricing_rules, field_set, args_dict): return filtered_rules or pricing_rules -def get_serial_nos_by_fifo(args, item_bean): +def get_serial_nos_by_fifo(args, item_doc): return "\n".join(frappe.db.sql_list("""select name from `tabSerial No` where item_code=%(item_code)s and warehouse=%(warehouse)s and status='Available' order by timestamp(purchase_date, purchase_time) asc limit %(qty)s""", { diff --git a/erpnext/stock/utils.py b/erpnext/stock/utils.py index 69d27ba277..343f6c96ef 100644 --- a/erpnext/stock/utils.py +++ b/erpnext/stock/utils.py @@ -261,10 +261,10 @@ def create_material_request(material_requests): "brand": item.brand, }) - mr_bean = frappe.get_doc(mr) - mr_bean.insert() - mr_bean.submit() - mr_list.append(mr_bean) + mr_doc = frappe.get_doc(mr) + mr_doc.insert() + mr_doc.submit() + mr_list.append(mr_doc) except: if frappe.local.message_log: diff --git a/erpnext/support/doctype/maintenance_schedule/maintenance_schedule.py b/erpnext/support/doctype/maintenance_schedule/maintenance_schedule.py index 1002aba52a..b9cc0bcbd3 100644 --- a/erpnext/support/doctype/maintenance_schedule/maintenance_schedule.py +++ b/erpnext/support/doctype/maintenance_schedule/maintenance_schedule.py @@ -203,9 +203,9 @@ class MaintenanceSchedule(TransactionBase): def update_amc_date(self, serial_nos, amc_expiry_date=None): for serial_no in serial_nos: - serial_no_bean = frappe.get_doc("Serial No", serial_no) - serial_no_bean.amc_expiry_date = amc_expiry_date - serial_no_bean.save() + serial_no_doc = frappe.get_doc("Serial No", serial_no) + serial_no_doc.amc_expiry_date = amc_expiry_date + serial_no_doc.save() def validate_serial_no(self, serial_nos, amc_start_date): for serial_no in serial_nos: diff --git a/erpnext/support/doctype/support_ticket/get_support_mails.py b/erpnext/support/doctype/support_ticket/get_support_mails.py index fa3b283e3a..b36437e92b 100644 --- a/erpnext/support/doctype/support_ticket/get_support_mails.py +++ b/erpnext/support/doctype/support_ticket/get_support_mails.py @@ -32,7 +32,7 @@ class SupportMailbox(POP3Mailbox): if new_ticket and cint(self.email_settings.send_autoreply) and \ "mailer-daemon" not in mail.from_email.lower(): - self.send_auto_reply(ticket.doc) + self.send_auto_reply(ticket) def send_auto_reply(self, d): signature = self.email_settings.get('support_signature') or '' @@ -80,6 +80,6 @@ def add_support_communication(subject, content, sender, docname=None, mail=None) date=mail.date if mail else today(), sent_or_received="Received") if mail: - mail.save_attachments_in_doc(ticket.doc) + mail.save_attachments_in_doc(ticket) return ticket \ No newline at end of file