Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(India setup): setup company independent fixtures for patch #28294

Merged
merged 1 commit into from
Nov 9, 2021

Conversation

ruchamahabal
Copy link
Member

Problem:

While migrating from v12 to v13 the patch check_is_income_tax_component breaks most of the time.

Traceback
Executing erpnext.patches.v13_0.check_is_income_tax_component #22-06-2020
(_0427aa869c1ac753)
Traceback (most recent call last):
  File "/usr/lib/python3.7/runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "/usr/lib/python3.7/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "/home/frappe/frappe-bench/apps/frappe/frappe/utils/bench_helper.py", line 104, in <module>
    main()
  File "/home/frappe/frappe-bench/apps/frappe/frappe/utils/bench_helper.py", line 19, in main
    click.Group(commands=commands)(prog_name='bench')
  File "/home/frappe/frappe-bench/env/lib/python3.7/site-packages/click/core.py", line 829, in __call__
    return self.main(*args, **kwargs)
  File "/home/frappe/frappe-bench/env/lib/python3.7/site-packages/click/core.py", line 782, in main
    rv = self.invoke(ctx)
  File "/home/frappe/frappe-bench/env/lib/python3.7/site-packages/click/core.py", line 1259, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/home/frappe/frappe-bench/env/lib/python3.7/site-packages/click/core.py", line 1259, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/home/frappe/frappe-bench/env/lib/python3.7/site-packages/click/core.py", line 1066, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/home/frappe/frappe-bench/env/lib/python3.7/site-packages/click/core.py", line 610, in invoke
    return callback(*args, **kwargs)
  File "/home/frappe/frappe-bench/env/lib/python3.7/site-packages/click/decorators.py", line 21, in new_func
    return f(get_current_context(), *args, **kwargs)
  File "/home/frappe/frappe-bench/apps/frappe/frappe/commands/__init__.py", line 27, in _func
    ret = f(frappe._dict(ctx.obj), *args, **kwargs)
  File "/home/frappe/frappe-bench/apps/frappe/frappe/commands/site.py", line 309, in migrate
    skip_search_index=skip_search_index
  File "/home/frappe/frappe-bench/apps/frappe/frappe/migrate.py", line 67, in migrate
    frappe.modules.patch_handler.run_all(skip_failing)
  File "/home/frappe/frappe-bench/apps/frappe/frappe/modules/patch_handler.py", line 41, in run_all
    run_patch(patch)
  File "/home/frappe/frappe-bench/apps/frappe/frappe/modules/patch_handler.py", line 30, in run_patch
    if not run_single(patchmodule = patch):
  File "/home/frappe/frappe-bench/apps/frappe/frappe/modules/patch_handler.py", line 71, in run_single
    return execute_patch(patchmodule, method, methodargs)
  File "/home/frappe/frappe-bench/apps/frappe/frappe/modules/patch_handler.py", line 91, in execute_patch
    frappe.get_attr(patchmodule.split()[0] + ".execute")()
  File "/home/frappe/frappe-bench/apps/erpnext/erpnext/patches/v13_0/check_is_income_tax_component.py", line 47, in execute
    frappe.db.set_value("Salary Component", "Provident Fund", "component_type", "Provident Fund")
  File "/home/frappe/frappe-bench/apps/frappe/frappe/database/database.py", line 666, in set_value
    values, debug=debug)
  File "/home/frappe/frappe-bench/apps/frappe/frappe/database/database.py", line 147, in sql
    self._cursor.execute(query, values)
  File "/home/frappe/frappe-bench/env/lib/python3.7/site-packages/pymysql/cursors.py", line 148, in execute
    result = self._query(query)
  File "/home/frappe/frappe-bench/env/lib/python3.7/site-packages/pymysql/cursors.py", line 310, in _query
    conn.query(q)
  File "/home/frappe/frappe-bench/env/lib/python3.7/site-packages/pymysql/connections.py", line 548, in query
    self._affected_rows = self._read_query_result(unbuffered=unbuffered)
  File "/home/frappe/frappe-bench/env/lib/python3.7/site-packages/pymysql/connections.py", line 775, in _read_query_result
    result.read()
  File "/home/frappe/frappe-bench/env/lib/python3.7/site-packages/pymysql/connections.py", line 1156, in read
    first_packet = self.connection._read_packet()
  File "/home/frappe/frappe-bench/env/lib/python3.7/site-packages/pymysql/connections.py", line 725, in _read_packet
    packet.raise_for_error()
  File "/home/frappe/frappe-bench/env/lib/python3.7/site-packages/pymysql/protocol.py", line 221, in raise_for_error
    err.raise_mysql_exception(self._data)
  File "/home/frappe/frappe-bench/env/lib/python3.7/site-packages/pymysql/err.py", line 143, in raise_mysql_exception
    raise errorclass(errno, errval)
pymysql.err.OperationalError: (1054, "Unknown column 'component_type' in 'field list'")

component_type is a custom field added during India's regional setup. Before setting the value in Salary Component, it runs the setup for India. But the setup for company independent fixtures doesn't run if there is more than one Indian company:

if frappe.db.count('Company', {'country': 'India'}) <=1:

This is done so that company-independent fixtures are called only once during the first company setup.

But when we are migrating a site to v13, and it already has more than 1 Indian company, this will never run so the custom field won't get installed and migration will break.

Fix:

Setup company-independent fixtures for patch.

@codecov
Copy link

codecov bot commented Nov 9, 2021

Codecov Report

Merging #28294 (88b5bda) into develop (da22744) will increase coverage by 0.00%.
The diff coverage is 100.00%.

@@           Coverage Diff            @@
##           develop   #28294   +/-   ##
========================================
  Coverage    55.23%   55.24%           
========================================
  Files         1117     1117           
  Lines        66523    66523           
========================================
+ Hits         36746    36750    +4     
+ Misses       29777    29773    -4     
Impacted Files Coverage Δ
erpnext/regional/india/setup.py 95.28% <100.00%> (ø)
...e/asset_value_adjustment/asset_value_adjustment.py 87.65% <0.00%> (-3.71%) ⬇️
erpnext/stock/report/stock_ageing/stock_ageing.py 89.78% <0.00%> (-2.92%) ⬇️
...value/warehouse_wise_item_balance_age_and_value.py 92.40% <0.00%> (-2.54%) ⬇️
...eorder_level/itemwise_recommended_reorder_level.py 92.30% <0.00%> (-1.93%) ⬇️
erpnext/accounts/deferred_revenue.py 75.11% <0.00%> (-0.89%) ⬇️
erpnext/stock/reorder_item.py 76.92% <0.00%> (-0.86%) ⬇️
.../report/accounts_receivable/accounts_receivable.py 67.83% <0.00%> (-0.44%) ⬇️
erpnext/hr/utils.py 74.29% <0.00%> (-0.41%) ⬇️
erpnext/stock/get_item_details.py 79.44% <0.00%> (-0.16%) ⬇️
... and 8 more

@deepeshgarg007
Copy link
Member

@Mergifyio backport version-13-hotfix

@mergify
Copy link
Contributor

mergify bot commented Nov 9, 2021

backport version-13-hotfix

✅ Backports have been created

@ruchamahabal
Copy link
Member Author

@Mergifyio backport version-13-pre-release

@mergify
Copy link
Contributor

mergify bot commented Nov 9, 2021

backport version-13-pre-release

✅ Backports have been created

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants