Ejemplo n.º 1
0
def execute():
    dataent.reload_doc('manufacturing', 'doctype', 'bom_item')
    dataent.reload_doc('manufacturing', 'doctype', 'bom_explosion_item')
    dataent.reload_doc('manufacturing', 'doctype', 'bom_scrap_item')
    dataent.db.sql(
        "update `tabBOM Item` set stock_qty = qty, uom = stock_uom, conversion_factor = 1"
    )
    dataent.db.sql("update `tabBOM Explosion Item` set stock_qty = qty")
    if "qty" in dataent.db.get_table_columns("BOM Scrap Item"):
        dataent.db.sql("update `tabBOM Scrap Item` set stock_qty = qty")
Ejemplo n.º 2
0
def execute():
    """Create domain documents"""
    dataent.reload_doc("core", "doctype", "domain")
    dataent.reload_doc("core", "doctype", "domain_settings")
    dataent.reload_doc("core", "doctype", "has_domain")
    dataent.reload_doc("core", "doctype", "role")

    for domain in ("Distribution", "Manufacturing", "Retail", "Services",
                   "Education"):
        if not dataent.db.exists({"doctype": "Domain", "domain": domain}):
            create_domain(domain)

    # set domain in domain settings based on company domain

    domains = []
    condition = ""
    company = epaas.get_default_company()
    if company:
        condition = " and name='{0}'".format(dataent.db.escape(company))

    domains = dataent.db.sql_list(
        "select distinct domain from `tabCompany` where domain != 'Other' {0}".
        format(condition))

    if not domains:
        return

    domain_settings = dataent.get_doc("Domain Settings", "Domain Settings")
    checked_domains = [row.domain for row in domain_settings.active_domains]

    for domain in domains:
        # check and ignore if the domains is already checked in domain settings
        if domain in checked_domains:
            continue

        if not dataent.db.get_value("Domain", domain):
            # user added custom domain in companies domain field
            create_domain(domain)

        row = domain_settings.append("active_domains", dict(domain=domain))

    domain_settings.save(ignore_permissions=True)
Ejemplo n.º 3
0
def execute():
    dataent.reload_doc('epaas_integrations', 'doctype', 'shopify_settings')
    dataent.reload_doc('epaas_integrations', 'doctype', 'shopify_tax_account')
    dataent.reload_doc('epaas_integrations', 'doctype', 'shopify_log')
    dataent.reload_doc('epaas_integrations', 'doctype',
                       'shopify_webhook_detail')

    if 'epaas_shopify' in dataent.get_installed_apps():
        remove_from_installed_apps('epaas_shopify')

        dataent.db.sql(
            'delete from `tabDesktop Icon` where app="epaas_shopify" ')
        dataent.delete_doc("Module Def", 'epaas_shopify')

        dataent.db.commit()

        dataent.db.sql("truncate `tabShopify Log`")

        setup_app_type()
    else:
        disable_shopify()
Ejemplo n.º 4
0
def execute():
	"""
		in communication move feedback details to content
		remove Guest None from sender full name
		setup feedback request trigger's is_manual field
	"""
	dataent.reload_doc('core', 'doctype', 'dynamic_link')
	dataent.reload_doc('email', 'doctype', 'contact')
	
	dataent.reload_doc("core", "doctype", "feedback_request")
	dataent.reload_doc("core", "doctype", "communication")
	
	if dataent.db.has_column('Communication', 'feedback'):
		dataent.db.sql("""update tabCommunication set content=ifnull(feedback, "feedback details not provided")
			where communication_type="Feedback" and content is NULL""")

	dataent.db.sql(""" update tabCommunication set sender_full_name="" where communication_type="Feedback"
		and sender_full_name='Guest None' """)

	dataent.db.sql(""" update `tabFeedback Request` set is_manual=1, feedback_trigger="Manual"
		where ifnull(feedback_trigger, '')='' """)
Ejemplo n.º 5
0
def execute():
    dataent.reload_doc("setup", "doctype", "item_group")
    dataent.reload_doc("stock", "doctype", "item")
    dataent.reload_doc("setup", "doctype", "sales_partner")

    try:
        dataent.model.rename_field("Item Group", "parent_website_sitemap",
                                   "parent_website_route")
        dataent.model.rename_field("Item", "parent_website_sitemap",
                                   "parent_website_route")
        dataent.model.rename_field("Sales Partner", "parent_website_sitemap",
                                   "parent_website_route")
    except Exception as e:
        if e.args[0] != 1054:
            raise
def execute():
    dataent.reload_doc("buying", "doctype", "request_for_quotation_supplier")
    dataent.reload_doc("buying", "doctype", "request_for_quotation_item")
    dataent.reload_doc("buying", "doctype", "request_for_quotation")
    dataent.reload_doc("projects", "doctype", "timesheet")

    for role in ('Customer', 'Supplier'):
        dataent.db.sql(
            '''delete from `tabHas Role`
			where role=%s and parent in ("Administrator", "Guest")''', role)

        if not dataent.db.sql('select name from `tabHas Role` where role=%s',
                              role):

            # delete DocPerm
            for doctype in dataent.db.sql(
                    'select parent from tabDocPerm where role=%s', role):
                d = dataent.get_doc("DocType", doctype[0])
                d.permissions = [p for p in d.permissions if p.role != role]
                d.save()

            # delete Role
            dataent.delete_doc_if_exists('Role', role)
Ejemplo n.º 7
0
def execute():
    dataent.reload_doc("core", "doctype", "block_module")
    dataent.reload_doctype("User")
    dataent.reload_doctype("Lead")
    dataent.reload_doctype("Contact")

    dataent.reload_doc('email', 'doctype', 'email_group')
    dataent.reload_doc('email', 'doctype', 'email_group_member')
    dataent.reload_doc('email', 'doctype', 'newsletter')

    dataent.permissions.reset_perms("Newsletter")

    if not dataent.db.exists("Role", "Newsletter Manager"):
        dataent.get_doc({
            "doctype": "Role",
            "role": "Newsletter Manager"
        }).insert()

    for userrole in dataent.get_all("Has Role", "parent", {
            "role": "Sales Manager",
            "parenttype": "User"
    }):
        if dataent.db.exists("User", userrole.parent):
            user = dataent.get_doc("User", userrole.parent)
            user.append("roles", {
                "doctype": "Has Role",
                "role": "Newsletter Manager"
            })
            user.flags.ignore_mandatory = True
            user.save()

    # create default lists
    general = dataent.new_doc("Email Group")
    general.title = "General"
    general.insert()
    general.import_from("Lead")
    general.import_from("Contact")
Ejemplo n.º 8
0
def execute():
    dataent.reload_doc('accounts', 'doctype', 'sales_invoice_timesheet')
    dataent.reload_doc('accounts', 'doctype', 'sales_invoice_payment')
    dataent.reload_doc('accounts', 'doctype', 'mode_of_payment')

    count = 0
    for data in dataent.db.sql(
            """select name, mode_of_payment, cash_bank_account, paid_amount, company 
		from `tabSales Invoice` si
		where si.is_pos = 1 and si.docstatus < 2 
		and si.cash_bank_account is not null and si.cash_bank_account != ''
		and not exists(select name from `tabSales Invoice Payment` where parent=si.name)""",
            as_dict=1):

        if not data.mode_of_payment and not dataent.db.exists(
                "Mode of Payment", "Cash"):
            mop = dataent.new_doc("Mode of Payment")
            mop.mode_of_payment = "Cash"
            mop.type = "Cash"
            mop.save()

        si_doc = dataent.get_doc('Sales Invoice', data.name)
        row = si_doc.append(
            'payments', {
                'mode_of_payment':
                data.mode_of_payment or 'Cash',
                'account':
                data.cash_bank_account,
                'type':
                dataent.db.get_value('Mode of Payment', data.mode_of_payment,
                                     'type') or 'Cash',
                'amount':
                data.paid_amount
            })
        row.db_update()

        si_doc.set_paid_amount()
        si_doc.db_set("paid_amount", si_doc.paid_amount, update_modified=False)
        si_doc.db_set("base_paid_amount",
                      si_doc.base_paid_amount,
                      update_modified=False)

        count += 1

        if count % 200 == 0:
            dataent.db.commit()
def execute():
    dataent.reload_doc("accounts", "doctype", "salary_component_account")
    dataent.reload_doc("hr", "doctype", "salary_component")
    dataent.reload_doc("hr", "doctype", "taxable_salary_slab")

    for s in dataent.db.sql(
            '''select name, type, salary_component_abbr from `tabSalary Component` 
			where ifnull(type, "")="" or ifnull(salary_component_abbr, "") = ""''',
            as_dict=1):

        component = dataent.get_doc('Salary Component', s.name)

        # guess
        if not s.type:
            guess = dataent.db.sql(
                '''select
				parentfield from `tabSalary Detail`
				where salary_component=%s limit 1''', s.name)

            if guess:
                component.type = 'Earning' if guess[0][
                    0] == 'earnings' else 'Deduction'

            else:
                component.type = 'Deduction'

        if not s.salary_component_abbr:
            abbr = ''.join([c[0] for c in component.salary_component.split()
                            ]).upper()

            abbr_count = dataent.db.sql(
                """
				select 
					count(name) 
				from 
					`tabSalary Component` 
				where 
					salary_component_abbr = %s or salary_component_abbr like %s
				""", (abbr, abbr + "-%%"))

            if abbr_count and abbr_count[0][0] > 0:
                abbr = abbr + "-" + cstr(abbr_count[0][0])

            component.salary_component_abbr = abbr

        component.save()
Ejemplo n.º 10
0
def execute():
    from epaas.setup.setup_wizard.operations.install_fixtures import add_uom_data

    dataent.reload_doc("setup", "doctype", "UOM Conversion Factor")
    dataent.reload_doc("setup", "doctype", "UOM")
    dataent.reload_doc("stock", "doctype", "UOM Category")

    if not dataent.db.a_row_exists("UOM Conversion Factor"):
        add_uom_data()
    else:
        # delete conversion data and insert again
        dataent.db.sql("delete from `tabUOM Conversion Factor`")
        try:
            dataent.delete_doc('UOM', 'Hundredweight')
            dataent.delete_doc('UOM', 'Pound Cubic Yard')
        except dataent.LinkExistsError:
            pass

        add_uom_data()
Ejemplo n.º 11
0
def execute():
    if dataent.db.exists("DocType", "Guardian"):

        # 'Schools' module changed to the 'Education'
        # dataent.reload_doc("schools", "doctype", "student")
        # dataent.reload_doc("schools", "doctype", "student_guardian")
        # dataent.reload_doc("schools", "doctype", "student_sibling")

        dataent.reload_doc("education", "doctype", "student")
        dataent.reload_doc("education", "doctype", "student_guardian")
        dataent.reload_doc("education", "doctype", "student_sibling")
        if "student" not in dataent.db.get_table_columns("Guardian"):
            return
        guardian = dataent.get_all("Guardian", fields=["name", "student"])
        for d in guardian:
            if d.student:
                student = dataent.get_doc("Student", d.student)
                if student:
                    student.append("guardians", {"guardian": d.name})
                    student.save()
Ejemplo n.º 12
0
def execute():
    reload_doctypes_for_schools_icons()

    dataent.reload_doc('website', 'doctype', 'portal_settings')
    dataent.reload_doc('website', 'doctype', 'portal_menu_item')
    dataent.reload_doc('buying', 'doctype', 'request_for_quotation')

    if 'schools' in dataent.get_installed_apps():
        dataent.db.sql("""delete from `tabDesktop Icon`""")

        if not dataent.db.exists('Module Def',
                                 'Schools') and dataent.db.exists(
                                     'Module Def', 'Academics'):

            # 'Schools' module changed to the 'Education'
            # dataent.rename_doc("Module Def", "Academics", "Schools")

            dataent.rename_doc("Module Def", "Academics", "Education")

        remove_from_installed_apps("schools")
Ejemplo n.º 13
0
def execute():
    dataent.reload_doctype('Role')
    for dt in ("assessment", "course", "fees"):
        # 'Schools' module changed to the 'Education'
        # dataent.reload_doc("schools", "doctype", dt)
        dataent.reload_doc("education", "doctype", dt)

    for dt in ("domain", "has_domain", "domain_settings"):
        dataent.reload_doc("core", "doctype", dt)

    dataent.reload_doc('website', 'doctype', 'portal_menu_item')

    dataent.get_doc('Portal Settings').sync_menu()

    if 'schools' in dataent.get_installed_apps():
        domain = dataent.get_doc('Domain', 'Education')
        domain.setup_domain()
    else:
        domain = dataent.get_doc('Domain', 'Manufacturing')
        domain.setup_data()
        domain.setup_sidebar_items()
Ejemplo n.º 14
0
def execute():
	dataent.reload_doc('portal', 'doctype', 'homepage_featured_product')
	dataent.reload_doc('portal', 'doctype', 'homepage')
	dataent.reload_doc('portal', 'doctype', 'products_settings')
	dataent.reload_doctype('Item')
	dataent.reload_doctype('Item Group')

	website_settings = dataent.get_doc('Website Settings', 'Website Settings')
	if dataent.db.exists('Web Page', website_settings.home_page):
		header = dataent.db.get_value('Web Page', website_settings.home_page, 'header')
		if header and header.startswith("<div class='hero text-center'>"):
			homepage = dataent.get_doc('Homepage', 'Homepage')
			homepage.company = epaas.get_default_company() or dataent.get_all("Company")[0].name
			if '<h1>' in header:
				homepage.tag_line = header.split('<h1>')[1].split('</h1>')[0] or 'Default Website'
			else:
				homepage.tag_line = 'Default Website'
			homepage.setup_items()
			homepage.save()

			website_settings.home_page = 'home'
			website_settings.save()
Ejemplo n.º 15
0
def execute():
    # convert milestones to tasks
    dataent.reload_doctype("Project")
    dataent.reload_doc("projects", "doctype", "project_task")
    dataent.reload_doctype("Task")
    dataent.reload_doc("projects", "doctype", "task_depends_on")
    dataent.reload_doc("projects", "doctype", "time_log")

    for m in dataent.get_all("Project Milestone", "*"):
        if (m.milestone and m.milestone_date
                and dataent.db.exists("Project", m.parent)):
            subject = (m.milestone[:139] +
                       "…") if (len(m.milestone) > 140) else m.milestone
            description = m.milestone
            task = dataent.get_doc({
                "doctype":
                "Task",
                "subject":
                subject,
                "description":
                description if description != subject else None,
                "expected_start_date":
                m.milestone_date,
                "status":
                "Open" if m.status == "Pending" else "Closed",
                "project":
                m.parent,
            })
            task.flags.ignore_mandatory = True
            task.insert(ignore_permissions=True)

    # remove project milestone
    dataent.delete_doc("DocType", "Project Milestone")

    # remove calendar events for milestone
    for e in dataent.get_all("Event", ["name"], {"ref_type": "Project"}):
        dataent.delete_doc("Event", e.name)
Ejemplo n.º 16
0
def execute():
    dataent.reload_doc('crm', 'doctype', 'market_segment')

    dataent.local.lang = dataent.db.get_default("lang") or 'en'

    add_market_segments()
Ejemplo n.º 17
0
def execute():
    dataent.reload_doc("selling", "doctype", "customer")
    dataent.reload_doc("buying", "doctype", "supplier")
    dataent.reload_doc("setup", "doctype", "supplier_type")
    dataent.reload_doc("accounts", "doctype", "payment_term")
    dataent.reload_doc("accounts", "doctype", "payment_terms_template_detail")
    dataent.reload_doc("accounts", "doctype", "payment_terms_template")

    payment_terms = []
    records = []
    for doctype in ("Customer", "Supplier", "Supplier Type"):
        credit_days = dataent.db.sql("""
			SELECT DISTINCT `credit_days`, `credit_days_based_on`, `name`
			from `tab{0}`
			where
				((credit_days_based_on='Fixed Days' or credit_days_based_on is null)
					and credit_days is not null)
				or credit_days_based_on='Last Day of the Next Month'
		""".format(doctype))

        credit_records = ((record[0], record[1], record[2])
                          for record in credit_days)
        for days, based_on, party_name in credit_records:
            if based_on == "Fixed Days":
                pyt_template_name = 'Default Payment Term - N{0}'.format(days)
            else:
                pyt_template_name = 'Default Payment Term - EO2M'

            if not dataent.db.exists("Payment Terms Template",
                                     pyt_template_name):
                payment_term = make_payment_term(days, based_on)
                template = make_template(payment_term)
            else:
                template = dataent.get_doc("Payment Terms Template",
                                           pyt_template_name)

            payment_terms.append(
                'WHEN `name`="%s" THEN "%s"' %
                (dataent.db.escape(party_name), template.template_name))
            records.append(dataent.db.escape(party_name))

        begin_query_str = "UPDATE `tab{0}` SET `payment_terms` = CASE ".format(
            doctype)
        value_query_str = " ".join(payment_terms)
        cond_query_str = " ELSE `payment_terms` END WHERE "

        if records:
            dataent.db.sql(
                begin_query_str + value_query_str + cond_query_str +
                '`name` IN %s', (records, ))
Ejemplo n.º 18
0
def reload_doctypes():
	for doctype in ("razorpay_settings", "paypal_settings", "dropbox_settings", "ldap_settings"):
		dataent.reload_doc("integrations", "doctype", doctype)
Ejemplo n.º 19
0
def execute():
	dataent.reload_doc("manufacturing", "doctype", "bom")
	company = dataent.db.get_value("Global Defaults", None, "default_company")
	dataent.db.sql("""update  `tabBOM` set company = %s""",company)
Ejemplo n.º 20
0
def execute():
    dataent.reload_doc("website", "doctype", "website_theme")
    dataent.reload_doc("website", "website_theme", "standard")
    dataent.reload_doctype("Website Settings")
    migrate_style_settings()
    dataent.delete_doc("website", "doctype", "style_settings")
Ejemplo n.º 21
0
def execute():
    dataent.reload_doc('stock', 'doctype', 'material_request_item')
    rename_field("Material Request Item", "sales_order_no", "sales_order")

    dataent.reload_doc('support', 'doctype', 'maintenance_schedule_item')
    rename_field("Maintenance Schedule Item", "prevdoc_docname", "sales_order")
Ejemplo n.º 22
0
def execute():
    dataent.reload_doc("workflow", "doctype", "workflow_transition")
    dataent.db.sql("update `tabWorkflow Transition` set allow_self_approval=1")
Ejemplo n.º 23
0
def execute():
    dataent.reload_doc('crm', 'doctype', 'lead')
    dataent.reload_doc('crm', 'doctype', 'opportunity')

    add_crm_to_user_desktop_items()
Ejemplo n.º 24
0
def execute():
    dataent.reload_doc("accounts", "doctype", "sales_invoice_item")
    dataent.reload_doc('accounts', 'doctype', 'purchase_invoice_item')
    dataent.reload_doc('buying', 'doctype', 'purchase_order_item')
    dataent.reload_doc('buying', 'doctype', 'supplier_quotation_item')
    dataent.reload_doc('selling', 'doctype', 'sales_order_item')
    dataent.reload_doc('selling', 'doctype', 'quotation_item')
    dataent.reload_doc('stock', 'doctype', 'delivery_note_item')
    dataent.reload_doc('stock', 'doctype', 'purchase_receipt_item')

    selling_doctypes = [
        "Sales Order Item", "Sales Invoice Item", "Delivery Note Item",
        "Quotation Item"
    ]
    buying_doctypes = [
        "Purchase Order Item", "Purchase Invoice Item",
        "Purchase Receipt Item", "Supplier Quotation Item"
    ]

    for doctype in selling_doctypes:
        dataent.db.sql('''
			UPDATE
				`tab%s`
			SET
				discount_amount = if(rate_with_margin > 0, rate_with_margin, price_list_rate) * discount_percentage / 100
			WHERE
				discount_percentage > 0
		''' % (doctype))
    for doctype in buying_doctypes:
        dataent.db.sql('''
			UPDATE
				`tab%s`
			SET
				discount_amount = price_list_rate * discount_percentage / 100
			WHERE
				discount_percentage > 0
		''' % (doctype))
Ejemplo n.º 25
0
def execute():
    dataent.reload_doc('accounts', 'doctype', 'pos_settings')

    doc = dataent.get_doc('POS Settings')
    doc.use_pos_in_offline_mode = 1
    doc.save()
def execute():
    dataent.reload_doc('projects', 'doctype', 'project')

    if dataent.db.has_column('Project', 'from'):
        rename_field('Project', 'from', 'from_time')
        rename_field('Project', 'to', 'to_time')
Ejemplo n.º 27
0
def execute():
    rename_doc('DocType',
               'Health Insurance',
               'Employee Health Insurance',
               force=True)
    dataent.reload_doc('hr', 'doctype', 'employee_health_insurance')
Ejemplo n.º 28
0
def execute():
    dataent.reload_doc('buying', 'doctype', 'supplier_scorecard_variable')
    dataent.reload_doc('buying', 'doctype', 'supplier_scorecard_standing')
    make_default_records()
Ejemplo n.º 29
0
def execute():
    dataent.reload_doc('core', 'doctype', 'system_settings')
    dataent.db.sql("update `tabSystem Settings` set allow_error_traceback=1")
Ejemplo n.º 30
0
def execute():
    dataent.reload_doc('setup', 'doctype', 'currency_exchange')
    dataent.db.sql(
        """update `tabCurrency Exchange` set for_buying = 1, for_selling = 1"""
    )