PURPOSE
Add some improvements in mail gateway: remove private discussion, improve
bounce management, allow resetting bounce counters, improve automatic set or
reset of blacklists and ease mass mailing inheritance.
SPECIFICATIONS
The number of message bounce is incremented each time the email bounce
on a specific email address. To have a correct information, we should
reset to zero this counter if we receive a mail from this address.
Indeed, if we receive an email from an email address, this email is
active and the message bounce number (if > 0) is not relevant anymore.
Only models inheriting form blacklist are impacted by this improvement
in order to limit a bit side effect.
Also, add a check in autoblacklist rule. No need to check the stats
if message_bounce is < 5.
This commit introduces
* ``_routing_reset_bounce`` routing method managing the bounce reset;
* ``_message_reset_bounce`` model method that resets bounce counter
in blacklist enabled models;
LINKS
Related to task ID : 1893155
Linked to PR #33340
PURPOSE
Add some improvements in mail gateway: remove private discussion, improve
bounce management, allow resetting bounce counters, improve automatic set or
reset of blacklists and ease mass mailing inheritance.
SPECIFICATIONS
Purpose
* move bounce information detection in message parsing. It allows to have
this information available in various steps of routing instead of having
to manually re-compute them;
* handle bounce in specific methods allowing easy override;
* improve bounce management, notably when detecting a bounce not linked
to the bounce alias configuration;
* better integration with blacklist mechanism;
Specifications
* compute bounce information in ``_message_parse_extract_bounce``.It parses
bounce information and returns a dictionary allowing to update parsed email
values;
* remove override in mass_mailign that basically does what mail already
does;
* manage bounce in ``_routing_handle_bounce``;
* when detecting a bounce, correctly call the bounce management method on
all models inheriting from blacklist;
* correctly update bounce counter;
* bounced mailing traces and automatic blacklist in mass mailing should
be done in ``_routing_handle_bounce``;
* add some tests;
LINKS
Related to task 1893155
Linked to PR #33340
PURPOSE
Add some improvements in mail gateway: remove private discussion, improve
bounce management, allow resetting bounce counters, improve automatic set or
reset of blacklists and ease mass mailing inheritance.
SPECIFICATIONS
Parsing email values: make message_parse effectively prepare all required
values for later processing
* update message_parse to add some more data directly in parsed dictionary
and avoid having to parse value again in later processing and computation.
* notably recipients computation is now done directly in parsing. It
includes email check and reconstruction using tools methods. That way
routing just has to handle those values and not compute part of them;
* from and cc are correctly managed with parsed and cleaned (sanitized)
versions in dictionary;
* remove all code decoding message header and replace them by fetching
the parsed value instead;
* filter parsed values before calling message_post to ensure right values
are given to it instead of having to manage them in message_post. Indeed
caller has to give the right input;
* make parsing sub-methods (extract payload, post process payload) have
a dictionary as input and output to always manage a dictionary of values
through the parsing methods and update their namespace;
Routing: remove deprecated code parts
* remove use of email_references regex. Indeed emails are routed using their
messageId and not the regex anymore since several versions [1];
* clean some unnecessary variables;
* simplify variable type input, like message_parse accepts only valid
email.message instances and to avoid several decode / encode. Tests are
updated accordingly;
Update docstrings of those methods.
LINKS
Related to task 1893155
Linked to PR #33340
[1] See df037e2959 and 0028c42136
PURPOSE
Add some improvements in mail gateway: remove private discussion, improve
bounce management, allow resetting bounce counters, improve automatic set or
reset of blacklists and ease mass mailing inheritance.
SPECIFICATIONS
Purpose: clean mail gateway code by cleaning message_route_verify
``message_route_verify`` is therefore renamed to ``_routing_check_route`` as
there are already some methods prefixed by routing, related to email routing.
This method is also made private as it has no real use for external world.
Parameters of this method are also cleaned. Various cleanings and code
improvements made some parameters not necessary anymore :
* create_fallback: was always True;
* update_author: was always True;
* drop alias: no real use as aliases are used to compute the route and its
access, dropping it at that point has no effect on code;
* assert_model: renamed to raise_exception to be more coherent with the
same kind of parameter used in Odoo;
LINKS
Related to task 1893155
Linked to PR #33340
PURPOSE
Add some improvements in mail gateway: remove private discussion, improve
bounce management, allow resetting bounce counters, improve automatic set or
reset of blacklists and ease mass mailing inheritance.
SPECIFICATIONS
Private discussion support in mail gateway means having incoming messages
not linked to a document. It means having a void model and res_id on related
messages.
Old private conversations in Odoo were implemented using messages not linked
to any document [1]. It was possible to send an email to some people through
the UX and they were able to answer it. Messages were not attached to any
document and model. There were some limitations to this feature, notably it was
limited to replies (no beginning of private discussion through mail gateway).
One way of doing it was through the use of res.users aliases [2]. There was
also a vaguely twitter-lite use of chatter on HR employee profiles linked
to users aliases, then removed with an explicit support of private
discussions [3].
It is not supported anymore since discussion between users is now done using
chat. Aliases on users have since been removed [4]. Contacting partners or
customers can be done on business documents or on channels. Simple email
discussion is not supported in Odoo as it is not the purpose of mailgateway.
This commit removes code related to private discussion in mail gateway and
some specific support in message_post method.
LINKS
Related to task 1893155
Linked to PR #33340
[1] History is a bit messy, see notably fd90140d7b and commits around
[2] User alias addition 052f2ace57
[3] End of employee twitter-like and posting on users = private discussion 89896f32bb
[4] User alias removal 029d1baf35
Partner / Contact model may hold valid mobile numbers in mobile or phone
fields.
LINKS
Task 1997464
closesodoo/odoo#35599
Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
Scheduling a mailing creates a wizard with a m2o linking the mailing. While
this wizard is still alive and not garbage collected it is impossible to
delete the mailing. This commit fixes that.
LINKS
Task 1997464
hr:
-rename btn 'generate badge ID' to 'generate'
-When the badge ID is set, replace the button Generate by "Print Badge"
hr_attendance:
-Rename menu 'Manage Attendances' to "Manager"
-Add a column "Work Hours" to attendee tree view
-Add a <br> after "Welcome to"
-add class text-muted on "or"
-remove class "text-muted" on "scan your badge
-Rename the primary btn into "Identify Manually"
Task-2040884
Closes: #35473
Signed-off-by: Romain Libert (rli) <rli@odoo.com>
When the IoT Box is not connected to the IoT Box, a hotspot would be
created to configure it. The name of this hotspot is printed on a
status receipt if a printer is connected. Previously, this ticket only
showed the default name of the hotspot, but this name will be different
if the user renamed the Box. We then read the name of the hotspot from
the config.
closesodoo/odoo#33095
Signed-off-by: pimodoo <pimodoo@users.noreply.github.com>
To use a kitchen printer, the user can only enter the IP of the Box and
it would be transformed into an URL with the protocol and port number.
This only supported HTTP so people that used HTTPS needed to enter the
full url to their Box.
Receipt are now printed as JPGs so receipts need to be formatted as
classic HTML to be rendered as images by Wkhtmltoimage.
There were two versions of the receipt for an order. The one in XML,
to be printed, and the one in HTML, that was displayed in the POS.
Since both of them are now HTML, we can remove one of them.
TaskID: 1939455
We communicate with receipt printers using the ESCPOS drivers.
By default, Star printers use the Star mode. This can be changed by
modifying the position of the DIP-Switches at the bottom of the
printer.
We provide a link to the documentation to the user if its printer is
not correctly configured.
ESCPOS printers are now supported as IoT Devices, just like any other
printer. We now transform the receipts to JPGs, transform these JPGs
into ESCPOS commands and send them via Cups, adding support for network
printers. Since we now print images, we can now print special
characters and therefore add support for other languages such as
Arabic.
The JPG is generated in the browser, with the help of html2canvas.
`hw_escpos` is left untouched to allow backward compatibility and
should be removed when v12 is no longer supported.
In the PoS, all the code for printing has been moved from ProxyDevice
to a separated JS file.
TaskID: 1939455
- Add support of "kanban_view_ref" on many2x fields:
For many2one fields, this specific kanban view will be opened when you click
on this field. Note that in desktop, the behavior stay unchanged:
'Search More' will open the tree view.
For many2many fields, this specific kanban view will be opened when you add
a record in mobile.
- Add support "selection_mode" in kanban views.
This boolean is set to true when you want to use a kaban view to
select a record instead of open a record.
"selection_mode" is now passed in qweb_context to allow developers
to use t-if='selection_mode' in kanban views to show or hide elements;
buttons, dropdowns, anchor tags are not necessary when selection_mode
is enabled. So those elements can be hidden based on this condition.
Useful when kanban view is opened from m2o in mobile environment.
Task ID : 1924779
closesodoo/odoo#30747
Signed-off-by: Xavier Dollé (xdo) <xdo@odoo.com>
* web, website_event, website_sale, sale_quotation_builder
Instead of an ugly danger-colored badge promoting "odoo", we now use
the official odoo logo. The code is also refactored to use more
consistent and translatable sentences without duplicated code.
Note: the odoo logo is added in the repo, downloaded from our official
brand assets page (https://www.odoo.com/page/brand-assets), in its
'tiny' version. The repo already contained multiple odoo logos but they
are quite old and should be replaced in a further update. Note: the svg
version was not able to be used as it contains external margins...
Part of https://github.com/odoo/odoo/pull/34422
task-2026299
Don't show "Not Available" as Line header when there is only one
attribute line on the product.template.
closesodoo/odoo#35586
Signed-off-by: Damien Bouvy (dbo) <dbo@odoo.com>
If we use a kanban view to select a record we want to hide those elements:
dropdown boxes, buttons, anchors, some widgets, kanban color.
When it was too much change and used the new attribute
"kanban_view_ref" to explicitly define which view to open in selection_mode.
When also had to create previously unexisting kanban for
fleet.vehicle.model to show name and brand.
Task ID : 1924779
- many2one widget in mobile will open kanban view instead of listview when
records needs to be selected
- Add support of "kanban_view_ref" on many2x fields:
For many2one fields, this specific kanban view will be opened when you click
on this field. Note that in desktop, the behavior stay unchanged:
'Search More' will open the tree view.
For many2many fields, this specific kanban view will be opened when you add
a record in mobile.
- Add support "selection_mode" in kanban views.
This boolean is set to true when you want to use a kaban view to
select a record instead of open a record.
"selection_mode" is now passed in qweb_context to allow developers
to use t-if='selection_mode' in kanban views to show or hide elements;
buttons, dropdowns, anchor tags are not necessary when selection_mode
is enabled. So those elements can be hidden based on this condition.
Useful when kanban view is opened from m2o in mobile environment.
Task ID : 1924779
* = web, website_blog, website_crm_partner_assign, website_event,
website_event_track, website_forum, website_hr_recruitment,
website_livechat, website_partner, website_profile, website_sale,
website_sale_delivery, website_slides
The published button name is a bit ambiguous, now it will clearly state
what it does with a new title : "Go to Website". The "Published",
"Unpublished" state is shown with the globe icon changing color
(green and red) and a title on the button.
Badge and Delivery don't have a website page, the button will then be
a publish/unpublish button in the backend.
task-2002435
closesodoo/odoo#34261
Signed-off-by: Xavier Morel (xmo) <xmo@odoo.com>
* set country VAT Label "CUIT" which is the country TAX id name in
Argentina in order to used in reports and other places in Odoo. CUIT
mean "Código Único de Identificación Tributaria",
* update address format of the country.
* Use the state name instead of the state code: The address for the
company and partner was showing the state code (defined by ISO) but
this one are not the ones know for the common use. In order to avoid
errors we use the state name instead of the state code.
* Also change the order of the city state and zip are shown in address
in order to match the address in Argentinain "way".
closesodoo/odoo#34961
Signed-off-by: Josse Colpaert <jco@openerp.com>
Immediate transfer (no reservation, auto-confirmation, etc) should be
the default mode when creating manually a picking. The rationale is that
"the user wants to quickly encode stuff" and "it's better for the
onboarding".
As the default mode was already changed back to "planned transfer" because
users complained, this time we adapted the code so that the default mode
could be changed in python.
- re-order the imports of stock_picking.py.
- made all links to the picking from the picking type go through
_get_action (it wasn't the case for ready).
- adapt the context in the xml so that they are parse-able by
literal_eval.
- remove three actions that weren't used anymore.
- the user can create an ir config "stock.no_default_immediate_tranfer"
fill it with anything to get back the planned mode.
task-2043846
closesodoo/odoo#35550
Signed-off-by: Arnold Moyaux <amoyaux@users.noreply.github.com>
Before this commit, the calendar popover was opened before the popover
widget was ready. This is not usually the way it is done in odoo.
closesodoo/odoo#31874
Signed-off-by: Géry Debongnie (ged) <ged@openerp.com>
Improve design and introducing several usability improvements:
- Removed customization of an event card, just display event title.
- Added popover, popover consist of two sections:
1) Show the title, date and time of an event. Date and time are
automatically computed according to the user timing preferences,
language and event duration. Can be hidden with hide_date/hide_time
attribute respectively.
2) Display all the fields specified inside the <calendar/> element.
fields can be specified with a widget and its options.
e.g. <field name="name" string="Custom Name" widget="char" options="{}"/>
- Show avatar in popover for filters.
- Removed hide sidebar feature.
- Increase readability using a better color selection.
- Better UI in mobile.
And, Adapted test cases
Task 1919926
Co-authored-by: jat-odoo <jat@openerp.com>
The customers were removed from the invoice list view in
https://github.com/odoo/odoo/commit/317802d69e6236a43b2249b38d2f352813644f20
This was probably because the name of the variables
invoice_vendor_display_name was missleading as it was only for vendors
beofre but also for customers now. So this commit also renames related
variables.
While we are at renaming things, I also renamed the type in variables
supsense -> suspense.
closesodoo/odoo#35531
Signed-off-by: Laurent Smet <smetl@users.noreply.github.com>
Before this commit, when you duplicate a validated inventory, the new
one has the inventory lines of the original one.
Now, the duplicate inventory is created without inventory lines.
Task #2043851closesodoo/odoo#35402
Signed-off-by: Simon Lejeune (sle) <sle@openerp.com>
New search filter to display of inventory lines with `difference_qty`
(diff. between `theoretical_qty` and `product_qty`) different than zero.
Task #2043851
Add a button in the inventory adjustment lines view to update the
`theoretical_qty`. This button appears beside the On Hand quantity when
this quantity is outdated.
Note: it's not possible to define explicitly width of non-field column,
so we cannot define width of button's column. The hack is to constrain
width of other columns to manage a little space to display the button.
Task #2043851
On Inventory Adjustment lines view:
- Changes some fields name...
- The column Inventory Date has been moved between Location and
Lot/Serial Number.
- The columns Lot/Serial Number, On Hand, Difference, UoM and
Inventory Date are now optional.
Only Inventory Date is hide by default.
Task #2043851
Changes the type of `prefill_counted_quantity` from boolean to selection
to have a label for each option.
This change is only for a functional purpose.
Task #2043851
PURPOSE
This PR completely reworks the slide.channel form view. Notably slide categories
management should be simplified like SO or invoices sections.
SPECIFICATIONS
This merge
* improves the content management from the form itself by adding a tree view
of slides with the possibility of drag and dropping slides from category to
category;
* adds buttons to quickly add content or certifications in the slide tree
views;
* reorders the tabs and fields on channel view and update some labels;
* adds a custom float field widget so that the ratings are actually displayed
as stars;
* contains some fixes and light improvements related to recent merges in
elearning application, especially backend;
In order to implement the content management in the channel form, the model
slide.category has been removed. Instead of having a fully fledged model for
the categories we now use slide.slide with a is_category flag.
LINKS
Task 1978731
PR #33255
Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
When uploading twice the same video for a channel, the error message displayed unhandled html.
We removed the html to avoid having to use $el.html() for better safety (and it should not happen often anyway).
This is (most likely) related to #32181 which lazy loads most assets.
That caused an issue where the global 'Util' variable from PDFJS can be (depending of which libraries load first)
overridden by the global 'Util' variable of bootstrap.
(See 'lib/bootstrap/js/util.js' and 'lib/pdfjs/src/shared/util.js')
This commit ensures that the global 'Util' variable is set to the one of PDFJS right before it's used.
Eventually, we should update or get rid of one of the two libraries since they're not compatible together,
or make a wrapper that makes them compatible.
In the mean time, this small fix allows not refactoring all of this and can not cause much harm.
PURPOSE
Improve daily use of slide, especially in backend.
SPECIFICATIONS
Make slide type editable in backend, notably at create. This commit makes it
possible for the user to manually define the type of the slide.
Slightly clean slide code about slide data.
LINKS
Task 1978731
PR #33255