Commit Graph
1122 Commits
Author SHA1 Message Date
Adrien Widart (awt) 1f3cbfd7ca [FIX] mrp: hide smart buttons for kits
When a kit template has several variants, the on hand quantity can be
incorrect.

To reproduce the issue:
1. Create two products P_compo, P_kit:
    - P_kit:
        - Storable
        - Variants:
            - Color (White, Black)
    - P_compo:
        - Storable
2. Update the on hand quantity of P_compo: 10
3. Create two BoMs:
    - BoM01:
        - Product: P_kit
        - Variant: Black
        - Type: Kit
        - Components: 1 x P_compo
    - BoM02:
        - Product: P_kit
        - Variant: White
        - Type: Kit
        - Components: 2 x P_compo
4. Open the form view of the template P_kit

Error: it displays "15 units on hand", which is impossible (there are
only 10 P_compo available)

Since it is difficult to determine the expected value, a decision has
been made: hide these smart buttons if a template has more than one
variant and if at least one of the variants is a kit.

OPW-2645299
OPW-2678400
OPW-3076502

closes odoo/odoo#108284

X-original-commit: cf3b83d6a48c080d900d9cf343e4012be718c79d
Signed-off-by: William Henrotin (whe) <whe@odoo.com>
Signed-off-by: Adrien Widart <awt@odoo.com>
2022-12-22 11:40:55 +01:00
FrancoisGe 1f0e840238 [IMP] *: converting custom list views adding a doAction button
In this commit, we will convert all the customisations of the list view
consist in adding an always present button in the control panel that
performs an action/calls a model's method.

To do this, we will use the new display="always" parameter applicable
to buttons in the header of list views. This allows us to define a
button that is always visible in a list view.

closes odoo/odoo#106519

Taskid: 3082303
Related: odoo/enterprise#34387
Related: odoo/documentation#3044
Signed-off-by: Aaron Bohy (aab) <aab@odoo.com>
2022-12-16 18:39:56 +01:00
Jorge Pinna PuissantandMichael Mattiello (mcm) c7c2959449 [IMP] web, *: simplification and standardization of the settings arch
The aim of this commit is to simplify and standardize the settings archs.

To do this, a small DSL exclusively for the settings was created. This
new DSL introduces 3 tags: `app`, `block` and `setting`.

The `app` tag is used to declare the application on the settings view.
It creates an entry with its logo on the sidebar of the view. It also
acts as delimiter when searching.

```xml
    <app string="CRM" name="crm">
    ...
    </app>
```

- `string` : The "display" name of the application.
- `name` : The technical name of the application (the name of the module).
- `logo` *optional* : The relative path to the logo. If not set, the
        logo is created using the `name` parameter :
        `/{name}/static/description/icon.png`.

The `block` tag is used to declare a group of settings. This group can
have a title and a description/help.

```xml
    <block title="Title of group Bar">
    ...
    </block>
```

- `title` *optional* : The title of the block of settings (the old h2),
        you can perform research on its text.
- `help` *optional* : The description/help of the block of settings
        (the old h3), you can perform research on its text.

The `setting` tag is used to declare the setting itself. The first field
in the setting is used as the main field (optional). This field is
placed on the left panel (if it's a boolean field) or on the top of the
right panel (otherwise). The field is also used to create the setting
label if a `string` is not defined. The `setting` tag can also contain
more elements (e.g. html), all of these elements are rendered in the
right panel.

```xml
    <setting string="this is bar">
        <field name="bar"/>
        ...More elements
    </setting>
```

- `type` *optional* : By default, a setting is visually separated on two
        panels (left and right), and is used to edit a given field. By
        defining `type='header'`, a special kind of setting is rendered
        instead. This setting is used to modify the scope of the other
        settings. For example, on the website application, this setting
        is used to indicate to which website the other settings apply.
        The header setting is visually represented as a yellow banner on
        the top of the screen.
- `string` *optional* : The text used as label of the setting. If it's
        not defined, the first field is used as label.
- `title` *optional* : The text used as tooltip.
- `help` *optional* : The help/description of the setting. This text is
        displayed just below the setting label (with classname
        `text-muted`).
- `company_dependent` *optional* : If this attribute is set to "1" an
        icon is displayed next to the setting label to explicit that
        this setting is company-specific.
- `documentation` *optional* :  If this attribute is set, an icon is
        added next to the setting label, this icon is a link to the
        documentation. Note that you can use relative or absolute path.
        The relative path is relative to
        `https://www.odoo.com/documentation/server_version`, so it's not
        necessary to hard-code the server version on the arch anymore.

closes odoo/odoo#106425

Task-id: 3081367
Related: odoo/enterprise#34337
Signed-off-by: Aaron Bohy (aab) <aab@odoo.com>
Co-authored-by: "Michael Mattiello (mcm)" <mcm@odoo.com>
2022-12-02 14:40:25 +01:00
JF Aubert c21cf21de4 [REF] stock: replace stock.scrap onchanges by computes
closes odoo/odoo#104062

Task: 2985735
Signed-off-by: Tiffany Chang <tic@odoo.com>
2022-12-02 13:41:48 +01:00
Arnold Moyaux f613ce968d [FIX] base, stock, delivery: replace support datamatrix barcode printing
This reverts commit 3ebe1185a4.

The code ECC200DataMatrix already exist in reportlab (that is already a dependance).
Some differences:
- ECC200DataMatrix only supports a Type 12 (44x44) C40 encoded data matrix.
  (214 alphanumeric characters and 14 to 27% of error correcting rate)
- pylibdmtx support more type and add a default to 24x24. So it means a
  (52 characters and 20 to 35% error correcting rate). It's also smaller
  to display.

We consider the gain too small compare to maintain an extra lib.

It also fix blured datamatrix in stock report if they contains too much
data.

*If you want to test 001234560000000018 is a valid sscc for package

closes odoo/odoo#106620

X-original-commit: 54ef19f41ffc4a6f715474b65a4183a7fa75feea
Related: odoo/enterprise#34422
Signed-off-by: William Henrotin (whe) <whe@odoo.com>
Signed-off-by: Arnold Moyaux (arm) <arm@odoo.com>
2022-11-30 10:05:27 +01:00
Florent de Labarre 44c407da3c [FIX] stock: impossible to search correctly location
Before this PR Odoo don't pre-search on location.

closes odoo/odoo#106680

X-original-commit: 55729e2bfb402e5af6569c8dd19ee8495fa244a9
Signed-off-by: William Henrotin (whe) <whe@odoo.com>
2022-11-28 15:53:20 +01:00
clesgow 3604bb93ff [IMP] stock: Add product category groupby for inventory adjustment
Add a group by product categories in the stock.quant.

Part of task-2985735

closes odoo/odoo#106479

X-original-commit: ad5382ac45277d6b058fbcac78ac637f30bc8392
Signed-off-by: Arnold Moyaux (arm) <arm@odoo.com>
Signed-off-by: Quentin Wolfs (quwo) <quwo@odoo.com>
2022-11-25 09:53:11 +01:00
niyasraphy 1709cba800 [FIX] sale,purchase,stock,account: partner form warning alignment
closes odoo/odoo#105511

X-original-commit: 6aa86c92c7ee7d46c54250960c2b34753e13b8be
Signed-off-by: William André (wan) <wan@odoo.com>
2022-11-10 00:27:59 +01:00
Denis Roussel d81e83907d [IMP] stock: Add a void button box on Package Types form view
closes odoo/odoo#103979

X-original-commit: de87a78e0988cd7a1aa05f10ef7bc9170d9dad14
Signed-off-by: William Henrotin (whe) <whe@odoo.com>
2022-11-04 11:58:54 +01:00
Touati Djamel (otd) 8ca3d4675b [FIX] stock: display the available qty in stock.quant form view
Steps to reproduce the bug:
- Create a storable product “P1”
- update the quantity to 10
- Go to inventory > configuration > warehouse Management > location
- Select your location > current stock
- Search the Product “P1”

Problem:
In `stock.quant’ list view > the available qty is displayed, but if you
click on the line, the available qty is not displayed in the form view,
only the qty counted is displayed

opw-3018469

closes odoo/odoo#104374

X-original-commit: d956e719d43c68abe6210e3136db576aaa6f60b8
Signed-off-by: Steve Van Essche <svs@odoo.com>
Signed-off-by: Djamel Touati (otd) <otd@odoo.com>
2022-10-28 09:17:48 +02:00
FrancoisGe c998fdd77b [FIX] base: consider multi_edit="1" views editable
Since odoo/odoo#95729

nodes with a `groups=` are completely removed from the views when
the user is not part of the group, instead of being made invisible.

In that PR, views have been adapted to add back fields, with invisible="1",
when they were required, for instance when they were used in a domain
of another field which was still there despite the user is not part
of the given group.

As `tree` views having `multi_edit="1"` where not considered
as editable views, the domain of fields in these views were not
validated:
- https://github.com/odoo/odoo/blob/1fb8fa16ab7dc298d54f089d7163fb556dbc5fcc/odoo/addons/base/models/ir_ui_view.py#L1460
- https://github.com/odoo/odoo/blob/1fb8fa16ab7dc298d54f089d7163fb556dbc5fcc/odoo/addons/base/models/ir_ui_view.py#L1321-L1322

while they are well required for the web client,
in `multi_edit="1"` this is possible to edit relational/many2one field,
and therefore it will do `name_search` calls using the domain of the
field, and therefore the fields used in these domains must always
be present in the views. Without it, a crash in the web client occurs
when attempting to edit the relational/many2one field.

This revision targets to consider the `multi_edit="1"` tree views
as editable, to make the field domains validated as they should be.

Hence, views are adapted to add back fields with `invisible="1"`
when they are required in domains of other fields.

Part-of: odoo/odoo#103790
2022-10-23 12:30:03 +02:00
Tiffany Chang (tic) 7e310e531e [IMP] stock{_account}: polish views
Followup to inventory back2basics task 2882539

- order stock.move.line tree (Moves History) view by "id desc" for
  better performance (prev: create_date is not indexed)
- order stock.valuation.layer tree (Valuation) view by "id desc" for
  better performance (prev: date is not indexed)
- hide "Moved Quantity" column when in current valuation (not at date)
- remove the action: "Set" and print: "Count Sheet" from
  stock.quant.view when not in "Inventory Adjustment" related view
- Fix "Inventory At Date"/"Valuation At Date" button visibility issue
  that came up due to OWL refactoring
- Don't show consumables in stock.valuation.layer (Valuation) report
  view action (forgot to include domain when creating new action)
- Add stock.move menuitem back in under "reporting" in debug mode since
  this view isn't accesible anywhere else and it is used a lot for qty
  forecasts by users
- Add "Created By" (as "Done By") to stock.move.line history view for
  easier tracking of inventory adjustments

closes odoo/odoo#102929

Task: 2965586
X-original-commit: 8904c3c4b709f94266a883bc734faad8b3b4ba3a
Signed-off-by: Arnold Moyaux (arm) <arm@odoo.com>
2022-10-11 17:59:08 +02:00
Fabien Pinckaers d9e753aa29 [IMP] missing d-flex to align star & name
closes odoo/odoo#102526

X-original-commit: fd8f15366f395aab0a0b6c453fb0ab3aad082b74
Signed-off-by: Fabien Pinckaers <fp@odoo.com>
Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
2022-10-11 15:51:59 +02:00
Damien Bouvy e647a2de09 [IMP] *: adapt to grid form views
The recent switch from tables to css grids for form views `group` nodes
has introduced several inconsistencies/issues with several views accross
modules - these will not be the last fixes.

closes odoo/odoo#102174

X-original-commit: 836568dfd59886a6d52f15e0e2109709903b6803
Related: odoo/enterprise#32295
Signed-off-by: Bouvy Damien (dbo) <dbo@odoo.com>
2022-10-11 13:15:12 +02:00
JF Aubert e96a29d70c [FIX] stock,stock_barcode: adjust picking type ui
Make operation type a title.
Change description of some fields in General tab.

closes odoo/odoo#102703

Task: 3004014
X-original-commit: 2cc799edc58f96009c0323e0871e077339967557
Signed-off-by: Arnold Moyaux (arm) <arm@odoo.com>
2022-10-10 17:11:19 +02:00
Arnold Moyaux 5dd70ed8b6 [IMP] stock: quantity done on stock.move is always editable
Quantity done will be always editable. Different use case:
1. If there is not location/package/tracing/owner -> same behavior than
  before
2. If the details are needed:
- Immediate transfer. In case of increase the quants are reserved and the
`qty_done` on `stock.move.line` is increased depending the reservation.
If the quantity couldn't be fully reserve then default `stock.move.line`
are create (depending the putaway rules or multiple ones if the products
are tracked). In case of decrease, the quantity reserved are unreserve
but the `stock.move.line` are not unlink until the validation.
- Planned transfer. The quantity done will fill the reservation. If the
picking is not assign, it will reserve the quantity needed. In case of
decrease, it will only unreserve the extra quantity (compare to the
initial demand). To unreserve the quantity bellow the intial demand, the
`stock.move.line` could be unlink or use the `unreserve` button.

force_qty in `_action_assign` is needed because we don't reserve only
base on the initial demand (`product_uom_qty`) but sometimes on the
quantity_done.

In order to never block the user. The action_show_details is always
available. If the id is not available, it will save and open the record
(we take the record based on the new existing line with same product
and highest id).

closes odoo/odoo#102738

Task-id: 2960983
X-original-commit: cacc677a08066bc23e1c89df36027599d05f2a08
Related: odoo/enterprise#32555
Signed-off-by: William Henrotin (whe) <whe@odoo.com>
2022-10-08 18:00:19 +02:00
clesgow 8e80f6bece [IMP] stock: Storage category capacity menu
"Storage Category Capacity" menu appears as long as the debug mode is
on, even if the "Storage Category" isn't selected in the settings and
the corresponding group isn't set.

Since this menu is accessible from the Storage Category form anyway, we
move the link to this table in the settings (where we can safely display
it in debug AND with the setting activated), and we remove it from the
menu.

Part of task-2985735

closes odoo/odoo#102422

X-original-commit: 8b2ca9743af423dbe89c4992f462d36d434a60a9
Signed-off-by: Arnold Moyaux (arm) <arm@odoo.com>
Signed-off-by: Quentin Wolfs (quwo) <quwo@odoo.com>
2022-10-06 18:01:42 +02:00
clesgow 8ecfe6deea [FIX] stock: location_dest width in move details
The column `location_dest_id` ends up squished to almost nothing and
need to be dragged open to be able to read what's in it.

This sets the width of this column back to its default size.

Part of task-2985735

closes odoo/odoo#102356

X-original-commit: bbcb3744386c1e01cb1bd57c0e2aa3f02e2c47a0
Signed-off-by: Arnold Moyaux (arm) <arm@odoo.com>
Signed-off-by: Quentin Wolfs (quwo) <quwo@odoo.com>
2022-10-06 17:00:12 +02:00
Ahmed Khalaf (ahkh) 46e2d9e09c [IMP] stock, mrp: popover widget and extenstions to owl
This commit converts `popover_widget`, `stock_rescheduling_popover`
and `mrp_workorder_popover` to OWL

closes odoo/odoo#101987

Signed-off-by: Arnold Moyaux (arm) <arm@odoo.com>
2022-10-05 21:27:58 +02:00
svs-odoo 61bc8347eb [REF] stock: convert stock_orderpoint_list to OWL
X-original-commit: 262366c693ffdb5b9d4bc3c7bef293f52bd6a344
Part-of: odoo/odoo#101305
2022-10-04 17:01:21 +02:00
Dossogne Bertrand 7c4da16b59 [IMP] mail, various: improve mail template usability
Allow our users to modify mail template more easily

- make the list accessible from the settings
- give them a link to update relevant views to update header/footer
- make the list and form of templates more readable
- add a description on templates, allowing to describe their usage

In order to better filter templates, a new category field is added that
is computed based on active flag, description being set and the template
having an xml ID. Master templates are active, with a description and an
xml ID.

Update master data to add description on some templates.

task-2944770

closes odoo/odoo#101730

X-original-commit: dfa867343ee8842f3f127ac62584fd471b41dde1
Related: odoo/enterprise#32079
Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
2022-10-04 09:55:46 +02:00
JF Aubert 5cd16398a7 [FIX] stock: fix inventory report
This commit addresses a screen refresh problem.

closes odoo/odoo#99123

Task: 2961768
X-original-commit: e78849c156dd2e199d29c1a388d25c7d481096b5
Signed-off-by: Arnold Moyaux (arm) <arm@odoo.com>
2022-10-03 10:56:50 +02:00
Ahmed Khalaf (ahkh) 79895c77bc [IMP] stock_{picking_batch}: Add user in kanban
Currently cannot see assigned user working on picking/batch in kanban view.
Added user_id in picking kanban view, and related user_id
from batch

TaskId: 2871679
ENT PR: odoo/enterprise#28886

closes odoo/odoo#101026

X-original-commit: 943e5b9761b43257ec968c12f15723c618c3b5ad
Related: odoo/enterprise#31740
Signed-off-by: Arnold Moyaux (arm) <arm@odoo.com>
Signed-off-by: Ahmed Khalaf  <ahkh@odoo.com>
2022-09-26 09:35:53 +02:00
debu-odoo f02b21771c [IMP] stock: add revert inventory adjustment feature
Purpose of the task is to be able to click on inventory adjustment
history and do a reverse adjustment by using `Revert Inventory` action.

`Revert Inventory` action is available in Inventory Adjustments > History
and Product Moves > select some lines > actions dropdown. This
method creates a new move that reverts the quantity (including negative
values) with prefix `[reverted]`.

TaskID - 2859490

closes odoo/odoo#95720

Signed-off-by: Tiffany Chang <tic@odoo.com>
2022-09-21 01:29:49 +02:00
nouraellm 13c5e4dbb4 [FIX] stock: fix todo filter for product moves
Steps to reproduce:
- Create a transfer and choose whatever operation
- Enable detailed operations option for the operation
- Check availability and set quantities
- Cancel the transfer then Go to Product Moves

Current behavior:
- todo filter is broken, it shows canceled moves

Desired behavior:
- Show only moves that are assigned or waiting

- Task id: #2981249

closes odoo/odoo#100115

Signed-off-by: Tiffany Chang <tic@odoo.com>
2022-09-14 09:17:00 +02:00
Adrien Widart 0421a72e53 [FIX] stock: get weight of destination package
To reproduce the issue:
(Need delivery)
1. In Settings, enable "Packages"
2. Create a product P:
    - Type: Consumable
    - Weight: 1kg
3. Create and confirm a SO with 1 x P
4. Open the related Delivery Order
5. Put in pack
5. Open the detailed operations of P
6. Edit the destination package

Error: on the package form, the computed weight is 0kg, it should be 1kg

We should provide the `picking_id` in the context so that the compute
method can do its job:
https://github.com/odoo/odoo/blob/5a8690b35a2fa9c5ed81d858ac0d170beaabaaf9/addons/delivery/models/stock_picking.py#L14-L18

OPW-2972868

closes odoo/odoo#100099

X-original-commit: d11d6662a470e3a078fb2162a775ad35d9228cb7
Signed-off-by: Arnold Moyaux (arm) <arm@odoo.com>
Signed-off-by: Adrien Widart <awt@odoo.com>
2022-09-14 09:16:57 +02:00
Ahmed Khalaf (ahkh) af4bc31267 [IMP] sale, stock: add sendcloud setting
SendCloud added in settings as a third party shipping connector

closes odoo/odoo#92610

Task: 2797613
Related: odoo/enterprise#27920
Signed-off-by: Arnold Moyaux (arm) <arm@odoo.com>
2022-09-13 13:52:52 +02:00
svs-odoo 7df34e5137 [IMP] stock: stock.picking.type views
* Names form view's groups to inherit purpose (in `stock_barcode`);
* Cleans a little bit the views' template.

task-2666478

Part-of: odoo/odoo#91807
2022-09-06 22:30:46 +02:00
svs-odoo 7e79713a16 [MOV] stock: picking type views in its own file
Part-of: odoo/odoo#91807
2022-09-06 22:30:45 +02:00
JF Aubert ec0b100532 [REF] stock: convert inventory_report_list to wowl
closes odoo/odoo#98436

Task: 2885757
Signed-off-by: Arnold Moyaux (arm) <arm@odoo.com>
2022-08-31 12:37:28 +02:00
Tiffany Chang (tic) e4988b70ab [IMP] stock{_account}: add reference opening magic in list view
The move line form view is too technical for the average user so instead we
can to auto-magically open the reference document instead (picking or MO
only for now).

We do the same with stock valuation layers as well, but this feature
will not be available until its custom JS is converted to OWL

"product moves" part of b2b task: 2882539

closes odoo/odoo#97109

Related: odoo/enterprise#29974
Related: odoo/upgrade#3819
Signed-off-by: Arnold Moyaux (arm) <arm@odoo.com>
2022-08-29 23:46:36 +02:00
Tiffany Chang (tic) f05e3eabbe [IMP] stock{_account}: add (product) stock report
Adds a new reporting view for [storable] product.product to allow for
easier analysis by product (rather than by quant which is location
specific).

This includes:
- adding 3 new fields for products:
  - avg_cost = total svl value / total qty
  - total_value = avg_cost / on hand
  - company_currency_id = self.env.company.currency_id (i.e. the
    currently selected company) for which currency symbol to display in
    the view
  - IMPORTANT NOTE:
    - these variables (and some of the existing ones) do NOT support
      multi-company aggregations due these values being used to calcuate
      future svls which should be company specific. Larger refactoring
      would be needed to ensure correct calc in both cases. Larger issue
      occurs in stock.report which uses these variables in combination
      with variables that do take into account multi-company records.
- A customized `SearchPanel` so that a warehouse context can be applied
  to the view, rather than a filter. (viewable only when more than 1
  warehouse)

"stock report" part of b2b task: 2882539

Part-of: odoo/odoo#97109
2022-08-29 23:46:36 +02:00
Tiffany Chang (tic) 9649000b89 [IMP] {purchase_, sale_}stock{_account}: improve forecast report UX
Minor UX updates to forecast report:

- add missing space (between # and unit + before |) also removed
  superfluous uoms (only need it at the end now that an equation is
  displayed)
- move On Hand Value to under product link (+ variants if they exist)
  and make it a link to the valuation report of the product(s) in
  question
- add link from Quantity on Hand to the locations (i.e. inventory/quants)
  report for the relevant product(s). Note that product template was
  added to Search in order to support default searching due to
  forecasting report structure
- redo the top right forecast values to be On Hand + Incoming - Outgoing
  = Forecasted so we provide more explicit and transparent values.
  Additionally, these values are made to not display decimal digits if
  all of those digits are 0.  Note that forecasted values in table are
  untouched (i.e. Forecasted Inventory = Forecasted is unchanged and
  Forecasted with Pending still shows in table)

Also did some t-esc => t-out replacement and other small cleanup since
templates were already being edited.

"forecasted report" part of b2b task: 2882539

Part-of: odoo/odoo#97109
2022-08-29 23:46:35 +02:00
Tiffany Chang (tic) fc6aed2c28 [IMP] stock: update UX of stock moves lines report
Note this includes the view shown when clicking on:
- "History" button in inventory adjustments
- "Product Moves" button in scrap/product forms
- "Reporting" > "Moves History"
At time of this commit being written. Other move line views not changed
since they are specific to inputting data rather than readonly data.

Minor UX updates to stock move lines report:
- rename "Units of Measure" column to "Unit"
- add color to quantity field (green = incoming qty into stock, red =
  outgoing, black = all others [i.e. internal transfers/external
  locations only, etc]
- search filter order updated + src/dest location filters replaced with
  generic filter that checks if either meets condition
- add src/dest package to list view
- add status, lot, and from/to dest to kanban view and replace picking
  with reference so inventory adjustments are visible as well
- order by date desc so most recent ones are first
- always display location src/dest to help understanding of moves

Specific to "History" button in Inventory Adjustments / Reporting >
Locations (i.e. inventory report), moved product_id from domain to
default_search for more user analysis flexibility/ease.

"product moves" part of b2b task: 2882539

Part-of: odoo/odoo#97109
2022-08-29 23:46:34 +02:00
Tiffany Chang (tic) f9c345fa21 [IMP] stock: update UX of stock moves report
Minor UX updates to stock moves report:

- don't default groupby source location
- order list by date
- rename "Units of Measure" column to "Unit"
- add color to quantity field (green = incoming qty into stock, red =
  outgoing, black = all others [i.e. internal transfers/external
  locations only, etc]
- search filter order updated
- make to location_{dest_}id text-muted when not a physical location
  (i.e. internal/transit)
- display "Quantity" instead of "Demand" for product_uom_qty and show
  sum at bottom of list

"stock moves" part of b2b task: 2882539

Part-of: odoo/odoo#97109
2022-08-29 23:46:34 +02:00
Tiffany Chang (tic) 9978bcb366 [IMP] stock{_account}: inventory => locations report update
Inventory report has been updated to have:
- better applicability: report renamed to "Locations" and is only
  visible w/Locations, Consignment, or debug mode active
- improved UX: list view rearranged, buttons added, grouping removed,
  sums added to bottom of list
- improved quant "Value": instead of the accounting value, this is now
  the average unit cost (i.e. sum(valuation layer values)/sum(valuation
  layer quantities) per product x on hand qty (of quant).
- single click load for products
- search based on Warehouse option (including storing
  location.warehouse_id to avoid overly complex search function)
- always show "Location" column in this view even if multi-locations is
  not active

"inventory report" part of b2b task: 2882539

Upgrade PR: odoo/upgrade#3819

Part-of: odoo/odoo#97109
2022-08-29 23:46:34 +02:00
Tiffany Chang (tic) f752b98889 [IMP] mrp, stock{_account,_picking_batch}: update inventory menus
- reorder/rename/remove menu contents for "Inventory" and "Reporting",
  including:
 - removed "Forecasted Inventory" menuitem since this view is no longer
   considered useful (code for view to be removed in separate commit)
 - removed "Stock Moves" (moves report) menuitem
 - renamed "Product Move" (move lines report) menuitem => "Moves
   History", this will also be reflected in any "History" buttons that
   open this view from other views.
 - made "Inventory Report" menuitem visible only when applicable (i.e.
   multi-location or consignment is active/debug mpde)
 - made "Run Scheduler" menuitem only available in debug mode (
   main_flow_tour updated to skip scheduler click since general flow is
   expected to still the same/work)

Goal of renaming/ordering of menuitems is to clean them up and make them
more intuitive for users.

- "Run Scheduler" in mrp menus has also been made debug only viewable as
  well to mirror the inventory change.

"menu" part of b2b task: 2882539
ENT PR: odoo/enterprise#29974

Part-of: odoo/odoo#97109
2022-08-29 23:46:33 +02:00
Ahmed Khalaf (ahkh) 24306ca244 [IMP] stock,mrp: remove lazy_column_list
Removes legacy component js_class `lazy_column_list` as it loads
legacy views.

closes odoo/odoo#98881

Signed-off-by: Arnold Moyaux (arm) <arm@odoo.com>
2022-08-29 22:43:31 +02:00
Denis Ledoux 8785bc7477 [FIX] stock: move group inside the view
The goal being to get rid of the `groups_id` feature for backend views

This one is a tricky case

The `create` button should not be visible in the tree and form views
of stock locations when the multi locations feature is not enabled.

If you don't have the group, you do not see the menu bringing
you to the locations list, but though it's still possible
to reach the location form view through a many2one link
on a location field missing the `groups="stock.group_stock_multi_locations"`
e.g. on the stock move form.

If you managed to reach a location form whatever the way,
if you do not have the multi locations enabled,
you shouldn't see the create button.

As we would like to remove the `groups_id` feature of the `ir.ui.view`,
we must find an alternative.
This is the only case using `groups_id` to remove the create/edit
button, so it's not like it's such a common way
to achieve this goal.

The right way to achieve this should be an ACL,
preventing you to create a location at all (even through xmlrpc)
if you do not have the multi-location feature enabled.
Though, currently, there is an ACL giving the right to inventory
managers to create locations, and this is unfortunately impossible
in the ACLs model to make a combined group rule, like you need both
the groups multi-locations and inventory manager to be allowed to create
locations.

Hence, as alternative, we enable/disable the view
removing the create button from the list and form views
when the multi-locations is enabled/disabled in the settings.

Part-of: odoo/odoo#98551
2022-08-29 22:42:55 +02:00
Denis Ledoux fd1dfe57bf [IMP] stock: remove groups_id of product_template_form_view_procurement_button
Part-of: odoo/odoo#98551
2022-08-29 22:42:51 +02:00
Denis Ledoux 3f15903803 [IMP] stock: remove attributes inherit to set the same attribute
This xpath on `group_lots_and_weight` to change the `attrs` attributes
is useless as it's already the same exact value in the base view:
https://github.com/odoo/odoo/blob/d108db36ca2974179ded929370ea45a106f2e08c/addons/product/views/product_views.xml#L119

This oversight probably comes from the change in this commit:
https://github.com/odoo/odoo/commit/4a350ff8ccad554d38d977605b99d47ef8a3873e#diff-9afa40fdafcf103e7456e139c259f78469ea7e675c79f6d13dfe7db2d43c38d6L347

Part-of: odoo/odoo#98551
2022-08-29 22:42:51 +02:00
Denis Ledoux 8b91cab67f [IMP] base: remove groups_id from ir.ui.view
The goal of this revision is to get rid of the `groups_id` field of the model `ir.ui.view`.

- This feature wasn't really known or used by most developers,
   and not straight-forward to understand.
   Removing it allows one less complicated thing to learn for developers.
   Besides, thanks to odoo/odoo#95729,
   changing the behavior of the `groups=` attribute,
   we can easily get rid of this `groups_id` feature
   by simply adding `groups=` in the elements of the views
   using the `groups_id` field, it will have the same effect:
   adding the elements in the view only for the users part of the specified group.

- By getting rid of the groups_id many2many field on ir.ui.view,
   it makes possible to cache the view architecture without
   requiring to use the groups in the cache key.
   Currently, if we want to cache the view architecture,
  it would be required to use the intersection of the user
  groups with the groups_id groups of the view,
  making it costly to compute the cache key,
  therefore altering the performance point to cache the view
  architectures.

Part-of: odoo/odoo#98551
2022-08-29 22:42:50 +02:00
Denis Ledoux 0501bbd62e [IMP] base: uniform "groups" in back-end view
This revision is to make uniform the behavior of the `groups` attribute
on the Python model fields
and on the node in the view architecture.
In both cases, remove the node from the view completely.

Before this revision,

in a back-end view:
 - In the Python model, if a field has the `groups` attribute set
   and the user is not part of
   the groups, the field is removed, completely, from the view.
 - In the view architecture, if a node has the `groups` attribute set
   and the user is not part of
   the groups, the node is made invisible (not completely removed, just
   made invisible).

in a front-end view:
 - if a node has a "groups" or "t-groups" set and the user
   is not part of the groups, the node is removed from the view.

So it's 2/3 cases removing nodes restricted to a group.
and 1/3 case making invisible nodes restricted to a group.
It's simpler to have a uniform behavior for the 3 cases,
simpler to understandard for developers.

In addition, this will help for the goal to cache back-end views.
It makes possible to convert views using the `groups_id` field
by moving the content of these views directly
in the view to which they add content which is suppose to be completely
removed when the user has not the according group.
By getting rid of the `groups_id` many2many field on `ir.ui.view`,
it makes possible to cache the view architecture without
requiring to use the groups in the cache key.
Currently, if we want to cache the view architecture,
it would be required to use the intersection of the user
groups with the `groups_id` groups of the view,
making it costly to compute the cache key,
therefore altering the performance point to cache the view
architectures.

closes odoo/odoo#95729

Related: odoo/enterprise#29592
Signed-off-by: Denis Ledoux (dle) <dle@odoo.com>
2022-08-19 19:10:39 +02:00
Ahmed Khalaf (ahkh) 32fc7661b3 [IMP] stock: replenishment locations
this commit will allow users to setup replenish locations and replenish
them directly if they have negative forecast
instead of checking forecast qty per warehouse,
this adds the abiltiy to replenish to any internal stock location,
marked as replenish location, instead of just the warehouse location

Task Id: 2796757

closes odoo/odoo#93633

Related: odoo/upgrade#3626
Signed-off-by: William Henrotin (whe) <whe@odoo.com>
2022-08-03 15:09:19 +02:00
Romeo Fragomeli 1fcd098af5 [REF] *: BS5: migration
Automated change made by a lot of RegEx to change all think that is
possible to automate.

https://getbootstrap.com/docs/5.1/migration

Task ID: 2766483

Part-of: odoo/odoo#95450
2022-07-07 13:30:24 +02:00
Touati Djamel (otd) b71501c7d0 [FIX] stock: do not save product_qty when discarding
Steps to reproduce the bug:
- Create a new transfer, e.g: internal transfer is fine
- Click on add a product > select any product > Save & close
- Click on the product that was just added
- change the product1_uom_qty
- Click on "Discard" button (Do not use the "Save & Close" nor the
 "Save & New").
- On the picking, click on save.

Problem:
A user error is triggered, because when creating the `stock.move`,
we try to save the `product_qty` while it is a technical field:
https://github.com/odoo/odoo/blob/ba3bb9b701a382c4052ddb57392baeee32625937/addons/stock/models/stock_move.py#L375

When we modify the `porudct_uom_qty`, a compute is triggered to
calculate the `porudct_qty`:
https://github.com/odoo/odoo/blob/ba3bb9b701a382c4052ddb57392baeee32625937/addons/stock/models/stock_move.py#L278-L279

But when we click on the discard, the changes are not cancelled,
and as the kanban view does not have the information from
the form view that the field `product_qty` is readonly,
so the `product_qty` is sent in the vals to the server when we save
the picking

opw-2638906

closes odoo/odoo#94586

X-original-commit: 289d0d845df092eeae6ce0598ffef9158978ad30
Signed-off-by: Adrien Widart <awt@odoo.com>
Signed-off-by: Djamel Touati (otd) <otd@odoo.com>
2022-06-28 09:15:44 +02:00
Adrien Widart 9c8ddea062 [FIX] stock: display the forecast symbol on outgoing SM
To reproduce the issue:
1. Create a storable product P
2. Update the on-hand quantity: 5 x P
3. Create a planned delivery order with 4 x P
    - Note: once saved, the forecast symbole is green
4. On the delivery order, set the quantity to 5 and save

Error: The symbol is now red, which is incorrect: there are 5 available
P in the stock

The color condition is incorrect, when `forecast_availability` is equal
to zero, it means that there will be just the right quantity:
https://github.com/odoo/odoo/blob/892232b5aef42dd2706cb9d1d027b1c463ca50dd/addons/stock/models/stock_move.py#L446-L448

task-2822157

X-original-commit: b49577d1aa0dda3b3890c7150db0242254cf46c5
Part-of: odoo/odoo#94332
2022-06-24 11:32:48 +02:00
Victor Feyens fba6ea5a47 [IMP] *: do not force admins to be app admins
For bugfix purposes, app administration groups have been given to
(implied by) the "Settings" group because without those rights,
opening/saving the settings crashed.

1) Do not load hidden view content

This commit uses the conditional inheritance of views
(depending on user groups) to avoid loading unnecessary view
& record content client-side.

This improves performance for admins without the specific application
admin rights, but also fixes the main bugfix problem,
caused by the webclient querying name_get for the records in relational
fields content.

Example:

sale_management adds a res.config.settings field to specify
the default sale.order.template for the current company.

If a 'Settings' user without 'sale.group_sale_manager' opens the
settings, he won't see this setting, but if a default template is
specified for the current company, the webclient will still request
the name_get of this template to the server, because the field
was present in the view, only hidden with a groups attribute.

With this commit change in sale, the field won't be in the view unless
you have the Sale manager group, avoiding the error/traceback/bug.

2) Remove implied application administration groups

Do not force the specific application groups on all 'Settings' user,
they globally do not need those rights, and if they need it, they
can add it to their account themselves.

3) Add a test to make sure settings user are able to manage settings.

4) Enforce 'settings' -> 'access rights' -> 'internal user' groups

As the previous test highlighted some 'false positives' because
it considered a settings user unable to read `crm.team`
and `stock.warehouse` records, we also took the opportunity to enforce
the fact that 'Settings' & 'Access rights' users must be internal users.

It makes no sense for a portal/public user to have access to the
settings, and didn't work anyway.

Part-of: odoo/odoo#91909
2022-06-23 23:48:29 +02:00
Jérôme Hellinckx bc3ce2f6da [IMP] stock: Search by package in picking list
In the picking list view, allow to search pickings by package name/barcode.

task-2648993

Part-of: odoo/odoo#83462
2022-06-23 11:15:47 +02:00
Jérôme Hellinckx 047bfa7536 [IMP] stock: add ask-always-never setting for backorder
In picking type, we introduce a new setting ask-always-never setting for
creating backorder. When a backorder is needed, the behaviour will be
different according to this setting:
 - ask: popup a wizard to ask if a backorder is needed
 - always: generate backorder automatically
 - never: no backorder

The main reasoning behind this change is that there are some scenarios
in which operators always create backorders (e.g. by validating the
transfer after scanning a pallet and setting quantities). Hence, always
asking if the user (operator) wants to create a backorder can be confusing.

task-2648993

Part-of: odoo/odoo#83462
2022-06-23 11:15:47 +02:00