2026 08 29/cl migra purchase tier validation 20 - #61
Closed
CILC98 wants to merge 7 commits into
Closed
Conversation
…ínea pre-20) (#1) Onboarding del repo como referencia del CI de migración a Odoo 20. Los módulos OCA de tier-validation aún no están migrados; se marcan no instalables para que, al estar en el addons-path del CI/smoke, no se intente instalarlos y no rompan las corridas. Cada módulo pasará a installable=True cuando se migre.
* [MIG] product_state: migración a Odoo 20 * [MIG] product_state_stock_base: migración a Odoo 20 Co-authored-by: mymage <stefano.consolaro@mymage.it> * [FIX][CL] Ajuste a comodel -> string * [FIX][CL] Retorno a readme original --------- Co-authored-by: mymage <stefano.consolaro@mymage.it>
* [MIG] base_tier_validation: migración a Odoo 20
- Activa el módulo (installable: True), version -> '1.0'.
- security/ir.model.access.csv -> ir.access.csv (nuevo esquema
id,name,model_id,group_id/id,operation,domain; ir.model.access
se fusionó con ir.rule en ir.access). Las reglas multi-compañía
de tier_validation_security.xml migran de ir.rule a ir.access
(global, sin group_id, operation=crud).
- Iconos FontAwesome -> oi (Material Symbols): 6 sitios en Python/XML
(thumb_up/thumb_down/info/pencil_square) + icon="fa-bell" ->
"notifications" en el mail.activity.type del recordatorio + un
::before con font-family: FontAwesome en el SCSS del widget de
reviews (ya no renderiza nada) reemplazado por un <i class="oi">
real.
- OWL 3: useState() eliminado -> proxy(). El wrapper useState() sobre
useService("mail.store") se quita (el store ya es reactivo por sí
solo, igual que en el propio mail). reactive() (eliminado) -> proxy()
en el servicio del systray. Se agregan los `this.` explícitos que
ahora exige el compilador QWeb en los templates de ambos componentes.
Se agrega un test Hoot que monta el systray (bundle
web.assets_unit_tests nuevo en el manifest).
- Query.subselect() ya no acepta un string crudo (Since 20, UserWarning
"select takes only SQL arguments"); se envuelve con SQL(...).
- tests/common.py y test_tier_validation.py: ir.model.access (Python,
eliminado) -> ir.access. Ojo con la trampa de polaridad: la fila
original no tenía group_id (bajo ir.model.access eso concedía a
todos); se fija group_id=base.group_user explícito para no perder
el permiso en silencio.
- tests/common.py: BaseCommon en v20 aísla el usuario implícito de
test a solo base.group_user (patrón usado en ~764 archivos del
core); se declara _test_user_groups = None porque estos tests crean
tier.definition/res.groups y leen ir.model.fields directo sin
with_user().
Verificado: install+test limpio contra Odoo 20 (0 failed, 0 error(s)
of 54 tests, base_tier_validation queda `installed`).
License, autoría (ForgeFlow/OCA) y README quedan sin tocar: es
contenido OCA vendored, no de autoría Trescloud (mismo criterio ya
aplicado a stock_analytic/report_xlsx/auditlog en este workspace).
Co-authored-by: Saran440 <saranl@ecosoft.co.th>
* [FIX] base_tier_validation: pencil_square no está en el subset de iconos oi
data-icon="pencil_square" no renderiza nada: el font oi/Material Symbols
que sirve Odoo 20 es un subconjunto curado (icons_wishlist.txt), no el
catálogo completo, y "pencil_square" no está en esa lista (aunque aparece
como texto en un archivo de website_slides -- ese uso también está roto,
no es una referencia válida). Cambia a "edit_square", que sí está en el
wishlist y es el mismo icono que usa el core para casos equivalentes
(account_move, partner_view).
Verificado contra icons_wishlist.txt (no solo grepeando usos en el código,
que puede incluir referencias igual de rotas) y con install+test verde
(0 failed, 0 error(s) of 54 tests).
---------
Co-authored-by: Saran440 <saranl@ecosoft.co.th>
* [MIG] product_state: migración a Odoo 20 * [FIX][CL] Ajuste a comodel -> string
Activa el módulo (installable: True), version -> '1.0'. Sin más deltas: el header de purchase.order sí trae botones propios (Send RFQ/Confirm/ Approve), así que el anclaje por defecto de base_tier_validation._tier_validation_buttons_xpath funciona sin overrides (a diferencia de product.template en product_tier_validation). Sin iconos FontAwesome, sin OWL, sin ir.model.access/_sql_constraints/ read_group() clásico; los xmlids referenciados (purchase.view_purchase_order_filter, purchase.purchase_order_kpis_tree, filter "order_date") siguen existiendo igual en v20. Verificado: install+test limpio contra Odoo 20 (0 failed, 0 error(s) of 3 tests, purchase_tier_validation queda `installed`). License, autoría (ForgeFlow/OCA) y README quedan sin tocar: contenido OCA vendored, mismo criterio que base_tier_validation/product_tier_validation. Co-authored-by: jaydeep32 <jaydipgajera2020@gmail.com>
Contributor
|
Hi @LoisRForgeFlow, |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Riesgo: bajo
Validación de flujos
Cubierto por tests automáticos (
0 failed, 0 error(s) of 3 tests):purchase.orderqueda registrado entier.definition._get_tier_validation_model_names()(test_01_tier_definition_models)Flujos sin test automático — requieren evidencia manual (este módulo no trae tests propios de
flujo, solo el de registro del modelo; el flujo de negocio en sí lo cubren los tests genéricos de
base_tier_validation, pero vale confirmarlo sobrepurchase.orderreal):purchase.order, crear una orden de compra que la dispare, y confirmar que el botón aparecejunto a "Send RFQ"/"Confirm Order" en el header (no dentro del bloque de aviso amarillo).
activarlo para un usuario en el grupo de reviewers, y que filtra correctamente por
reviewer_ids/state.validation_status(badge) en la vista de lista/KPI decompras: confirmar que el badge cambia de color según el estado (info/danger/success) y que el
filtro "Validated" muestra solo las órdenes con
validation_status = 'validated'.validación sin pasar por
request_validation()/validate_tier()primero, y confirmar que elmixin
tier.validationlo bloquea conValidationError.