mirror of
https://github.com/frappe/erpnext.git
synced 2026-06-06 21:59:13 +00:00
Merge branch 'version-12-hotfix' of https://github.com/frappe/erpnext into gstr3b_cess_v12_hotfix
This commit is contained in:
@@ -225,7 +225,7 @@ def build_tree_from_json(chart_template, chart_data=None):
|
|||||||
|
|
||||||
account['parent_account'] = parent
|
account['parent_account'] = parent
|
||||||
account['expandable'] = True if identify_is_group(child) else False
|
account['expandable'] = True if identify_is_group(child) else False
|
||||||
account['value'] = (child.get('account_number') + ' - ' + account_name) \
|
account['value'] = (cstr(child.get('account_number')).strip() + ' - ' + account_name) \
|
||||||
if child.get('account_number') else account_name
|
if child.get('account_number') else account_name
|
||||||
accounts.append(account)
|
accounts.append(account)
|
||||||
_import_accounts(child, account['value'])
|
_import_accounts(child, account['value'])
|
||||||
|
|||||||
@@ -60,12 +60,13 @@ class BankReconciliation(Document):
|
|||||||
""".format(condition=condition), {"account": self.account, "from":self.from_date,
|
""".format(condition=condition), {"account": self.account, "from":self.from_date,
|
||||||
"to": self.to_date, "bank_account": self.bank_account}, as_dict=1)
|
"to": self.to_date, "bank_account": self.bank_account}, as_dict=1)
|
||||||
|
|
||||||
pos_entries = []
|
|
||||||
|
pos_sales_invoices, pos_purchase_invoices = [], []
|
||||||
if self.include_pos_transactions:
|
if self.include_pos_transactions:
|
||||||
pos_entries = frappe.db.sql("""
|
pos_sales_invoices = frappe.db.sql("""
|
||||||
select
|
select
|
||||||
"Sales Invoice Payment" as payment_document, sip.name as payment_entry, sip.amount as debit,
|
"Sales Invoice Payment" as payment_document, sip.name as payment_entry, sip.amount as debit,
|
||||||
si.posting_date, si.debit_to as against_account, sip.clearance_date,
|
si.posting_date, si.customer as against_account, sip.clearance_date,
|
||||||
account.account_currency, 0 as credit
|
account.account_currency, 0 as credit
|
||||||
from `tabSales Invoice Payment` sip, `tabSales Invoice` si, `tabAccount` account
|
from `tabSales Invoice Payment` sip, `tabSales Invoice` si, `tabAccount` account
|
||||||
where
|
where
|
||||||
@@ -75,7 +76,20 @@ class BankReconciliation(Document):
|
|||||||
si.posting_date ASC, si.name DESC
|
si.posting_date ASC, si.name DESC
|
||||||
""", {"account":self.account, "from":self.from_date, "to":self.to_date}, as_dict=1)
|
""", {"account":self.account, "from":self.from_date, "to":self.to_date}, as_dict=1)
|
||||||
|
|
||||||
entries = sorted(list(payment_entries)+list(journal_entries+list(pos_entries)),
|
pos_purchase_invoices = frappe.db.sql("""
|
||||||
|
select
|
||||||
|
"Purchase Invoice" as payment_document, pi.name as payment_entry, pi.paid_amount as credit,
|
||||||
|
pi.posting_date, pi.supplier as against_account, pi.clearance_date,
|
||||||
|
account.account_currency, 0 as debit
|
||||||
|
from `tabPurchase Invoice` pi, `tabAccount` account
|
||||||
|
where
|
||||||
|
pi.cash_bank_account=%(account)s and pi.docstatus=1 and account.name = pi.cash_bank_account
|
||||||
|
and pi.posting_date >= %(from)s and pi.posting_date <= %(to)s
|
||||||
|
order by
|
||||||
|
pi.posting_date ASC, pi.name DESC
|
||||||
|
""", {"account": self.account, "from": self.from_date, "to": self.to_date}, as_dict=1)
|
||||||
|
|
||||||
|
entries = sorted(list(payment_entries) + list(journal_entries + list(pos_sales_invoices) + list(pos_purchase_invoices)),
|
||||||
key=lambda k: k['posting_date'] or getdate(nowdate()))
|
key=lambda k: k['posting_date'] or getdate(nowdate()))
|
||||||
|
|
||||||
self.set('payment_entries', [])
|
self.set('payment_entries', [])
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ frappe.ui.form.on('Payment Entry', {
|
|||||||
});
|
});
|
||||||
frm.set_query("party_type", function() {
|
frm.set_query("party_type", function() {
|
||||||
return{
|
return{
|
||||||
"filters": {
|
filters: {
|
||||||
"name": ["in", Object.keys(frappe.boot.party_account_types)],
|
"name": ["in", Object.keys(frappe.boot.party_account_types)],
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -33,14 +33,16 @@ frappe.ui.form.on('Payment Entry', {
|
|||||||
frm.set_query("party_bank_account", function() {
|
frm.set_query("party_bank_account", function() {
|
||||||
return {
|
return {
|
||||||
filters: {
|
filters: {
|
||||||
"is_company_account":0
|
is_company_account: 0,
|
||||||
|
party_type: frm.doc.party_type,
|
||||||
|
party: frm.doc.party
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
frm.set_query("bank_account", function() {
|
frm.set_query("bank_account", function() {
|
||||||
return {
|
return {
|
||||||
filters: {
|
filters: {
|
||||||
"is_company_account":1
|
is_company_account: 1
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -326,7 +328,7 @@ frappe.ui.form.on('Payment Entry', {
|
|||||||
() => {
|
() => {
|
||||||
frm.set_party_account_based_on_party = false;
|
frm.set_party_account_based_on_party = false;
|
||||||
if (r.message.bank_account) {
|
if (r.message.bank_account) {
|
||||||
frm.set_value("party_bank_account", r.message.bank_account);
|
frm.set_value("bank_account", r.message.bank_account);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
]);
|
]);
|
||||||
|
|||||||
@@ -281,7 +281,8 @@ def reconcile_dr_cr_note(dr_cr_notes, company):
|
|||||||
'party_type': d.party_type,
|
'party_type': d.party_type,
|
||||||
d.dr_or_cr: abs(d.allocated_amount),
|
d.dr_or_cr: abs(d.allocated_amount),
|
||||||
'reference_type': d.against_voucher_type,
|
'reference_type': d.against_voucher_type,
|
||||||
'reference_name': d.against_voucher
|
'reference_name': d.against_voucher,
|
||||||
|
'cost_center': erpnext.get_default_cost_center(company)
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'account': d.account,
|
'account': d.account,
|
||||||
@@ -290,7 +291,8 @@ def reconcile_dr_cr_note(dr_cr_notes, company):
|
|||||||
reconcile_dr_or_cr: (abs(d.allocated_amount)
|
reconcile_dr_or_cr: (abs(d.allocated_amount)
|
||||||
if abs(d.unadjusted_amount) > abs(d.allocated_amount) else abs(d.unadjusted_amount)),
|
if abs(d.unadjusted_amount) > abs(d.allocated_amount) else abs(d.unadjusted_amount)),
|
||||||
'reference_type': d.voucher_type,
|
'reference_type': d.voucher_type,
|
||||||
'reference_name': d.voucher_no
|
'reference_name': d.voucher_no,
|
||||||
|
'cost_center': erpnext.get_default_cost_center(company)
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -140,9 +140,6 @@ class PaymentRequest(Document):
|
|||||||
})
|
})
|
||||||
|
|
||||||
def set_as_paid(self):
|
def set_as_paid(self):
|
||||||
if frappe.session.user == "Guest":
|
|
||||||
frappe.set_user("Administrator")
|
|
||||||
|
|
||||||
payment_entry = self.create_payment_entry()
|
payment_entry = self.create_payment_entry()
|
||||||
self.make_invoice()
|
self.make_invoice()
|
||||||
|
|
||||||
@@ -254,7 +251,7 @@ class PaymentRequest(Document):
|
|||||||
|
|
||||||
if status in ["Authorized", "Completed"]:
|
if status in ["Authorized", "Completed"]:
|
||||||
redirect_to = None
|
redirect_to = None
|
||||||
self.run_method("set_as_paid")
|
self.set_as_paid()
|
||||||
|
|
||||||
# if shopping cart enabled and in session
|
# if shopping cart enabled and in session
|
||||||
if (shopping_cart_settings.enabled and hasattr(frappe.local, "session")
|
if (shopping_cart_settings.enabled and hasattr(frappe.local, "session")
|
||||||
|
|||||||
@@ -280,7 +280,7 @@ def get_pricing_rule_for_item(args, price_list_rate=0, doc=None, for_validate=Fa
|
|||||||
|
|
||||||
item_details.has_pricing_rule = 1
|
item_details.has_pricing_rule = 1
|
||||||
|
|
||||||
item_details.pricing_rules = ','.join([d.pricing_rule for d in rules])
|
item_details.pricing_rules = frappe.as_json([d.pricing_rule for d in rules])
|
||||||
|
|
||||||
if not doc: return item_details
|
if not doc: return item_details
|
||||||
|
|
||||||
@@ -370,7 +370,7 @@ def set_discount_amount(rate, item_details):
|
|||||||
|
|
||||||
def remove_pricing_rule_for_item(pricing_rules, item_details, item_code=None):
|
def remove_pricing_rule_for_item(pricing_rules, item_details, item_code=None):
|
||||||
from erpnext.accounts.doctype.pricing_rule.utils import get_pricing_rule_items
|
from erpnext.accounts.doctype.pricing_rule.utils import get_pricing_rule_items
|
||||||
for d in pricing_rules.split(','):
|
for d in json.loads(pricing_rules):
|
||||||
if not d or not frappe.db.exists("Pricing Rule", d): continue
|
if not d or not frappe.db.exists("Pricing Rule", d): continue
|
||||||
pricing_rule = frappe.get_cached_doc('Pricing Rule', d)
|
pricing_rule = frappe.get_cached_doc('Pricing Rule', d)
|
||||||
|
|
||||||
|
|||||||
@@ -471,7 +471,7 @@ def apply_pricing_rule_on_transaction(doc):
|
|||||||
doc.set_missing_values()
|
doc.set_missing_values()
|
||||||
|
|
||||||
def get_applied_pricing_rules(item_row):
|
def get_applied_pricing_rules(item_row):
|
||||||
return (item_row.get("pricing_rules").split(',')
|
return (json.loads(item_row.get("pricing_rules"))
|
||||||
if item_row.get("pricing_rules") else [])
|
if item_row.get("pricing_rules") else [])
|
||||||
|
|
||||||
def get_product_discount_rule(pricing_rule, item_details, args=None, doc=None):
|
def get_product_discount_rule(pricing_rule, item_details, args=None, doc=None):
|
||||||
|
|||||||
@@ -962,8 +962,10 @@
|
|||||||
{
|
{
|
||||||
"fieldname": "clearance_date",
|
"fieldname": "clearance_date",
|
||||||
"fieldtype": "Date",
|
"fieldtype": "Date",
|
||||||
"hidden": 1,
|
"label": "Clearance Date",
|
||||||
"label": "Clearance Date"
|
"no_copy": 1,
|
||||||
|
"print_hide": 1,
|
||||||
|
"read_only": 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"fieldname": "col_br_payments",
|
"fieldname": "col_br_payments",
|
||||||
@@ -1298,7 +1300,7 @@
|
|||||||
"icon": "fa fa-file-text",
|
"icon": "fa fa-file-text",
|
||||||
"idx": 204,
|
"idx": 204,
|
||||||
"is_submittable": 1,
|
"is_submittable": 1,
|
||||||
"modified": "2020-07-01 12:41:54.851217",
|
"modified": "2020-08-03 13:08:19.611710",
|
||||||
"modified_by": "Administrator",
|
"modified_by": "Administrator",
|
||||||
"module": "Accounts",
|
"module": "Accounts",
|
||||||
"name": "Purchase Invoice",
|
"name": "Purchase Invoice",
|
||||||
|
|||||||
@@ -1,314 +1,89 @@
|
|||||||
{
|
{
|
||||||
"allow_copy": 0,
|
|
||||||
"allow_events_in_timeline": 0,
|
|
||||||
"allow_guest_to_view": 0,
|
|
||||||
"allow_import": 0,
|
|
||||||
"allow_rename": 0,
|
|
||||||
"beta": 0,
|
|
||||||
"creation": "2016-05-08 23:49:38.842621",
|
"creation": "2016-05-08 23:49:38.842621",
|
||||||
"custom": 0,
|
|
||||||
"docstatus": 0,
|
|
||||||
"doctype": "DocType",
|
"doctype": "DocType",
|
||||||
"document_type": "",
|
|
||||||
"editable_grid": 1,
|
"editable_grid": 1,
|
||||||
|
"engine": "InnoDB",
|
||||||
|
"field_order": [
|
||||||
|
"default",
|
||||||
|
"mode_of_payment",
|
||||||
|
"amount",
|
||||||
|
"column_break_3",
|
||||||
|
"account",
|
||||||
|
"type",
|
||||||
|
"base_amount",
|
||||||
|
"clearance_date"
|
||||||
|
],
|
||||||
"fields": [
|
"fields": [
|
||||||
{
|
{
|
||||||
"allow_bulk_edit": 0,
|
"default": "0",
|
||||||
"allow_in_quick_entry": 0,
|
|
||||||
"allow_on_submit": 0,
|
|
||||||
"bold": 0,
|
|
||||||
"collapsible": 0,
|
|
||||||
"columns": 0,
|
|
||||||
"depends_on": "eval:parent.doctype == 'POS Profile'",
|
"depends_on": "eval:parent.doctype == 'POS Profile'",
|
||||||
"fetch_if_empty": 0,
|
|
||||||
"fieldname": "default",
|
"fieldname": "default",
|
||||||
"fieldtype": "Check",
|
"fieldtype": "Check",
|
||||||
"hidden": 0,
|
|
||||||
"ignore_user_permissions": 0,
|
|
||||||
"ignore_xss_filter": 0,
|
|
||||||
"in_filter": 0,
|
|
||||||
"in_global_search": 0,
|
|
||||||
"in_list_view": 1,
|
"in_list_view": 1,
|
||||||
"in_standard_filter": 0,
|
"label": "Default"
|
||||||
"label": "Default",
|
|
||||||
"length": 0,
|
|
||||||
"no_copy": 0,
|
|
||||||
"permlevel": 0,
|
|
||||||
"precision": "",
|
|
||||||
"print_hide": 0,
|
|
||||||
"print_hide_if_no_value": 0,
|
|
||||||
"read_only": 0,
|
|
||||||
"remember_last_selected_value": 0,
|
|
||||||
"report_hide": 0,
|
|
||||||
"reqd": 0,
|
|
||||||
"search_index": 0,
|
|
||||||
"set_only_once": 0,
|
|
||||||
"translatable": 0,
|
|
||||||
"unique": 0
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"allow_bulk_edit": 0,
|
|
||||||
"allow_in_quick_entry": 0,
|
|
||||||
"allow_on_submit": 0,
|
|
||||||
"bold": 0,
|
|
||||||
"collapsible": 0,
|
|
||||||
"columns": 0,
|
|
||||||
"fetch_if_empty": 0,
|
|
||||||
"fieldname": "mode_of_payment",
|
"fieldname": "mode_of_payment",
|
||||||
"fieldtype": "Link",
|
"fieldtype": "Link",
|
||||||
"hidden": 0,
|
|
||||||
"ignore_user_permissions": 0,
|
|
||||||
"ignore_xss_filter": 0,
|
|
||||||
"in_filter": 0,
|
|
||||||
"in_global_search": 0,
|
|
||||||
"in_list_view": 1,
|
"in_list_view": 1,
|
||||||
"in_standard_filter": 0,
|
|
||||||
"label": "Mode of Payment",
|
"label": "Mode of Payment",
|
||||||
"length": 0,
|
|
||||||
"no_copy": 0,
|
|
||||||
"options": "Mode of Payment",
|
"options": "Mode of Payment",
|
||||||
"permlevel": 0,
|
"reqd": 1
|
||||||
"precision": "",
|
|
||||||
"print_hide": 0,
|
|
||||||
"print_hide_if_no_value": 0,
|
|
||||||
"read_only": 0,
|
|
||||||
"remember_last_selected_value": 0,
|
|
||||||
"report_hide": 0,
|
|
||||||
"reqd": 1,
|
|
||||||
"search_index": 0,
|
|
||||||
"set_only_once": 0,
|
|
||||||
"translatable": 0,
|
|
||||||
"unique": 0
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"allow_bulk_edit": 0,
|
|
||||||
"allow_in_quick_entry": 0,
|
|
||||||
"allow_on_submit": 0,
|
|
||||||
"bold": 0,
|
|
||||||
"collapsible": 0,
|
|
||||||
"columns": 0,
|
|
||||||
"default": "0",
|
"default": "0",
|
||||||
"depends_on": "eval:parent.doctype == 'Sales Invoice'",
|
"depends_on": "eval:parent.doctype == 'Sales Invoice'",
|
||||||
"fetch_if_empty": 0,
|
|
||||||
"fieldname": "amount",
|
"fieldname": "amount",
|
||||||
"fieldtype": "Currency",
|
"fieldtype": "Currency",
|
||||||
"hidden": 0,
|
|
||||||
"ignore_user_permissions": 0,
|
|
||||||
"ignore_xss_filter": 0,
|
|
||||||
"in_filter": 0,
|
|
||||||
"in_global_search": 0,
|
|
||||||
"in_list_view": 1,
|
"in_list_view": 1,
|
||||||
"in_standard_filter": 0,
|
|
||||||
"label": "Amount",
|
"label": "Amount",
|
||||||
"length": 0,
|
|
||||||
"no_copy": 0,
|
|
||||||
"options": "currency",
|
"options": "currency",
|
||||||
"permlevel": 0,
|
"reqd": 1
|
||||||
"precision": "",
|
|
||||||
"print_hide": 0,
|
|
||||||
"print_hide_if_no_value": 0,
|
|
||||||
"read_only": 0,
|
|
||||||
"remember_last_selected_value": 0,
|
|
||||||
"report_hide": 0,
|
|
||||||
"reqd": 1,
|
|
||||||
"search_index": 0,
|
|
||||||
"set_only_once": 0,
|
|
||||||
"translatable": 0,
|
|
||||||
"unique": 0
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"allow_bulk_edit": 0,
|
|
||||||
"allow_in_quick_entry": 0,
|
|
||||||
"allow_on_submit": 0,
|
|
||||||
"bold": 0,
|
|
||||||
"collapsible": 0,
|
|
||||||
"columns": 0,
|
|
||||||
"fetch_if_empty": 0,
|
|
||||||
"fieldname": "column_break_3",
|
"fieldname": "column_break_3",
|
||||||
"fieldtype": "Column Break",
|
"fieldtype": "Column Break"
|
||||||
"hidden": 0,
|
|
||||||
"ignore_user_permissions": 0,
|
|
||||||
"ignore_xss_filter": 0,
|
|
||||||
"in_filter": 0,
|
|
||||||
"in_global_search": 0,
|
|
||||||
"in_list_view": 0,
|
|
||||||
"in_standard_filter": 0,
|
|
||||||
"length": 0,
|
|
||||||
"no_copy": 0,
|
|
||||||
"permlevel": 0,
|
|
||||||
"precision": "",
|
|
||||||
"print_hide": 0,
|
|
||||||
"print_hide_if_no_value": 0,
|
|
||||||
"read_only": 0,
|
|
||||||
"remember_last_selected_value": 0,
|
|
||||||
"report_hide": 0,
|
|
||||||
"reqd": 0,
|
|
||||||
"search_index": 0,
|
|
||||||
"set_only_once": 0,
|
|
||||||
"translatable": 0,
|
|
||||||
"unique": 0
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"allow_bulk_edit": 0,
|
|
||||||
"allow_in_quick_entry": 0,
|
|
||||||
"allow_on_submit": 0,
|
|
||||||
"bold": 0,
|
|
||||||
"collapsible": 0,
|
|
||||||
"columns": 0,
|
|
||||||
"fetch_if_empty": 0,
|
|
||||||
"fieldname": "account",
|
"fieldname": "account",
|
||||||
"fieldtype": "Link",
|
"fieldtype": "Link",
|
||||||
"hidden": 0,
|
|
||||||
"ignore_user_permissions": 0,
|
|
||||||
"ignore_xss_filter": 0,
|
|
||||||
"in_filter": 0,
|
|
||||||
"in_global_search": 0,
|
|
||||||
"in_list_view": 0,
|
|
||||||
"in_standard_filter": 0,
|
|
||||||
"label": "Account",
|
"label": "Account",
|
||||||
"length": 0,
|
|
||||||
"no_copy": 0,
|
|
||||||
"options": "Account",
|
"options": "Account",
|
||||||
"permlevel": 0,
|
|
||||||
"precision": "",
|
|
||||||
"print_hide": 1,
|
"print_hide": 1,
|
||||||
"print_hide_if_no_value": 0,
|
"read_only": 1
|
||||||
"read_only": 1,
|
|
||||||
"remember_last_selected_value": 0,
|
|
||||||
"report_hide": 0,
|
|
||||||
"reqd": 0,
|
|
||||||
"search_index": 0,
|
|
||||||
"set_only_once": 0,
|
|
||||||
"translatable": 0,
|
|
||||||
"unique": 0
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"allow_bulk_edit": 0,
|
|
||||||
"allow_in_quick_entry": 0,
|
|
||||||
"allow_on_submit": 0,
|
|
||||||
"bold": 0,
|
|
||||||
"collapsible": 0,
|
|
||||||
"columns": 0,
|
|
||||||
"fetch_from": "mode_of_payment.type",
|
"fetch_from": "mode_of_payment.type",
|
||||||
"fetch_if_empty": 0,
|
|
||||||
"fieldname": "type",
|
"fieldname": "type",
|
||||||
"fieldtype": "Read Only",
|
"fieldtype": "Read Only",
|
||||||
"hidden": 0,
|
"label": "Type"
|
||||||
"ignore_user_permissions": 0,
|
|
||||||
"ignore_xss_filter": 0,
|
|
||||||
"in_filter": 0,
|
|
||||||
"in_global_search": 0,
|
|
||||||
"in_list_view": 0,
|
|
||||||
"in_standard_filter": 0,
|
|
||||||
"label": "Type",
|
|
||||||
"length": 0,
|
|
||||||
"no_copy": 0,
|
|
||||||
"options": "",
|
|
||||||
"permlevel": 0,
|
|
||||||
"precision": "",
|
|
||||||
"print_hide": 0,
|
|
||||||
"print_hide_if_no_value": 0,
|
|
||||||
"read_only": 0,
|
|
||||||
"remember_last_selected_value": 0,
|
|
||||||
"report_hide": 0,
|
|
||||||
"reqd": 0,
|
|
||||||
"search_index": 0,
|
|
||||||
"set_only_once": 0,
|
|
||||||
"translatable": 0,
|
|
||||||
"unique": 0
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"allow_bulk_edit": 0,
|
|
||||||
"allow_in_quick_entry": 0,
|
|
||||||
"allow_on_submit": 0,
|
|
||||||
"bold": 0,
|
|
||||||
"collapsible": 0,
|
|
||||||
"columns": 0,
|
|
||||||
"fetch_if_empty": 0,
|
|
||||||
"fieldname": "base_amount",
|
"fieldname": "base_amount",
|
||||||
"fieldtype": "Currency",
|
"fieldtype": "Currency",
|
||||||
"hidden": 0,
|
|
||||||
"ignore_user_permissions": 0,
|
|
||||||
"ignore_xss_filter": 0,
|
|
||||||
"in_filter": 0,
|
|
||||||
"in_global_search": 0,
|
|
||||||
"in_list_view": 0,
|
|
||||||
"in_standard_filter": 0,
|
|
||||||
"label": "Base Amount (Company Currency)",
|
"label": "Base Amount (Company Currency)",
|
||||||
"length": 0,
|
|
||||||
"no_copy": 1,
|
"no_copy": 1,
|
||||||
"options": "Company:company:default_currency",
|
"options": "Company:company:default_currency",
|
||||||
"permlevel": 0,
|
|
||||||
"precision": "",
|
|
||||||
"print_hide": 1,
|
"print_hide": 1,
|
||||||
"print_hide_if_no_value": 0,
|
"read_only": 1
|
||||||
"read_only": 1,
|
|
||||||
"remember_last_selected_value": 0,
|
|
||||||
"report_hide": 0,
|
|
||||||
"reqd": 0,
|
|
||||||
"search_index": 0,
|
|
||||||
"set_only_once": 0,
|
|
||||||
"translatable": 0,
|
|
||||||
"unique": 0
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"allow_bulk_edit": 0,
|
|
||||||
"allow_in_quick_entry": 0,
|
|
||||||
"allow_on_submit": 0,
|
|
||||||
"bold": 0,
|
|
||||||
"collapsible": 0,
|
|
||||||
"columns": 0,
|
|
||||||
"fetch_if_empty": 0,
|
|
||||||
"fieldname": "clearance_date",
|
"fieldname": "clearance_date",
|
||||||
"fieldtype": "Date",
|
"fieldtype": "Date",
|
||||||
"hidden": 0,
|
|
||||||
"ignore_user_permissions": 0,
|
|
||||||
"ignore_xss_filter": 0,
|
|
||||||
"in_filter": 0,
|
|
||||||
"in_global_search": 0,
|
|
||||||
"in_list_view": 0,
|
|
||||||
"in_standard_filter": 0,
|
|
||||||
"label": "Clearance Date",
|
"label": "Clearance Date",
|
||||||
"length": 0,
|
"no_copy": 1,
|
||||||
"no_copy": 0,
|
|
||||||
"permlevel": 0,
|
|
||||||
"precision": "",
|
|
||||||
"print_hide": 1,
|
"print_hide": 1,
|
||||||
"print_hide_if_no_value": 0,
|
"read_only": 1
|
||||||
"read_only": 1,
|
|
||||||
"remember_last_selected_value": 0,
|
|
||||||
"report_hide": 0,
|
|
||||||
"reqd": 0,
|
|
||||||
"search_index": 0,
|
|
||||||
"set_only_once": 0,
|
|
||||||
"translatable": 0,
|
|
||||||
"unique": 0
|
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"has_web_view": 0,
|
|
||||||
"hide_heading": 0,
|
|
||||||
"hide_toolbar": 0,
|
|
||||||
"idx": 0,
|
|
||||||
"image_view": 0,
|
|
||||||
"in_create": 0,
|
|
||||||
"is_submittable": 0,
|
|
||||||
"issingle": 0,
|
|
||||||
"istable": 1,
|
"istable": 1,
|
||||||
"max_attachments": 0,
|
"modified": "2020-08-03 13:07:49.260534",
|
||||||
"modified": "2019-03-19 14:54:56.524556",
|
|
||||||
"modified_by": "Administrator",
|
"modified_by": "Administrator",
|
||||||
"module": "Accounts",
|
"module": "Accounts",
|
||||||
"name": "Sales Invoice Payment",
|
"name": "Sales Invoice Payment",
|
||||||
"name_case": "",
|
|
||||||
"owner": "Administrator",
|
"owner": "Administrator",
|
||||||
"permissions": [],
|
"permissions": [],
|
||||||
"quick_entry": 1,
|
"quick_entry": 1,
|
||||||
"read_only": 0,
|
|
||||||
"read_only_onload": 0,
|
|
||||||
"show_name_in_global_search": 0,
|
|
||||||
"sort_field": "modified",
|
"sort_field": "modified",
|
||||||
"sort_order": "DESC",
|
"sort_order": "DESC"
|
||||||
"track_changes": 0,
|
|
||||||
"track_seen": 0,
|
|
||||||
"track_views": 0
|
|
||||||
}
|
}
|
||||||
@@ -643,6 +643,8 @@ class ReceivablePayableReport(object):
|
|||||||
account_type = "Receivable" if self.party_type == "Customer" else "Payable"
|
account_type = "Receivable" if self.party_type == "Customer" else "Payable"
|
||||||
accounts = [d.name for d in frappe.get_all("Account",
|
accounts = [d.name for d in frappe.get_all("Account",
|
||||||
filters={"account_type": account_type, "company": self.filters.company})]
|
filters={"account_type": account_type, "company": self.filters.company})]
|
||||||
|
|
||||||
|
if accounts:
|
||||||
conditions.append("account in (%s)" % ','.join(['%s'] *len(accounts)))
|
conditions.append("account in (%s)" % ','.join(['%s'] *len(accounts)))
|
||||||
values += accounts
|
values += accounts
|
||||||
|
|
||||||
|
|||||||
@@ -97,7 +97,7 @@
|
|||||||
{
|
{
|
||||||
"fieldname": "default_bank_account",
|
"fieldname": "default_bank_account",
|
||||||
"fieldtype": "Link",
|
"fieldtype": "Link",
|
||||||
"label": "Default Bank Account",
|
"label": "Default Company Bank Account",
|
||||||
"options": "Bank Account"
|
"options": "Bank Account"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -385,7 +385,7 @@
|
|||||||
"idx": 370,
|
"idx": 370,
|
||||||
"image_field": "image",
|
"image_field": "image",
|
||||||
"links": [],
|
"links": [],
|
||||||
"modified": "2020-03-17 09:48:30.578242",
|
"modified": "2020-06-17 23:28:30",
|
||||||
"modified_by": "Administrator",
|
"modified_by": "Administrator",
|
||||||
"module": "Buying",
|
"module": "Buying",
|
||||||
"name": "Supplier",
|
"name": "Supplier",
|
||||||
|
|||||||
@@ -593,7 +593,7 @@ class calculate_taxes_and_totals(object):
|
|||||||
base_rate_with_margin = 0.0
|
base_rate_with_margin = 0.0
|
||||||
if item.price_list_rate:
|
if item.price_list_rate:
|
||||||
if item.pricing_rules and not self.doc.ignore_pricing_rule:
|
if item.pricing_rules and not self.doc.ignore_pricing_rule:
|
||||||
for d in item.pricing_rules.split(','):
|
for d in json.loads(item.pricing_rules):
|
||||||
pricing_rule = frappe.get_cached_doc('Pricing Rule', d)
|
pricing_rule = frappe.get_cached_doc('Pricing Rule', d)
|
||||||
|
|
||||||
if (pricing_rule.margin_type == 'Amount' and pricing_rule.currency == self.doc.currency)\
|
if (pricing_rule.margin_type == 'Amount' and pricing_rule.currency == self.doc.currency)\
|
||||||
|
|||||||
@@ -17,7 +17,8 @@ def get_columns():
|
|||||||
{
|
{
|
||||||
"fieldname": "lead_owner",
|
"fieldname": "lead_owner",
|
||||||
"label": _("Lead Owner"),
|
"label": _("Lead Owner"),
|
||||||
"fieldtype": "Data",
|
"fieldtype": "Link",
|
||||||
|
"options": "User",
|
||||||
"width": "130"
|
"width": "130"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -140,7 +140,7 @@ education.StudentsEditor = Class.extend({
|
|||||||
frappe.call({
|
frappe.call({
|
||||||
method: "erpnext.education.api.mark_attendance",
|
method: "erpnext.education.api.mark_attendance",
|
||||||
freeze: true,
|
freeze: true,
|
||||||
freeze_message: "Marking attendance",
|
freeze_message: __("Marking attendance"),
|
||||||
args: {
|
args: {
|
||||||
"students_present": students_present,
|
"students_present": students_present,
|
||||||
"students_absent": students_absent,
|
"students_absent": students_absent,
|
||||||
|
|||||||
@@ -101,7 +101,7 @@ def get_formatted_result(args, get_assessment_criteria=False, get_course=False,
|
|||||||
|
|
||||||
# create the nested dictionary structure as given below:
|
# create the nested dictionary structure as given below:
|
||||||
# <variable_name>.<student_name>.<course>.<assessment_group>.<assessment_criteria>.<grade/score/max_score>
|
# <variable_name>.<student_name>.<course>.<assessment_group>.<assessment_criteria>.<grade/score/max_score>
|
||||||
# "Total Score" -> assessment criteria used for totaling and args.assessment_group -> for totaling all the assesments
|
# "Final Grade" -> assessment criteria used for totaling and args.assessment_group -> for totaling all the assesments
|
||||||
|
|
||||||
student_details = {}
|
student_details = {}
|
||||||
formatted_assessment_result = defaultdict(dict)
|
formatted_assessment_result = defaultdict(dict)
|
||||||
@@ -123,13 +123,13 @@ def get_formatted_result(args, get_assessment_criteria=False, get_course=False,
|
|||||||
formatted_assessment_result[result.student][result.course][assessment_group]\
|
formatted_assessment_result[result.student][result.course][assessment_group]\
|
||||||
[assessment_criteria]["grade"] = tmp_grade
|
[assessment_criteria]["grade"] = tmp_grade
|
||||||
|
|
||||||
# create the assessment criteria "Total Score" with the sum of all the scores of the assessment criteria in a given assessment group
|
# create the assessment criteria "Final Grade" with the sum of all the scores of the assessment criteria in a given assessment group
|
||||||
def add_total_score(result, assessment_group):
|
def add_total_score(result, assessment_group):
|
||||||
if "Total Score" not in formatted_assessment_result[result.student][result.course][assessment_group]:
|
if "Final Grade" not in formatted_assessment_result[result.student][result.course][assessment_group]:
|
||||||
formatted_assessment_result[result.student][result.course][assessment_group]["Total Score"] = frappe._dict({
|
formatted_assessment_result[result.student][result.course][assessment_group]["Final Grade"] = frappe._dict({
|
||||||
"assessment_criteria": "Total Score", "maximum_score": result.maximum_score, "score": result.score, "grade": result.grade})
|
"assessment_criteria": "Final Grade", "maximum_score": result.maximum_score, "score": result.score, "grade": result.grade})
|
||||||
else:
|
else:
|
||||||
add_score_and_recalculate_grade(result, assessment_group, "Total Score")
|
add_score_and_recalculate_grade(result, assessment_group, "Final Grade")
|
||||||
|
|
||||||
for result in assessment_result:
|
for result in assessment_result:
|
||||||
if result.student not in student_details:
|
if result.student not in student_details:
|
||||||
@@ -166,7 +166,7 @@ def get_formatted_result(args, get_assessment_criteria=False, get_course=False,
|
|||||||
add_total_score(result, args.assessment_group)
|
add_total_score(result, args.assessment_group)
|
||||||
|
|
||||||
total_maximum_score = formatted_assessment_result[result.student][result.course][args.assessment_group]\
|
total_maximum_score = formatted_assessment_result[result.student][result.course][args.assessment_group]\
|
||||||
["Total Score"]["maximum_score"]
|
["Final Grade"]["maximum_score"]
|
||||||
if get_assessment_criteria:
|
if get_assessment_criteria:
|
||||||
assessment_criteria_dict[result.assessment_criteria] = formatted_assessment_result[result.student][result.course]\
|
assessment_criteria_dict[result.assessment_criteria] = formatted_assessment_result[result.student][result.course]\
|
||||||
[args.assessment_group][result.assessment_criteria]["maximum_score"]
|
[args.assessment_group][result.assessment_criteria]["maximum_score"]
|
||||||
@@ -174,7 +174,7 @@ def get_formatted_result(args, get_assessment_criteria=False, get_course=False,
|
|||||||
course_dict[result.course] = total_maximum_score
|
course_dict[result.course] = total_maximum_score
|
||||||
|
|
||||||
if get_assessment_criteria and total_maximum_score:
|
if get_assessment_criteria and total_maximum_score:
|
||||||
assessment_criteria_dict["Total Score"] = total_maximum_score
|
assessment_criteria_dict["Final Grade"] = total_maximum_score
|
||||||
|
|
||||||
return {
|
return {
|
||||||
"student_details": student_details,
|
"student_details": student_details,
|
||||||
@@ -220,7 +220,7 @@ def get_chart_data(grades, criteria_list, kounter):
|
|||||||
datasets = []
|
datasets = []
|
||||||
|
|
||||||
for grade in grades:
|
for grade in grades:
|
||||||
tmp = frappe._dict({"values":[], "title": grade})
|
tmp = frappe._dict({"name": grade, "values":[]})
|
||||||
for criteria in criteria_list:
|
for criteria in criteria_list:
|
||||||
if grade in kounter[criteria]:
|
if grade in kounter[criteria]:
|
||||||
tmp["values"].append(kounter[criteria][grade])
|
tmp["values"].append(kounter[criteria][grade])
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ var create_multiple_dialog = function(listview){
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
freeze: true,
|
freeze: true,
|
||||||
freeze_message: "Creating Lab Test..."
|
freeze_message: __("Creating Lab Test...")
|
||||||
});
|
});
|
||||||
dialog.hide();
|
dialog.hide();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -116,7 +116,7 @@ var schedule_inpatient = function(frm) {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
freeze: true,
|
freeze: true,
|
||||||
freeze_message: "Process Inpatient Scheduling"
|
freeze_message: __("Process Inpatient Scheduling")
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -130,7 +130,7 @@ var schedule_discharge = function(frm) {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
freeze: true,
|
freeze: true,
|
||||||
freeze_message: "Process Discharge"
|
freeze_message: __("Process Discharge")
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -39,6 +39,9 @@ frappe.ui.form.on("Leave Application", {
|
|||||||
|
|
||||||
validate: function(frm) {
|
validate: function(frm) {
|
||||||
frm.toggle_reqd("half_day_date", frm.doc.half_day == 1);
|
frm.toggle_reqd("half_day_date", frm.doc.half_day == 1);
|
||||||
|
if (frm.doc.half_day == 0){
|
||||||
|
frm.doc.half_day_date = "";
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
make_dashboard: function(frm) {
|
make_dashboard: function(frm) {
|
||||||
|
|||||||
@@ -211,7 +211,7 @@ frappe.ui.form.on('Payroll Entry', {
|
|||||||
},
|
},
|
||||||
doc: frm.doc,
|
doc: frm.doc,
|
||||||
freeze: true,
|
freeze: true,
|
||||||
freeze_message: 'Validating Employee Attendance...'
|
freeze_message: __('Validating Employee Attendance...')
|
||||||
});
|
});
|
||||||
}else{
|
}else{
|
||||||
frm.fields_dict.attendance_detail_html.html("");
|
frm.fields_dict.attendance_detail_html.html("");
|
||||||
@@ -235,7 +235,7 @@ const submit_salary_slip = function (frm) {
|
|||||||
callback: function() {frm.events.refresh(frm);},
|
callback: function() {frm.events.refresh(frm);},
|
||||||
doc: frm.doc,
|
doc: frm.doc,
|
||||||
freeze: true,
|
freeze: true,
|
||||||
freeze_message: 'Submitting Salary Slips and creating Journal Entry...'
|
freeze_message: __('Submitting Salary Slips and creating Journal Entry...')
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
function() {
|
function() {
|
||||||
|
|||||||
@@ -539,7 +539,7 @@ class BOM(WebsiteGenerator):
|
|||||||
'image' : d.image,
|
'image' : d.image,
|
||||||
'stock_uom' : d.stock_uom,
|
'stock_uom' : d.stock_uom,
|
||||||
'stock_qty' : flt(d.stock_qty),
|
'stock_qty' : flt(d.stock_qty),
|
||||||
'rate' : d.base_rate,
|
'rate' : flt(d.base_rate) / flt(d.conversion_factor),
|
||||||
'include_item_in_manufacturing': d.include_item_in_manufacturing
|
'include_item_in_manufacturing': d.include_item_in_manufacturing
|
||||||
}))
|
}))
|
||||||
|
|
||||||
|
|||||||
@@ -10,6 +10,8 @@ erpnext.setup_auto_gst_taxation = (doctype) => {
|
|||||||
frm.trigger('get_tax_template');
|
frm.trigger('get_tax_template');
|
||||||
},
|
},
|
||||||
get_tax_template: function(frm) {
|
get_tax_template: function(frm) {
|
||||||
|
if (!frm.doc.company) return;
|
||||||
|
|
||||||
let party_details = {
|
let party_details = {
|
||||||
'shipping_address': frm.doc.shipping_address || '',
|
'shipping_address': frm.doc.shipping_address || '',
|
||||||
'shipping_address_name': frm.doc.shipping_address_name || '',
|
'shipping_address_name': frm.doc.shipping_address_name || '',
|
||||||
|
|||||||
@@ -117,7 +117,7 @@ frappe.ui.form.on("Item", {
|
|||||||
const stock_exists = (frm.doc.__onload
|
const stock_exists = (frm.doc.__onload
|
||||||
&& frm.doc.__onload.stock_exists) ? 1 : 0;
|
&& frm.doc.__onload.stock_exists) ? 1 : 0;
|
||||||
|
|
||||||
['is_stock_item', 'has_serial_no', 'has_batch_no'].forEach((fieldname) => {
|
['is_stock_item', 'has_serial_no', 'has_batch_no', 'has_variants'].forEach((fieldname) => {
|
||||||
frm.set_df_property(fieldname, 'read_only', stock_exists);
|
frm.set_df_property(fieldname, 'read_only', stock_exists);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -472,6 +472,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"default": "0",
|
"default": "0",
|
||||||
|
"depends_on": "has_batch_no",
|
||||||
"fieldname": "retain_sample",
|
"fieldname": "retain_sample",
|
||||||
"fieldtype": "Check",
|
"fieldtype": "Check",
|
||||||
"label": "Retain Sample"
|
"label": "Retain Sample"
|
||||||
@@ -498,7 +499,7 @@
|
|||||||
"oldfieldtype": "Select"
|
"oldfieldtype": "Select"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"depends_on": "eval:doc.is_stock_item || doc.is_fixed_asset",
|
"depends_on": "has_serial_no",
|
||||||
"description": "Example: ABCD.#####\nIf series is set and Serial No is not mentioned in transactions, then automatic serial number will be created based on this series. If you always want to explicitly mention Serial Nos for this item. leave this blank.",
|
"description": "Example: ABCD.#####\nIf series is set and Serial No is not mentioned in transactions, then automatic serial number will be created based on this series. If you always want to explicitly mention Serial Nos for this item. leave this blank.",
|
||||||
"fieldname": "serial_no_series",
|
"fieldname": "serial_no_series",
|
||||||
"fieldtype": "Data",
|
"fieldtype": "Data",
|
||||||
@@ -1059,7 +1060,7 @@
|
|||||||
"idx": 2,
|
"idx": 2,
|
||||||
"image_field": "image",
|
"image_field": "image",
|
||||||
"max_attachments": 1,
|
"max_attachments": 1,
|
||||||
"modified": "2020-07-01 12:43:10.656530",
|
"modified": "2020-08-06 17:03:26.594319",
|
||||||
"modified_by": "Administrator",
|
"modified_by": "Administrator",
|
||||||
"module": "Stock",
|
"module": "Stock",
|
||||||
"name": "Item",
|
"name": "Item",
|
||||||
|
|||||||
@@ -44,7 +44,6 @@
|
|||||||
"oldfieldtype": "Section Break"
|
"oldfieldtype": "Section Break"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"description": "If blank, parent Warehouse Account or company default will be considered",
|
|
||||||
"fieldname": "warehouse_name",
|
"fieldname": "warehouse_name",
|
||||||
"fieldtype": "Data",
|
"fieldtype": "Data",
|
||||||
"label": "Warehouse Name",
|
"label": "Warehouse Name",
|
||||||
@@ -85,6 +84,7 @@
|
|||||||
"fieldtype": "Column Break"
|
"fieldtype": "Column Break"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"description": "If blank, parent Warehouse Account or company default will be considered in transactions",
|
||||||
"fieldname": "account",
|
"fieldname": "account",
|
||||||
"fieldtype": "Link",
|
"fieldtype": "Link",
|
||||||
"label": "Account",
|
"label": "Account",
|
||||||
@@ -234,7 +234,8 @@
|
|||||||
"icon": "fa fa-building",
|
"icon": "fa fa-building",
|
||||||
"idx": 1,
|
"idx": 1,
|
||||||
"is_tree": 1,
|
"is_tree": 1,
|
||||||
"modified": "2020-07-22 14:46:37.650475",
|
"links": [],
|
||||||
|
"modified": "2020-08-03 18:41:52.442502",
|
||||||
"modified_by": "Administrator",
|
"modified_by": "Administrator",
|
||||||
"module": "Stock",
|
"module": "Stock",
|
||||||
"name": "Warehouse",
|
"name": "Warehouse",
|
||||||
|
|||||||
Reference in New Issue
Block a user