Daily updates from Odoo
Thursday, October 15, 2020
26 changes
Enhancements to existing features
The salary package resume now includes an archive option and default search filters. This makes it easier for HR users to organize resume entries and quickly find records by view type or salary structure type.
Original PR description
currently, in master default search filter and archive option is not available in resume. so, in this commit added archive option and default search filter like view type, salary structure type in resume TaskId : 2338751
Worksheet reports now show boolean fields as checkboxes instead of True/False text, making them easier to read. Selection fields now display their user-friendly labels, so reports are clearer and more meaningful for field service users.
Original PR description
**Purpose** cleaner way to display information for the user **Specification** - display the checkbox for the boolean field (and NOT True/False) - display the label of the values for the selection field on the worksheet report
Resolved issues and error corrections
Hovering over grid view cells and totals now highlights the related row and column more consistently. This makes it easier for users to read totals and compare values across days in grid-style planning views.
Original PR description
Current behavior before PR: hovering on a cell from the grid view highlights the corresponding row and line are not working. Desired behavior after PR is merged: This commit fixes hovering on a cell from the grid view highlights the corresponding row and line. LINKS PR #13154 Task-2333969
Miscellaneous changes
The 'Bills To pay' filter show fully paid bills Cause The condition 'payment_state != paid' does not exist Solution Add the condition to the 'bills_to_pay' domain opw-2361666 Forward-Port-Of: odoo/enterprise#14111
Original PR description
The 'Bills To pay' filter show fully paid bills
Cause
The condition 'payment_state != paid' does not exist
Solution
Add the condition to the 'bills_to_pay' domain
opw-2361666
Forward-Port-Of: odoo/enterprise#14111Purpose ======= In Belgium, the job market is divided into "sectors": chemicals, metals, banks, department stores, pharmacies ... This breakdown is made on the basis of the activities of the company. In order to be able to ensure the functioning of the sectors, each sector has its own consultation body, called the "joint commission". A joint committee is a consultation body in which representatives of employers and unions set, after negotiation, the minimum wage conditions as well as
Original PR description
Purpose ======= In Belgium, the job market is divided into "sectors": chemicals, metals, banks, department stores, pharmacies ... This breakdown is made on the basis of the activities of the company.…
Purpose
=======
In Belgium, the job market is divided into "sectors": chemicals, metals, banks,
department stores, pharmacies ... This breakdown is made on the basis of the
activities of the company. In order to be able to ensure the functioning of the
sectors, each sector has its own consultation body, called the "joint commission".
A joint committee is a consultation body in which representatives of employers
and unions set, after negotiation, the minimum wage conditions as well as the
working conditions in legal texts, called “collective labor agreements”. These
are applicable to all employees in a specific sector.
These are agreements that employers and workers in a given sector must make and
respect. These agreements may be different from one sector to another. Each sector
has its label and number.
The CP 200 is the auxiliary joint committee of employees (CPAE). About a quarter
of private sector companies and employees in Belgium are found in CP 200. This
makes it the largest and most diverse CP in the country!
TaskID: 2352568
Specification
=============
Most of the different use cases that we can face in belgian payroll for CP200
have been tested and validated by a fiscal expert. Briefly, it covers the following
use cases:
- Unpaid time off
- Legal time off
- Credit time
- Classical
- With paid time off
- With unpaid time off
- With sick time off
- Starting in the middle of a month
- Full time (O hours / week)
- Half-days in working hours
- Classical
- With full-day time off
- With half-day time off
- Low salaries
- Back-to-work - Sick time off
- Relapse
- Guaranteed salary
- Long sick off (+1 month)
- Student contracts
- Posted Employess
- Without ONSS
- Wihtout withholding taxes
- Public Holiday
- Classical (during the working hours)
- Compensation (during the week end)
- After the end of the contract
- Note: Variable compensation is not handled yet, but it's planned
- Brief Holiday (In french: "Petit Chômage")
- 1 day
- 1 week
- Note: Variable compensation is not handled yet, but it's planned
- 1 day for unpredictable reason
- End of contract in the middle of the month
- Half-days time off
- New design of the payslip to improve readability
The detailed list of the fixes/improvements is the following:
- 1/ hr_work_entry_contract: Define 1 leave work entry per presence
Purpose:
Some sick time off have to be defined into different work entry types, according
to the type of sick leaves.
Example: after 30 calendar days of sick leaves, the employee is not paid by the
same organism and therefore, the time off should be reported into different work
entry types.
Specification:
Instead of creating a big work entry per time off, create as many work entries
as there should have been presence work entries.
- 2/ hr_work_entries: Prevent users deleting work entries
Prefer to archive them instead.
- 3/ hr_work_entry: Display work entry type on calendar views
- 4/ web: Add styling classes for report
Purpose:
Those classes are useful for the payslip printed pdf reports, but some
of them are useless for any kind of report, and thus the classes have
been defined in the web addons.
Task-2341886
- 5/ resources: Take company attendances/global leaves on creation
Purpose:
When creating a new calendar (38 hours/week) on a Belgian company,
the new calendar is prefilled on a 40 hours/week basis, even if the
company calendar is correctly defined.
Specification:
Copy the global time off + the attendances on the company calendar
on company modification
- 6/ hr_holidays: Allow to refuse overlapping time offs
Purpose:
It's normally not possible to create 2 time off that overlaps on the
same period.
But, if for a given reason it happens on a production database, it should
be possible to refuse those time off. Otherwise, the user is stuck with
this wrong configuration.
- 7/ hr_holidays: Prevent creating time off of 0 hours
Purpose:
It makes no sense + it could cause conflicts when generating the work
entries
- 8/ resource: Add method to retrieve the longest work day
Purpose:
Add a method on the calendar to retrieve the maximum number of hours
an employee is supposed to work.
Example:
Monday: 8-12, 13-17
Tuesday: 8-12, 13-17
Wednesday: 8-12
Thurday: Off
Friday: Off
The method will return 8
- 9/ hr_holidays: Adapt query counter due to changes on hr_payroll
See: https://github.com/odoo/enterprise/pull/13848/
- 10/ hr_payroll: Update translations
Lots of new terms have been added on the printed reports, etc...
- 11/ l10n_be_hr_payroll: Consider out of contract public holiday
Purpose:
If there is a public holiday less than 30 days after the end of the
contract, the employee should be paid for that day too
- 12/ l10n_be_hr_payroll_posted_employee: Add an easy way to create a public time off
Purpose:
Public time off should be created via the calendar (at least for belgian companies using payroll).
The reason behind this is that there should be a resource.calendar.leaves available even if the
employee ends its contract. If it's created using a hr.leave, there won't be any
resource.calendar.leave as the employee is not supposed to work anymore at that time.
When an employee leaves the company, it's possible that he's paid for public time off if it
occurs less than 30 days after the end of his contract.
- 13/ l10n_be_hr_payroll: Rename bank holiday into Public holiday
Purpose:
A bank holiday is a specific holiday name, not the generic one.
- 14/ hr_work_entry_contract: Add menuitem to access calendars
It shouldn't be required to enter debug mode to access this information.
- 15/ l10n_be_hr_payroll_posted_employee: Add support for posted employees
Purpose:
https://www.socialsecurity.be/citizen/fr/travailleur-salarie-occupe-en-belgique-detache-a-l-etranger
- 16/ l10n_be_hr_payroll: Implement guaranteed wage/relapse for sick leaves
Purpose:
Guaranteed salary for employees:
The employee who is incapacitated for work as a result of a work accident, an accident on
the way to work or an occupational disease retains, at the employer's expense, the right to
his remuneration for the first 30 days of incapacity for work. The daily allowances relating
to this period are paid to the employer by the body responsible for industrial accidents or
by the Fund for Occupational Diseases.
Successive disabilities - relapse:
It is possible that a worker will be unable to work during different successive periods.
When two incapacities follow one another without interruption (for example, accident followed by
illness; successive illnesses of a different nature), there is only one period of incapacity and
the guaranteed remuneration is not due again. time.
On the other hand, we talk about relapse when a new disability occurs after the worker has returned
to work normally.
In this case, the guaranteed remuneration is not due again when the new incapacity for work occurs
within the first 14 days following the end of a period of incapacity for work giving rise to the
payment of the guaranteed remuneration.
However, there is still a right to the guaranteed salary for the part remaining to run, if the first
period of incapacity has not exhausted the entire right to the guaranteed salary during the first
period of incapacity. A new guaranteed wage is also due again when the worker establishes by a
medical certificate that this new incapacity for work is due to another illness or to another
accident.
- 17/ hr_work_entry_contract: Define 1 leave work entry per presence
Purpose:
Some sick time off have to be defined into different work entry types, according
to the type of sick leaves.
Example: after 30 calendar days of sick leaves, the employee is not paid by the
same organism and therefore, the time off should be reported into different work
entry types.
Specification:
Instead of creating a big work entry per time off, create as many work entries
as there should have been presence work entries.
- 18/ test_l10n_be_hr_payroll: Add test for full time credit time
- 19/ test_l10n_be_hr_payroll: Add test for out of contract credit time
- 20/ test_l10n_be_hr_payroll: Avoid undeterministic bug on generated tests
- 21/ hr_payroll: Don't display out of contract line on pdf
- 22/ test_l10n_be_hr_payroll: Fix undeterministic test crashes
- 23/ payroll : Improve the printed payslip report
Improves the design of the payslip report
Generates the report in the employee's language (add a message if the lang is not official)
Adds some data to Laurie Poiret
Task-2341886
- 24/ test_l10n_be_hr_payroll_account: Add test for unjustified reasons
- 25/ test_l10n_be_hr_payroll_account: Add tests for small unemployment
- 26/ test_l10n_be_hr_payroll_account: Add tests for half days time off
- 27/ test_l10n_be_hr_payroll_account: Fix false positive
- 28/ hr_holidays: Prevent creating time off of 0 hours
Purpose:
It makes no sense + it could cause conflicts when generating the work
entries
- 29/ test_l10n_be_hr_payroll_account: Add test for end of contract
- 30/ test_l10n_be_hr_payroll_account: Add tests for public holidays
- 31/ hr_payroll: Display amount if hourly wage
- 32/ hr_work_entry_contract: Allow creating record on gantt view
- 33/ l10n_be_hr_payroll: Add new structure for student employees
Purpose:
Also bring some fixes on fields display + hours/days counts
TaskID: 2347843
- 34/ test_l10n_be_hr_payroll_account: Add test for low salaries
Ensure the correct computation of the employment bonus.
- 35/ l10n_be_hr_payroll: Make separate lines for half/full worked days
Purpose:
Worked days should be separated between the complete full days and the
half days.
Example:
I work on Monday, Tuesday, Wednesday (half day)
The calculation is OK, but the number of days is, in principle, 14 in the month of
September 2020 (9 full and 5 in half-days). This number of days should be the subject
of 2 separate lines:
9 days - 68.4 hours - € 1,100.77
5 days (in the form of half-days) - 19 hours - 224.33 €.
In this case, we cannot use the hourly formula since the monthly salary must always be
the same, without having an identical number of working days.
The worker benefits from 14 meal vouchers. The number of days must however correspond
to the number of meal vouchers so that the worker can check.
- 36/ test_l10n_be_hr_payroll: Test credit time with sick leaves
- 37/ test_l10n_be_hr_payroll_account: Test credit time with unpaid leaves
- 38/ l10n_be_hr_payroll: Don't consider time off as credit times
Purpose:
When generating the work entries, we compare the standard attendances
(i.e. the full time contract) and the credit time attendances to
deduct the intervals on which the employee is on credit time.
But if the employee is on a time off during a period, those intervals
will be removed from the supposed attendances, and then those periods
are considered as credit time.
- 39/ l10n_be_hr_payroll: Fix credit time amount on payslip computation
Purpose:
The time credit days must not include a corresponding amount.
In fact, no remuneration is linked to the taking of time credits. The necessary modifications
are:
Code LEAVE300 -> no amount
- 40/ hr_payroll: Export standard calendar if needed on payslip export
- 41/ l10n_be_hr_payroll: Fix worked days lines amount computation
Purpose:
The amount was computed as a simple ratio based on the number of days.
To be correct and compliant with the law, we should consider the hourly
equivalent wage, and compute the amount based on the worked hours.
- 42/ l10n_be_hr_payroll: Fix unpaid worked days amount computation
Purpose:
Don't use the normal wage which is an integer btw.
Compute the worked days amount using the classic hourly computation formula
- 43/ l10n_be_hr_payroll: Fix unpaid leaves retenues formula
Purpose:
Unpaid leave must be deducted from the usual gross monthly salary
up to the number of working hours concerned.
The formula is in principle the following:
gross monthly salary * 3/12/38 -> “usual” hourly salary.
So, in the case of 2 days of unpaid leave, corresponding to 15.2 hours,
the formula is as follows: 2650 * 3/13/38 * 15.2 = 244.61 €.
The gross for the days actually worked is € 2,650 - € 244.61, or € 2,405.39
- 44/ hr_payroll: Generate python test from arbitrary payslip
When the payroll is incorrect, the feedback that we receive is
generally: "this doesn't work".
This commit add a route in the controller of hr_payroll, to export
in a python file, all data useful to reproduce the exact employee
situation about the incorrect payslip.
Before testing and fixing the incorrect payslip, we need to anonymize all
sensitive data about the employee. This commit converts all sensitive
data into demo data.
This commit add a button in payslip form view to use the new route to
export all data about the incorrect payroll.
This button is only displayed when we are in debug mode and the current
user is a payroll manager.
task-2337786
Forward-Port-Of: odoo/enterprise#14108
Forward-Port-Of: odoo/enterprise#13848Forward-Port-Of: odoo/enterprise#14104
Original PR description
Forward-Port-Of: odoo/enterprise#14104
In the hr.expense form view, the extract_remote_id field (showing as "Id of the request to IAP-OCR") was positioned at the end of the form. It will now appear directly after company_id (if visible) and before the notes, giving a more compact view. Task 2350182 Forward-Port-Of: odoo/enterprise#13802
Original PR description
In the hr.expense form view, the extract_remote_id field (showing as "Id of the request to IAP-OCR") was positioned at the end of the form. It will now appear directly after company_id (if visible) and before the notes, giving a more compact view. Task 2350182 Forward-Port-Of: odoo/enterprise#13802
when we create the Ticket with empty team in helpdesk module and we try to assign it produces singleton error Purpose of this task to solve singleton error TaskID: 2346056 Forward-Port-Of: odoo/enterprise#13567
Original PR description
when we create the Ticket with empty team in helpdesk module and we try to assign it produces singleton error Purpose of this task to solve singleton error TaskID: 2346056 Forward-Port-Of: odoo/enterprise#13567
in employee app when we create Contract Templates there are two structure_type_id purpose of this task to remove duplicate structure_type_id field in form view TaskID: 2345800 Forward-Port-Of: odoo/enterprise#13487
Original PR description
in employee app when we create Contract Templates there are two structure_type_id purpose of this task to remove duplicate structure_type_id field in form view TaskID: 2345800 Forward-Port-Of: odoo/enterprise#13487
Issue - Install Accounting - Enable Analytic Accounting and Budget Management - Go to Configuration/Analytic Accounts - Try to create new analytic account and add a line Cause The 'date_to' and 'date_from' are not initialized yet. Solution Skip the '_compute' when the variables are 'False' and add depends to 'date_to' and 'date_from' opw-2358697 Forward-Port-Of: odoo/enterprise#14096
Original PR description
Issue
- Install Accounting
- Enable Analytic Accounting and Budget Management
- Go to Configuration/Analytic Accounts
- Try to create new analytic account and add a line
Cause
The 'date_to' and 'date_from' are not initialized yet.
Solution
Skip the '_compute' when the variables are 'False' and add depends to 'date_to' and 'date_from'
opw-2358697
Forward-Port-Of: odoo/enterprise#14096task-2337827 Forward-Port-Of: odoo/enterprise#14073
Original PR description
task-2337827 Forward-Port-Of: odoo/enterprise#14073
Issue - Install "Website" and "Studio" module - Create with 'Mitchel Admin' a company X2 ( Ensure that Marc Demo does not have access to it ) - Switch to X2 company - On main menu page, open studio - On left upper corner, click on "Change Background", select an image then close studio - Log off and log in with Marc Demo Access error message; can't access `/web` url: "Only employee can access this database. Please contact the administrator'. Cause Trying to get ba
Original PR description
Issue - Install "Website" and "Studio" module - Create with 'Mitchel Admin' a company X2 ( Ensure that Marc Demo does not have access to it ) - Switch to X2 company - On main menu page, open studio - On left upper corner, click on "Change Background", select an image then close studio - Log off and log in with Marc Demo Access error message; can't access `/web` url: "Only employee can access this database. Please contact the administrator'. Cause Trying to get background with wrong rights since the context 'allowed_company_ids' is set with `cids` from cookies who are related to the first user (Mitchel Admin). Solution If current user has no access to company in cids (request cookies), then fetch background with user.company_id as allowed_company_ids instead. opw-2336865 Forward-Port-Of: odoo/enterprise#14069
Currently, In Resume when we change the company it doesn't filter the resume company wise. So, in this commit added record rule with domain to filter the salary structure type company wise in resume. TaskId: 2341468 Forward-Port-Of: odoo/enterprise#13652
Original PR description
Currently, In Resume when we change the company it doesn't filter the resume company wise. So, in this commit added record rule with domain to filter the salary structure type company wise in resume. TaskId: 2341468 Forward-Port-Of: odoo/enterprise#13652
The _convert function will round the result using the rounding field on the resulting currency. In this case the resulting currency will always be COP, since this module is meant for Colombian companies. COP has no cents, all amounts are integers. As a result currency_rate always ends up being "x.00". This solves that by manually calculating the value without the _convert method. Note that the "%.2f" format specifier doesn't truncate the value. It correctly rounds, similar to using roun
Original PR description
The _convert function will round the result using the rounding field on the resulting currency. In this case the resulting currency will always be COP, since this module is meant for Colombian companies. COP has no cents, all amounts are integers. As a result currency_rate always ends up being "x.00". This solves that by manually calculating the value without the _convert method. Note that the "%.2f" format specifier doesn't truncate the value. It correctly rounds, similar to using round(x, 2). opw-2350026 Forward-Port-Of: odoo/enterprise#14046 Forward-Port-Of: odoo/enterprise#13934
Currently, In documents when we share the file the odoo logo in the template is cropped. So, in this commit resize the odoo logo width now its properly display in a sharable link. Task Id: 2346746 Forward-Port-Of: odoo/enterprise#13614
Original PR description
Currently, In documents when we share the file the odoo logo in the template is cropped. So, in this commit resize the odoo logo width now its properly display in a sharable link. Task Id: 2346746 Forward-Port-Of: odoo/enterprise#13614
Before, In the 'Expense' setting we don't have the "Buy Credits" widget and 'View My Service' button. The purpose of this task is to add those and are only visible when the feature is ticked and should redirect to the same pages as for the 'Bill Digitalization' feature By this commit, it will be improved. task:- 2341801 -- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/enterprise#13563
Original PR description
Before, In the 'Expense' setting we don't have the "Buy Credits" widget and 'View My Service' button. The purpose of this task is to add those and are only visible when the feature is ticked and should redirect to the same pages as for the 'Bill Digitalization' feature By this commit, it will be improved. task:- 2341801 -- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/enterprise#13563
Task [2326251](https://www.odoo.com/web#id=2326251&action=333&active_id=967&model=project.task&view_type=form&cids=1&menu_id=4720) A recompute of the original value of the asset made the values wrong. This fix removes the specificities related to the UoM because we can't know inside the recompute which asset is which part of the invoice line. Forward-Port-Of: odoo/enterprise#13370
Original PR description
Task [2326251](https://www.odoo.com/web#id=2326251&action=333&active_id=967&model=project.task&view_type=form&cids=1&menu_id=4720) A recompute of the original value of the asset made the values wrong. This fix removes the specificities related to the UoM because we can't know inside the recompute which asset is which part of the invoice line. Forward-Port-Of: odoo/enterprise#13370
This PR replaces #13514. Task 2297054, additional specification from review Forward-Port-Of: odoo/enterprise#13641
Original PR description
This PR replaces #13514. Task 2297054, additional specification from review Forward-Port-Of: odoo/enterprise#13641
Before this commit, the following warning was obtained upon assets building: ``` 2020-10-06 13:34:39,957 80410 WARNING demo_140_1601990640 odoo.addons.base.models.assetsbundle: Error: Top-level selectors may not contain the parent selector "&". on line 27144 of /stdin >> &.o_planning_progress_gantt_#{$index - 1} { ----^ ``` Taskid: 2352697 Forward-Port-Of: odoo/enterprise#13852
Original PR description
Before this commit, the following warning was obtained upon assets building:
```
2020-10-06 13:34:39,957 80410 WARNING demo_140_1601990640 odoo.addons.base.models.assetsbundle: Error: Top-level selectors may not contain the parent selector "&".
on line 27144 of /stdin
>> &.o_planning_progress_gantt_#{$index - 1} {
----^
```
Taskid: 2352697
Forward-Port-Of: odoo/enterprise#13852With l10n_be installed and the sample bill posted, there is a traceback happening when opening the unrealized currency gain/loss report. How to reproduce locally: - Install l10n_be, switch on the belgian company and follow the first steps of the onboarding until the sample bill is posted - Activate multi-currency - Create and post a new bill in a foreign currency - Open the report => Traceback because Odoo try to compare a bool and a string when it doesn't have
Original PR description
With l10n_be installed and the sample bill posted, there is a traceback
happening when opening the unrealized currency gain/loss report.
How to reproduce locally:
- Install l10n_be, switch on the belgian company and follow the
first steps of the onboarding until the sample bill is posted
- Activate multi-currency
- Create and post a new bill in a foreign currency
- Open the report => Traceback because Odoo try to compare a bool
and a string when it doesn't have a value
Task id #2337228
Forward-Port-Of: odoo/enterprise#13130It was put in the post init hook of `account`, but it installed account_accountant instead of only invoicing. Also add US and CA as those countries use cash basis as well. Community PR: https://github.com/odoo/odoo/pull/59849 Forward-Port-Of: odoo/enterprise#14021
Original PR description
It was put in the post init hook of `account`, but it installed account_accountant instead of only invoicing. Also add US and CA as those countries use cash basis as well. Community PR: https://github.com/odoo/odoo/pull/59849 Forward-Port-Of: odoo/enterprise#14021
when try to add line in resume, user can not add the line because user can not add description for that line. so that it show warning. LINKS PR - #12739 TaskID - 2326538 Forward-Port-Of: odoo/enterprise#12739
Original PR description
when try to add line in resume, user can not add the line because user can not add description for that line. so that it show warning. LINKS PR - #12739 TaskID - 2326538 Forward-Port-Of: odoo/enterprise#12739
Before this commit, when a partner receives a link to sign a document, the sign language will depend on the browser language, and the modal for signing will always be in English. Now, the language will be the one selected for the customer. opw-2347884 Co-authored-by: Nicolas Lempereur <nle@odoo.com> Forward-Port-Of: odoo/enterprise#13924
Original PR description
Before this commit, when a partner receives a link to sign a document, the sign language will depend on the browser language, and the modal for signing will always be in English. Now, the language will be the one selected for the customer. opw-2347884 Co-authored-by: Nicolas Lempereur <nle@odoo.com> Forward-Port-Of: odoo/enterprise#13924
…chers Purpose ======= On some tests, it could lead to false positive if the work entries creation and the meal vouchers computation are done during the same transaction. TASKID: 2357771 Forward-Port-Of: odoo/enterprise#13956 Forward-Port-Of: odoo/enterprise#13941
Original PR description
…chers Purpose ======= On some tests, it could lead to false positive if the work entries creation and the meal vouchers computation are done during the same transaction. TASKID: 2357771 Forward-Port-Of: odoo/enterprise#13956 Forward-Port-Of: odoo/enterprise#13941
This PR fixes a permission error with helpdesk_timesheet & helpdesk Before this commit, a user with "User" group for Helpdesk and no group for Timesheet was able to start timer if option "Timesheet Timer" was enable When he want to stop the timer, he got a permission error saying that he doesn't have permission to create an entry in Timesheet. This PR hides buttons to start a timer. More precisely, this commit check if the user is in groups helpdesk.group_helpdesk_user and hr_timesheet.g
Original PR description
This PR fixes a permission error with helpdesk_timesheet & helpdesk Before this commit, a user with "User" group for Helpdesk and no group for Timesheet was able to start timer if option "Timesheet Timer" was enable When he want to stop the timer, he got a permission error saying that he doesn't have permission to create an entry in Timesheet. This PR hides buttons to start a timer. More precisely, this commit check if the user is in groups helpdesk.group_helpdesk_user and hr_timesheet.group_hr_timesheet_user. I haven't found a way to check if user is in both groups with xml so I've created a new field called "display_timer" This PR also fixes a permission error with helpdesk (See commit description) Task id: 2326300 Forward-Port-Of: odoo/enterprise#13598 Forward-Port-Of: odoo/enterprise#13149
- Install Accounting, Subscriptions and Documents - Go to Documents > Configuration > Settings and activate Accounting: * Workspace: Finance * Journals: Customer Invoices - Finance - Go to Subscriptions > Configuration > Subscription Templates - Create or edit a Template (i.e. Mon - Monthly Subscription) with "Send" for "Create Invoice" - Create a Subscription: * Subscription Template: Mon - Monthly Subscription * Subscription Lines: [Any a product] - Switch Subscription state f
Original PR description
- Install Accounting, Subscriptions and Documents - Go to Documents > Configuration > Settings and activate Accounting: * Workspace: Finance * Journals: Customer Invoices - Finance - Go to…
- Install Accounting, Subscriptions and Documents - Go to Documents > Configuration > Settings and activate Accounting: * Workspace: Finance * Journals: Customer Invoices - Finance - Go to Subscriptions > Configuration > Subscription Templates - Create or edit a Template (i.e. Mon - Monthly Subscription) with "Send" for "Create Invoice" - Create a Subscription: * Subscription Template: Mon - Monthly Subscription * Subscription Lines: [Any a product] - Switch Subscription state from "Draft" to "In Progress" - Click on "Generate Invoice" button If it is the first generated invoice, it will be opened automatically and there will be no issue. If that is the case, generate another invoice and do not open it. - Go to Documents > Documents and select "Finance" Workspace The generated invoice from Subscription will not appear as long as it will not be opened. The Document is created from "message_main_attachment_id" field of invoice, but this field is not set when invoice is created and sent in Subscriptions. opw-2345618 closes odoo/enterprise#14003 Signed-off-by: Anh Thao PHAM <kitan191@users.noreply.github.com> This is the 14.0 forward-port of https://github.com/odoo/enterprise/pull/14003 Forward-Port-Of: odoo/enterprise#14064