Merge branch 'develop' into improve_taxes_setup
This commit is contained in:
commit
9ee6e4feb8
@ -7,11 +7,29 @@ rules:
|
|||||||
- pattern-inside: |
|
- pattern-inside: |
|
||||||
def on_submit(self, ...):
|
def on_submit(self, ...):
|
||||||
...
|
...
|
||||||
|
- metavariable-regex:
|
||||||
|
metavariable: '$ATTR'
|
||||||
|
# this is negative look-ahead, add more attrs to ignore like (ignore|ignore_this_too|ignore_me)
|
||||||
|
regex: '^(?!status_updater)(.*)$'
|
||||||
message: |
|
message: |
|
||||||
Doctype modified after submission. Please check if modification of self.$ATTR is commited to database.
|
Doctype modified after submission. Please check if modification of self.$ATTR is commited to database.
|
||||||
languages: [python]
|
languages: [python]
|
||||||
severity: ERROR
|
severity: ERROR
|
||||||
|
|
||||||
|
- id: frappe-modifying-after-cancel
|
||||||
|
patterns:
|
||||||
|
- pattern: self.$ATTR = ...
|
||||||
|
- pattern-inside: |
|
||||||
|
def on_cancel(self, ...):
|
||||||
|
...
|
||||||
|
- metavariable-regex:
|
||||||
|
metavariable: '$ATTR'
|
||||||
|
regex: '^(?!ignore_linked_doctypes|status_updater)(.*)$'
|
||||||
|
message: |
|
||||||
|
Doctype modified after cancellation. Please check if modification of self.$ATTR is commited to database.
|
||||||
|
languages: [python]
|
||||||
|
severity: ERROR
|
||||||
|
|
||||||
- id: frappe-print-function-in-doctypes
|
- id: frappe-print-function-in-doctypes
|
||||||
pattern: print(...)
|
pattern: print(...)
|
||||||
message: |
|
message: |
|
||||||
|
@ -46,7 +46,6 @@ class SalesInvoice(SellingController):
|
|||||||
'target_parent_dt': 'Sales Order',
|
'target_parent_dt': 'Sales Order',
|
||||||
'target_parent_field': 'per_billed',
|
'target_parent_field': 'per_billed',
|
||||||
'source_field': 'amount',
|
'source_field': 'amount',
|
||||||
'join_field': 'so_detail',
|
|
||||||
'percent_join_field': 'sales_order',
|
'percent_join_field': 'sales_order',
|
||||||
'status_field': 'billing_status',
|
'status_field': 'billing_status',
|
||||||
'keyword': 'Billed',
|
'keyword': 'Billed',
|
||||||
@ -276,7 +275,7 @@ class SalesInvoice(SellingController):
|
|||||||
pluck="pos_closing_entry"
|
pluck="pos_closing_entry"
|
||||||
)
|
)
|
||||||
if pos_closing_entry:
|
if pos_closing_entry:
|
||||||
msg = _("To cancel a {} you need to cancel the POS Closing Entry {}. ").format(
|
msg = _("To cancel a {} you need to cancel the POS Closing Entry {}.").format(
|
||||||
frappe.bold("Consolidated Sales Invoice"),
|
frappe.bold("Consolidated Sales Invoice"),
|
||||||
get_link_to_form("POS Closing Entry", pos_closing_entry[0])
|
get_link_to_form("POS Closing Entry", pos_closing_entry[0])
|
||||||
)
|
)
|
||||||
@ -549,12 +548,12 @@ class SalesInvoice(SellingController):
|
|||||||
frappe.throw(_("Debit To is required"), title=_("Account Missing"))
|
frappe.throw(_("Debit To is required"), title=_("Account Missing"))
|
||||||
|
|
||||||
if account.report_type != "Balance Sheet":
|
if account.report_type != "Balance Sheet":
|
||||||
msg = _("Please ensure {} account is a Balance Sheet account. ").format(frappe.bold("Debit To"))
|
msg = _("Please ensure {} account is a Balance Sheet account.").format(frappe.bold("Debit To")) + " "
|
||||||
msg += _("You can change the parent account to a Balance Sheet account or select a different account.")
|
msg += _("You can change the parent account to a Balance Sheet account or select a different account.")
|
||||||
frappe.throw(msg, title=_("Invalid Account"))
|
frappe.throw(msg, title=_("Invalid Account"))
|
||||||
|
|
||||||
if self.customer and account.account_type != "Receivable":
|
if self.customer and account.account_type != "Receivable":
|
||||||
msg = _("Please ensure {} account is a Receivable account. ").format(frappe.bold("Debit To"))
|
msg = _("Please ensure {} account is a Receivable account.").format(frappe.bold("Debit To")) + " "
|
||||||
msg += _("Change the account type to Receivable or select a different account.")
|
msg += _("Change the account type to Receivable or select a different account.")
|
||||||
frappe.throw(msg, title=_("Invalid Account"))
|
frappe.throw(msg, title=_("Invalid Account"))
|
||||||
|
|
||||||
|
@ -117,7 +117,6 @@ class StockController(AccountsController):
|
|||||||
"account": expense_account,
|
"account": expense_account,
|
||||||
"against": warehouse_account[sle.warehouse]["account"],
|
"against": warehouse_account[sle.warehouse]["account"],
|
||||||
"cost_center": item_row.cost_center,
|
"cost_center": item_row.cost_center,
|
||||||
"project": item_row.project or self.get('project'),
|
|
||||||
"remarks": self.get("remarks") or "Accounting Entry for Stock",
|
"remarks": self.get("remarks") or "Accounting Entry for Stock",
|
||||||
"credit": flt(sle.stock_value_difference, precision),
|
"credit": flt(sle.stock_value_difference, precision),
|
||||||
"project": item_row.get("project") or self.get("project"),
|
"project": item_row.get("project") or self.get("project"),
|
||||||
@ -483,7 +482,7 @@ class StockController(AccountsController):
|
|||||||
)
|
)
|
||||||
message += "<br><br>"
|
message += "<br><br>"
|
||||||
rule_link = frappe.utils.get_link_to_form("Putaway Rule", rule)
|
rule_link = frappe.utils.get_link_to_form("Putaway Rule", rule)
|
||||||
message += _(" Please adjust the qty or edit {0} to proceed.").format(rule_link)
|
message += _("Please adjust the qty or edit {0} to proceed.").format(rule_link)
|
||||||
return message
|
return message
|
||||||
|
|
||||||
def repost_future_sle_and_gle(self):
|
def repost_future_sle_and_gle(self):
|
||||||
|
@ -43,7 +43,6 @@ def get_charts():
|
|||||||
return [{
|
return [{
|
||||||
"doctype": "Dashboard Chart",
|
"doctype": "Dashboard Chart",
|
||||||
"based_on": "modified",
|
"based_on": "modified",
|
||||||
"time_interval": "Yearly",
|
|
||||||
"chart_type": "Sum",
|
"chart_type": "Sum",
|
||||||
"chart_name": _("Produced Quantity"),
|
"chart_name": _("Produced Quantity"),
|
||||||
"name": "Produced Quantity",
|
"name": "Produced Quantity",
|
||||||
@ -60,7 +59,6 @@ def get_charts():
|
|||||||
}, {
|
}, {
|
||||||
"doctype": "Dashboard Chart",
|
"doctype": "Dashboard Chart",
|
||||||
"based_on": "creation",
|
"based_on": "creation",
|
||||||
"time_interval": "Yearly",
|
|
||||||
"chart_type": "Sum",
|
"chart_type": "Sum",
|
||||||
"chart_name": _("Completed Operation"),
|
"chart_name": _("Completed Operation"),
|
||||||
"name": "Completed Operation",
|
"name": "Completed Operation",
|
||||||
|
@ -561,7 +561,6 @@ def get_material_request_items(row, sales_order, company,
|
|||||||
'item_name': row.item_name,
|
'item_name': row.item_name,
|
||||||
'quantity': required_qty,
|
'quantity': required_qty,
|
||||||
'required_bom_qty': total_qty,
|
'required_bom_qty': total_qty,
|
||||||
'description': row.description,
|
|
||||||
'stock_uom': row.get("stock_uom"),
|
'stock_uom': row.get("stock_uom"),
|
||||||
'warehouse': warehouse or row.get('source_warehouse') \
|
'warehouse': warehouse or row.get('source_warehouse') \
|
||||||
or row.get('default_warehouse') or item_group_defaults.get("default_warehouse"),
|
or row.get('default_warehouse') or item_group_defaults.get("default_warehouse"),
|
||||||
@ -766,7 +765,7 @@ def get_items_for_material_requests(doc, warehouses=None):
|
|||||||
to_enable = frappe.bold(_("Ignore Existing Projected Quantity"))
|
to_enable = frappe.bold(_("Ignore Existing Projected Quantity"))
|
||||||
warehouse = frappe.bold(doc.get('for_warehouse'))
|
warehouse = frappe.bold(doc.get('for_warehouse'))
|
||||||
message = _("As there are sufficient raw materials, Material Request is not required for Warehouse {0}.").format(warehouse) + "<br><br>"
|
message = _("As there are sufficient raw materials, Material Request is not required for Warehouse {0}.").format(warehouse) + "<br><br>"
|
||||||
message += _(" If you still want to proceed, please enable {0}.").format(to_enable)
|
message += _("If you still want to proceed, please enable {0}.").format(to_enable)
|
||||||
|
|
||||||
frappe.msgprint(message, title=_("Note"))
|
frappe.msgprint(message, title=_("Note"))
|
||||||
|
|
||||||
|
@ -772,3 +772,4 @@ erpnext.patches.v12_0.purchase_receipt_status
|
|||||||
erpnext.patches.v13_0.fix_non_unique_represents_company
|
erpnext.patches.v13_0.fix_non_unique_represents_company
|
||||||
erpnext.patches.v12_0.add_document_type_field_for_italy_einvoicing
|
erpnext.patches.v12_0.add_document_type_field_for_italy_einvoicing
|
||||||
erpnext.patches.v13_0.make_non_standard_user_type #13-04-2021
|
erpnext.patches.v13_0.make_non_standard_user_type #13-04-2021
|
||||||
|
erpnext.patches.v13_0.update_shipment_status
|
||||||
|
14
erpnext/patches/v13_0/update_shipment_status.py
Normal file
14
erpnext/patches/v13_0/update_shipment_status.py
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
import frappe
|
||||||
|
|
||||||
|
def execute():
|
||||||
|
frappe.reload_doc("stock", "doctype", "shipment")
|
||||||
|
|
||||||
|
# update submitted status
|
||||||
|
frappe.db.sql("""UPDATE `tabShipment`
|
||||||
|
SET status = "Submitted"
|
||||||
|
WHERE status = "Draft" AND docstatus = 1""")
|
||||||
|
|
||||||
|
# update cancelled status
|
||||||
|
frappe.db.sql("""UPDATE `tabShipment`
|
||||||
|
SET status = "Cancelled"
|
||||||
|
WHERE status = "Draft" AND docstatus = 2""")
|
@ -561,7 +561,7 @@ def get_json(filters, report_name, data):
|
|||||||
|
|
||||||
fp = "%02d%s" % (getdate(filters["to_date"]).month, getdate(filters["to_date"]).year)
|
fp = "%02d%s" % (getdate(filters["to_date"]).month, getdate(filters["to_date"]).year)
|
||||||
|
|
||||||
gst_json = {"gstin": "", "version": "GST2.2.9",
|
gst_json = {"version": "GST2.2.9",
|
||||||
"hash": "hash", "gstin": gstin, "fp": fp}
|
"hash": "hash", "gstin": gstin, "fp": fp}
|
||||||
|
|
||||||
res = {}
|
res = {}
|
||||||
|
@ -23,10 +23,10 @@ class Shipment(Document):
|
|||||||
frappe.throw(_('Please enter Shipment Parcel information'))
|
frappe.throw(_('Please enter Shipment Parcel information'))
|
||||||
if self.value_of_goods == 0:
|
if self.value_of_goods == 0:
|
||||||
frappe.throw(_('Value of goods cannot be 0'))
|
frappe.throw(_('Value of goods cannot be 0'))
|
||||||
self.status = 'Submitted'
|
self.db_set('status', 'Submitted')
|
||||||
|
|
||||||
def on_cancel(self):
|
def on_cancel(self):
|
||||||
self.status = 'Cancelled'
|
self.db_set('status', 'Cancelled')
|
||||||
|
|
||||||
def validate_weight(self):
|
def validate_weight(self):
|
||||||
for parcel in self.shipment_parcel:
|
for parcel in self.shipment_parcel:
|
||||||
|
@ -309,8 +309,6 @@ def get_basic_details(args, item, overwrite_warehouse=True):
|
|||||||
"update_stock": args.get("update_stock") if args.get('doctype') in ['Sales Invoice', 'Purchase Invoice'] else 0,
|
"update_stock": args.get("update_stock") if args.get('doctype') in ['Sales Invoice', 'Purchase Invoice'] else 0,
|
||||||
"delivered_by_supplier": item.delivered_by_supplier if args.get("doctype") in ["Sales Order", "Sales Invoice"] else 0,
|
"delivered_by_supplier": item.delivered_by_supplier if args.get("doctype") in ["Sales Order", "Sales Invoice"] else 0,
|
||||||
"is_fixed_asset": item.is_fixed_asset,
|
"is_fixed_asset": item.is_fixed_asset,
|
||||||
"weight_per_unit":item.weight_per_unit,
|
|
||||||
"weight_uom":item.weight_uom,
|
|
||||||
"last_purchase_rate": item.last_purchase_rate if args.get("doctype") in ["Purchase Order"] else 0,
|
"last_purchase_rate": item.last_purchase_rate if args.get("doctype") in ["Purchase Order"] else 0,
|
||||||
"transaction_date": args.get("transaction_date"),
|
"transaction_date": args.get("transaction_date"),
|
||||||
"against_blanket_order": args.get("against_blanket_order"),
|
"against_blanket_order": args.get("against_blanket_order"),
|
||||||
|
@ -18,7 +18,6 @@ def get_level():
|
|||||||
"Delivery Note": 5,
|
"Delivery Note": 5,
|
||||||
"Employee": 3,
|
"Employee": 3,
|
||||||
"Instructor": 5,
|
"Instructor": 5,
|
||||||
"Instructor": 5,
|
|
||||||
"Issue": 5,
|
"Issue": 5,
|
||||||
"Item": 5,
|
"Item": 5,
|
||||||
"Journal Entry": 3,
|
"Journal Entry": 3,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user