mirror of
https://github.com/frappe/erpnext.git
synced 2026-05-31 18:59:08 +00:00
Merge branch 'develop' into rename-doc-fix
This commit is contained in:
@@ -17,10 +17,6 @@ def execute():
|
||||
frappe.db.sql(""" update `tabAsset` ast, `tabWarehouse` wh
|
||||
set ast.location = wh.warehouse_name where ast.warehouse = wh.name""")
|
||||
|
||||
frappe.db.sql(""" update `tabAsset Movement` ast_mv
|
||||
set ast_mv.source_location = (select warehouse_name from `tabWarehouse` where name = ast_mv.source_warehouse),
|
||||
ast_mv.target_location = (select warehouse_name from `tabWarehouse` where name = ast_mv.target_warehouse)""")
|
||||
|
||||
for d in frappe.get_all('Asset'):
|
||||
doc = frappe.get_doc('Asset', d.name)
|
||||
if doc.calculate_depreciation:
|
||||
|
||||
@@ -15,13 +15,6 @@ def execute():
|
||||
|
||||
rename_field(doctype, "allow_transfer_for_manufacture", "include_item_in_manufacturing")
|
||||
|
||||
if frappe.db.has_column('BOM', 'allow_same_item_multiple_times'):
|
||||
frappe.db.sql(""" UPDATE tabBOM
|
||||
SET
|
||||
allow_same_item_multiple_times = 0
|
||||
WHERE
|
||||
trim(coalesce(allow_same_item_multiple_times, '')) = '' """)
|
||||
|
||||
for doctype in ['BOM', 'Work Order']:
|
||||
frappe.reload_doc('manufacturing', 'doctype', frappe.scrub(doctype))
|
||||
|
||||
|
||||
@@ -1,27 +1,28 @@
|
||||
# Copyright (c) 2017, Frappe and Contributors
|
||||
# License: GNU General Public License v3. See license.txt
|
||||
|
||||
from __future__ import unicode_literals
|
||||
import frappe
|
||||
|
||||
def execute():
|
||||
frappe.reload_doc('stock', 'doctype', 'delivery_trip')
|
||||
frappe.reload_doc('stock', 'doctype', 'delivery_stop', force=True)
|
||||
|
||||
for trip in frappe.get_all("Delivery Trip"):
|
||||
trip_doc = frappe.get_doc("Delivery Trip", trip.name)
|
||||
|
||||
status = {
|
||||
0: "Draft",
|
||||
1: "Scheduled",
|
||||
2: "Cancelled"
|
||||
}[trip_doc.docstatus]
|
||||
|
||||
if trip_doc.docstatus == 1:
|
||||
visited_stops = [stop.visited for stop in trip_doc.delivery_stops]
|
||||
if all(visited_stops):
|
||||
status = "Completed"
|
||||
elif any(visited_stops):
|
||||
status = "In Transit"
|
||||
|
||||
frappe.db.set_value("Delivery Trip", trip.name, "status", status, update_modified=False)
|
||||
# Copyright (c) 2017, Frappe and Contributors
|
||||
# License: GNU General Public License v3. See license.txt
|
||||
|
||||
from __future__ import unicode_literals
|
||||
import frappe
|
||||
|
||||
def execute():
|
||||
frappe.reload_doc('setup', 'doctype', 'global_defaults', force=True)
|
||||
frappe.reload_doc('stock', 'doctype', 'delivery_trip')
|
||||
frappe.reload_doc('stock', 'doctype', 'delivery_stop', force=True)
|
||||
|
||||
for trip in frappe.get_all("Delivery Trip"):
|
||||
trip_doc = frappe.get_doc("Delivery Trip", trip.name)
|
||||
|
||||
status = {
|
||||
0: "Draft",
|
||||
1: "Scheduled",
|
||||
2: "Cancelled"
|
||||
}[trip_doc.docstatus]
|
||||
|
||||
if trip_doc.docstatus == 1:
|
||||
visited_stops = [stop.visited for stop in trip_doc.delivery_stops]
|
||||
if all(visited_stops):
|
||||
status = "Completed"
|
||||
elif any(visited_stops):
|
||||
status = "In Transit"
|
||||
|
||||
frappe.db.set_value("Delivery Trip", trip.name, "status", status, update_modified=False)
|
||||
|
||||
@@ -0,0 +1,42 @@
|
||||
from __future__ import unicode_literals
|
||||
import frappe
|
||||
from erpnext.regional.india.setup import make_custom_fields
|
||||
|
||||
def execute():
|
||||
|
||||
company = frappe.get_all('Company', filters = {'country': 'India'})
|
||||
if not company:
|
||||
return
|
||||
|
||||
make_custom_fields()
|
||||
|
||||
frappe.reload_doctype('Tax Category')
|
||||
frappe.reload_doctype('Sales Taxes and Charges Template')
|
||||
frappe.reload_doctype('Purchase Taxes and Charges Template')
|
||||
|
||||
# Create tax category with inter state field checked
|
||||
tax_category = frappe.db.get_value('Tax Category', {'name': 'OUT OF STATE'}, 'name')
|
||||
|
||||
if not tax_category:
|
||||
inter_state_category = frappe.get_doc({
|
||||
'doctype': 'Tax Category',
|
||||
'title': 'OUT OF STATE',
|
||||
'is_inter_state': 1
|
||||
}).insert()
|
||||
|
||||
tax_category = inter_state_category.name
|
||||
|
||||
for doctype in ('Sales Taxes and Charges Template', 'Purchase Taxes and Charges Template'):
|
||||
if not frappe.get_meta(doctype).has_field('is_inter_state'): continue
|
||||
|
||||
template = frappe.db.get_value(doctype, {'is_inter_state': 1, 'disabled': 0}, ['name'])
|
||||
if template:
|
||||
frappe.db.set_value(doctype, template, 'tax_category', tax_category)
|
||||
|
||||
frappe.db.sql("""
|
||||
DELETE FROM `tabCustom Field`
|
||||
WHERE fieldname = 'is_inter_state'
|
||||
AND dt IN ('Sales Taxes and Charges Template', 'Purchase Taxes and Charges Template')
|
||||
""")
|
||||
|
||||
|
||||
@@ -1,20 +1,30 @@
|
||||
import frappe
|
||||
import json
|
||||
from six import iteritems
|
||||
from frappe.model.naming import make_autoname
|
||||
|
||||
def execute():
|
||||
if "tax_type" not in frappe.db.get_table_columns("Item Tax"):
|
||||
return
|
||||
old_item_taxes = {}
|
||||
item_tax_templates = {}
|
||||
rename_template_to_untitled = []
|
||||
|
||||
frappe.reload_doc("accounts", "doctype", "item_tax_template_detail", force=1)
|
||||
frappe.reload_doc("accounts", "doctype", "item_tax_template", force=1)
|
||||
existing_templates = frappe.db.sql("""select template.name, details.tax_type, details.tax_rate
|
||||
from `tabItem Tax Template` template, `tabItem Tax Template Detail` details
|
||||
where details.parent=template.name
|
||||
""", as_dict=1)
|
||||
|
||||
if len(existing_templates):
|
||||
for d in existing_templates:
|
||||
item_tax_templates.setdefault(d.name, {})
|
||||
item_tax_templates[d.name][d.tax_type] = d.tax_rate
|
||||
|
||||
for d in frappe.db.sql("""select parent as item_code, tax_type, tax_rate from `tabItem Tax`""", as_dict=1):
|
||||
old_item_taxes.setdefault(d.item_code, [])
|
||||
old_item_taxes[d.item_code].append(d)
|
||||
|
||||
frappe.reload_doc("accounts", "doctype", "item_tax_template_detail", force=1)
|
||||
frappe.reload_doc("accounts", "doctype", "item_tax_template", force=1)
|
||||
frappe.reload_doc("stock", "doctype", "item", force=1)
|
||||
frappe.reload_doc("stock", "doctype", "item_tax", force=1)
|
||||
frappe.reload_doc("selling", "doctype", "quotation_item", force=1)
|
||||
@@ -27,6 +37,8 @@ def execute():
|
||||
frappe.reload_doc("accounts", "doctype", "purchase_invoice_item", force=1)
|
||||
frappe.reload_doc("accounts", "doctype", "accounts_settings", force=1)
|
||||
|
||||
frappe.db.auto_commit_on_many_writes = True
|
||||
|
||||
# for each item that have item tax rates
|
||||
for item_code in old_item_taxes.keys():
|
||||
# make current item's tax map
|
||||
@@ -34,8 +46,7 @@ def execute():
|
||||
for d in old_item_taxes[item_code]:
|
||||
item_tax_map[d.tax_type] = d.tax_rate
|
||||
|
||||
item_tax_template_name = get_item_tax_template(item_tax_templates, rename_template_to_untitled,
|
||||
item_tax_map, item_code)
|
||||
item_tax_template_name = get_item_tax_template(item_tax_templates, item_tax_map, item_code)
|
||||
|
||||
# update the item tax table
|
||||
item = frappe.get_doc("Item", item_code)
|
||||
@@ -49,53 +60,75 @@ def execute():
|
||||
'Quotation', 'Sales Order', 'Delivery Note', 'Sales Invoice',
|
||||
'Supplier Quotation', 'Purchase Order', 'Purchase Receipt', 'Purchase Invoice'
|
||||
]
|
||||
for dt in doctypes:
|
||||
for d in frappe.db.sql("""select name, parent, item_code, item_tax_rate from `tab{0} Item`
|
||||
where ifnull(item_tax_rate, '') not in ('', '{{}}')""".format(dt), as_dict=1):
|
||||
item_tax_map = json.loads(d.item_tax_rate)
|
||||
item_tax_template = get_item_tax_template(item_tax_templates, rename_template_to_untitled,
|
||||
item_tax_map, d.item_code, d.parent)
|
||||
frappe.db.set_value(dt + " Item", d.name, "item_tax_template", item_tax_template)
|
||||
|
||||
idx = 1
|
||||
for oldname in rename_template_to_untitled:
|
||||
frappe.rename_doc("Item Tax Template", oldname, "Untitled {}".format(idx))
|
||||
idx += 1
|
||||
for dt in doctypes:
|
||||
for d in frappe.db.sql("""select name, parenttype, parent, item_code, item_tax_rate from `tab{0} Item`
|
||||
where ifnull(item_tax_rate, '') not in ('', '{{}}')
|
||||
and item_tax_template is NULL""".format(dt), as_dict=1):
|
||||
item_tax_map = json.loads(d.item_tax_rate)
|
||||
item_tax_template_name = get_item_tax_template(item_tax_templates,
|
||||
item_tax_map, d.item_code, d.parenttype, d.parent)
|
||||
frappe.db.set_value(dt + " Item", d.name, "item_tax_template", item_tax_template_name)
|
||||
|
||||
frappe.db.auto_commit_on_many_writes = False
|
||||
|
||||
settings = frappe.get_single("Accounts Settings")
|
||||
settings.add_taxes_from_item_tax_template = 0
|
||||
settings.determine_address_tax_category_from = "Billing Address"
|
||||
settings.save()
|
||||
|
||||
def get_item_tax_template(item_tax_templates, rename_template_to_untitled, item_tax_map, item_code, parent=None):
|
||||
def get_item_tax_template(item_tax_templates, item_tax_map, item_code, parenttype=None, parent=None):
|
||||
# search for previously created item tax template by comparing tax maps
|
||||
for template, item_tax_template_map in iteritems(item_tax_templates):
|
||||
if item_tax_map == item_tax_template_map:
|
||||
if not parent:
|
||||
rename_template_to_untitled.append(template)
|
||||
return template
|
||||
|
||||
# if no item tax template found, create one
|
||||
item_tax_template = frappe.new_doc("Item Tax Template")
|
||||
item_tax_template.title = "{}--{}".format(parent, item_code) if parent else "Item-{}".format(item_code)
|
||||
item_tax_template.title = make_autoname("Item Tax Template-.####")
|
||||
|
||||
for tax_type, tax_rate in iteritems(item_tax_map):
|
||||
if not frappe.db.exists("Account", tax_type):
|
||||
account_details = frappe.db.get_value("Account", tax_type, ['name', 'account_type'], as_dict=1)
|
||||
if account_details:
|
||||
if account_details.account_type not in ('Tax', 'Chargeable', 'Income Account', 'Expense Account', 'Expenses Included In Valuation'):
|
||||
frappe.db.set_value('Account', account_details.name, 'account_type', 'Chargeable')
|
||||
else:
|
||||
parts = tax_type.strip().split(" - ")
|
||||
account_name = " - ".join(parts[:-1])
|
||||
company = frappe.db.get_value("Company", filters={"abbr": parts[-1]})
|
||||
company = get_company(parts[-1], parenttype, parent)
|
||||
parent_account = frappe.db.get_value("Account",
|
||||
filters={"account_type": "Tax", "root_type": "Liability", "is_group": 0, "company": company}, fieldname="parent_account")
|
||||
|
||||
frappe.get_doc({
|
||||
"doctype": "Account",
|
||||
if not parent_account:
|
||||
parent_account = frappe.db.get_value("Account",
|
||||
filters={"account_type": "Tax", "root_type": "Liability", "is_group": 1, "company": company})
|
||||
filters = {
|
||||
"account_name": account_name,
|
||||
"company": company,
|
||||
"account_type": "Tax",
|
||||
"parent_account": parent_account
|
||||
}).insert()
|
||||
}
|
||||
tax_type = frappe.db.get_value("Account", filters)
|
||||
if not tax_type:
|
||||
account = frappe.new_doc("Account")
|
||||
account.update(filters)
|
||||
account.insert()
|
||||
tax_type = account.name
|
||||
|
||||
item_tax_template.append("taxes", {"tax_type": tax_type, "tax_rate": tax_rate})
|
||||
item_tax_templates.setdefault(item_tax_template.title, {})
|
||||
item_tax_templates[item_tax_template.title][tax_type] = tax_rate
|
||||
item_tax_template.save()
|
||||
return item_tax_template.name
|
||||
|
||||
def get_company(company_abbr, parenttype=None, parent=None):
|
||||
if parenttype and parent:
|
||||
company = frappe.get_cached_value(parenttype, parent, 'company')
|
||||
else:
|
||||
company = frappe.db.get_value("Company", filters={"abbr": company_abbr})
|
||||
|
||||
if not company:
|
||||
companies = frappe.get_all('Company')
|
||||
if len(companies) == 1:
|
||||
company = companies[0].name
|
||||
|
||||
return company
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
# Copyright (c) 2018, Frappe and Contributors
|
||||
# License: GNU General Public License v3. See license.txt
|
||||
|
||||
from __future__ import unicode_literals
|
||||
import frappe
|
||||
from frappe.utils import getdate, today
|
||||
|
||||
def execute():
|
||||
''' Delete leave ledger entry created
|
||||
via leave applications with status != Approved '''
|
||||
if not frappe.db.a_row_exists("Leave Ledger Entry"):
|
||||
return
|
||||
|
||||
leave_application_list = get_denied_leave_application_list()
|
||||
if leave_application_list:
|
||||
delete_denied_leaves_from_leave_ledger_entry(leave_application_list)
|
||||
|
||||
def get_denied_leave_application_list():
|
||||
return frappe.db.sql_list(''' Select name from `tabLeave Application` where status <> 'Approved' ''')
|
||||
|
||||
def delete_denied_leaves_from_leave_ledger_entry(leave_application_list):
|
||||
if leave_application_list:
|
||||
frappe.db.sql(''' Delete
|
||||
FROM `tabLeave Ledger Entry`
|
||||
WHERE
|
||||
transaction_type = 'Leave Application'
|
||||
AND transaction_name in (%s) ''' % (', '.join(['%s'] * len(leave_application_list))), #nosec
|
||||
tuple(leave_application_list))
|
||||
@@ -0,0 +1,12 @@
|
||||
import frappe
|
||||
def execute():
|
||||
|
||||
frappe.reload_doc('selling', 'doctype', frappe.scrub('Sales Order Item'))
|
||||
frappe.reload_doc('buying', 'doctype', frappe.scrub('Purchase Order Item'))
|
||||
|
||||
for doctype in ['Sales Order Item', 'Purchase Order Item']:
|
||||
frappe.db.sql("""
|
||||
UPDATE `tab{0}`
|
||||
SET against_blanket_order = 1
|
||||
WHERE ifnull(blanket_order, '') != ''
|
||||
""".format(doctype))
|
||||
@@ -0,0 +1,8 @@
|
||||
import frappe
|
||||
def execute():
|
||||
frappe.reload_doc('hr', 'doctype', 'expense_claim_detail')
|
||||
frappe.db.sql("""
|
||||
UPDATE `tabExpense Claim Detail` child, `tabExpense Claim` par
|
||||
SET child.cost_center = par.cost_center
|
||||
WHERE child.parent = par.name
|
||||
""")
|
||||
17
erpnext/patches/v12_0/set_cwip_and_delete_asset_settings.py
Normal file
17
erpnext/patches/v12_0/set_cwip_and_delete_asset_settings.py
Normal file
@@ -0,0 +1,17 @@
|
||||
from __future__ import unicode_literals
|
||||
import frappe
|
||||
from frappe.utils import cint
|
||||
|
||||
|
||||
def execute():
|
||||
'''Get 'Disable CWIP Accounting value' from Asset Settings, set it in 'Enable Capital Work in Progress Accounting' field
|
||||
in Company, delete Asset Settings '''
|
||||
|
||||
if frappe.db.exists("DocType", "Asset Settings"):
|
||||
frappe.reload_doctype("Asset Category")
|
||||
cwip_value = frappe.db.get_single_value("Asset Settings", "disable_cwip_accounting")
|
||||
|
||||
frappe.db.sql("""UPDATE `tabAsset Category` SET enable_cwip_accounting = %s""", cint(cwip_value))
|
||||
|
||||
frappe.db.sql("""DELETE FROM `tabSingles` where doctype = 'Asset Settings'""")
|
||||
frappe.delete_doc_if_exists("DocType", "Asset Settings")
|
||||
@@ -0,0 +1,5 @@
|
||||
import frappe
|
||||
|
||||
def execute():
|
||||
frappe.db.set_value("Accounts Settings", None, "add_taxes_from_item_tax_template", 1)
|
||||
frappe.db.set_default("add_taxes_from_item_tax_template", 1)
|
||||
16
erpnext/patches/v12_0/set_employee_preferred_emails.py
Normal file
16
erpnext/patches/v12_0/set_employee_preferred_emails.py
Normal file
@@ -0,0 +1,16 @@
|
||||
import frappe
|
||||
|
||||
|
||||
def execute():
|
||||
employees = frappe.get_all("Employee",
|
||||
filters={"prefered_email": ""},
|
||||
fields=["name", "prefered_contact_email", "company_email", "personal_email", "user_id"])
|
||||
|
||||
for employee in employees:
|
||||
if not employee.prefered_contact_email:
|
||||
continue
|
||||
|
||||
preferred_email_field = frappe.scrub(employee.prefered_contact_email)
|
||||
|
||||
preferred_email = employee.get(preferred_email_field)
|
||||
frappe.db.set_value("Employee", employee.name, "prefered_email", preferred_email, update_modified=False)
|
||||
@@ -0,0 +1,33 @@
|
||||
from __future__ import unicode_literals
|
||||
import frappe
|
||||
from six import iteritems
|
||||
|
||||
def execute():
|
||||
frappe.reload_doctype('Landed Cost Taxes and Charges')
|
||||
|
||||
company_account_map = frappe._dict(frappe.db.sql("""
|
||||
SELECT name, expenses_included_in_valuation from `tabCompany`
|
||||
"""))
|
||||
|
||||
for company, account in iteritems(company_account_map):
|
||||
frappe.db.sql("""
|
||||
UPDATE
|
||||
`tabLanded Cost Taxes and Charges` t, `tabLanded Cost Voucher` l
|
||||
SET
|
||||
t.expense_account = %s
|
||||
WHERE
|
||||
l.docstatus = 1
|
||||
AND l.company = %s
|
||||
AND t.parent = l.name
|
||||
""", (account, company))
|
||||
|
||||
frappe.db.sql("""
|
||||
UPDATE
|
||||
`tabLanded Cost Taxes and Charges` t, `tabStock Entry` s
|
||||
SET
|
||||
t.expense_account = %s
|
||||
WHERE
|
||||
s.docstatus = 1
|
||||
AND s.company = %s
|
||||
AND t.parent = s.name
|
||||
""", (account, company))
|
||||
@@ -7,6 +7,8 @@ def execute():
|
||||
if not company:
|
||||
return
|
||||
|
||||
frappe.reload_doc('accounts', 'doctype', 'Tax Category')
|
||||
|
||||
make_custom_fields()
|
||||
|
||||
for doctype in ['Sales Invoice', 'Purchase Invoice']:
|
||||
|
||||
12
erpnext/patches/v12_0/set_job_offer_applicant_email.py
Normal file
12
erpnext/patches/v12_0/set_job_offer_applicant_email.py
Normal file
@@ -0,0 +1,12 @@
|
||||
import frappe
|
||||
|
||||
|
||||
def execute():
|
||||
frappe.reload_doc("hr", "doctype", "job_offer")
|
||||
|
||||
frappe.db.sql("""
|
||||
UPDATE
|
||||
`tabJob Offer` AS offer
|
||||
SET
|
||||
applicant_email = (SELECT email_id FROM `tabJob Applicant` WHERE name = offer.job_applicant)
|
||||
""")
|
||||
11
erpnext/patches/v12_0/set_lead_title_field.py
Normal file
11
erpnext/patches/v12_0/set_lead_title_field.py
Normal file
@@ -0,0 +1,11 @@
|
||||
import frappe
|
||||
|
||||
|
||||
def execute():
|
||||
frappe.reload_doc("crm", "doctype", "lead")
|
||||
frappe.db.sql("""
|
||||
UPDATE
|
||||
`tabLead`
|
||||
SET
|
||||
title = IF(organization_lead = 1, company_name, lead_name)
|
||||
""")
|
||||
9
erpnext/patches/v12_0/set_payment_entry_status.py
Normal file
9
erpnext/patches/v12_0/set_payment_entry_status.py
Normal file
@@ -0,0 +1,9 @@
|
||||
import frappe
|
||||
|
||||
def execute():
|
||||
frappe.reload_doctype("Payment Entry")
|
||||
frappe.db.sql("""update `tabPayment Entry` set status = CASE
|
||||
WHEN docstatus = 1 THEN 'Submitted'
|
||||
WHEN docstatus = 2 THEN 'Cancelled'
|
||||
ELSE 'Draft'
|
||||
END;""")
|
||||
15
erpnext/patches/v12_0/set_permission_einvoicing.py
Normal file
15
erpnext/patches/v12_0/set_permission_einvoicing.py
Normal file
@@ -0,0 +1,15 @@
|
||||
import frappe
|
||||
from erpnext.regional.italy.setup import make_custom_fields
|
||||
from frappe.permissions import add_permission, update_permission_property
|
||||
|
||||
def execute():
|
||||
company = frappe.get_all('Company', filters = {'country': 'Italy'})
|
||||
|
||||
if not company:
|
||||
return
|
||||
|
||||
make_custom_fields()
|
||||
|
||||
add_permission('Import Supplier Invoice', 'Accounts Manager', 0)
|
||||
update_permission_property('Import Supplier Invoice', 'Accounts Manager', 0, 'write', 1)
|
||||
update_permission_property('Import Supplier Invoice', 'Accounts Manager', 0, 'create', 1)
|
||||
@@ -3,8 +3,12 @@ from frappe.utils import flt
|
||||
from erpnext.selling.doctype.sales_order.sales_order import update_produced_qty_in_so_item
|
||||
|
||||
def execute():
|
||||
frappe.reload_doctype('Sales Order Item')
|
||||
frappe.reload_doctype('Sales Order')
|
||||
sales_order_items = frappe.db.get_all('Sales Order Item', ['name'])
|
||||
for so_item in sales_order_items:
|
||||
update_produced_qty_in_so_item(so_item.get('name'))
|
||||
frappe.reload_doctype('Sales Order Item')
|
||||
frappe.reload_doctype('Sales Order')
|
||||
|
||||
for d in frappe.get_all('Work Order',
|
||||
fields = ['sales_order', 'sales_order_item'],
|
||||
filters={'sales_order': ('!=', ''), 'sales_order_item': ('!=', '')}):
|
||||
|
||||
# update produced qty in sales order
|
||||
update_produced_qty_in_so_item(d.sales_order, d.sales_order_item)
|
||||
@@ -0,0 +1,8 @@
|
||||
from __future__ import unicode_literals
|
||||
import frappe
|
||||
|
||||
def execute():
|
||||
frappe.reload_doc("manufacturing", "doctype", "workstation")
|
||||
|
||||
frappe.db.sql(""" UPDATE `tabWorkstation`
|
||||
SET production_capacity = 1 """)
|
||||
12
erpnext/patches/v12_0/set_published_in_hub_tracked_item.py
Normal file
12
erpnext/patches/v12_0/set_published_in_hub_tracked_item.py
Normal file
@@ -0,0 +1,12 @@
|
||||
from __future__ import unicode_literals
|
||||
import frappe
|
||||
|
||||
def execute():
|
||||
frappe.reload_doc("Hub Node", "doctype", "Hub Tracked Item")
|
||||
if not frappe.db.a_row_exists("Hub Tracked Item"):
|
||||
return
|
||||
|
||||
frappe.db.sql('''
|
||||
Update `tabHub Tracked Item`
|
||||
SET published = 1
|
||||
''')
|
||||
19
erpnext/patches/v12_0/update_gst_category.py
Normal file
19
erpnext/patches/v12_0/update_gst_category.py
Normal file
@@ -0,0 +1,19 @@
|
||||
from __future__ import unicode_literals
|
||||
import frappe
|
||||
|
||||
def execute():
|
||||
|
||||
company = frappe.get_all('Company', filters = {'country': 'India'})
|
||||
if not company:
|
||||
return
|
||||
|
||||
frappe.db.sql(""" UPDATE `tabSales Invoice` set gst_category = 'Unregistered'
|
||||
where gst_category = 'Registered Regular'
|
||||
and ifnull(customer_gstin, '')=''
|
||||
and ifnull(billing_address_gstin,'')=''
|
||||
""")
|
||||
|
||||
frappe.db.sql(""" UPDATE `tabPurchase Invoice` set gst_category = 'Unregistered'
|
||||
where gst_category = 'Registered Regular'
|
||||
and ifnull(supplier_gstin, '')=''
|
||||
""")
|
||||
@@ -0,0 +1,17 @@
|
||||
from __future__ import unicode_literals
|
||||
import frappe
|
||||
from erpnext.accounts.doctype.accounting_dimension.accounting_dimension import get_doctypes_with_dimensions
|
||||
|
||||
def execute():
|
||||
accounting_dimensions = frappe.db.sql("""select fieldname from
|
||||
`tabAccounting Dimension`""", as_dict=1)
|
||||
|
||||
doclist = get_doctypes_with_dimensions()
|
||||
|
||||
for dimension in accounting_dimensions:
|
||||
frappe.db.sql("""
|
||||
UPDATE `tabCustom Field`
|
||||
SET owner = 'Administrator'
|
||||
WHERE fieldname = %s
|
||||
AND dt IN (%s)""" % #nosec
|
||||
('%s', ', '.join(['%s']* len(doclist))), tuple([dimension.fieldname] + doclist))
|
||||
@@ -0,0 +1,8 @@
|
||||
from __future__ import unicode_literals
|
||||
import frappe
|
||||
|
||||
def execute():
|
||||
frappe.reload_doc("accounts", "doctype", "pricing_rule")
|
||||
|
||||
frappe.db.sql(""" UPDATE `tabPricing Rule` SET price_or_product_discount = 'Price'
|
||||
WHERE ifnull(price_or_product_discount,'') = '' """)
|
||||
@@ -5,6 +5,7 @@ from __future__ import unicode_literals
|
||||
import frappe
|
||||
|
||||
def execute():
|
||||
frappe.reload_doc('accounts', 'doctype', 'pos_field')
|
||||
frappe.reload_doc('accounts', 'doctype', 'pos_settings')
|
||||
|
||||
doc = frappe.get_doc('POS Settings')
|
||||
|
||||
@@ -5,6 +5,9 @@ from frappe import _
|
||||
|
||||
def execute():
|
||||
"""Add setup progress actions"""
|
||||
if not frappe.db.exists('DocType', 'Setup Progress') or not frappe.db.exists('DocType', 'Setup Progress Action'):
|
||||
return
|
||||
|
||||
frappe.reload_doc("setup", "doctype", "setup_progress")
|
||||
frappe.reload_doc("setup", "doctype", "setup_progress_action")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user