def execute(): for dn in rename_map: frappe.reload_doc(get_doctype_module(dn), "doctype", scrub(dn)) for dt, field_list in rename_map.items(): for field in field_list: rename_field(dt, field[0], field[1])
def execute(): rename_doc('DocType', 'Production Order', 'Work Order', force=True) frappe.reload_doc('manufacturing', 'doctype', 'work_order') rename_doc('DocType', 'Production Order Item', 'Work Order Item', force=True) frappe.reload_doc('manufacturing', 'doctype', 'work_order_item') rename_doc('DocType', 'Production Order Operation', 'Work Order Operation', force=True) frappe.reload_doc('manufacturing', 'doctype', 'work_order_operation') frappe.reload_doc('projects', 'doctype', 'timesheet') frappe.reload_doc('stock', 'doctype', 'stock_entry') rename_field("Timesheet", "production_order", "work_order") rename_field("Stock Entry", "production_order", "work_order") frappe.rename_doc("Report", "Production Orders in Progress", "Work Orders in Progress", force=True) frappe.rename_doc("Report", "Completed Production Orders", "Completed Work Orders", force=True) frappe.rename_doc("Report", "Open Production Orders", "Open Work Orders", force=True) frappe.rename_doc("Report", "Issued Items Against Production Order", "Issued Items Against Work Order", force=True) frappe.rename_doc("Report", "Production Order Stock Report", "Work Order Stock Report", force=True) frappe.db.sql("""update `tabDesktop Icon` \ set label='Work Order', module_name='Work Order' \ where label='Production Order'""") frappe.db.sql("""update `tabDesktop Icon` \ set link='List/Work Order' \ where link='List/Production Order'""")
def execute(): for dt in doc_rename_map: if frappe.db.exists('DocType', dt): frappe.rename_doc('DocType', dt, doc_rename_map[dt], force=True) for dn in field_rename_map: if frappe.db.exists('DocType', dn): frappe.reload_doc(get_doctype_module(dn), "doctype", scrub(dn)) for dt, field_list in field_rename_map.items(): if frappe.db.exists('DocType', dt): for field in field_list: if frappe.db.has_column(dt, field[0]): rename_field(dt, field[0], field[1]) if frappe.db.exists('DocType', 'Practitioner Service Unit Schedule'): if frappe.db.has_column('Practitioner Service Unit Schedule', 'parentfield'): frappe.db.sql(""" update `tabPractitioner Service Unit Schedule` set parentfield = 'practitioner_schedules' where parentfield = 'physician_schedules' and parenttype = 'Healthcare Practitioner' """) if frappe.db.exists("DocType", "Healthcare Practitioner"): frappe.reload_doc("healthcare", "doctype", "healthcare_practitioner") frappe.reload_doc("healthcare", "doctype", "practitioner_service_unit_schedule") if frappe.db.has_column('Healthcare Practitioner', 'physician_schedule'): for doc in frappe.get_all('Healthcare Practitioner'): _doc = frappe.get_doc('Healthcare Practitioner', doc.name) if _doc.physician_schedule: _doc.append('practitioner_schedules', {'schedule': _doc.physician_schedule}) _doc.save()
def execute(): #Rename Grading Structure to Grading Scale frappe.rename_doc("DocType", "Grading Structure", "Grading Scale", force=True) frappe.rename_doc("DocType", "Grade Interval", "Grading Scale Interval", force=True) frappe.reload_doc("schools", "doctype", "grading_scale_interval") rename_field("Grading Scale Interval", "to_score", "threshold") frappe.rename_doc("DocType", "Assessment", "Assessment Plan", force=True) #Rename Assessment Results frappe.reload_doc("schools", "doctype", "assessment_plan") rename_field("Assessment Plan", "grading_structure", "grading_scale") frappe.reload_doc("schools", "doctype", "assessment_result") frappe.reload_doc("schools", "doctype", "assessment_result_detail") frappe.reload_doc("schools", "doctype", "assessment_criteria") for assessment in frappe.get_all("Assessment Plan", fields=["name", "grading_scale"], filters = [["docstatus", "!=", 2 ]]): print assessment for stud_result in frappe.db.sql("select * from `tabAssessment Result` where parent= %s", assessment.name, as_dict=True): if stud_result.result: assessment_result = frappe.new_doc("Assessment Result") assessment_result.student = stud_result.student assessment_result.student_name = stud_result.student_name assessment_result.assessment_plan = assessment.name assessment_result.grading_scale = assessment.grading_scale assessment_result.total_score = stud_result.result assessment_result.flags.ignore_validate = True assessment_result.flags.ignore_mandatory = True assessment_result.save() frappe.db.sql("""delete from `tabAssessment Result` where parent != '' or parent is not null""")
def execute(): # rename doctypes tables = frappe.db.sql_list("show tables") for old_dt, new_dt in [["Journal Voucher Detail", "Journal Entry Account"], ["Journal Voucher", "Journal Entry"], ["Budget Distribution Detail", "Monthly Distribution Percentage"], ["Budget Distribution", "Monthly Distribution"]]: if "tab"+new_dt not in tables: frappe.rename_doc("DocType", old_dt, new_dt, force=True) # reload new child doctypes frappe.reload_doc("manufacturing", "doctype", "work_order_operation") frappe.reload_doc("manufacturing", "doctype", "workstation_working_hour") frappe.reload_doc("stock", "doctype", "item_variant") frappe.reload_doc("hr", "doctype", "salary_detail") frappe.reload_doc("accounts", "doctype", "party_account") frappe.reload_doc("accounts", "doctype", "fiscal_year_company") #rename table fieldnames for dn in rename_map: if not frappe.db.exists("DocType", dn): continue frappe.reload_doc(get_doctype_module(dn), "doctype", scrub(dn)) for dt, field_list in rename_map.items(): if not frappe.db.exists("DocType", dt): continue for field in field_list: rename_field(dt, field[0], field[1]) # update voucher type for old, new in [["Bank Voucher", "Bank Entry"], ["Cash Voucher", "Cash Entry"], ["Credit Card Voucher", "Credit Card Entry"], ["Contra Voucher", "Contra Entry"], ["Write Off Voucher", "Write Off Entry"], ["Excise Voucher", "Excise Entry"]]: frappe.db.sql("update `tabJournal Entry` set voucher_type=%s where voucher_type=%s", (new, old))
def execute(): frappe.reload_doc("hr", "doctype", "department_approver") frappe.reload_doc("hr", "doctype", "employee") frappe.reload_doc("hr", "doctype", "department") if frappe.db.has_column('Department', 'leave_approver'): rename_field('Department', "leave_approver", "leave_approvers") if frappe.db.has_column('Department', 'expense_approver'): rename_field('Department', "expense_approver", "expense_approvers") if not frappe.db.table_exists("Employee Leave Approver"): return approvers = frappe.db.sql("""select distinct app.leave_approver, emp.department from `tabEmployee Leave Approver` app, `tabEmployee` emp where app.parenttype = 'Employee' and emp.name = app.parent """, as_dict=True) for record in approvers: if record.department: department = frappe.get_doc("Department", record.department) if not department: return if not len(department.leave_approvers): department.append("leave_approvers",{ "approver": record.leave_approver }).db_insert()
def execute(): doctype = "Timesheet" fields_dict = {"total_billing_amount": "total_billable_amount", "total_billing_hours": "total_billable_hours"} for old_fieldname, new_fieldname in fields_dict.items(): if old_fieldname in frappe.db.get_table_columns(doctype): rename_field(doctype, old_fieldname, new_fieldname)
def execute(): # delete custom field if exists for doctype, fieldname in (('Issue', 'issue_type'), ('Opportunity', 'opportunity_type')): custom_field = frappe.db.get_value("Custom Field", { "fieldname": fieldname, 'dt': doctype }) if custom_field: frappe.delete_doc("Custom Field", custom_field, ignore_permissions=True) frappe.reload_doc('support', 'doctype', 'issue_type') frappe.reload_doc('support', 'doctype', 'issue') frappe.reload_doc('crm', 'doctype', 'opportunity_type') frappe.reload_doc('crm', 'doctype', 'opportunity') # rename enquiry_type -> opportunity_type from frappe.model.utils.rename_field import rename_field rename_field('Opportunity', 'enquiry_type', 'opportunity_type') # create values if already set for opts in (('Issue', 'issue_type', 'Issue Type'), ('Opportunity', 'opportunity_type', 'Opportunity Type')): for d in frappe.db.sql('select distinct {0} from `tab{1}`'.format( opts[1], opts[0])): if d[0] and not frappe.db.exists(opts[2], d[0]): frappe.get_doc(dict(doctype=opts[2], name=d[0])).insert() # fixtures for name in ('Hub', _('Sales'), _('Support'), _('Maintenance')): if not frappe.db.exists('Opportunity Type', name): frappe.get_doc(dict(doctype='Opportunity Type', name=name)).insert()
def execute(): for doctype in ['BOM Explosion Item', 'BOM Item', 'Work Order Item', 'Item']: if frappe.db.has_column(doctype, 'allow_transfer_for_manufacture'): if doctype != 'Item': frappe.reload_doc('manufacturing', 'doctype', frappe.scrub(doctype)) else: frappe.reload_doc('stock', 'doctype', frappe.scrub(doctype)) 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)) if frappe.db.has_column(doctype, 'transfer_material_against_job_card'): frappe.db.sql(""" UPDATE `tab%s` SET transfer_material_against = CASE WHEN transfer_material_against_job_card = 1 then 'Job Card' Else 'Work Order' END WHERE docstatus < 2""" % (doctype)) else: frappe.db.sql(""" UPDATE `tab%s` SET transfer_material_against = 'Work Order' WHERE docstatus < 2""" % (doctype))
def execute(): frappe.reload_doc("automation", "doctype", "auto_repeat") doctypes_to_rename = { "accounts": ["Journal Entry", "Payment Entry", "Purchase Invoice", "Sales Invoice"], "buying": ["Purchase Order", "Supplier Quotation"], "selling": ["Quotation", "Sales Order"], "stock": ["Delivery Note", "Purchase Receipt"], } for module, doctypes in doctypes_to_rename.items(): for doctype in doctypes: frappe.reload_doc(module, "doctype", frappe.scrub(doctype)) if frappe.db.has_column(doctype, "subscription"): rename_field(doctype, "subscription", "auto_repeat") subscriptions = frappe.db.sql("select * from `tabSubscription`", as_dict=1) for doc in subscriptions: doc["doctype"] = "Auto Repeat" auto_repeat = frappe.get_doc(doc) auto_repeat.db_insert() frappe.db.sql("delete from `tabSubscription`") frappe.db.commit() drop_columns_from_subscription()
def execute(): # delete custom field if exists for doctype, fieldname in (('Issue', 'issue_type'), ('Opportunity', 'opportunity_type')): custom_field = frappe.db.get_value("Custom Field", {"fieldname": fieldname, 'dt': doctype}) if custom_field: frappe.delete_doc("Custom Field", custom_field, ignore_permissions=True) frappe.reload_doc('support', 'doctype', 'issue_type') frappe.reload_doc('support', 'doctype', 'issue') frappe.reload_doc('crm', 'doctype', 'opportunity_type') frappe.reload_doc('crm', 'doctype', 'opportunity') # rename enquiry_type -> opportunity_type from frappe.model.utils.rename_field import rename_field rename_field('Opportunity', 'enquiry_type', 'opportunity_type') # create values if already set for opts in (('Issue', 'issue_type', 'Issue Type'), ('Opportunity', 'opportunity_type', 'Opportunity Type')): for d in frappe.db.sql('select distinct {0} from `tab{1}`'.format(opts[1], opts[0])): if d[0] and not frappe.db.exists(opts[2], d[0]): frappe.get_doc(dict(doctype = opts[2], name=d[0])).insert() # fixtures for name in ('Hub', _('Sales'), _('Support'), _('Maintenance')): if not frappe.db.exists('Opportunity Type', name): frappe.get_doc(dict(doctype = 'Opportunity Type', name=name)).insert()
def execute(): #Rename Grading Structure to Grading Scale if not frappe.db.exists("DocType", "Grading Scale"): frappe.rename_doc("DocType", "Grading Structure", "Grading Scale", force=True) if not frappe.db.exists("DocType", "Grading Scale Interval"): frappe.rename_doc("DocType", "Grade Interval", "Grading Scale Interval", force=True) # frappe.reload_doc("schools", "doctype", "grading_scale_interval") frappe.reload_doc("education", "doctype", "grading_scale_interval") if "to_score" in frappe.db.get_table_columns("Grading Scale Interval"): rename_field("Grading Scale Interval", "to_score", "threshold") if not frappe.db.exists("DocType", "Assessment Plan"): frappe.rename_doc("DocType", "Assessment", "Assessment Plan", force=True) # 'Schools' module changed to the 'Education' # frappe.reload_doc("schools", "doctype", "assessment_plan") #Rename Assessment Results frappe.reload_doc("education", "doctype", "assessment_plan") if "grading_structure" in frappe.db.get_table_columns("Assessment Plan"): rename_field("Assessment Plan", "grading_structure", "grading_scale") # frappe.reload_doc("schools", "doctype", "assessment_result") # frappe.reload_doc("schools", "doctype", "assessment_result_detail") # frappe.reload_doc("schools", "doctype", "assessment_criteria") frappe.reload_doc("education", "doctype", "assessment_result") frappe.reload_doc("education", "doctype", "assessment_result_detail") frappe.reload_doc("education", "doctype", "assessment_criteria") for assessment in frappe.get_all("Assessment Plan", fields=["name", "grading_scale"], filters=[["docstatus", "!=", 2]]): for stud_result in frappe.db.sql( "select * from `tabAssessment Result` where parent= %s", assessment.name, as_dict=True): if stud_result.result: assessment_result = frappe.new_doc("Assessment Result") assessment_result.student = stud_result.student assessment_result.student_name = stud_result.student_name assessment_result.assessment_plan = assessment.name assessment_result.grading_scale = assessment.grading_scale assessment_result.total_score = stud_result.result assessment_result.flags.ignore_validate = True assessment_result.flags.ignore_mandatory = True assessment_result.save() frappe.db.sql( """delete from `tabAssessment Result` where parent != '' or parent is not null""" )
def execute(): frappe.reload_doc('automation', 'doctype', 'auto_repeat') doctypes_to_rename = { 'accounts': [ 'Journal Entry', 'Payment Entry', 'Purchase Invoice', 'Sales Invoice' ], 'buying': ['Purchase Order', 'Supplier Quotation'], 'selling': ['Quotation', 'Sales Order'], 'stock': ['Delivery Note', 'Purchase Receipt'] } for module, doctypes in doctypes_to_rename.items(): for doctype in doctypes: frappe.reload_doc(module, 'doctype', frappe.scrub(doctype)) if frappe.db.has_column(doctype, 'subscription'): rename_field(doctype, 'subscription', 'auto_repeat') subscriptions = frappe.db.sql('select * from `tabSubscription`', as_dict=1) for doc in subscriptions: doc['doctype'] = 'Auto Repeat' auto_repeat = frappe.get_doc(doc) auto_repeat.db_insert() frappe.db.sql('delete from `tabSubscription`') frappe.db.commit() drop_columns_from_subscription()
def execute(): to_rename = [ 'Purchase Order', 'Journal Entry', 'Sales Invoice', 'Payment Entry', 'Delivery Note', 'Purchase Invoice', 'Quotation', 'Sales Order', 'Purchase Receipt', 'Supplier Quotation' ] frappe.reload_doc('accounts', 'doctype', 'sales_invoice') frappe.reload_doc('accounts', 'doctype', 'purchase_invoice') frappe.reload_doc('accounts', 'doctype', 'payment_entry') frappe.reload_doc('accounts', 'doctype', 'journal_entry') frappe.reload_doc('buying', 'doctype', 'purchase_order') frappe.reload_doc('buying', 'doctype', 'supplier_quotation') frappe.reload_doc('desk', 'doctype', 'auto_repeat') frappe.reload_doc('selling', 'doctype', 'quotation') frappe.reload_doc('selling', 'doctype', 'sales_order') frappe.reload_doc('stock', 'doctype', 'purchase_receipt') frappe.reload_doc('stock', 'doctype', 'delivery_note') for doctype in to_rename: rename_field(doctype, 'subscription', 'auto_repeat') subscriptions = frappe.db.sql('select * from `tabSubscription`', as_dict=1) for doc in subscriptions: doc['doctype'] = 'Auto Repeat' auto_repeat = frappe.get_doc(doc) auto_repeat.db_insert()
def execute(): # updating column value to handle field change from Data to Currency changed_field = "base_scrap_material_cost" frappe.db.sql(f"update `tabBOM` set {changed_field} = '0' where trim(coalesce({changed_field}, ''))= ''") for doctype in ['BOM Explosion Item', 'BOM Item', 'Work Order Item', 'Item']: if frappe.db.has_column(doctype, 'allow_transfer_for_manufacture'): if doctype != 'Item': frappe.reload_doc('manufacturing', 'doctype', frappe.scrub(doctype)) else: frappe.reload_doc('stock', 'doctype', frappe.scrub(doctype)) rename_field(doctype, "allow_transfer_for_manufacture", "include_item_in_manufacturing") for doctype in ['BOM', 'Work Order']: frappe.reload_doc('manufacturing', 'doctype', frappe.scrub(doctype)) if frappe.db.has_column(doctype, 'transfer_material_against_job_card'): frappe.db.sql(""" UPDATE `tab%s` SET transfer_material_against = CASE WHEN transfer_material_against_job_card = 1 then 'Job Card' Else 'Work Order' END WHERE docstatus < 2""" % (doctype)) else: frappe.db.sql(""" UPDATE `tab%s` SET transfer_material_against = 'Work Order' WHERE docstatus < 2""" % (doctype))
def execute(): frappe.reload_doc('stock', 'doctype', 'material_request_item') rename_field("Material Request Item", "sales_order_no", "sales_order") frappe.reload_doc('support', 'doctype', 'maintenance_schedule_item') rename_field("Maintenance Schedule Item", "prevdoc_docname", "sales_order")
def execute(): frappe.reload_doc('desk', 'doctype', 'auto_repeat') doctypes_to_rename = { 'accounts': ['Journal Entry', 'Payment Entry', 'Purchase Invoice', 'Sales Invoice'], 'buying': ['Purchase Order', 'Supplier Quotation'], 'selling': ['Quotation', 'Sales Order'], 'stock': ['Delivery Note', 'Purchase Receipt'] } for module, doctypes in doctypes_to_rename.items(): for doctype in doctypes: frappe.reload_doc(module, 'doctype', frappe.scrub(doctype)) if frappe.db.has_column(doctype, 'subscription'): rename_field(doctype, 'subscription', 'auto_repeat') subscriptions = frappe.db.sql('select * from `tabSubscription`', as_dict=1) for doc in subscriptions: doc['doctype'] = 'Auto Repeat' auto_repeat = frappe.get_doc(doc) auto_repeat.db_insert() frappe.db.sql('delete from `tabSubscription`') frappe.db.commit() drop_columns_from_subscription()
def execute(): frappe.reload_doc("manufacturing", "doctype", "manufacturing_settings") rename_field( "Manufacturing Settings", "over_production_allowance_percentage", "overproduction_percentage_for_sales_order", )
def execute(): company = frappe.get_all("Company", filters={"country": "Saudi Arabia"}) if not company: return if frappe.db.exists("DocType", "Sales Invoice"): frappe.reload_doc("accounts", "doctype", "sales_invoice", force=True) # rename_field method assumes that the field already exists or the doc is synced if not frappe.db.has_column("Sales Invoice", "ksa_einv_qr"): create_custom_fields({ "Sales Invoice": [ dict( fieldname="ksa_einv_qr", label="KSA E-Invoicing QR", fieldtype="Attach Image", read_only=1, no_copy=1, hidden=1, ) ] }) if frappe.db.has_column("Sales Invoice", "qr_code"): rename_field("Sales Invoice", "qr_code", "ksa_einv_qr") frappe.delete_doc_if_exists("Custom Field", "Sales Invoice-qr_code")
def execute(): frappe.reload_doc("hr", "doctype", "department_approver") frappe.reload_doc("hr", "doctype", "employee") frappe.reload_doc("hr", "doctype", "department") if frappe.db.has_column('Department', 'leave_approver'): rename_field('Department', "leave_approver", "leave_approvers") if frappe.db.has_column('Department', 'expense_approver'): rename_field('Department', "expense_approver", "expense_approvers") if not frappe.db.table_exists("Employee Leave Approver"): return approvers = frappe.db.sql( """select distinct app.leave_approver, emp.department from `tabEmployee Leave Approver` app, `tabEmployee` emp where app.parenttype = 'Employee' and emp.name = app.parent """, as_dict=True) for record in approvers: if record.department: department = frappe.get_doc("Department", record.department) if not department: return if not len(department.leave_approvers): department.append("leave_approvers", { "approver": record.leave_approver }).db_insert()
def execute(): if frappe.db.table_exists( "Employee Loan Application" ) and not frappe.db.table_exists("Loan Application"): frappe.rename_doc("DocType", "Employee Loan Application", "Loan Application", force=True) if frappe.db.table_exists( "Employee Loan") and not frappe.db.table_exists("Loan"): frappe.rename_doc("DocType", "Employee Loan", "Loan", force=True) frappe.reload_doc("hr", "doctype", "loan_application") frappe.reload_doc("hr", "doctype", "loan") frappe.reload_doc("hr", "doctype", "salary_slip_loan") for doctype in ['Loan', 'Salary Slip Loan']: if frappe.db.has_column(doctype, 'employee_loan_account'): rename_field(doctype, "employee_loan_account", "loan_account") columns = {'employee': 'applicant', 'employee_name': 'applicant_name'} for doctype in ['Loan Application', 'Loan']: frappe.db.sql( """ update `tab{doctype}` set applicant_type = 'Employee' """. format(doctype=doctype)) for column, new_column in columns.items(): if frappe.db.has_column(doctype, column): rename_field(doctype, column, new_column) frappe.delete_doc('DocType', doctype)
def execute(): for dt in ("Sales Invoice Advance", "Purchase Invoice Advance"): frappe.reload_doctype(dt) frappe.db.sql("update `tab{0}` set reference_type = 'Journal Entry'".format(dt)) rename_field(dt, "journal_entry", "reference_name") rename_field(dt, "jv_detail_no", "reference_row")
def execute(): doc_list = ["Purchase Invoice Item", "Stock Entry Detail", "Delivery Note Item", "Purchase Receipt Item", "Sales Invoice Item"] for doctype in doc_list: frappe.reload_doctype(doctype) rename_field(doctype, "is_sample_item", "allow_zero_valuation_rate")
def execute(): if frappe.db.exists("DocType", "Examination"): frappe.rename_doc("DocType", "Examination", "Assessment") frappe.reload_doctype("Assessment") rename_field("Assessment", "exam_name", "assessment_name") rename_field("Assessment", "exam_code", "assessment_code") frappe.db.sql("delete from `tabPortal Menu Item` where route = '/examination'")
def execute(): if "Healthcare" not in frappe.get_active_domains(): return if frappe.db.exists('DocType', 'Healthcare Service Unit'): frappe.reload_doc('healthcare', 'doctype', 'healthcare_service_unit') if frappe.db.has_column('Healthcare Service Unit', 'occupancy_status'): rename_field('Healthcare Service Unit', 'occupancy_status', 'status')
def execute(): if not frappe.db.table_exists('Dashboard Chart'): return frappe.reload_doc('desk', 'doctype', 'dashboard_chart') if frappe.db.has_column('Dashboard Chart', 'is_custom'): rename_field('Dashboard Chart', 'is_custom', 'use_report_chart')
def execute(): if not frappe.db.table_exists("Dashboard Chart"): return frappe.reload_doc("desk", "doctype", "dashboard_chart") if frappe.db.has_column("Dashboard Chart", "is_custom"): rename_field("Dashboard Chart", "is_custom", "use_report_chart")
def execute(): frappe.reload_doc("custom", "doctype", "customize_form") frappe.reload_doc("email", "doctype", "notification") frappe.reload_doc("desk", "doctype", "event") frappe.reload_doc("workflow", "doctype", "workflow") for dt, field_list in rename_map.items(): for field in field_list: rename_field(dt, field[0], field[1])
def execute(): doc_list = ["Production Order", "BOM", "Purchase Invoice Item", "Sales Invoice", "Purchase Order Item", "Stock Entry", "Delivery Note", "Sales Order", "Purchase Receipt Item", "Supplier Quotation Item"] for doctype in doc_list: frappe.reload_doctype(doctype) rename_field(doctype, "project_name", "project")
def execute(): frappe.db.sql(""" UPDATE `tabLeave Type` SET max_days_allowed = '0' WHERE trim(coalesce(max_days_allowed, '')) = '' """) frappe.db.sql_ddl("""ALTER table `tabLeave Type` modify max_days_allowed int(8) NOT NULL""") frappe.reload_doc("hr", "doctype", "leave_type") rename_field("Leave Type", "max_days_allowed", "max_continuous_days_allowed")
def execute(): doc_list = ["Work Order", "BOM", "Purchase Invoice Item", "Sales Invoice", "Purchase Order Item", "Stock Entry", "Delivery Note", "Sales Order", "Purchase Receipt Item", "Supplier Quotation Item"] for doctype in doc_list: frappe.reload_doctype(doctype) rename_field(doctype, "project_name", "project")
def execute(): tables = frappe.db.sql_list("show tables") if "tabUser" not in tables: frappe.rename_doc("DocType", "Profile", "User", force=True) frappe.reload_doc("website", "doctype", "blogger") if "profile" in get_table_columns("Blogger"): rename_field("Blogger", "profile", "user")
def execute(): for dt in ("Sales Invoice Advance", "Purchase Invoice Advance"): frappe.reload_doctype(dt) frappe.db.sql( "update `tab{0}` set reference_type = 'Journal Entry'".format(dt)) rename_field(dt, "journal_entry", "reference_name") rename_field(dt, "jv_detail_no", "reference_row")
def execute(): frappe.reload_doc("custom", "doctype", "customize_form") frappe.reload_doc("email", "doctype", "email_alert") frappe.reload_doc("desk", "doctype", "event") frappe.reload_doc("workflow", "doctype", "workflow") for dt, field_list in rename_map.items(): for field in field_list: rename_field(dt, field[0], field[1])
def execute(): """ Change notification recipient fields from email to receiver fields """ frappe.reload_doc("Email", "doctype", "Notification Recipient") frappe.reload_doc("Email", "doctype", "Notification") rename_field("Notification Recipient", "email_by_document_field", "receiver_by_document_field") rename_field("Notification Recipient", "email_by_role", "receiver_by_role")
def execute(): """ copy data from old fields to new """ frappe.reload_doc("projects", "doctype", "project") if frappe.db.has_column('Project', 'total_sales_cost'): rename_field('Project', "total_sales_cost", "total_sales_amount") if frappe.db.has_column('Project', 'total_billing_amount'): rename_field('Project', "total_billing_amount", "total_billable_amount")
def execute(): frappe.reload_doc("accounts", "doctype", "pricing_rule") try: rename_field("Pricing Rule", "price_or_discount", "rate_or_discount") rename_field("Pricing Rule", "price", "rate") except Exception as e: if e.args[0]!=1054: raise
def execute(): if frappe.db.exists("DocType", "Examination"): frappe.rename_doc("DocType", "Examination", "Assessment") frappe.rename_doc("DocType", "Examination Result", "Assessment Result") frappe.reload_doc("schools", "doctype", "assessment") frappe.reload_doc("schools", "doctype", "assessment_result") rename_field("Assessment", "exam_name", "assessment_name") rename_field("Assessment", "exam_code", "assessment_code") frappe.db.sql("delete from `tabPortal Menu Item` where route = '/examination'")
def execute(): doctype = 'Timesheet' fields_dict = { 'total_billing_amount': 'total_billable_amount', 'total_billing_hours': 'total_billable_hours' } for old_fieldname, new_fieldname in fields_dict.items(): if old_fieldname in frappe.db.get_table_columns(doctype): rename_field(doctype, old_fieldname, new_fieldname)
def execute(): frappe.reload_doc("accounts", "doctype", "pricing_rule") try: rename_field("Pricing Rule", "price_or_discount", "rate_or_discount") rename_field("Pricing Rule", "price", "rate") except Exception as e: if e.args[0] != 1054: raise
def execute(): doc_list = [ "Purchase Invoice Item", "Stock Entry Detail", "Delivery Note Item", "Purchase Receipt Item", "Sales Invoice Item" ] for doctype in doc_list: frappe.reload_doctype(doctype) rename_field(doctype, "is_sample_item", "allow_zero_valuation_rate")
def execute(): # Rename and reload the Land Unit and Linked Land Unit doctypes if frappe.db.table_exists("Land Unit") and not frappe.db.table_exists("Location"): frappe.rename_doc("DocType", "Land Unit", "Location", force=True) frappe.reload_doc("assets", "doctype", "location") if frappe.db.table_exists("Linked Land Unit") and not frappe.db.table_exists("Linked Location"): frappe.rename_doc("DocType", "Linked Land Unit", "Linked Location", force=True) frappe.reload_doc("assets", "doctype", "linked_location") if not frappe.db.table_exists("Crop Cycle"): frappe.reload_doc("agriculture", "doctype", "crop_cycle") # Rename the fields in related doctypes if "linked_land_unit" in frappe.db.get_table_columns("Crop Cycle"): rename_field("Crop Cycle", "linked_land_unit", "linked_location") if "land_unit" in frappe.db.get_table_columns("Linked Location"): rename_field("Linked Location", "land_unit", "location") if not frappe.db.exists("Location", "All Land Units"): frappe.get_doc( {"doctype": "Location", "is_group": True, "location_name": "All Land Units"} ).insert(ignore_permissions=True) if frappe.db.table_exists("Land Unit"): land_units = frappe.get_all("Land Unit", fields=["*"], order_by="lft") for land_unit in land_units: if not frappe.db.exists("Location", land_unit.get("land_unit_name")): frappe.get_doc( { "doctype": "Location", "location_name": land_unit.get("land_unit_name"), "parent_location": land_unit.get("parent_land_unit") or "All Land Units", "is_container": land_unit.get("is_container"), "is_group": land_unit.get("is_group"), "latitude": land_unit.get("latitude"), "longitude": land_unit.get("longitude"), "area": land_unit.get("area"), "location": land_unit.get("location"), "lft": land_unit.get("lft"), "rgt": land_unit.get("rgt"), } ).insert(ignore_permissions=True) # Delete the Land Unit and Linked Land Unit doctypes if frappe.db.table_exists("Land Unit"): frappe.delete_doc("DocType", "Land Unit", force=1) if frappe.db.table_exists("Linked Land Unit"): frappe.delete_doc("DocType", "Linked Land Unit", force=1)
def execute(): frappe.reload_doc("setup", "doctype", "company") if frappe.db.has_column('Company', 'default_terms'): rename_field('Company', "default_terms", "default_selling_terms") for company in frappe.get_all("Company", ["name", "default_selling_terms", "default_buying_terms"]): if company.default_selling_terms and not company.default_buying_terms: frappe.db.set_value("Company", company.name, "default_buying_terms", company.default_selling_terms) frappe.reload_doc("setup", "doctype", "terms_and_conditions") frappe.db.sql("update `tabTerms and Conditions` set selling=1, buying=1, hr=1")
def execute(): # Rename and reload the Land Unit and Linked Land Unit doctypes if frappe.db.table_exists('Land Unit') and not frappe.db.table_exists('Location'): rename_doc('DocType', 'Land Unit', 'Location', force=True) frappe.reload_doc('assets', 'doctype', 'location') if frappe.db.table_exists('Linked Land Unit') and not frappe.db.table_exists('Linked Location'): rename_doc('DocType', 'Linked Land Unit', 'Linked Location', force=True) frappe.reload_doc('assets', 'doctype', 'linked_location') if not frappe.db.table_exists('Crop Cycle'): frappe.reload_doc('agriculture', 'doctype', 'crop_cycle') # Rename the fields in related doctypes if 'linked_land_unit' in frappe.db.get_table_columns('Crop Cycle'): rename_field('Crop Cycle', 'linked_land_unit', 'linked_location') if 'land_unit' in frappe.db.get_table_columns('Linked Location'): rename_field('Linked Location', 'land_unit', 'location') if not frappe.db.exists("Location", "All Land Units"): frappe.get_doc({"doctype": "Location", "is_group": True, "location_name": "All Land Units"}).insert(ignore_permissions=True) if frappe.db.table_exists('Land Unit'): land_units = frappe.get_all('Land Unit', fields=['*'], order_by='lft') for land_unit in land_units: if not frappe.db.exists('Location', land_unit.get('land_unit_name')): frappe.get_doc({ 'doctype': 'Location', 'location_name': land_unit.get('land_unit_name'), 'parent_location': land_unit.get('parent_land_unit') or "All Land Units", 'is_container': land_unit.get('is_container'), 'is_group': land_unit.get('is_group'), 'latitude': land_unit.get('latitude'), 'longitude': land_unit.get('longitude'), 'area': land_unit.get('area'), 'location': land_unit.get('location'), 'lft': land_unit.get('lft'), 'rgt': land_unit.get('rgt') }).insert(ignore_permissions=True) # frappe.db.sql("""update `tabDesktop Icon` set label='Location', module_name='Location' where label='Land Unit'""") frappe.db.sql("""update `tabDesktop Icon` set link='List/Location' where link='List/Land Unit'""") # Delete the Land Unit and Linked Land Unit doctypes if frappe.db.table_exists('Land Unit'): frappe.delete_doc('DocType', 'Land Unit', force=1) if frappe.db.table_exists('Linked Land Unit'): frappe.delete_doc('DocType', 'Linked Land Unit', force=1)
def execute(): frappe.reload_doc("stock", "doctype", "item") frappe.reload_doc("stock", "doctype", "stock_settings") frappe.reload_doc("accounts", "doctype", "accounts_settings") rename_field('Stock Settings', "tolerance", "over_delivery_receipt_allowance") rename_field('Item', "tolerance", "over_delivery_receipt_allowance") qty_allowance = frappe.db.get_single_value("Stock Settings", "over_delivery_receipt_allowance") frappe.db.set_value("Accounts Settings", None, "over_delivery_receipt_allowance", qty_allowance) frappe.db.sql("update tabItem set over_billing_allowance=over_delivery_receipt_allowance")
def execute(): for doctypes, fields in [[selling_doctypes, selling_renamed_fields], [buying_doctypes, buying_renamed_fields]]: for dt in doctypes: frappe.reload_doc(get_doctype_module(dt), "doctype", scrub(dt)) table_columns = frappe.db.get_table_columns(dt) base_net_total = frappe.db.sql("select sum(ifnull({0}, 0)) from `tab{1}`".format(fields[0][1], dt))[0][0] if not base_net_total: for f in fields: if f[0] in table_columns: rename_field(dt, f[0], f[1]) # Added new field "total_taxes_and_charges" in buying cycle, updating value if dt in ("Supplier Quotation", "Purchase Order", "Purchase Receipt", "Purchase Invoice"): frappe.db.sql("""update `tab{0}` set total_taxes_and_charges = round(base_total_taxes_and_charges/conversion_rate, 2)""".format(dt))
def execute(): if frappe.db.exists("DocType", "Examination"): frappe.rename_doc("DocType", "Examination", "Assessment") frappe.rename_doc("DocType", "Examination Result", "Assessment Result") # 'Schools' module changed to the 'Education' # frappe.reload_doc("schools", "doctype", "assessment") # frappe.reload_doc("schools", "doctype", "assessment_result") frappe.reload_doc("education", "doctype", "assessment") frappe.reload_doc("education", "doctype", "assessment_result") rename_field("Assessment", "exam_name", "assessment_name") rename_field("Assessment", "exam_code", "assessment_code") frappe.db.sql("delete from `tabPortal Menu Item` where route = '/examination'")
def execute(): if frappe.db.table_exists("Supplier Group"): frappe.reload_doc('setup', 'doctype', 'supplier_group') elif frappe.db.table_exists("Supplier Type"): rename_doc("DocType", "Supplier Type", "Supplier Group", force=True) frappe.reload_doc('setup', 'doctype', 'supplier_group') frappe.reload_doc("accounts", "doctype", "pricing_rule") frappe.reload_doc("accounts", "doctype", "tax_rule") frappe.reload_doc("buying", "doctype", "buying_settings") frappe.reload_doc("buying", "doctype", "supplier") rename_field("Supplier Group", "supplier_type", "supplier_group_name") rename_field("Supplier", "supplier_type", "supplier_group") rename_field("Buying Settings", "supplier_type", "supplier_group") rename_field("Pricing Rule", "supplier_type", "supplier_group") rename_field("Tax Rule", "supplier_type", "supplier_group") build_tree()
def execute(): for dt, field_list in field_rename_map.items(): if frappe.db.exists('DocType', dt): frappe.reload_doc(get_doctype_module(dt), "doctype", scrub(dt)) for field in field_list: if frappe.db.has_column(dt, field[0]): rename_field(dt, field[0], field[1]) if frappe.db.exists('DocType', 'Lab Prescription'): if frappe.db.has_column('Lab Prescription', 'parentfield'): frappe.db.sql(""" update `tabLab Prescription` set parentfield = 'lab_test_prescription' where parentfield = 'test_prescription' """) if frappe.db.exists('DocType', 'Lab Test Groups'): if frappe.db.has_column('Lab Test Groups', 'parentfield'): frappe.db.sql(""" update `tabLab Test Groups` set parentfield = 'lab_test_groups' where parentfield = 'test_groups' """)
def execute(): if frappe.db.table_exists("Employee Loan Application") and not frappe.db.table_exists("Loan Application"): frappe.rename_doc("DocType", "Employee Loan Application", "Loan Application", force=True) if frappe.db.table_exists("Employee Loan") and not frappe.db.table_exists("Loan"): frappe.rename_doc("DocType", "Employee Loan", "Loan", force=True) frappe.reload_doc("hr", "doctype", "loan_application") frappe.reload_doc("hr", "doctype", "loan") frappe.reload_doc("hr", "doctype", "salary_slip_loan") for doctype in ['Loan', 'Salary Slip Loan']: if frappe.db.has_column(doctype, 'employee_loan_account'): rename_field(doctype, "employee_loan_account", "loan_account") columns = {'employee': 'applicant', 'employee_name': 'applicant_name'} for doctype in ['Loan Application', 'Loan']: frappe.db.sql(""" update `tab{doctype}` set applicant_type = 'Employee' """ .format(doctype=doctype)) for column, new_column in columns.items(): if frappe.db.has_column(doctype, column): rename_field(doctype, column, new_column) frappe.delete_doc('DocType', doctype)
def execute(): frappe.reload_doc("stock", "doctype", "item") if frappe.db.has_column('Item', 'net_weight'): rename_field("Item", "net_weight", "weight_per_unit")
def execute(): frappe.reload_doc('projects', 'doctype', 'project') if frappe.db.has_column('Project', 'from'): rename_field('Project', 'from', 'from_time') rename_field('Project', 'to', 'to_time')
def rename_pr_fields(): rename_field("Purchase Receipt Item", "prevdoc_docname", "purchase_order") rename_field("Purchase Receipt Item", "prevdoc_detail_docname", "purchase_order_item")
def rename_field_if_exists(doctype, old_fieldname, new_fieldname): try: rename_field(doctype, old_fieldname, new_fieldname) except Exception, e: if e.args[0] != 1054: raise