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

[16.0][MIG] product_cost_price_avco_sync: Migration to 16.0 #1877

Open
wants to merge 67 commits into
base: 16.0
Choose a base branch
from

Conversation

pedrobaeza
Copy link
Member

Supersedes #1465 having the latest commits and refactoring in 15.0

@Tecnativa

sergio-teruel and others added 30 commits February 17, 2025 20:42
Currently translated at 100.0% (2 of 2 strings)

Translation: stock-logistics-workflow-12.0/stock-logistics-workflow-12.0-product_cost_price_avco_sync
Translate-URL: https://translation.odoo-community.org/projects/stock-logistics-workflow-12-0/stock-logistics-workflow-12-0-product_cost_price_avco_sync/pt_BR/
… with same product and distinct price are done at same second.
… is not previous in moves or manual adjustment
…one if quantity is the same or the move has more than one stock move lines
sergio-teruel and others added 24 commits February 17, 2025 20:44
…negative stock and vacuum with sale return move

TT33334
… values to avoid full processing in case remaining_qty contains an insignificant value less than zero
With this dict we are allowed to process some svls before
processing the main avoiding do writes on the method.

TT44663
- Include context keys for avoiding mail operations overhead.
Currently translated at 100.0% (5 of 5 strings)

Translation: stock-logistics-workflow-15.0/stock-logistics-workflow-15.0-product_cost_price_avco_sync
Translate-URL: https://translation.odoo-community.org/projects/stock-logistics-workflow-15-0/stock-logistics-workflow-15-0-product_cost_price_avco_sync/es/
… costs

When a change is made to the quantities of a stock move that is
associated with multiple stock valuation layers, including those related
to landed costs, the quantity change is being applied to all the lines
instead of only to the one related to the material entry.

With these changes, we restrict the quantity change solely to the stock
valuation layer related to the material entry, preventing the change
from being applied to the lines associated with landed costs.
…changes at once

The current problem is that when there are crossed changes between
products (like in MRP, having changes in components that affect
manufactured products), a lot of writes are done, as each product is
processed separately, and thus, there can be continuous resync between
them.

With this new method, we can process the whole sync in one step,
blocking it till pending data is processed, avoiding continuos sync
triggerings.

Main changes:

- Extract the processing code corresponding to one SVL to the method
  `_process_avco_sync_one`.
- Include all the state variables - previous_unit_cost,
  previous_qty, inventory_processed and unit_cost_processed - into a
  super-structure (called `svls_dic`, which previously holds the SVL
  values for the product being synchronized).
  This super-structure is a dictionary having as keys the pair
  (product, company), and the value another dictionary with such state
  variables and storing the SVL values in "svls" key.
- 2 main loops for iterating in the elements to sync, one for the
  pair (product, company), and other inside for the SVLs to sync.
  First `while` loop is driven by these control variables:

  * index: which position - pair (product, company) - to process
  * reloop: activated when something is blocking
  * any_processed: to control if there's no progress in a whole loop

  The second one uses the value inside "to_sync" key of the
  super-structure to know which is the SVL to sync currently, and when
  processed, we dynamically look for the next one.
- `_preprocess_main_svl_line` and `_preprocess_rest_svl_to_sync`
  dissapears in favor of one control method: `_is_avco_sync_processable`,
  which can return a falsy value if we can't sync that SVL.
- We add extra things to sync modifying the super-structure in
  `_process_avco_sync_one` - add new (product, company) keys or change
  "to_sync" value -.
- All the AVCO sync methods have been converted to private.
- The processing of the SVLs previous to the one to sync is done in a
  light way, but using the same code of `_process_avco_sync_one`.
  After obtaining the state variables, the SVLs dict is discarded for
  saving memory.

TT50028
For performance reasons, remove all the remaining values stuff, which
is only valid for FIFO.
@pedrobaeza
Copy link
Member Author

/ocabot migration product_cost_price_avco_sync

@OCA-git-bot OCA-git-bot added this to the 16.0 milestone Feb 17, 2025
@OCA-git-bot
Copy link
Contributor

The migration issue (#1101) has not been updated to reference the current pull request because a previous pull request (#1465) is not closed.
Perhaps you should check that there is no duplicate work.
CC @AungKoKoLin1997

@pedrobaeza
Copy link
Member Author

/ocabot migration product_cost_price_avco_sync

@OCA-git-bot OCA-git-bot mentioned this pull request Feb 18, 2025
71 tasks
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.

10 participants