Initial commit: OCA Technical packages (595 packages)

This commit is contained in:
Ernad Husremovic 2025-08-29 15:43:03 +02:00
commit 2cc02aac6e
24950 changed files with 2318079 additions and 0 deletions

View file

@ -0,0 +1,46 @@
# DDMRP Adjustment
Odoo addon: ddmrp_adjustment
## Installation
```bash
pip install odoo-bringout-oca-ddmrp-ddmrp_adjustment
```
## Dependencies
This addon depends on:
- ddmrp
- web_widget_x2many_2d_matrix
- date_range
## Manifest Information
- **Name**: DDMRP Adjustment
- **Version**: 16.0.1.5.1
- **Category**: Warehouse
- **License**: AGPL-3
- **Installable**: True
## Source
Based on [OCA/ddmrp](https://github.com/OCA/ddmrp) branch 16.0, addon `ddmrp_adjustment`.
## License
This package maintains the original AGPL-3 license from the upstream Odoo project.
## Documentation
- Overview: doc/OVERVIEW.md
- Architecture: doc/ARCHITECTURE.md
- Models: doc/MODELS.md
- Controllers: doc/CONTROLLERS.md
- Wizards: doc/WIZARDS.md
- Install: doc/INSTALL.md
- Usage: doc/USAGE.md
- Configuration: doc/CONFIGURATION.md
- Dependencies: doc/DEPENDENCIES.md
- Troubleshooting: doc/TROUBLESHOOTING.md
- FAQ: doc/FAQ.md

View file

@ -0,0 +1,159 @@
.. image:: https://odoo-community.org/readme-banner-image
:target: https://odoo-community.org/get-involved?utm_source=readme
:alt: Odoo Community Association
================
DDMRP Adjustment
================
..
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:e763e870c7754e467a917869ec9b5c5f8213f2573e9a91f6633ae9c19d08532a
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
:target: https://odoo-community.org/page/development-status
:alt: Beta
.. |badge2| image:: https://img.shields.io/badge/license-AGPL--3-blue.png
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fddmrp-lightgray.png?logo=github
:target: https://github.com/OCA/ddmrp/tree/16.0/ddmrp_adjustment
:alt: OCA/ddmrp
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/ddmrp-16-0/ddmrp-16-0-ddmrp_adjustment
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png
:target: https://runboat.odoo-community.org/builds?repo=OCA/ddmrp&target_branch=16.0
:alt: Try me on Runboat
|badge1| |badge2| |badge3| |badge4| |badge5|
Allow to extend DDMRP App to be able to apply Adjustments for dynamically
altering buffers for planned or anticipated events. This include:
* **Demand Adjustment Factor (DAF)**: is a manipulation of the ADU input
within a specific time period. The system will look for existing DAFs when
computing the ADU for each buffer and apply them. The system will also
explode the resulting increase in demand of parent buffers to all their
children buffers using the BoM.
* **Lead Time Adjustment Factor (LTAF)**: manipulates the Decoupled Lead Time
for an individual part or group of parts (buffer profile, same partner...)
to adjust for a planned or known expansions of LT.
* Zone Adjustment Factor (ZAF): pending to implement
**Table of contents**
.. contents::
:local:
Usage
=====
To plan buffer adjustments act as follows:
#. Click on *Inventory > Demand Planning > Create Buffer Adjustments*.
#. In the popup window fill the *Period* and *Date Range Type* to perform
your planning.
#. Check the boxes of the *Factor to Apply* in which you are interested.
#. Select the DDMRP Buffers where to apply this factors.
#. Under the title *Sheet* you will see a generated sheet in which you can
fill the values for each period.
#. Click *Validate* to confirm your planning and the system will end up
showing you the newly created DDMRP adjustment records.
Known issues / Roadmap
======================
* Implement new factors
* Reuse existing factor and modify them instead of always creating new ones.
* Add small graph view in buffer form as a way to overview DAFs.
Changelog
=========
16.0.1.0.0 (2023-12-05)
~~~~~~~~~~~~~~~~~~~~~~~
* Standard migration to v16.
15.0.1.0.0 (2022-03-04)
~~~~~~~~~~~~~~~~~~~~~~~
* Standard migration to v15.
14.0.1.0.0 (2021-06-17)
~~~~~~~~~~~~~~~~~~~~~~~
* Standard migration to v14.
13.0.1.0.0 (2020-07-02)
~~~~~~~~~~~~~~~~~~~~~~~
* Standard migration to v13.
11.0.1.1.0 (2019-02-01)
~~~~~~~~~~~~~~~~~~~~~~~
* Refactor data model to reduce complexity. Functionality unchanged.
11.0.1.0.0 (2018-08-01)
~~~~~~~~~~~~~~~~~~~~~~~
* Start of the history
Bug Tracker
===========
Bugs are tracked on `GitHub Issues <https://github.com/OCA/ddmrp/issues>`_.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us to smash it by providing a detailed and welcomed
`feedback <https://github.com/OCA/ddmrp/issues/new?body=module:%20ddmrp_adjustment%0Aversion:%2016.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
Do not contact contributors directly about support or help with technical issues.
Credits
=======
Authors
~~~~~~~
* ForgeFlow
Contributors
~~~~~~~~~~~~
* Lois Rilo <lois.rilo@forgeflow.com>
* Jordi Ballester <jordi.ballester@forgeflow.com>
* Akim Juillerat <akim.juillerat@camptocamp.com>
Maintainers
~~~~~~~~~~~
This module is maintained by the OCA.
.. image:: https://odoo-community.org/logo.png
:alt: Odoo Community Association
:target: https://odoo-community.org
OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.
.. |maintainer-JordiBForgeFlow| image:: https://github.com/JordiBForgeFlow.png?size=40px
:target: https://github.com/JordiBForgeFlow
:alt: JordiBForgeFlow
.. |maintainer-LoisRForgeFlow| image:: https://github.com/LoisRForgeFlow.png?size=40px
:target: https://github.com/LoisRForgeFlow
:alt: LoisRForgeFlow
Current `maintainers <https://odoo-community.org/page/maintainer-role>`__:
|maintainer-JordiBForgeFlow| |maintainer-LoisRForgeFlow|
This module is part of the `OCA/ddmrp <https://github.com/OCA/ddmrp/tree/16.0/ddmrp_adjustment>`_ project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

View file

@ -0,0 +1,2 @@
from . import models
from . import wizards

View file

@ -0,0 +1,24 @@
# Copyright 2017-23 ForgeFlow S.L. (https://www.forgeflow.com)
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
{
"name": "DDMRP Adjustment",
"summary": "Allow to apply factor adjustments to buffers.",
"version": "16.0.1.5.1",
"development_status": "Beta",
"author": "ForgeFlow, Odoo Community Association (OCA)",
"maintainers": ["JordiBForgeFlow", "LoisRForgeFlow"],
"website": "https://github.com/OCA/ddmrp",
"category": "Warehouse",
"depends": ["ddmrp", "web_widget_x2many_2d_matrix", "date_range"],
"data": [
"security/ir.model.access.csv",
"security/ddmrp_security.xml",
"views/ddmrp_adjustment_view.xml",
"views/ddmrp_adjustment_demand_view.xml",
"views/stock_buffer_view.xml",
"wizards/ddmrp_adjustment_wizard_view.xml",
],
"license": "AGPL-3",
"installable": True,
}

View file

@ -0,0 +1,384 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * ddmrp_adjustment
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment__adjustment_type
msgid "Adjustment Type"
msgstr "Tip podešavanja"
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet__line_ids
msgid "Adjustments"
msgstr "Podešavanja"
#. module: ddmrp_adjustment
#: model_terms:ir.ui.view,arch_db:ddmrp_adjustment.view_ddmrp_adjustment_search
msgid "Affecting Currently"
msgstr "Trenutno utiče"
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_demand__buffer_id
msgid "Apply to"
msgstr "Primijeni na"
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment__buffer_id
#: model_terms:ir.ui.view,arch_db:ddmrp_adjustment.view_ddmrp_adjustment_search
msgid "Buffer"
msgstr "Bafer"
#. module: ddmrp_adjustment
#: model:ir.model,name:ddmrp_adjustment.model_ddmrp_adjustment_sheet
msgid "Buffer Adjustment Sheet"
msgstr "Tabela podešavanja bafera"
#. module: ddmrp_adjustment
#: model:ir.model,name:ddmrp_adjustment.model_ddmrp_adjustment_sheet_line
msgid "Buffer Adjustment Sheet Line"
msgstr "Linija tabele podešavanja bafera"
#. module: ddmrp_adjustment
#: model:ir.actions.act_window,name:ddmrp_adjustment.ddmrp_adjustment_action
#: model:ir.ui.menu,name:ddmrp_adjustment.menu_ddmrp_adjustment
msgid "Buffer Adjustments"
msgstr "Podešavanja bafera"
#. module: ddmrp_adjustment
#: model:ir.actions.act_window,name:ddmrp_adjustment.ddmrp_adjustment_demand_action
msgid "Buffer Adjustments Demand"
msgstr "Potražnja podešavanja bafera"
#. module: ddmrp_adjustment
#: model_terms:ir.ui.view,arch_db:ddmrp_adjustment.view_ddmrp_adjustment_sheet_wizard_form
msgid "Buffer Adjustments Wizard"
msgstr "Čarobnjak za podešavanje bafera"
#. module: ddmrp_adjustment
#: model_terms:ir.ui.view,arch_db:ddmrp_adjustment.view_ddmrp_adjustment_sheet_wizard_form
msgid "Buffers"
msgstr "Baferi"
#. module: ddmrp_adjustment
#: model_terms:ir.ui.view,arch_db:ddmrp_adjustment.view_ddmrp_adjustment_sheet_wizard_form
msgid "Cancel"
msgstr "Otkaži"
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment__company_id
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_demand__company_id
msgid "Company"
msgstr "Preduzeće"
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_stock_buffer__count_ddmrp_adjustment_demand
msgid "Count Ddmrp Adjustment Demand"
msgstr "Broji DDMRP potražnju podešavanja"
#. module: ddmrp_adjustment
#: model:ir.actions.act_window,name:ddmrp_adjustment.action_ddmrp_adjustment_sheet_wizard
#: model:ir.ui.menu,name:ddmrp_adjustment.menu_ddmrp_adjustment_sheet_wizard
msgid "Create Buffer Adjustments"
msgstr "Kreiraj podešavanja bafera"
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment__create_uid
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_demand__create_uid
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet__create_uid
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet_line__create_uid
msgid "Created by"
msgstr "Kreirao"
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment__create_date
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_demand__create_date
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet__create_date
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet_line__create_date
msgid "Created on"
msgstr "Kreirano"
#. module: ddmrp_adjustment
#: model_terms:ir.ui.view,arch_db:ddmrp_adjustment.stock_buffer_view_form
msgid "DAF Demand Allocation"
msgstr "DAF alokacija potražnje"
#. module: ddmrp_adjustment
#: model:ir.model,name:ddmrp_adjustment.model_ddmrp_adjustment
msgid "DDMRP Adjustment"
msgstr "DDMRP podešavanje"
#. module: ddmrp_adjustment
#: model:ir.model,name:ddmrp_adjustment.model_ddmrp_adjustment_demand
msgid "DDMRP Adjustment Demand"
msgstr "DDMRP potražnja podešavanja"
#. module: ddmrp_adjustment
#. odoo-python
#: code:addons/ddmrp_adjustment/wizards/ddmrp_adjustment_sheet.py:0
#, python-format
msgid "DDMRP Buffer Adjustment"
msgstr "DDMRP podešavanje bafera"
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet__buffer_ids
msgid "DDMRP Buffers"
msgstr "DDMRP baferi"
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_stock_buffer__daf_applied
msgid "Daf Applied"
msgstr "DAF primijenjen"
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_stock_buffer__daf_text
msgid "Daf Text"
msgstr "DAF tekst"
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet__date_start
msgid "Date From"
msgstr "Datum od"
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment__date_range_id
msgid "Date Range"
msgstr "Datumski opseg"
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet__date_range_type_id
msgid "Date Range Type"
msgstr "date.range.type"
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet__date_end
msgid "Date To"
msgstr "Datum do"
#. module: ddmrp_adjustment
#: model:ir.model.fields,help:ddmrp_adjustment.field_ddmrp_adjustment_demand__product_uom_id
msgid "Default unit of measure used for all stock operations."
msgstr "Predefinirana mjerna jedinica za sve funkcije zalihe."
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet__apply_daf
#: model:ir.model.fields.selection,name:ddmrp_adjustment.selection__ddmrp_adjustment__adjustment_type__daf
msgid "Demand Adjustment Factor"
msgstr "Faktor podešavanja potražnje"
#. module: ddmrp_adjustment
#: model:ir.model.fields,help:ddmrp_adjustment.field_stock_buffer__extra_demand_ids
msgid ""
"Demand associated to Demand Adjustment Factors applied to parent buffers."
msgstr ""
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment__display_name
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_demand__display_name
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet__display_name
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet_line__display_name
msgid "Display Name"
msgstr "Prikazani naziv"
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment__date_end
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_demand__date_end
msgid "End date"
msgstr "Završni datum"
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_demand__extra_demand
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_stock_buffer__extra_demand_ids
msgid "Extra Demand"
msgstr "Dodatna potražnja"
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet_line__factor
msgid "Factors"
msgstr "Faktori"
#. module: ddmrp_adjustment
#: model_terms:ir.ui.view,arch_db:ddmrp_adjustment.view_ddmrp_adjustment_sheet_wizard_form
msgid "Factors to Apply"
msgstr "Faktori za primjenu"
#. module: ddmrp_adjustment
#: model_terms:ir.ui.view,arch_db:ddmrp_adjustment.view_ddmrp_adjustment_sheet_wizard_form
msgid ""
"Fill the factors to apply in each period for all the\n"
" selected Buffers."
msgstr ""
#. module: ddmrp_adjustment
#: model_terms:ir.ui.view,arch_db:ddmrp_adjustment.view_ddmrp_adjustment_search
msgid "Group By"
msgstr "Grupiši po"
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment__id
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_demand__id
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet__id
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet_line__id
msgid "ID"
msgstr "ID"
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment____last_update
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_demand____last_update
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet____last_update
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet_line____last_update
msgid "Last Modified on"
msgstr "Zadnje mijenjano"
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment__write_uid
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_demand__write_uid
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet__write_uid
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet_line__write_uid
msgid "Last Updated by"
msgstr "Zadnji ažurirao"
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment__write_date
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_demand__write_date
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet__write_date
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet_line__write_date
msgid "Last Updated on"
msgstr "Zadnje ažurirano"
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet__apply_ltaf
#: model:ir.model.fields.selection,name:ddmrp_adjustment.selection__ddmrp_adjustment__adjustment_type__ltaf
msgid "Lead Time Adjustment Factor"
msgstr "Faktor podešavanja vremena isporuke"
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment__location_id
msgid "Location"
msgstr "Lokacija"
#. module: ddmrp_adjustment
#: model_terms:ir.ui.view,arch_db:ddmrp_adjustment.view_ddmrp_adjustment_search
msgid "Not Expired"
msgstr "Nije isteklo"
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_demand__product_origin_id
msgid "Origin Product"
msgstr "Izvorni proizvod"
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_demand__buffer_origin_id
msgid "Originated from"
msgstr "Nastalo od"
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_stock_buffer__parent_daf_applied
msgid "Parent Daf Applied"
msgstr "Matični DAF primijenjen"
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_stock_buffer__parent_daf_text
msgid "Parent Daf Text"
msgstr "Matični DAF tekst"
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet_line__date_range_id
#: model_terms:ir.ui.view,arch_db:ddmrp_adjustment.view_ddmrp_adjustment_sheet_wizard_form
msgid "Period"
msgstr "Period"
#. module: ddmrp_adjustment
#: model_terms:ir.ui.view,arch_db:ddmrp_adjustment.view_ddmrp_adjustment_sheet_wizard_form
msgid "Periods"
msgstr "Periodi"
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_stock_buffer__pre_daf_adu
msgid "Pre Daf Adu"
msgstr "Pre DAF ADU"
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment__product_id
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_demand__product_id
msgid "Product"
msgstr "Artikal"
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet_line__sheet_id
#: model_terms:ir.ui.view,arch_db:ddmrp_adjustment.view_ddmrp_adjustment_sheet_wizard_form
msgid "Sheet"
msgstr "List"
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment__date_start
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_demand__date_start
msgid "Start date"
msgstr "Početni datum"
#. module: ddmrp_adjustment
#: model:ir.model,name:ddmrp_adjustment.model_stock_buffer
msgid "Stock Buffer"
msgstr "Skladišni bafer"
#. module: ddmrp_adjustment
#. odoo-python
#: code:addons/ddmrp_adjustment/wizards/ddmrp_adjustment_sheet.py:0
#, python-format
msgid "The start date cannot be later than the end date."
msgstr "Datum početka ne može biti kasniji od datuma završetka."
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_demand__product_uom_id
msgid "Unit of Measure"
msgstr "Jedinica mjere"
#. module: ddmrp_adjustment
#: model_terms:ir.ui.view,arch_db:ddmrp_adjustment.view_ddmrp_adjustment_sheet_wizard_form
msgid "Validate"
msgstr "Ovjeri"
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment__value
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet_line__value
msgid "Value"
msgstr "Vrijednost"
#. module: ddmrp_adjustment
#: model_terms:ir.ui.view,arch_db:ddmrp_adjustment.stock_buffer_view_form
msgid "View DAFs Affecting Actual ADU"
msgstr "Pogledaj DAF-ove koji utiču na stvarnu ADU"
#. module: ddmrp_adjustment
#: model_terms:ir.ui.view,arch_db:ddmrp_adjustment.stock_buffer_view_form
msgid "View Demand from parent DAFs Affecting Actual ADU"
msgstr "Pogledaj potražnju iz matičnih DAF-ova koji utiču na stvarnu ADU"
#. module: ddmrp_adjustment
#. odoo-python
#: code:addons/ddmrp_adjustment/wizards/ddmrp_adjustment_sheet.py:0
#, python-format
msgid "You must apply at least one factor"
msgstr "Morate primijeniti najmanje jedan faktor"
#. module: ddmrp_adjustment
#. odoo-python
#: code:addons/ddmrp_adjustment/wizards/ddmrp_adjustment_sheet.py:0
#, python-format
msgid "You must select at least one buffer."
msgstr "Morate izabrati najmanje jedan bafer."
#. module: ddmrp_adjustment
#: model_terms:ir.ui.view,arch_db:ddmrp_adjustment.view_ddmrp_adjustment_sheet_wizard_form
msgid "to"
msgstr "do"

View file

@ -0,0 +1,384 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * ddmrp_adjustment
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment__adjustment_type
msgid "Adjustment Type"
msgstr ""
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet__line_ids
msgid "Adjustments"
msgstr ""
#. module: ddmrp_adjustment
#: model_terms:ir.ui.view,arch_db:ddmrp_adjustment.view_ddmrp_adjustment_search
msgid "Affecting Currently"
msgstr ""
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_demand__buffer_id
msgid "Apply to"
msgstr ""
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment__buffer_id
#: model_terms:ir.ui.view,arch_db:ddmrp_adjustment.view_ddmrp_adjustment_search
msgid "Buffer"
msgstr ""
#. module: ddmrp_adjustment
#: model:ir.model,name:ddmrp_adjustment.model_ddmrp_adjustment_sheet
msgid "Buffer Adjustment Sheet"
msgstr ""
#. module: ddmrp_adjustment
#: model:ir.model,name:ddmrp_adjustment.model_ddmrp_adjustment_sheet_line
msgid "Buffer Adjustment Sheet Line"
msgstr ""
#. module: ddmrp_adjustment
#: model:ir.actions.act_window,name:ddmrp_adjustment.ddmrp_adjustment_action
#: model:ir.ui.menu,name:ddmrp_adjustment.menu_ddmrp_adjustment
msgid "Buffer Adjustments"
msgstr ""
#. module: ddmrp_adjustment
#: model:ir.actions.act_window,name:ddmrp_adjustment.ddmrp_adjustment_demand_action
msgid "Buffer Adjustments Demand"
msgstr ""
#. module: ddmrp_adjustment
#: model_terms:ir.ui.view,arch_db:ddmrp_adjustment.view_ddmrp_adjustment_sheet_wizard_form
msgid "Buffer Adjustments Wizard"
msgstr ""
#. module: ddmrp_adjustment
#: model_terms:ir.ui.view,arch_db:ddmrp_adjustment.view_ddmrp_adjustment_sheet_wizard_form
msgid "Buffers"
msgstr ""
#. module: ddmrp_adjustment
#: model_terms:ir.ui.view,arch_db:ddmrp_adjustment.view_ddmrp_adjustment_sheet_wizard_form
msgid "Cancel"
msgstr ""
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment__company_id
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_demand__company_id
msgid "Company"
msgstr ""
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_stock_buffer__count_ddmrp_adjustment_demand
msgid "Count Ddmrp Adjustment Demand"
msgstr ""
#. module: ddmrp_adjustment
#: model:ir.actions.act_window,name:ddmrp_adjustment.action_ddmrp_adjustment_sheet_wizard
#: model:ir.ui.menu,name:ddmrp_adjustment.menu_ddmrp_adjustment_sheet_wizard
msgid "Create Buffer Adjustments"
msgstr ""
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment__create_uid
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_demand__create_uid
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet__create_uid
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet_line__create_uid
msgid "Created by"
msgstr ""
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment__create_date
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_demand__create_date
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet__create_date
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet_line__create_date
msgid "Created on"
msgstr ""
#. module: ddmrp_adjustment
#: model_terms:ir.ui.view,arch_db:ddmrp_adjustment.stock_buffer_view_form
msgid "DAF Demand Allocation"
msgstr ""
#. module: ddmrp_adjustment
#: model:ir.model,name:ddmrp_adjustment.model_ddmrp_adjustment
msgid "DDMRP Adjustment"
msgstr ""
#. module: ddmrp_adjustment
#: model:ir.model,name:ddmrp_adjustment.model_ddmrp_adjustment_demand
msgid "DDMRP Adjustment Demand"
msgstr ""
#. module: ddmrp_adjustment
#. odoo-python
#: code:addons/ddmrp_adjustment/wizards/ddmrp_adjustment_sheet.py:0
#, python-format
msgid "DDMRP Buffer Adjustment"
msgstr ""
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet__buffer_ids
msgid "DDMRP Buffers"
msgstr ""
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_stock_buffer__daf_applied
msgid "Daf Applied"
msgstr ""
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_stock_buffer__daf_text
msgid "Daf Text"
msgstr ""
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet__date_start
msgid "Date From"
msgstr ""
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment__date_range_id
msgid "Date Range"
msgstr ""
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet__date_range_type_id
msgid "Date Range Type"
msgstr ""
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet__date_end
msgid "Date To"
msgstr ""
#. module: ddmrp_adjustment
#: model:ir.model.fields,help:ddmrp_adjustment.field_ddmrp_adjustment_demand__product_uom_id
msgid "Default unit of measure used for all stock operations."
msgstr ""
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet__apply_daf
#: model:ir.model.fields.selection,name:ddmrp_adjustment.selection__ddmrp_adjustment__adjustment_type__daf
msgid "Demand Adjustment Factor"
msgstr ""
#. module: ddmrp_adjustment
#: model:ir.model.fields,help:ddmrp_adjustment.field_stock_buffer__extra_demand_ids
msgid ""
"Demand associated to Demand Adjustment Factors applied to parent buffers."
msgstr ""
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment__display_name
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_demand__display_name
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet__display_name
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet_line__display_name
msgid "Display Name"
msgstr ""
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment__date_end
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_demand__date_end
msgid "End date"
msgstr ""
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_demand__extra_demand
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_stock_buffer__extra_demand_ids
msgid "Extra Demand"
msgstr ""
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet_line__factor
msgid "Factors"
msgstr ""
#. module: ddmrp_adjustment
#: model_terms:ir.ui.view,arch_db:ddmrp_adjustment.view_ddmrp_adjustment_sheet_wizard_form
msgid "Factors to Apply"
msgstr ""
#. module: ddmrp_adjustment
#: model_terms:ir.ui.view,arch_db:ddmrp_adjustment.view_ddmrp_adjustment_sheet_wizard_form
msgid ""
"Fill the factors to apply in each period for all the\n"
" selected Buffers."
msgstr ""
#. module: ddmrp_adjustment
#: model_terms:ir.ui.view,arch_db:ddmrp_adjustment.view_ddmrp_adjustment_search
msgid "Group By"
msgstr ""
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment__id
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_demand__id
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet__id
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet_line__id
msgid "ID"
msgstr ""
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment____last_update
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_demand____last_update
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet____last_update
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet_line____last_update
msgid "Last Modified on"
msgstr ""
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment__write_uid
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_demand__write_uid
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet__write_uid
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet_line__write_uid
msgid "Last Updated by"
msgstr ""
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment__write_date
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_demand__write_date
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet__write_date
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet_line__write_date
msgid "Last Updated on"
msgstr ""
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet__apply_ltaf
#: model:ir.model.fields.selection,name:ddmrp_adjustment.selection__ddmrp_adjustment__adjustment_type__ltaf
msgid "Lead Time Adjustment Factor"
msgstr ""
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment__location_id
msgid "Location"
msgstr ""
#. module: ddmrp_adjustment
#: model_terms:ir.ui.view,arch_db:ddmrp_adjustment.view_ddmrp_adjustment_search
msgid "Not Expired"
msgstr ""
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_demand__product_origin_id
msgid "Origin Product"
msgstr ""
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_demand__buffer_origin_id
msgid "Originated from"
msgstr ""
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_stock_buffer__parent_daf_applied
msgid "Parent Daf Applied"
msgstr ""
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_stock_buffer__parent_daf_text
msgid "Parent Daf Text"
msgstr ""
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet_line__date_range_id
#: model_terms:ir.ui.view,arch_db:ddmrp_adjustment.view_ddmrp_adjustment_sheet_wizard_form
msgid "Period"
msgstr ""
#. module: ddmrp_adjustment
#: model_terms:ir.ui.view,arch_db:ddmrp_adjustment.view_ddmrp_adjustment_sheet_wizard_form
msgid "Periods"
msgstr ""
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_stock_buffer__pre_daf_adu
msgid "Pre Daf Adu"
msgstr ""
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment__product_id
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_demand__product_id
msgid "Product"
msgstr ""
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet_line__sheet_id
#: model_terms:ir.ui.view,arch_db:ddmrp_adjustment.view_ddmrp_adjustment_sheet_wizard_form
msgid "Sheet"
msgstr ""
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment__date_start
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_demand__date_start
msgid "Start date"
msgstr ""
#. module: ddmrp_adjustment
#: model:ir.model,name:ddmrp_adjustment.model_stock_buffer
msgid "Stock Buffer"
msgstr ""
#. module: ddmrp_adjustment
#. odoo-python
#: code:addons/ddmrp_adjustment/wizards/ddmrp_adjustment_sheet.py:0
#, python-format
msgid "The start date cannot be later than the end date."
msgstr ""
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_demand__product_uom_id
msgid "Unit of Measure"
msgstr ""
#. module: ddmrp_adjustment
#: model_terms:ir.ui.view,arch_db:ddmrp_adjustment.view_ddmrp_adjustment_sheet_wizard_form
msgid "Validate"
msgstr ""
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment__value
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet_line__value
msgid "Value"
msgstr ""
#. module: ddmrp_adjustment
#: model_terms:ir.ui.view,arch_db:ddmrp_adjustment.stock_buffer_view_form
msgid "View DAFs Affecting Actual ADU"
msgstr ""
#. module: ddmrp_adjustment
#: model_terms:ir.ui.view,arch_db:ddmrp_adjustment.stock_buffer_view_form
msgid "View Demand from parent DAFs Affecting Actual ADU"
msgstr ""
#. module: ddmrp_adjustment
#. odoo-python
#: code:addons/ddmrp_adjustment/wizards/ddmrp_adjustment_sheet.py:0
#, python-format
msgid "You must apply at least one factor"
msgstr ""
#. module: ddmrp_adjustment
#. odoo-python
#: code:addons/ddmrp_adjustment/wizards/ddmrp_adjustment_sheet.py:0
#, python-format
msgid "You must select at least one buffer."
msgstr ""
#. module: ddmrp_adjustment
#: model_terms:ir.ui.view,arch_db:ddmrp_adjustment.view_ddmrp_adjustment_sheet_wizard_form
msgid "to"
msgstr ""

View file

@ -0,0 +1,402 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * ddmrp_adjustment
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 15.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2024-03-20 17:35+0000\n"
"Last-Translator: Ivorra78 <informatica@totmaterial.es>\n"
"Language-Team: none\n"
"Language: es\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.17\n"
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment__adjustment_type
msgid "Adjustment Type"
msgstr "Tipo de Adaptación"
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet__line_ids
msgid "Adjustments"
msgstr "Adaptaciones"
#. module: ddmrp_adjustment
#: model_terms:ir.ui.view,arch_db:ddmrp_adjustment.view_ddmrp_adjustment_search
msgid "Affecting Currently"
msgstr "Afecta Actualmente"
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_demand__buffer_id
msgid "Apply to"
msgstr "Aplicar a"
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment__buffer_id
#: model_terms:ir.ui.view,arch_db:ddmrp_adjustment.view_ddmrp_adjustment_search
msgid "Buffer"
msgstr "Amortiguador"
#. module: ddmrp_adjustment
#: model:ir.model,name:ddmrp_adjustment.model_ddmrp_adjustment_sheet
msgid "Buffer Adjustment Sheet"
msgstr "Hoja de Ajuste del búfer"
#. module: ddmrp_adjustment
#: model:ir.model,name:ddmrp_adjustment.model_ddmrp_adjustment_sheet_line
msgid "Buffer Adjustment Sheet Line"
msgstr "Línea de la hoja de ajuste del búfer"
#. module: ddmrp_adjustment
#: model:ir.actions.act_window,name:ddmrp_adjustment.ddmrp_adjustment_action
#: model:ir.ui.menu,name:ddmrp_adjustment.menu_ddmrp_adjustment
msgid "Buffer Adjustments"
msgstr "Ajustes del búfer"
#. module: ddmrp_adjustment
#: model:ir.actions.act_window,name:ddmrp_adjustment.ddmrp_adjustment_demand_action
msgid "Buffer Adjustments Demand"
msgstr ""
#. module: ddmrp_adjustment
#: model_terms:ir.ui.view,arch_db:ddmrp_adjustment.view_ddmrp_adjustment_sheet_wizard_form
msgid "Buffer Adjustments Wizard"
msgstr "Asistente de ajustes de búfer"
#. module: ddmrp_adjustment
#: model_terms:ir.ui.view,arch_db:ddmrp_adjustment.view_ddmrp_adjustment_sheet_wizard_form
msgid "Buffers"
msgstr "Búferes"
#. module: ddmrp_adjustment
#: model_terms:ir.ui.view,arch_db:ddmrp_adjustment.view_ddmrp_adjustment_sheet_wizard_form
msgid "Cancel"
msgstr "Cancelar"
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment__company_id
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_demand__company_id
msgid "Company"
msgstr "Companía"
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_stock_buffer__count_ddmrp_adjustment_demand
msgid "Count Ddmrp Adjustment Demand"
msgstr ""
#. module: ddmrp_adjustment
#: model:ir.actions.act_window,name:ddmrp_adjustment.action_ddmrp_adjustment_sheet_wizard
#: model:ir.ui.menu,name:ddmrp_adjustment.menu_ddmrp_adjustment_sheet_wizard
msgid "Create Buffer Adjustments"
msgstr "Crear Ajustes de Amortiguación"
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment__create_uid
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_demand__create_uid
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet__create_uid
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet_line__create_uid
msgid "Created by"
msgstr "Creado por"
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment__create_date
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_demand__create_date
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet__create_date
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet_line__create_date
msgid "Created on"
msgstr "Creado el"
#. module: ddmrp_adjustment
#: model_terms:ir.ui.view,arch_db:ddmrp_adjustment.stock_buffer_view_form
msgid "DAF Demand Allocation"
msgstr "Asignación de la Demanda DAF"
#. module: ddmrp_adjustment
#: model:ir.model,name:ddmrp_adjustment.model_ddmrp_adjustment
msgid "DDMRP Adjustment"
msgstr "Ajuste DDMRP"
#. module: ddmrp_adjustment
#: model:ir.model,name:ddmrp_adjustment.model_ddmrp_adjustment_demand
msgid "DDMRP Adjustment Demand"
msgstr "DDMRP Ajuste Demanda"
#. module: ddmrp_adjustment
#. odoo-python
#: code:addons/ddmrp_adjustment/wizards/ddmrp_adjustment_sheet.py:0
#, python-format
msgid "DDMRP Buffer Adjustment"
msgstr "Ajuste del búfer DDMRP"
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet__buffer_ids
msgid "DDMRP Buffers"
msgstr "Búferes DDMRP"
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_stock_buffer__daf_applied
msgid "Daf Applied"
msgstr "Daf Aplicado"
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_stock_buffer__daf_text
msgid "Daf Text"
msgstr ""
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet__date_start
msgid "Date From"
msgstr "Fecha Desde"
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment__date_range_id
msgid "Date Range"
msgstr "Rango Fecha"
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet__date_range_type_id
msgid "Date Range Type"
msgstr "Tipo de Rango de Fecha"
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet__date_end
msgid "Date To"
msgstr "Fecha hasta"
#. module: ddmrp_adjustment
#: model:ir.model.fields,help:ddmrp_adjustment.field_ddmrp_adjustment_demand__product_uom_id
msgid "Default unit of measure used for all stock operations."
msgstr ""
"Unidad de medida por defecto usada para todas las operaciones de Inventario."
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet__apply_daf
#: model:ir.model.fields.selection,name:ddmrp_adjustment.selection__ddmrp_adjustment__adjustment_type__daf
msgid "Demand Adjustment Factor"
msgstr "Factor de Ajuste de la Demanda"
#. module: ddmrp_adjustment
#: model:ir.model.fields,help:ddmrp_adjustment.field_stock_buffer__extra_demand_ids
msgid ""
"Demand associated to Demand Adjustment Factors applied to parent buffers."
msgstr ""
"Demanda asociada a los Factores de Ajuste de la Demanda aplicados a los "
"topes parentales."
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment__display_name
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_demand__display_name
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet__display_name
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet_line__display_name
msgid "Display Name"
msgstr "Mostrar Nombre"
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment__date_end
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_demand__date_end
msgid "End date"
msgstr "Fecha Final"
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_demand__extra_demand
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_stock_buffer__extra_demand_ids
msgid "Extra Demand"
msgstr "Demanda Adicional"
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet_line__factor
msgid "Factors"
msgstr "Factores"
#. module: ddmrp_adjustment
#: model_terms:ir.ui.view,arch_db:ddmrp_adjustment.view_ddmrp_adjustment_sheet_wizard_form
msgid "Factors to Apply"
msgstr "Factores a Aplicar"
#. module: ddmrp_adjustment
#: model_terms:ir.ui.view,arch_db:ddmrp_adjustment.view_ddmrp_adjustment_sheet_wizard_form
msgid ""
"Fill the factors to apply in each period for all the\n"
" selected Buffers."
msgstr ""
"Rellene los factores a aplicar en cada periodo para todos los\n"
" Búferes seleccionados."
#. module: ddmrp_adjustment
#: model_terms:ir.ui.view,arch_db:ddmrp_adjustment.view_ddmrp_adjustment_search
msgid "Group By"
msgstr "Agrupar Por"
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment__id
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_demand__id
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet__id
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet_line__id
msgid "ID"
msgstr "ID (identificación)"
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment____last_update
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_demand____last_update
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet____last_update
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet_line____last_update
msgid "Last Modified on"
msgstr "Última Modificación el"
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment__write_uid
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_demand__write_uid
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet__write_uid
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet_line__write_uid
msgid "Last Updated by"
msgstr "Última actualización por"
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment__write_date
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_demand__write_date
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet__write_date
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet_line__write_date
msgid "Last Updated on"
msgstr "Última Actualización el"
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet__apply_ltaf
#: model:ir.model.fields.selection,name:ddmrp_adjustment.selection__ddmrp_adjustment__adjustment_type__ltaf
msgid "Lead Time Adjustment Factor"
msgstr "Factor de Ajuste del Plazo de Entrega"
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment__location_id
msgid "Location"
msgstr "Localización"
#. module: ddmrp_adjustment
#: model_terms:ir.ui.view,arch_db:ddmrp_adjustment.view_ddmrp_adjustment_search
msgid "Not Expired"
msgstr "No Expirado"
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_demand__product_origin_id
msgid "Origin Product"
msgstr "Origen Producto"
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_demand__buffer_origin_id
msgid "Originated from"
msgstr "Originario de"
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_stock_buffer__parent_daf_applied
msgid "Parent Daf Applied"
msgstr ""
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_stock_buffer__parent_daf_text
msgid "Parent Daf Text"
msgstr ""
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet_line__date_range_id
#: model_terms:ir.ui.view,arch_db:ddmrp_adjustment.view_ddmrp_adjustment_sheet_wizard_form
msgid "Period"
msgstr "Periodo"
#. module: ddmrp_adjustment
#: model_terms:ir.ui.view,arch_db:ddmrp_adjustment.view_ddmrp_adjustment_sheet_wizard_form
msgid "Periods"
msgstr "Periodos"
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_stock_buffer__pre_daf_adu
msgid "Pre Daf Adu"
msgstr "Antes de Daf Adu"
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment__product_id
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_demand__product_id
msgid "Product"
msgstr "Producto"
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet_line__sheet_id
#: model_terms:ir.ui.view,arch_db:ddmrp_adjustment.view_ddmrp_adjustment_sheet_wizard_form
msgid "Sheet"
msgstr "Hoja"
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment__date_start
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_demand__date_start
msgid "Start date"
msgstr "Fecha inicio"
#. module: ddmrp_adjustment
#: model:ir.model,name:ddmrp_adjustment.model_stock_buffer
msgid "Stock Buffer"
msgstr "Búfer de Inventario"
#. module: ddmrp_adjustment
#. odoo-python
#: code:addons/ddmrp_adjustment/wizards/ddmrp_adjustment_sheet.py:0
#, python-format
msgid "The start date cannot be later than the end date."
msgstr "La fecha de inicio no puede ser posterior a la fecha final."
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_demand__product_uom_id
msgid "Unit of Measure"
msgstr "Unidad de Medida"
#. module: ddmrp_adjustment
#: model_terms:ir.ui.view,arch_db:ddmrp_adjustment.view_ddmrp_adjustment_sheet_wizard_form
msgid "Validate"
msgstr "Validar"
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment__value
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet_line__value
msgid "Value"
msgstr "Valor"
#. module: ddmrp_adjustment
#: model_terms:ir.ui.view,arch_db:ddmrp_adjustment.stock_buffer_view_form
msgid "View DAFs Affecting Actual ADU"
msgstr ""
#. module: ddmrp_adjustment
#: model_terms:ir.ui.view,arch_db:ddmrp_adjustment.stock_buffer_view_form
msgid "View Demand from parent DAFs Affecting Actual ADU"
msgstr ""
#. module: ddmrp_adjustment
#. odoo-python
#: code:addons/ddmrp_adjustment/wizards/ddmrp_adjustment_sheet.py:0
#, python-format
msgid "You must apply at least one factor"
msgstr "Debe aplicar al menos un factor"
#. module: ddmrp_adjustment
#. odoo-python
#: code:addons/ddmrp_adjustment/wizards/ddmrp_adjustment_sheet.py:0
#, python-format
msgid "You must select at least one buffer."
msgstr "Debe seleccionar al menos un búfer."
#. module: ddmrp_adjustment
#: model_terms:ir.ui.view,arch_db:ddmrp_adjustment.view_ddmrp_adjustment_sheet_wizard_form
msgid "to"
msgstr "para"
#~ msgid "DAF: *"
#~ msgstr "DAF: *"
#, python-format
#~ msgid "Demand Allocated to Components"
#~ msgstr "Demanda Asignada a Componentes"
#~ msgid "View DAF Affecting Actual ADU"
#~ msgstr "Ver DAF que afecta a la UDA real"

View file

@ -0,0 +1,401 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * ddmrp_adjustment
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 15.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2025-01-27 12:06+0000\n"
"Last-Translator: mymage <stefano.consolaro@mymage.it>\n"
"Language-Team: none\n"
"Language: it\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.6.2\n"
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment__adjustment_type
msgid "Adjustment Type"
msgstr "Tipo correzione"
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet__line_ids
msgid "Adjustments"
msgstr "Correzioni"
#. module: ddmrp_adjustment
#: model_terms:ir.ui.view,arch_db:ddmrp_adjustment.view_ddmrp_adjustment_search
msgid "Affecting Currently"
msgstr "Riguardante attualmente"
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_demand__buffer_id
msgid "Apply to"
msgstr "Applica a"
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment__buffer_id
#: model_terms:ir.ui.view,arch_db:ddmrp_adjustment.view_ddmrp_adjustment_search
msgid "Buffer"
msgstr "Buffer"
#. module: ddmrp_adjustment
#: model:ir.model,name:ddmrp_adjustment.model_ddmrp_adjustment_sheet
msgid "Buffer Adjustment Sheet"
msgstr "Foglio correzione buffer"
#. module: ddmrp_adjustment
#: model:ir.model,name:ddmrp_adjustment.model_ddmrp_adjustment_sheet_line
msgid "Buffer Adjustment Sheet Line"
msgstr "Riga foglio correzione buffer"
#. module: ddmrp_adjustment
#: model:ir.actions.act_window,name:ddmrp_adjustment.ddmrp_adjustment_action
#: model:ir.ui.menu,name:ddmrp_adjustment.menu_ddmrp_adjustment
msgid "Buffer Adjustments"
msgstr "Correzioni buffer"
#. module: ddmrp_adjustment
#: model:ir.actions.act_window,name:ddmrp_adjustment.ddmrp_adjustment_demand_action
msgid "Buffer Adjustments Demand"
msgstr "Richiesta correzioni buffer"
#. module: ddmrp_adjustment
#: model_terms:ir.ui.view,arch_db:ddmrp_adjustment.view_ddmrp_adjustment_sheet_wizard_form
msgid "Buffer Adjustments Wizard"
msgstr "Procedura guidata correzioni buffer"
#. module: ddmrp_adjustment
#: model_terms:ir.ui.view,arch_db:ddmrp_adjustment.view_ddmrp_adjustment_sheet_wizard_form
msgid "Buffers"
msgstr "Buffer"
#. module: ddmrp_adjustment
#: model_terms:ir.ui.view,arch_db:ddmrp_adjustment.view_ddmrp_adjustment_sheet_wizard_form
msgid "Cancel"
msgstr "Annulla"
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment__company_id
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_demand__company_id
msgid "Company"
msgstr "Azienda"
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_stock_buffer__count_ddmrp_adjustment_demand
msgid "Count Ddmrp Adjustment Demand"
msgstr "Conteggio richieste correzioni DDRMP"
#. module: ddmrp_adjustment
#: model:ir.actions.act_window,name:ddmrp_adjustment.action_ddmrp_adjustment_sheet_wizard
#: model:ir.ui.menu,name:ddmrp_adjustment.menu_ddmrp_adjustment_sheet_wizard
msgid "Create Buffer Adjustments"
msgstr "Crea correzioni buffer"
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment__create_uid
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_demand__create_uid
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet__create_uid
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet_line__create_uid
msgid "Created by"
msgstr "Creato da"
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment__create_date
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_demand__create_date
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet__create_date
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet_line__create_date
msgid "Created on"
msgstr "Creato il"
#. module: ddmrp_adjustment
#: model_terms:ir.ui.view,arch_db:ddmrp_adjustment.stock_buffer_view_form
msgid "DAF Demand Allocation"
msgstr "Allocazione fabbisogno DAF"
#. module: ddmrp_adjustment
#: model:ir.model,name:ddmrp_adjustment.model_ddmrp_adjustment
msgid "DDMRP Adjustment"
msgstr "Correzione DDMRP"
#. module: ddmrp_adjustment
#: model:ir.model,name:ddmrp_adjustment.model_ddmrp_adjustment_demand
msgid "DDMRP Adjustment Demand"
msgstr "Fabbisogno correzione DDMRP"
#. module: ddmrp_adjustment
#. odoo-python
#: code:addons/ddmrp_adjustment/wizards/ddmrp_adjustment_sheet.py:0
#, python-format
msgid "DDMRP Buffer Adjustment"
msgstr "Correzione buffer DDMRP"
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet__buffer_ids
msgid "DDMRP Buffers"
msgstr "Buffer DDMRP"
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_stock_buffer__daf_applied
msgid "Daf Applied"
msgstr "DAF applicato"
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_stock_buffer__daf_text
msgid "Daf Text"
msgstr "Testo DAF"
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet__date_start
msgid "Date From"
msgstr "Dalla data"
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment__date_range_id
msgid "Date Range"
msgstr "Intervallo data"
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet__date_range_type_id
msgid "Date Range Type"
msgstr "Tipo intervallo data"
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet__date_end
msgid "Date To"
msgstr "Alla data"
#. module: ddmrp_adjustment
#: model:ir.model.fields,help:ddmrp_adjustment.field_ddmrp_adjustment_demand__product_uom_id
msgid "Default unit of measure used for all stock operations."
msgstr "Unità di misura predefinita per tutte le operazioni di magazzino."
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet__apply_daf
#: model:ir.model.fields.selection,name:ddmrp_adjustment.selection__ddmrp_adjustment__adjustment_type__daf
msgid "Demand Adjustment Factor"
msgstr "Fattore correzione fabbisogno"
#. module: ddmrp_adjustment
#: model:ir.model.fields,help:ddmrp_adjustment.field_stock_buffer__extra_demand_ids
msgid ""
"Demand associated to Demand Adjustment Factors applied to parent buffers."
msgstr ""
"Fabbisogno associato ai fattori correzione fabbisogno applicati ai buffer "
"padre."
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment__display_name
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_demand__display_name
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet__display_name
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet_line__display_name
msgid "Display Name"
msgstr "Nome visualizzato"
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment__date_end
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_demand__date_end
msgid "End date"
msgstr "Data fine"
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_demand__extra_demand
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_stock_buffer__extra_demand_ids
msgid "Extra Demand"
msgstr "Fabbisogno extra"
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet_line__factor
msgid "Factors"
msgstr "Fattori"
#. module: ddmrp_adjustment
#: model_terms:ir.ui.view,arch_db:ddmrp_adjustment.view_ddmrp_adjustment_sheet_wizard_form
msgid "Factors to Apply"
msgstr "Fattori da applicare"
#. module: ddmrp_adjustment
#: model_terms:ir.ui.view,arch_db:ddmrp_adjustment.view_ddmrp_adjustment_sheet_wizard_form
msgid ""
"Fill the factors to apply in each period for all the\n"
" selected Buffers."
msgstr ""
"Compilare i fattori da applicare in ogni periodo per tutti\n"
" i buffer selezionati."
#. module: ddmrp_adjustment
#: model_terms:ir.ui.view,arch_db:ddmrp_adjustment.view_ddmrp_adjustment_search
msgid "Group By"
msgstr "Raggruppa per"
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment__id
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_demand__id
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet__id
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet_line__id
msgid "ID"
msgstr "ID"
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment____last_update
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_demand____last_update
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet____last_update
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet_line____last_update
msgid "Last Modified on"
msgstr "Ultima modifica il"
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment__write_uid
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_demand__write_uid
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet__write_uid
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet_line__write_uid
msgid "Last Updated by"
msgstr "Ultimo aggiornamento di"
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment__write_date
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_demand__write_date
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet__write_date
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet_line__write_date
msgid "Last Updated on"
msgstr "Ultimo aggiornamento il"
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet__apply_ltaf
#: model:ir.model.fields.selection,name:ddmrp_adjustment.selection__ddmrp_adjustment__adjustment_type__ltaf
msgid "Lead Time Adjustment Factor"
msgstr "Fattore tempo esecuzione aggiustamento"
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment__location_id
msgid "Location"
msgstr "Ubicazione"
#. module: ddmrp_adjustment
#: model_terms:ir.ui.view,arch_db:ddmrp_adjustment.view_ddmrp_adjustment_search
msgid "Not Expired"
msgstr "Non scaduto"
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_demand__product_origin_id
msgid "Origin Product"
msgstr "Prodotto origine"
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_demand__buffer_origin_id
msgid "Originated from"
msgstr "Originato da"
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_stock_buffer__parent_daf_applied
msgid "Parent Daf Applied"
msgstr "DAF padre applicato"
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_stock_buffer__parent_daf_text
msgid "Parent Daf Text"
msgstr "Testo DAF padre"
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet_line__date_range_id
#: model_terms:ir.ui.view,arch_db:ddmrp_adjustment.view_ddmrp_adjustment_sheet_wizard_form
msgid "Period"
msgstr "Periodo"
#. module: ddmrp_adjustment
#: model_terms:ir.ui.view,arch_db:ddmrp_adjustment.view_ddmrp_adjustment_sheet_wizard_form
msgid "Periods"
msgstr "Periodi"
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_stock_buffer__pre_daf_adu
msgid "Pre Daf Adu"
msgstr "ADU pre DAF"
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment__product_id
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_demand__product_id
msgid "Product"
msgstr "Prodotto"
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet_line__sheet_id
#: model_terms:ir.ui.view,arch_db:ddmrp_adjustment.view_ddmrp_adjustment_sheet_wizard_form
msgid "Sheet"
msgstr "Foglio"
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment__date_start
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_demand__date_start
msgid "Start date"
msgstr "Data inizio"
#. module: ddmrp_adjustment
#: model:ir.model,name:ddmrp_adjustment.model_stock_buffer
msgid "Stock Buffer"
msgstr "Buffer di materiale"
#. module: ddmrp_adjustment
#. odoo-python
#: code:addons/ddmrp_adjustment/wizards/ddmrp_adjustment_sheet.py:0
#, python-format
msgid "The start date cannot be later than the end date."
msgstr "La data di inizio non può essere successiva alla data di fine."
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_demand__product_uom_id
msgid "Unit of Measure"
msgstr "Unità di misura"
#. module: ddmrp_adjustment
#: model_terms:ir.ui.view,arch_db:ddmrp_adjustment.view_ddmrp_adjustment_sheet_wizard_form
msgid "Validate"
msgstr "Valida"
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment__value
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet_line__value
msgid "Value"
msgstr "Valore"
#. module: ddmrp_adjustment
#: model_terms:ir.ui.view,arch_db:ddmrp_adjustment.stock_buffer_view_form
msgid "View DAFs Affecting Actual ADU"
msgstr "Visualizza DAF riguardanti l'ADU attuale"
#. module: ddmrp_adjustment
#: model_terms:ir.ui.view,arch_db:ddmrp_adjustment.stock_buffer_view_form
msgid "View Demand from parent DAFs Affecting Actual ADU"
msgstr "Visualizza la richiesta dal DAF padre che influenza l'ADU attuale"
#. module: ddmrp_adjustment
#. odoo-python
#: code:addons/ddmrp_adjustment/wizards/ddmrp_adjustment_sheet.py:0
#, python-format
msgid "You must apply at least one factor"
msgstr "Bisogna applicare almeno un fattore"
#. module: ddmrp_adjustment
#. odoo-python
#: code:addons/ddmrp_adjustment/wizards/ddmrp_adjustment_sheet.py:0
#, python-format
msgid "You must select at least one buffer."
msgstr "Bisogna selezionare almeno un buffer."
#. module: ddmrp_adjustment
#: model_terms:ir.ui.view,arch_db:ddmrp_adjustment.view_ddmrp_adjustment_sheet_wizard_form
msgid "to"
msgstr "a"
#~ msgid "DAF: *"
#~ msgstr "DAF: *"
#, python-format
#~ msgid "Demand Allocated to Components"
#~ msgstr "Fabbisogno allocato ai componenti"
#~ msgid "View DAF Affecting Actual ADU"
#~ msgstr "Visualizza DAF riguardante l'ADU attuale"

View file

@ -0,0 +1,388 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * ddmrp_adjustment
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 14.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2024-05-29 15:36+0000\n"
"Last-Translator: Rodrigo Macedo <sottomaiormacedotec@users.noreply."
"translation.odoo-community.org>\n"
"Language-Team: none\n"
"Language: pt_BR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=n > 1;\n"
"X-Generator: Weblate 4.17\n"
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment__adjustment_type
msgid "Adjustment Type"
msgstr ""
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet__line_ids
msgid "Adjustments"
msgstr ""
#. module: ddmrp_adjustment
#: model_terms:ir.ui.view,arch_db:ddmrp_adjustment.view_ddmrp_adjustment_search
msgid "Affecting Currently"
msgstr ""
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_demand__buffer_id
msgid "Apply to"
msgstr ""
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment__buffer_id
#: model_terms:ir.ui.view,arch_db:ddmrp_adjustment.view_ddmrp_adjustment_search
msgid "Buffer"
msgstr ""
#. module: ddmrp_adjustment
#: model:ir.model,name:ddmrp_adjustment.model_ddmrp_adjustment_sheet
msgid "Buffer Adjustment Sheet"
msgstr ""
#. module: ddmrp_adjustment
#: model:ir.model,name:ddmrp_adjustment.model_ddmrp_adjustment_sheet_line
msgid "Buffer Adjustment Sheet Line"
msgstr ""
#. module: ddmrp_adjustment
#: model:ir.actions.act_window,name:ddmrp_adjustment.ddmrp_adjustment_action
#: model:ir.ui.menu,name:ddmrp_adjustment.menu_ddmrp_adjustment
msgid "Buffer Adjustments"
msgstr ""
#. module: ddmrp_adjustment
#: model:ir.actions.act_window,name:ddmrp_adjustment.ddmrp_adjustment_demand_action
msgid "Buffer Adjustments Demand"
msgstr ""
#. module: ddmrp_adjustment
#: model_terms:ir.ui.view,arch_db:ddmrp_adjustment.view_ddmrp_adjustment_sheet_wizard_form
msgid "Buffer Adjustments Wizard"
msgstr ""
#. module: ddmrp_adjustment
#: model_terms:ir.ui.view,arch_db:ddmrp_adjustment.view_ddmrp_adjustment_sheet_wizard_form
msgid "Buffers"
msgstr ""
#. module: ddmrp_adjustment
#: model_terms:ir.ui.view,arch_db:ddmrp_adjustment.view_ddmrp_adjustment_sheet_wizard_form
msgid "Cancel"
msgstr ""
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment__company_id
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_demand__company_id
msgid "Company"
msgstr ""
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_stock_buffer__count_ddmrp_adjustment_demand
msgid "Count Ddmrp Adjustment Demand"
msgstr ""
#. module: ddmrp_adjustment
#: model:ir.actions.act_window,name:ddmrp_adjustment.action_ddmrp_adjustment_sheet_wizard
#: model:ir.ui.menu,name:ddmrp_adjustment.menu_ddmrp_adjustment_sheet_wizard
msgid "Create Buffer Adjustments"
msgstr ""
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment__create_uid
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_demand__create_uid
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet__create_uid
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet_line__create_uid
msgid "Created by"
msgstr ""
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment__create_date
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_demand__create_date
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet__create_date
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet_line__create_date
msgid "Created on"
msgstr ""
#. module: ddmrp_adjustment
#: model_terms:ir.ui.view,arch_db:ddmrp_adjustment.stock_buffer_view_form
msgid "DAF Demand Allocation"
msgstr ""
#. module: ddmrp_adjustment
#: model:ir.model,name:ddmrp_adjustment.model_ddmrp_adjustment
msgid "DDMRP Adjustment"
msgstr ""
#. module: ddmrp_adjustment
#: model:ir.model,name:ddmrp_adjustment.model_ddmrp_adjustment_demand
msgid "DDMRP Adjustment Demand"
msgstr ""
#. module: ddmrp_adjustment
#. odoo-python
#: code:addons/ddmrp_adjustment/wizards/ddmrp_adjustment_sheet.py:0
#, python-format
msgid "DDMRP Buffer Adjustment"
msgstr ""
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet__buffer_ids
msgid "DDMRP Buffers"
msgstr ""
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_stock_buffer__daf_applied
msgid "Daf Applied"
msgstr ""
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_stock_buffer__daf_text
msgid "Daf Text"
msgstr ""
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet__date_start
msgid "Date From"
msgstr ""
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment__date_range_id
msgid "Date Range"
msgstr ""
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet__date_range_type_id
msgid "Date Range Type"
msgstr ""
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet__date_end
msgid "Date To"
msgstr ""
#. module: ddmrp_adjustment
#: model:ir.model.fields,help:ddmrp_adjustment.field_ddmrp_adjustment_demand__product_uom_id
msgid "Default unit of measure used for all stock operations."
msgstr ""
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet__apply_daf
#: model:ir.model.fields.selection,name:ddmrp_adjustment.selection__ddmrp_adjustment__adjustment_type__daf
msgid "Demand Adjustment Factor"
msgstr ""
#. module: ddmrp_adjustment
#: model:ir.model.fields,help:ddmrp_adjustment.field_stock_buffer__extra_demand_ids
msgid ""
"Demand associated to Demand Adjustment Factors applied to parent buffers."
msgstr ""
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment__display_name
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_demand__display_name
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet__display_name
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet_line__display_name
msgid "Display Name"
msgstr ""
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment__date_end
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_demand__date_end
msgid "End date"
msgstr ""
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_demand__extra_demand
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_stock_buffer__extra_demand_ids
msgid "Extra Demand"
msgstr ""
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet_line__factor
msgid "Factors"
msgstr ""
#. module: ddmrp_adjustment
#: model_terms:ir.ui.view,arch_db:ddmrp_adjustment.view_ddmrp_adjustment_sheet_wizard_form
msgid "Factors to Apply"
msgstr ""
#. module: ddmrp_adjustment
#: model_terms:ir.ui.view,arch_db:ddmrp_adjustment.view_ddmrp_adjustment_sheet_wizard_form
msgid ""
"Fill the factors to apply in each period for all the\n"
" selected Buffers."
msgstr ""
#. module: ddmrp_adjustment
#: model_terms:ir.ui.view,arch_db:ddmrp_adjustment.view_ddmrp_adjustment_search
msgid "Group By"
msgstr ""
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment__id
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_demand__id
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet__id
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet_line__id
msgid "ID"
msgstr ""
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment____last_update
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_demand____last_update
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet____last_update
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet_line____last_update
msgid "Last Modified on"
msgstr ""
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment__write_uid
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_demand__write_uid
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet__write_uid
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet_line__write_uid
msgid "Last Updated by"
msgstr ""
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment__write_date
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_demand__write_date
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet__write_date
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet_line__write_date
msgid "Last Updated on"
msgstr ""
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet__apply_ltaf
#: model:ir.model.fields.selection,name:ddmrp_adjustment.selection__ddmrp_adjustment__adjustment_type__ltaf
msgid "Lead Time Adjustment Factor"
msgstr ""
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment__location_id
msgid "Location"
msgstr ""
#. module: ddmrp_adjustment
#: model_terms:ir.ui.view,arch_db:ddmrp_adjustment.view_ddmrp_adjustment_search
msgid "Not Expired"
msgstr ""
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_demand__product_origin_id
msgid "Origin Product"
msgstr ""
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_demand__buffer_origin_id
msgid "Originated from"
msgstr ""
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_stock_buffer__parent_daf_applied
msgid "Parent Daf Applied"
msgstr ""
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_stock_buffer__parent_daf_text
msgid "Parent Daf Text"
msgstr ""
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet_line__date_range_id
#: model_terms:ir.ui.view,arch_db:ddmrp_adjustment.view_ddmrp_adjustment_sheet_wizard_form
msgid "Period"
msgstr ""
#. module: ddmrp_adjustment
#: model_terms:ir.ui.view,arch_db:ddmrp_adjustment.view_ddmrp_adjustment_sheet_wizard_form
msgid "Periods"
msgstr ""
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_stock_buffer__pre_daf_adu
msgid "Pre Daf Adu"
msgstr ""
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment__product_id
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_demand__product_id
msgid "Product"
msgstr ""
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet_line__sheet_id
#: model_terms:ir.ui.view,arch_db:ddmrp_adjustment.view_ddmrp_adjustment_sheet_wizard_form
msgid "Sheet"
msgstr ""
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment__date_start
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_demand__date_start
msgid "Start date"
msgstr ""
#. module: ddmrp_adjustment
#: model:ir.model,name:ddmrp_adjustment.model_stock_buffer
msgid "Stock Buffer"
msgstr "Buffer de estoque"
#. module: ddmrp_adjustment
#. odoo-python
#: code:addons/ddmrp_adjustment/wizards/ddmrp_adjustment_sheet.py:0
#, python-format
msgid "The start date cannot be later than the end date."
msgstr ""
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_demand__product_uom_id
msgid "Unit of Measure"
msgstr ""
#. module: ddmrp_adjustment
#: model_terms:ir.ui.view,arch_db:ddmrp_adjustment.view_ddmrp_adjustment_sheet_wizard_form
msgid "Validate"
msgstr ""
#. module: ddmrp_adjustment
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment__value
#: model:ir.model.fields,field_description:ddmrp_adjustment.field_ddmrp_adjustment_sheet_line__value
msgid "Value"
msgstr ""
#. module: ddmrp_adjustment
#: model_terms:ir.ui.view,arch_db:ddmrp_adjustment.stock_buffer_view_form
msgid "View DAFs Affecting Actual ADU"
msgstr ""
#. module: ddmrp_adjustment
#: model_terms:ir.ui.view,arch_db:ddmrp_adjustment.stock_buffer_view_form
msgid "View Demand from parent DAFs Affecting Actual ADU"
msgstr ""
#. module: ddmrp_adjustment
#. odoo-python
#: code:addons/ddmrp_adjustment/wizards/ddmrp_adjustment_sheet.py:0
#, python-format
msgid "You must apply at least one factor"
msgstr ""
#. module: ddmrp_adjustment
#. odoo-python
#: code:addons/ddmrp_adjustment/wizards/ddmrp_adjustment_sheet.py:0
#, python-format
msgid "You must select at least one buffer."
msgstr ""
#. module: ddmrp_adjustment
#: model_terms:ir.ui.view,arch_db:ddmrp_adjustment.view_ddmrp_adjustment_sheet_wizard_form
msgid "to"
msgstr ""

View file

@ -0,0 +1,3 @@
from . import ddmrp_adjustment
from . import stock_buffer
from . import ddmrp_adjustment_demand

View file

@ -0,0 +1,46 @@
# Copyright 2017-24 ForgeFlow S.L. (https://www.forgeflow.com)
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
from odoo import fields, models
DAF_string = "DAF"
LTAF_string = "LTAF"
class DdmrpAdjustment(models.Model):
_name = "ddmrp.adjustment"
_description = "DDMRP Adjustment"
buffer_id = fields.Many2one(
comodel_name="stock.buffer",
string="Buffer",
required=True,
)
product_id = fields.Many2one(
comodel_name="product.product",
related="buffer_id.product_id",
readonly=True,
)
location_id = fields.Many2one(
comodel_name="stock.location",
related="buffer_id.location_id",
readonly=True,
)
date_range_id = fields.Many2one(
comodel_name="date.range",
string="Date Range",
required=True,
)
adjustment_type = fields.Selection(
selection=[
(DAF_string, "Demand Adjustment Factor"),
(LTAF_string, "Lead Time Adjustment Factor"),
],
)
value = fields.Float(group_operator="avg")
company_id = fields.Many2one(
comodel_name="res.company",
related="buffer_id.company_id",
)
date_start = fields.Date(related="date_range_id.date_start")
date_end = fields.Date(related="date_range_id.date_end")

View file

@ -0,0 +1,41 @@
# Copyright 2017-20 ForgeFlow S.L. (https://www.forgeflow.com)
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
from odoo import fields, models
class DdmrpAdjustmentDemand(models.Model):
_name = "ddmrp.adjustment.demand"
_description = "DDMRP Adjustment Demand"
buffer_id = fields.Many2one(
comodel_name="stock.buffer",
string="Apply to",
)
product_id = fields.Many2one(related="buffer_id.product_id")
buffer_origin_id = fields.Many2one(
comodel_name="stock.buffer",
string="Originated from",
required=True,
ondelete="cascade",
)
product_origin_id = fields.Many2one(
related="buffer_origin_id.product_id",
string="Origin Product",
)
extra_demand = fields.Float()
product_uom_id = fields.Many2one(
comodel_name="uom.uom",
string="Unit of Measure",
related="buffer_id.product_uom",
)
date_start = fields.Date(
string="Start date",
)
date_end = fields.Date(
string="End date",
)
company_id = fields.Many2one(
comodel_name="res.company",
related="buffer_id.company_id",
)

View file

@ -0,0 +1,233 @@
# Copyright 2017-24 ForgeFlow S.L. (https://www.forgeflow.com)
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
import logging
from datetime import timedelta as td
from odoo import api, fields, models
from ..models.ddmrp_adjustment import DAF_string, LTAF_string
_logger = logging.getLogger(__name__)
class StockBuffer(models.Model):
_inherit = "stock.buffer"
extra_demand_ids = fields.One2many(
comodel_name="ddmrp.adjustment.demand",
string="Extra Demand",
inverse_name="buffer_id",
help="Demand associated to Demand Adjustment Factors applied to "
"parent buffers.",
)
daf_text = fields.Char(compute="_compute_daf_text")
parent_daf_text = fields.Char(compute="_compute_daf_text")
pre_daf_adu = fields.Float(readonly=True)
daf_applied = fields.Float(default=-1, readonly=True)
parent_daf_applied = fields.Float(default=-1, readonly=True)
count_ddmrp_adjustment_demand = fields.Integer(
compute="_compute_count_ddmrp_adjustment_demand"
)
def _compute_count_ddmrp_adjustment_demand(self):
for rec in self:
rec.count_ddmrp_adjustment_demand = len(
self.env["ddmrp.adjustment.demand"].search(
[("buffer_origin_id", "=", rec.id)]
)
)
@api.depends("daf_applied", "parent_daf_applied")
def _compute_daf_text(self):
for rec in self:
rec.daf_text = "DAF: *" + str(round(rec.daf_applied, 2))
rec.parent_daf_text = "P. DAF: +" + str(round(rec.parent_daf_applied, 2))
def _daf_to_apply_domain(self, current=True):
self.ensure_one()
today = fields.Date.today()
domain = [
("buffer_id", "=", self.id),
("adjustment_type", "=", DAF_string),
("date_range_id.date_end", ">=", today),
]
if current:
domain.append(("date_range_id.date_start", "<=", today))
return domain
def _calc_adu(self):
# Apply DAFs if existing for the buffer.
res = super()._calc_adu()
for rec in self:
self.env["ddmrp.adjustment.demand"].search(
[("buffer_origin_id", "=", rec.id)]
).unlink()
dafs_to_apply = self.env["ddmrp.adjustment"].search(
rec._daf_to_apply_domain()
)
rec.daf_applied = -1
if dafs_to_apply:
rec.daf_applied = 1
values = dafs_to_apply.mapped("value")
for val in values:
rec.daf_applied *= val
rec.pre_daf_adu = rec.adu
rec.adu *= rec.daf_applied
_logger.debug(
"DAF={} applied to {}. ADU: {} -> {}".format(
rec.daf_applied, rec.name, rec.pre_daf_adu, rec.adu
)
)
# Compute generated demand to be applied to components:
dafs_to_explode = self.env["ddmrp.adjustment"].search(
rec._daf_to_apply_domain(False)
)
for daf in dafs_to_explode:
prev = rec.adu
increased_demand = prev * daf.value - prev
rec.explode_demand_to_components(daf, increased_demand, rec.product_uom)
return res
def explode_demand_to_components(self, daf, demand, uom_id):
demand_obj = self.env["ddmrp.adjustment.demand"]
init_bom = self._get_manufactured_bom()
if not init_bom:
return
def _get_extra_demand(bom, line, buffer_id, factor):
qty = factor * line.product_qty / bom.product_qty
extra = line.product_uom_id._compute_quantity(qty, buffer_id.product_uom)
return extra
def _create_demand(bom, factor=1, level=0, clt=0):
level += 1
produce_delay = (
bom[0].product_id.produce_delay or bom[0].product_tmpl_id.produce_delay
)
clt += produce_delay
for line in bom.bom_line_ids:
if line.is_buffered:
buffer_id = line.buffer_id
extra_demand = _get_extra_demand(bom, line, buffer_id, factor)
date_start = daf.date_range_id.date_start - td(days=clt)
date_end = daf.date_range_id.date_end - td(days=clt)
demand_obj.sudo().create(
{
"buffer_id": buffer_id.id,
"buffer_origin_id": self.id,
"extra_demand": extra_demand,
"date_start": date_start,
"date_end": date_end,
}
)
location = line.location_id
line_boms = line.product_id.bom_ids
child_bom = line_boms.filtered(
lambda bom: bom.location_id == location
) or line_boms.filtered(lambda b: not b.location_id)
if child_bom:
line_qty = line.product_uom_id._compute_quantity(
line.product_qty, child_bom.product_uom_id
)
new_factor = factor * line_qty / bom.product_qty
_create_demand(child_bom[0], new_factor, level, clt)
initial_factor = uom_id._compute_quantity(demand, init_bom.product_uom_id)
_create_demand(init_bom, factor=initial_factor)
return True
@api.model
def cron_ddmrp_adu(self, automatic=False):
"""Apply extra demand originated by Demand Adjustment Factors to
components after the cron update of all the buffers."""
res = super().cron_ddmrp_adu(automatic)
today = fields.Date.today()
self.search(
[("parent_daf_applied", "!=", -1), ("extra_demand_ids", "=", False)]
).write({"parent_daf_applied": -1})
for op in self.search([("extra_demand_ids", "!=", False)]):
op.parent_daf_applied = -1
daf_parent = sum(
op.extra_demand_ids.filtered(
lambda r: r.date_start <= today <= r.date_end
).mapped("extra_demand")
)
if daf_parent:
op.parent_daf_applied = daf_parent
op.adu += op.parent_daf_applied
_logger.debug(
"DAFs-originated demand applied. {}: ADU += {}".format(
op.name, op.parent_daf_applied
)
)
return res
def _ltaf_to_apply_domain(self):
self.ensure_one()
today = fields.Date.today()
return [
("buffer_id", "=", self.id),
("adjustment_type", "=", LTAF_string),
("date_range_id.date_start", "<=", today),
("date_range_id.date_end", ">=", today),
]
def _compute_dlt(self):
"""Apply Lead Time Adj Factor if existing"""
res = super()._compute_dlt()
for rec in self:
ltaf_to_apply = self.env["ddmrp.adjustment"].search(
rec._ltaf_to_apply_domain()
)
if ltaf_to_apply:
ltaf = 1
values = ltaf_to_apply.mapped("value")
for val in values:
ltaf *= val
prev = rec.dlt
rec.dlt *= ltaf
_logger.debug(
"LTAF=%s applied to %s. DLT: %s -> %s"
% (ltaf, rec.name, prev, rec.dlt)
)
return res
def action_archive(self):
self.env["ddmrp.adjustment.demand"].search(
[("buffer_origin_id", "in", self.ids)]
).unlink()
return super().action_archive()
def action_view_demand_to_components(self):
demand_ids = (
self.env["ddmrp.adjustment.demand"]
.search([("buffer_origin_id", "=", self.id)])
.ids
)
action = self.env["ir.actions.act_window"]._for_xml_id(
"ddmrp_adjustment.ddmrp_adjustment_demand_action"
)
action["domain"] = [("id", "in", demand_ids)]
return action
def action_view_affecting_adu(self):
demand_ids = (
self.env["ddmrp.adjustment"]
.search(self._daf_to_apply_domain(current=False))
.ids
)
action = self.env["ir.actions.act_window"]._for_xml_id(
"ddmrp_adjustment.ddmrp_adjustment_action"
)
action["domain"] = [("id", "in", demand_ids)]
action["context"] = {"search_default_current": 1}
return action
def action_view_parent_affecting_adu(self):
demand_ids = self.extra_demand_ids.ids
action = self.env["ir.actions.act_window"]._for_xml_id(
"ddmrp_adjustment.ddmrp_adjustment_demand_action"
)
action["domain"] = [("id", "in", demand_ids)]
return action

View file

@ -0,0 +1,3 @@
* Lois Rilo <lois.rilo@forgeflow.com>
* Jordi Ballester <jordi.ballester@forgeflow.com>
* Akim Juillerat <akim.juillerat@camptocamp.com>

View file

@ -0,0 +1,12 @@
Allow to extend DDMRP App to be able to apply Adjustments for dynamically
altering buffers for planned or anticipated events. This include:
* **Demand Adjustment Factor (DAF)**: is a manipulation of the ADU input
within a specific time period. The system will look for existing DAFs when
computing the ADU for each buffer and apply them. The system will also
explode the resulting increase in demand of parent buffers to all their
children buffers using the BoM.
* **Lead Time Adjustment Factor (LTAF)**: manipulates the Decoupled Lead Time
for an individual part or group of parts (buffer profile, same partner...)
to adjust for a planned or known expansions of LT.
* Zone Adjustment Factor (ZAF): pending to implement

View file

@ -0,0 +1,29 @@
16.0.1.0.0 (2023-12-05)
~~~~~~~~~~~~~~~~~~~~~~~
* Standard migration to v16.
15.0.1.0.0 (2022-03-04)
~~~~~~~~~~~~~~~~~~~~~~~
* Standard migration to v15.
14.0.1.0.0 (2021-06-17)
~~~~~~~~~~~~~~~~~~~~~~~
* Standard migration to v14.
13.0.1.0.0 (2020-07-02)
~~~~~~~~~~~~~~~~~~~~~~~
* Standard migration to v13.
11.0.1.1.0 (2019-02-01)
~~~~~~~~~~~~~~~~~~~~~~~
* Refactor data model to reduce complexity. Functionality unchanged.
11.0.1.0.0 (2018-08-01)
~~~~~~~~~~~~~~~~~~~~~~~
* Start of the history

View file

@ -0,0 +1,3 @@
* Implement new factors
* Reuse existing factor and modify them instead of always creating new ones.
* Add small graph view in buffer form as a way to overview DAFs.

View file

@ -0,0 +1,11 @@
To plan buffer adjustments act as follows:
#. Click on *Inventory > Demand Planning > Create Buffer Adjustments*.
#. In the popup window fill the *Period* and *Date Range Type* to perform
your planning.
#. Check the boxes of the *Factor to Apply* in which you are interested.
#. Select the DDMRP Buffers where to apply this factors.
#. Under the title *Sheet* you will see a generated sheet in which you can
fill the values for each period.
#. Click *Validate* to confirm your planning and the system will end up
showing you the newly created DDMRP adjustment records.

View file

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo noupdate="0">
<record model="ir.rule" id="stock_buffer_profile_variability_comp_rule">
<field name="name">DDMRP adjustment multi-company</field>
<field name="model_id" ref="model_ddmrp_adjustment" />
<field name="global" eval="True" />
<field
name="domain_force"
>['|',('company_id','=',False),('company_id', 'in', company_ids)]</field>
</record>
</odoo>

View file

@ -0,0 +1,11 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
ddmrp_adjustment_access_user,ddmrp.adjustment.user,model_ddmrp_adjustment,stock.group_stock_user,1,0,0,0
ddmrp_adjustment_access_manager,ddmrp.adjustment.manager,model_ddmrp_adjustment,ddmrp.group_ddmrp_manager,1,1,1,1
ddmrp_adjustment_access_buffer_maintainer,ddmrp.adjustment.buffer.maintainer,model_ddmrp_adjustment,ddmrp.group_stock_buffer_maintainer,1,1,1,1
ddmrp_adjustment_access_sheet_manager,ddmrp.adjustment.sheet.manager,model_ddmrp_adjustment_sheet,ddmrp.group_ddmrp_manager,1,1,1,1
ddmrp_adjustment_access_sheet_buffer_maintainer,ddmrp.adjustment.sheet.buffer.maintainer,model_ddmrp_adjustment_sheet,ddmrp.group_stock_buffer_maintainer,1,1,1,1
ddmrp_adjustment_access_sheet_line_manager,ddmrp.adjustment.sheet.line.manager,model_ddmrp_adjustment_sheet_line,ddmrp.group_ddmrp_manager,1,1,1,1
ddmrp_adjustment_access_sheet_line_buffer_maintainer,ddmrp.adjustment.sheet.line.buffer.maintainer,model_ddmrp_adjustment_sheet_line,ddmrp.group_stock_buffer_maintainer,1,1,1,1
ddmrp_adjustment_access_demand_user,ddmrp.adjustment.demand.user,model_ddmrp_adjustment_demand,stock.group_stock_user,1,0,0,0
ddmrp_adjustment_access_demand_manager,ddmrp.adjustment.demand.manager,model_ddmrp_adjustment_demand,ddmrp.group_ddmrp_manager,1,1,1,1
ddmrp_adjustment_access_demand_buffer_maintainer,ddmrp.adjustment.buffer.maintainer,model_ddmrp_adjustment_demand,ddmrp.group_stock_buffer_maintainer,1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 ddmrp_adjustment_access_user ddmrp.adjustment.user model_ddmrp_adjustment stock.group_stock_user 1 0 0 0
3 ddmrp_adjustment_access_manager ddmrp.adjustment.manager model_ddmrp_adjustment ddmrp.group_ddmrp_manager 1 1 1 1
4 ddmrp_adjustment_access_buffer_maintainer ddmrp.adjustment.buffer.maintainer model_ddmrp_adjustment ddmrp.group_stock_buffer_maintainer 1 1 1 1
5 ddmrp_adjustment_access_sheet_manager ddmrp.adjustment.sheet.manager model_ddmrp_adjustment_sheet ddmrp.group_ddmrp_manager 1 1 1 1
6 ddmrp_adjustment_access_sheet_buffer_maintainer ddmrp.adjustment.sheet.buffer.maintainer model_ddmrp_adjustment_sheet ddmrp.group_stock_buffer_maintainer 1 1 1 1
7 ddmrp_adjustment_access_sheet_line_manager ddmrp.adjustment.sheet.line.manager model_ddmrp_adjustment_sheet_line ddmrp.group_ddmrp_manager 1 1 1 1
8 ddmrp_adjustment_access_sheet_line_buffer_maintainer ddmrp.adjustment.sheet.line.buffer.maintainer model_ddmrp_adjustment_sheet_line ddmrp.group_stock_buffer_maintainer 1 1 1 1
9 ddmrp_adjustment_access_demand_user ddmrp.adjustment.demand.user model_ddmrp_adjustment_demand stock.group_stock_user 1 0 0 0
10 ddmrp_adjustment_access_demand_manager ddmrp.adjustment.demand.manager model_ddmrp_adjustment_demand ddmrp.group_ddmrp_manager 1 1 1 1
11 ddmrp_adjustment_access_demand_buffer_maintainer ddmrp.adjustment.buffer.maintainer model_ddmrp_adjustment_demand ddmrp.group_stock_buffer_maintainer 1 1 1 1

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

View file

@ -0,0 +1,518 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="generator" content="Docutils: https://docutils.sourceforge.io/" />
<title>README.rst</title>
<style type="text/css">
/*
:Author: David Goodger (goodger@python.org)
:Id: $Id: html4css1.css 9511 2024-01-13 09:50:07Z milde $
:Copyright: This stylesheet has been placed in the public domain.
Default cascading style sheet for the HTML output of Docutils.
Despite the name, some widely supported CSS2 features are used.
See https://docutils.sourceforge.io/docs/howto/html-stylesheets.html for how to
customize this style sheet.
*/
/* used to remove borders from tables and images */
.borderless, table.borderless td, table.borderless th {
border: 0 }
table.borderless td, table.borderless th {
/* Override padding for "table.docutils td" with "! important".
The right padding separates the table cells. */
padding: 0 0.5em 0 0 ! important }
.first {
/* Override more specific margin styles with "! important". */
margin-top: 0 ! important }
.last, .with-subtitle {
margin-bottom: 0 ! important }
.hidden {
display: none }
.subscript {
vertical-align: sub;
font-size: smaller }
.superscript {
vertical-align: super;
font-size: smaller }
a.toc-backref {
text-decoration: none ;
color: black }
blockquote.epigraph {
margin: 2em 5em ; }
dl.docutils dd {
margin-bottom: 0.5em }
object[type="image/svg+xml"], object[type="application/x-shockwave-flash"] {
overflow: hidden;
}
/* Uncomment (and remove this text!) to get bold-faced definition list terms
dl.docutils dt {
font-weight: bold }
*/
div.abstract {
margin: 2em 5em }
div.abstract p.topic-title {
font-weight: bold ;
text-align: center }
div.admonition, div.attention, div.caution, div.danger, div.error,
div.hint, div.important, div.note, div.tip, div.warning {
margin: 2em ;
border: medium outset ;
padding: 1em }
div.admonition p.admonition-title, div.hint p.admonition-title,
div.important p.admonition-title, div.note p.admonition-title,
div.tip p.admonition-title {
font-weight: bold ;
font-family: sans-serif }
div.attention p.admonition-title, div.caution p.admonition-title,
div.danger p.admonition-title, div.error p.admonition-title,
div.warning p.admonition-title, .code .error {
color: red ;
font-weight: bold ;
font-family: sans-serif }
/* Uncomment (and remove this text!) to get reduced vertical space in
compound paragraphs.
div.compound .compound-first, div.compound .compound-middle {
margin-bottom: 0.5em }
div.compound .compound-last, div.compound .compound-middle {
margin-top: 0.5em }
*/
div.dedication {
margin: 2em 5em ;
text-align: center ;
font-style: italic }
div.dedication p.topic-title {
font-weight: bold ;
font-style: normal }
div.figure {
margin-left: 2em ;
margin-right: 2em }
div.footer, div.header {
clear: both;
font-size: smaller }
div.line-block {
display: block ;
margin-top: 1em ;
margin-bottom: 1em }
div.line-block div.line-block {
margin-top: 0 ;
margin-bottom: 0 ;
margin-left: 1.5em }
div.sidebar {
margin: 0 0 0.5em 1em ;
border: medium outset ;
padding: 1em ;
background-color: #ffffee ;
width: 40% ;
float: right ;
clear: right }
div.sidebar p.rubric {
font-family: sans-serif ;
font-size: medium }
div.system-messages {
margin: 5em }
div.system-messages h1 {
color: red }
div.system-message {
border: medium outset ;
padding: 1em }
div.system-message p.system-message-title {
color: red ;
font-weight: bold }
div.topic {
margin: 2em }
h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
margin-top: 0.4em }
h1.title {
text-align: center }
h2.subtitle {
text-align: center }
hr.docutils {
width: 75% }
img.align-left, .figure.align-left, object.align-left, table.align-left {
clear: left ;
float: left ;
margin-right: 1em }
img.align-right, .figure.align-right, object.align-right, table.align-right {
clear: right ;
float: right ;
margin-left: 1em }
img.align-center, .figure.align-center, object.align-center {
display: block;
margin-left: auto;
margin-right: auto;
}
table.align-center {
margin-left: auto;
margin-right: auto;
}
.align-left {
text-align: left }
.align-center {
clear: both ;
text-align: center }
.align-right {
text-align: right }
/* reset inner alignment in figures */
div.align-right {
text-align: inherit }
/* div.align-center * { */
/* text-align: left } */
.align-top {
vertical-align: top }
.align-middle {
vertical-align: middle }
.align-bottom {
vertical-align: bottom }
ol.simple, ul.simple {
margin-bottom: 1em }
ol.arabic {
list-style: decimal }
ol.loweralpha {
list-style: lower-alpha }
ol.upperalpha {
list-style: upper-alpha }
ol.lowerroman {
list-style: lower-roman }
ol.upperroman {
list-style: upper-roman }
p.attribution {
text-align: right ;
margin-left: 50% }
p.caption {
font-style: italic }
p.credits {
font-style: italic ;
font-size: smaller }
p.label {
white-space: nowrap }
p.rubric {
font-weight: bold ;
font-size: larger ;
color: maroon ;
text-align: center }
p.sidebar-title {
font-family: sans-serif ;
font-weight: bold ;
font-size: larger }
p.sidebar-subtitle {
font-family: sans-serif ;
font-weight: bold }
p.topic-title {
font-weight: bold }
pre.address {
margin-bottom: 0 ;
margin-top: 0 ;
font: inherit }
pre.literal-block, pre.doctest-block, pre.math, pre.code {
margin-left: 2em ;
margin-right: 2em }
pre.code .ln { color: gray; } /* line numbers */
pre.code, code { background-color: #eeeeee }
pre.code .comment, code .comment { color: #5C6576 }
pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold }
pre.code .literal.string, code .literal.string { color: #0C5404 }
pre.code .name.builtin, code .name.builtin { color: #352B84 }
pre.code .deleted, code .deleted { background-color: #DEB0A1}
pre.code .inserted, code .inserted { background-color: #A3D289}
span.classifier {
font-family: sans-serif ;
font-style: oblique }
span.classifier-delimiter {
font-family: sans-serif ;
font-weight: bold }
span.interpreted {
font-family: sans-serif }
span.option {
white-space: nowrap }
span.pre {
white-space: pre }
span.problematic, pre.problematic {
color: red }
span.section-subtitle {
/* font-size relative to parent (h1..h6 element) */
font-size: 80% }
table.citation {
border-left: solid 1px gray;
margin-left: 1px }
table.docinfo {
margin: 2em 4em }
table.docutils {
margin-top: 0.5em ;
margin-bottom: 0.5em }
table.footnote {
border-left: solid 1px black;
margin-left: 1px }
table.docutils td, table.docutils th,
table.docinfo td, table.docinfo th {
padding-left: 0.5em ;
padding-right: 0.5em ;
vertical-align: top }
table.docutils th.field-name, table.docinfo th.docinfo-name {
font-weight: bold ;
text-align: left ;
white-space: nowrap ;
padding-left: 0 }
/* "booktabs" style (no vertical lines) */
table.docutils.booktabs {
border: 0px;
border-top: 2px solid;
border-bottom: 2px solid;
border-collapse: collapse;
}
table.docutils.booktabs * {
border: 0px;
}
table.docutils.booktabs th {
border-bottom: thin solid;
text-align: left;
}
h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
font-size: 100% }
ul.auto-toc {
list-style-type: none }
</style>
</head>
<body>
<div class="document">
<a class="reference external image-reference" href="https://odoo-community.org/get-involved?utm_source=readme">
<img alt="Odoo Community Association" src="https://odoo-community.org/readme-banner-image" />
</a>
<div class="section" id="ddmrp-adjustment">
<h1>DDMRP Adjustment</h1>
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:e763e870c7754e467a917869ec9b5c5f8213f2573e9a91f6633ae9c19d08532a
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<p><a class="reference external image-reference" href="https://odoo-community.org/page/development-status"><img alt="Beta" src="https://img.shields.io/badge/maturity-Beta-yellow.png" /></a> <a class="reference external image-reference" href="http://www.gnu.org/licenses/agpl-3.0-standalone.html"><img alt="License: AGPL-3" src="https://img.shields.io/badge/license-AGPL--3-blue.png" /></a> <a class="reference external image-reference" href="https://github.com/OCA/ddmrp/tree/16.0/ddmrp_adjustment"><img alt="OCA/ddmrp" src="https://img.shields.io/badge/github-OCA%2Fddmrp-lightgray.png?logo=github" /></a> <a class="reference external image-reference" href="https://translation.odoo-community.org/projects/ddmrp-16-0/ddmrp-16-0-ddmrp_adjustment"><img alt="Translate me on Weblate" src="https://img.shields.io/badge/weblate-Translate%20me-F47D42.png" /></a> <a class="reference external image-reference" href="https://runboat.odoo-community.org/builds?repo=OCA/ddmrp&amp;target_branch=16.0"><img alt="Try me on Runboat" src="https://img.shields.io/badge/runboat-Try%20me-875A7B.png" /></a></p>
<p>Allow to extend DDMRP App to be able to apply Adjustments for dynamically
altering buffers for planned or anticipated events. This include:</p>
<ul class="simple">
<li><strong>Demand Adjustment Factor (DAF)</strong>: is a manipulation of the ADU input
within a specific time period. The system will look for existing DAFs when
computing the ADU for each buffer and apply them. The system will also
explode the resulting increase in demand of parent buffers to all their
children buffers using the BoM.</li>
<li><strong>Lead Time Adjustment Factor (LTAF)</strong>: manipulates the Decoupled Lead Time
for an individual part or group of parts (buffer profile, same partner…)
to adjust for a planned or known expansions of LT.</li>
<li>Zone Adjustment Factor (ZAF): pending to implement</li>
</ul>
<p><strong>Table of contents</strong></p>
<div class="contents local topic" id="contents">
<ul class="simple">
<li><a class="reference internal" href="#usage" id="toc-entry-1">Usage</a></li>
<li><a class="reference internal" href="#known-issues-roadmap" id="toc-entry-2">Known issues / Roadmap</a></li>
<li><a class="reference internal" href="#changelog" id="toc-entry-3">Changelog</a><ul>
<li><a class="reference internal" href="#section-1" id="toc-entry-4">16.0.1.0.0 (2023-12-05)</a></li>
<li><a class="reference internal" href="#section-2" id="toc-entry-5">15.0.1.0.0 (2022-03-04)</a></li>
<li><a class="reference internal" href="#section-3" id="toc-entry-6">14.0.1.0.0 (2021-06-17)</a></li>
<li><a class="reference internal" href="#section-4" id="toc-entry-7">13.0.1.0.0 (2020-07-02)</a></li>
<li><a class="reference internal" href="#section-5" id="toc-entry-8">11.0.1.1.0 (2019-02-01)</a></li>
<li><a class="reference internal" href="#section-6" id="toc-entry-9">11.0.1.0.0 (2018-08-01)</a></li>
</ul>
</li>
<li><a class="reference internal" href="#bug-tracker" id="toc-entry-10">Bug Tracker</a></li>
<li><a class="reference internal" href="#credits" id="toc-entry-11">Credits</a><ul>
<li><a class="reference internal" href="#authors" id="toc-entry-12">Authors</a></li>
<li><a class="reference internal" href="#contributors" id="toc-entry-13">Contributors</a></li>
<li><a class="reference internal" href="#maintainers" id="toc-entry-14">Maintainers</a></li>
</ul>
</li>
</ul>
</div>
<div class="section" id="usage">
<h2><a class="toc-backref" href="#toc-entry-1">Usage</a></h2>
<p>To plan buffer adjustments act as follows:</p>
<ol class="arabic simple">
<li>Click on <em>Inventory &gt; Demand Planning &gt; Create Buffer Adjustments</em>.</li>
<li>In the popup window fill the <em>Period</em> and <em>Date Range Type</em> to perform
your planning.</li>
<li>Check the boxes of the <em>Factor to Apply</em> in which you are interested.</li>
<li>Select the DDMRP Buffers where to apply this factors.</li>
<li>Under the title <em>Sheet</em> you will see a generated sheet in which you can
fill the values for each period.</li>
<li>Click <em>Validate</em> to confirm your planning and the system will end up
showing you the newly created DDMRP adjustment records.</li>
</ol>
</div>
<div class="section" id="known-issues-roadmap">
<h2><a class="toc-backref" href="#toc-entry-2">Known issues / Roadmap</a></h2>
<ul class="simple">
<li>Implement new factors</li>
<li>Reuse existing factor and modify them instead of always creating new ones.</li>
<li>Add small graph view in buffer form as a way to overview DAFs.</li>
</ul>
</div>
<div class="section" id="changelog">
<h2><a class="toc-backref" href="#toc-entry-3">Changelog</a></h2>
<div class="section" id="section-1">
<h3><a class="toc-backref" href="#toc-entry-4">16.0.1.0.0 (2023-12-05)</a></h3>
<ul class="simple">
<li>Standard migration to v16.</li>
</ul>
</div>
<div class="section" id="section-2">
<h3><a class="toc-backref" href="#toc-entry-5">15.0.1.0.0 (2022-03-04)</a></h3>
<ul class="simple">
<li>Standard migration to v15.</li>
</ul>
</div>
<div class="section" id="section-3">
<h3><a class="toc-backref" href="#toc-entry-6">14.0.1.0.0 (2021-06-17)</a></h3>
<ul class="simple">
<li>Standard migration to v14.</li>
</ul>
</div>
<div class="section" id="section-4">
<h3><a class="toc-backref" href="#toc-entry-7">13.0.1.0.0 (2020-07-02)</a></h3>
<ul class="simple">
<li>Standard migration to v13.</li>
</ul>
</div>
<div class="section" id="section-5">
<h3><a class="toc-backref" href="#toc-entry-8">11.0.1.1.0 (2019-02-01)</a></h3>
<ul class="simple">
<li>Refactor data model to reduce complexity. Functionality unchanged.</li>
</ul>
</div>
<div class="section" id="section-6">
<h3><a class="toc-backref" href="#toc-entry-9">11.0.1.0.0 (2018-08-01)</a></h3>
<ul class="simple">
<li>Start of the history</li>
</ul>
</div>
</div>
<div class="section" id="bug-tracker">
<h2><a class="toc-backref" href="#toc-entry-10">Bug Tracker</a></h2>
<p>Bugs are tracked on <a class="reference external" href="https://github.com/OCA/ddmrp/issues">GitHub Issues</a>.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us to smash it by providing a detailed and welcomed
<a class="reference external" href="https://github.com/OCA/ddmrp/issues/new?body=module:%20ddmrp_adjustment%0Aversion:%2016.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**">feedback</a>.</p>
<p>Do not contact contributors directly about support or help with technical issues.</p>
</div>
<div class="section" id="credits">
<h2><a class="toc-backref" href="#toc-entry-11">Credits</a></h2>
<div class="section" id="authors">
<h3><a class="toc-backref" href="#toc-entry-12">Authors</a></h3>
<ul class="simple">
<li>ForgeFlow</li>
</ul>
</div>
<div class="section" id="contributors">
<h3><a class="toc-backref" href="#toc-entry-13">Contributors</a></h3>
<ul class="simple">
<li>Lois Rilo &lt;<a class="reference external" href="mailto:lois.rilo&#64;forgeflow.com">lois.rilo&#64;forgeflow.com</a>&gt;</li>
<li>Jordi Ballester &lt;<a class="reference external" href="mailto:jordi.ballester&#64;forgeflow.com">jordi.ballester&#64;forgeflow.com</a>&gt;</li>
<li>Akim Juillerat &lt;<a class="reference external" href="mailto:akim.juillerat&#64;camptocamp.com">akim.juillerat&#64;camptocamp.com</a>&gt;</li>
</ul>
</div>
<div class="section" id="maintainers">
<h3><a class="toc-backref" href="#toc-entry-14">Maintainers</a></h3>
<p>This module is maintained by the OCA.</p>
<a class="reference external image-reference" href="https://odoo-community.org">
<img alt="Odoo Community Association" src="https://odoo-community.org/logo.png" />
</a>
<p>OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.</p>
<p>Current <a class="reference external" href="https://odoo-community.org/page/maintainer-role">maintainers</a>:</p>
<p><a class="reference external image-reference" href="https://github.com/JordiBForgeFlow"><img alt="JordiBForgeFlow" src="https://github.com/JordiBForgeFlow.png?size=40px" /></a> <a class="reference external image-reference" href="https://github.com/LoisRForgeFlow"><img alt="LoisRForgeFlow" src="https://github.com/LoisRForgeFlow.png?size=40px" /></a></p>
<p>This module is part of the <a class="reference external" href="https://github.com/OCA/ddmrp/tree/16.0/ddmrp_adjustment">OCA/ddmrp</a> project on GitHub.</p>
<p>You are welcome to contribute. To learn how please visit <a class="reference external" href="https://odoo-community.org/page/Contribute">https://odoo-community.org/page/Contribute</a>.</p>
</div>
</div>
</div>
</div>
</body>
</html>

View file

@ -0,0 +1,2 @@
from . import test_adjustment_wizard
from . import test_adu_dlt_adjustment

View file

@ -0,0 +1,48 @@
# Copyright 2018 Camptocamp SA
# Copyright 2020 ForgeFlow S.L. (https://www.forgeflow.com)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from dateutil.relativedelta import relativedelta
from .test_common import TestDDMRPAdjustmentCommon
class TestAdjustmentWizard(TestDDMRPAdjustmentCommon):
def test_adjustment_generation(self):
wiz = self._create_adjustment_wizard(3)
self.assertEqual(len(wiz.line_ids), 0)
wiz.apply_daf = True
wiz.apply_ltaf = True
wiz._onchange_sheet()
self.assertEqual(len(wiz.line_ids), 6)
next_month = self.now + relativedelta(months=1)
following_month = self.now + relativedelta(months=2)
values = {
"DAF": {
getattr(self, "month_%i_%i" % (self.now.year, self.now.month)): 1.5,
getattr(self, "month_%i_%i" % (next_month.year, next_month.month)): 2,
getattr(
self, "month_%i_%i" % (following_month.year, following_month.month)
): 1.8,
},
"LTAF": {
getattr(self, "month_%i_%i" % (self.now.year, self.now.month)): 2,
getattr(self, "month_%i_%i" % (next_month.year, next_month.month)): 2.5,
getattr(
self, "month_%i_%i" % (following_month.year, following_month.month)
): 2,
},
}
for line in wiz.line_ids:
line.value = values.get(line.factor).get(line.date_range_id)
demand_adjustment_ids = wiz.button_validate().get("domain")[0][2]
self.assertEqual(len(demand_adjustment_ids), 6)
adjustments = self.env["ddmrp.adjustment"].browse(demand_adjustment_ids)
for adj in adjustments:
self.assertEqual(adj.buffer_id, self.buffer)
if adj.adjustment_type == "DAF":
self.assertEqual(adj.value, values.get("DAF").get(adj.date_range_id))
if adj.adjustment_type == "LTAF":
self.assertEqual(adj.value, values.get("LTAF").get(adj.date_range_id))

View file

@ -0,0 +1,52 @@
# Copyright 2018 Camptocamp SA
# Copyright 2020 ForgeFlow S.L. (https://www.forgeflow.com)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from .test_common import TestDDMRPAdjustmentCommon
class TestAduAdjustment(TestDDMRPAdjustmentCommon):
def setUp(self):
super().setUp()
self.env["stock.buffer"].cron_ddmrp_adu()
self.buffer._compute_dlt()
self.adu_before = self.buffer.adu
self.dlt_before = self.buffer.dlt
def test_adu_adjustment(self):
wiz = self._create_adjustment_wizard(1)
wiz.apply_daf = True
wiz._onchange_sheet()
values = {
getattr(self, "month_%i_%i" % (self.now.year, self.now.month)): 1.5,
}
for line in wiz.line_ids:
line.value = values.get(line.date_range_id)
wiz.button_validate()
self.env["stock.buffer"].cron_ddmrp_adu()
self.assertEqual(self.buffer.adu, self.adu_before * 1.5)
def test_dlt_adjustment(self):
wiz = self._create_adjustment_wizard(1)
wiz.apply_ltaf = True
wiz._onchange_sheet()
values = {
getattr(self, "month_%i_%i" % (self.now.year, self.now.month)): 2,
}
for line in wiz.line_ids:
line.value = values.get(line.date_range_id)
wiz.button_validate()
self.buffer._compute_dlt()
self.assertEqual(self.buffer.dlt, self.dlt_before * 2)
def test_dummy(self):
# Run actions
self.assertTrue(self.buffer.action_view_demand_to_components())
self.assertTrue(self.buffer.action_view_affecting_adu())
self.assertTrue(self.buffer.action_view_parent_affecting_adu())

View file

@ -0,0 +1,56 @@
# Copyright 2018 Camptocamp SA
# Copyright 2020 ForgeFlow S.L. (https://www.forgeflow.com)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
import datetime
from calendar import monthrange
from dateutil.relativedelta import relativedelta
from odoo.tests import TransactionCase
from odoo.tools import DEFAULT_SERVER_DATE_FORMAT
class TestDDMRPAdjustmentCommon(TransactionCase):
def _create_period(self, year, month, date_range_type):
return self.env["date.range"].create(
{
"name": "%i-%i" % (year, month),
"type_id": date_range_type.id,
"date_start": datetime.datetime(year=year, month=month, day=1).strftime(
DEFAULT_SERVER_DATE_FORMAT
),
"date_end": datetime.datetime(
year=year, month=month, day=monthrange(year, month)[1]
).strftime(DEFAULT_SERVER_DATE_FORMAT),
}
)
def _create_adjustment_wizard(self, number_of_periods):
date_start = datetime.datetime(year=self.now.year, month=self.now.month, day=1)
date_end = (
date_start + relativedelta(months=number_of_periods) - relativedelta(days=1)
)
wiz = self.env["ddmrp.adjustment.sheet"].create(
{
"date_start": date_start.strftime(DEFAULT_SERVER_DATE_FORMAT),
"date_end": date_end.strftime(DEFAULT_SERVER_DATE_FORMAT),
"date_range_type_id": self.month_date_range_type.id,
}
)
wiz.buffer_ids = [(4, self.buffer.id, False)]
wiz._onchange_sheet()
return wiz
def setUp(self):
super().setUp()
self.now = datetime.datetime.now()
self.month_date_range_type = self.env["date.range.type"].create(
{"name": "Month", "allow_overlap": False}
)
# create date ranges for each month in actual and next years
for y in (self.now.year, self.now.year + 1):
for m in range(1, 13):
date_range = self._create_period(y, m, self.month_date_range_type)
setattr(self, "month_%i_%i" % (y, m), date_range)
self.buffer = self.env.ref("ddmrp.stock_buffer_fp01")

View file

@ -0,0 +1,27 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- Copyright 2017-20 ForgeFlow S.L. (https://www.forgeflow.com)
License AGPL-3.0 or later (http://www.gnu.org/licenses/lgpl-3.0) -->
<odoo>
<record id="view_ddmrp_adjustment_demand_tree" model="ir.ui.view">
<field name="name">ddmrp.adjustment.demand.tree</field>
<field name="model">ddmrp.adjustment.demand</field>
<field name="arch" type="xml">
<tree create="0" delete="0">
<field name="buffer_id" />
<field name="product_id" />
<field name="buffer_origin_id" />
<field name="product_origin_id" />
<field name="extra_demand" />
<field name="product_uom_id" />
<field name="date_start" />
<field name="date_end" />
</tree>
</field>
</record>
<record id="ddmrp_adjustment_demand_action" model="ir.actions.act_window">
<field name="name">Buffer Adjustments Demand</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">ddmrp.adjustment.demand</field>
<field name="view_mode">tree</field>
</record>
</odoo>

View file

@ -0,0 +1,75 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- Copyright 2017-24 ForgeFlow S.L. (https://www.forgeflow.com)
License AGPL-3.0 or later (http://www.gnu.org/licenses/lgpl-3.0) -->
<odoo>
<record id="view_ddmrp_adjustment_tree" model="ir.ui.view">
<field name="name">ddmrp.adjustment.tree</field>
<field name="model">ddmrp.adjustment</field>
<field name="arch" type="xml">
<tree editable="top">
<field name="buffer_id" />
<field name="product_id" />
<field name="location_id" />
<field name="date_range_id" />
<field name="adjustment_type" />
<field name="value" />
<field name="company_id" groups="base.group_multi_company" />
</tree>
</field>
</record>
<record id="view_ddmrp_adjustment_search" model="ir.ui.view">
<field name="name">ddmrp.adjustment.search</field>
<field name="model">ddmrp.adjustment</field>
<field name="arch" type="xml">
<search>
<field name="buffer_id" />
<field name="product_id" />
<field name="location_id" />
<field name="adjustment_type" />
<field name="company_id" groups="base.group_multi_company" />
<filter
name="current"
string="Affecting Currently"
domain="[
('date_end', '>=', context_today().strftime('%Y-%m-%d')),
('date_start', '&lt;=', context_today().strftime('%Y-%m-%d'))]"
/>
<filter
name="not_expired"
string="Not Expired"
domain="['|', ('date_end', '=', False), ('date_end', '&gt;', context_today().strftime('%Y-%m-%d'))]"
/>
<group expand="1" string="Group By">
<filter
string="Buffer"
name="group_buffer"
context="{'group_by':'buffer_id'}"
/>
</group>
</search>
</field>
</record>
<record id="view_ddmrp_adjustment_graph" model="ir.ui.view">
<field name="name">ddmrp.adjustment.graph</field>
<field name="model">ddmrp.adjustment</field>
<field name="arch" type="xml">
<graph>
<field name="date_range_id" type="column" />
<field name="value" type="measure" />
</graph>
</field>
</record>
<record id="ddmrp_adjustment_action" model="ir.actions.act_window">
<field name="name">Buffer Adjustments</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">ddmrp.adjustment</field>
<field name="view_mode">tree,graph,form</field>
<field name="context">{"search_default_not_expired": 1}</field>
</record>
<menuitem
id="menu_ddmrp_adjustment"
parent="stock_demand_estimate.stock_demand_planning_menu"
action="ddmrp_adjustment_action"
sequence="50"
/>
</odoo>

View file

@ -0,0 +1,43 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- Copyright 2017-20 ForgeFlow S.L. (https://www.forgeflow.com)
License AGPL-3.0 or later (http://www.gnu.org/licenses/lgpl-3.0) -->
<odoo>
<record id="stock_buffer_view_form" model="ir.ui.view">
<field name="name">stock.buffer.form</field>
<field name="model">stock.buffer</field>
<field name="inherit_id" ref="ddmrp.stock_buffer_view_form" />
<field name="arch" type="xml">
<xpath expr="//div[@name='button_box']" position="inside">
<field name="count_ddmrp_adjustment_demand" invisible="1" />
<button
string="DAF Demand Allocation"
name="action_view_demand_to_components"
class="oe_stat_button"
icon="fa-caret-square-o-down"
type="object"
attrs="{'invisible': [('count_ddmrp_adjustment_demand', '=', 0)]}"
/>
</xpath>
<button name="action_view_future_adu_indirect_demand" position="after">
<field name="daf_applied" invisible="1" />
<field name="parent_daf_applied" invisible="1" />
<button
title="View DAFs Affecting Actual ADU"
name="action_view_affecting_adu"
type="object"
attrs="{'invisible': [('daf_applied', '=', -1)]}"
>
<field name="daf_text" readonly="1" />
</button>
<button
title="View Demand from parent DAFs Affecting Actual ADU"
name="action_view_parent_affecting_adu"
type="object"
attrs="{'invisible': [('parent_daf_applied', '=', -1)]}"
>
<field name="parent_daf_text" readonly="1" />
</button>
</button>
</field>
</record>
</odoo>

View file

@ -0,0 +1 @@
from . import ddmrp_adjustment_sheet

View file

@ -0,0 +1,138 @@
# Copyright 2017-20 ForgeFlow S.L. (https://www.forgeflow.com)
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
from odoo import _, api, fields, models
from odoo.exceptions import ValidationError
from ..models.ddmrp_adjustment import DAF_string, LTAF_string
class DdmrpAdjustmentSheet(models.TransientModel):
_name = "ddmrp.adjustment.sheet"
_description = "Buffer Adjustment Sheet"
def _get_factors(self):
factors = []
if self.apply_daf:
factors.append(DAF_string)
if self.apply_ltaf:
factors.append(LTAF_string)
return factors
def _prepare_line(self, period, factor):
vals = {
"sheet_id": self.id,
"date_range_id": period.id,
"factor": factor,
"value": 0.0,
}
return vals
def _prepare_lines(self):
self.ensure_one()
periods = self.env["date.range"].search(
[
("type_id", "=", self.date_range_type_id.id),
"|",
"&",
("date_start", ">=", self.date_start),
("date_start", "<=", self.date_end),
"&",
("date_end", ">=", self.date_start),
("date_end", "<=", self.date_end),
]
)
# TODO: re-check
domain = [
("type_id", "=", self.date_range_type_id.id),
("date_start", "<=", self.date_start),
("date_end", ">=", self.date_start),
]
periods |= self.env["date.range"].search(domain)
factors = self._get_factors()
items = []
for period in periods:
for factor in factors:
vals = self._prepare_line(period, factor)
items.append((0, 0, vals))
return items
@api.constrains("date_start", "date_end")
def _check_start_end_dates(self):
for rec in self:
if rec.date_start > rec.date_end:
raise ValidationError(
_("The start date cannot be later than the end date.")
)
date_start = fields.Date(string="Date From", required=True)
date_end = fields.Date(string="Date To", required=True)
date_range_type_id = fields.Many2one(
string="Date Range Type", comodel_name="date.range.type", required=True
)
buffer_ids = fields.Many2many(comodel_name="stock.buffer", string="DDMRP Buffers")
line_ids = fields.Many2many(
string="Adjustments", comodel_name="ddmrp.adjustment.sheet.line"
)
apply_daf = fields.Boolean(string="Demand Adjustment Factor")
apply_ltaf = fields.Boolean(string="Lead Time Adjustment Factor")
@api.onchange(
"date_range_type_id", "date_start", "date_end", "apply_daf", "apply_ltaf"
)
def _onchange_sheet(self):
self.line_ids = [(6, 0, [])]
if not (
self.date_range_type_id
and self.date_start
and self.date_end
and len(self.buffer_ids) > 0
):
return
if self.apply_daf or self.apply_ltaf:
lines = self._prepare_lines()
self.line_ids = lines
def button_validate(self):
self.ensure_one()
if not self.buffer_ids:
raise ValidationError(_("You must select at least one buffer."))
if not self.line_ids.mapped("factor"):
raise ValidationError(_("You must apply at least one factor"))
res = []
for b in self.buffer_ids:
for line in self.line_ids:
data = line._prepare_adjustment_data(b)
estimate = self.env["ddmrp.adjustment"].create(data)
res.append(estimate.id)
action = {
"domain": [("id", "in", res)],
"name": _("DDMRP Buffer Adjustment"),
"src_model": "ddmrp.adjustment.sheet",
"view_mode": "tree",
"res_model": "ddmrp.adjustment",
"type": "ir.actions.act_window",
}
return action
class DdmrpAdjustmentSheetLine(models.TransientModel):
_name = "ddmrp.adjustment.sheet.line"
_description = "Buffer Adjustment Sheet Line"
sheet_id = fields.Many2one(comodel_name="ddmrp.adjustment.sheet")
date_range_id = fields.Many2one(comodel_name="date.range", string="Period")
factor = fields.Char(string="Factors")
value = fields.Float()
@api.model
def _prepare_adjustment_data(self, buf):
data = {
"date_range_id": self.date_range_id.id,
"buffer_id": buf.id,
"value": self.value,
"adjustment_type": self.factor,
}
return data

View file

@ -0,0 +1,76 @@
<?xml version="1.0" ?>
<odoo>
<record id="view_ddmrp_adjustment_sheet_wizard_form" model="ir.ui.view">
<field name="name">ddmrp.adjustment.sheet.form1</field>
<field name="model">ddmrp.adjustment.sheet</field>
<field name="arch" type="xml">
<form string="Buffer Adjustments Wizard">
<group name="dates" string="Periods">
<label for="date_start" string="Period" />
<div><field name="date_start" class="oe_inline" /> to <field
name="date_end"
class="oe_inline"
/></div>
<field name="date_range_type_id" />
</group>
<group name="buffers" string="Buffers">
<field name="buffer_ids" nolabel="1" colspan="2">
<tree name="buffer_tree">
<field name="name" />
<field name="product_id" />
<field name="location_id" />
<field name="buffer_profile_id" />
</tree>
</field>
</group>
<group name="factor" string="Factors to Apply">
<field name="apply_daf" />
<field name="apply_ltaf" />
</group>
<group name="factor_sheet" string="Sheet">
<p colspan="2">Fill the factors to apply in each period for all the
selected Buffers.</p>
<br />
<field
name="line_ids"
nolabel="1"
colspan="2"
widget="x2many_2d_matrix"
field_x_axis="date_range_id"
field_y_axis="factor"
field_value="value"
>
<tree editable="True" nolabel="1" create="false">
<field name="date_range_id" />
<field name="factor" />
<field name="value" />
</tree>
</field>
</group>
<footer>
<button
name="button_validate"
string="Validate"
type="object"
class="oe_highlight"
/>
<button string="Cancel" class="oe_link" special="cancel" />
</footer>
</form>
</field>
</record>
<record id="action_ddmrp_adjustment_sheet_wizard" model="ir.actions.act_window">
<field name="name">Create Buffer Adjustments</field>
<field name="res_model">ddmrp.adjustment.sheet</field>
<field name="type">ir.actions.act_window</field>
<field name="view_mode">form</field>
<field name="target">new</field>
</record>
<menuitem
id="menu_ddmrp_adjustment_sheet_wizard"
parent="stock_demand_estimate.stock_demand_planning_menu"
action="action_ddmrp_adjustment_sheet_wizard"
groups="ddmrp.group_stock_buffer_maintainer"
sequence="51"
/>
</odoo>

View file

@ -0,0 +1,32 @@
# Architecture
```mermaid
flowchart TD
U[Users] -->|HTTP| V[Views and QWeb Templates]
V --> C[Controllers]
V --> W[Wizards Transient Models]
C --> M[Models and ORM]
W --> M
M --> R[Reports]
DX[Data XML] --> M
S[Security ACLs and Groups] -. enforces .-> M
subgraph Ddmrp_adjustment Module - ddmrp_adjustment
direction LR
M:::layer
W:::layer
C:::layer
V:::layer
R:::layer
S:::layer
DX:::layer
end
classDef layer fill:#eef8ff,stroke:#6ea8fe,stroke-width:1px
```
Notes
- Views include tree/form/kanban templates and report templates.
- Controllers provide website/portal routes when present.
- Wizards are UI flows implemented with `models.TransientModel`.
- Data XML loads data/demo records; Security defines groups and access.

View file

@ -0,0 +1,3 @@
# Configuration
Refer to Odoo settings for ddmrp_adjustment. Configure related models, access rights, and options as needed.

View file

@ -0,0 +1,3 @@
# Controllers
This module does not define custom HTTP controllers.

View file

@ -0,0 +1,7 @@
# Dependencies
This addon depends on:
- [ddmrp](../../odoo-bringout-oca-ddmrp-ddmrp)
- [web_widget_x2many_2d_matrix](../../odoo-bringout-oca-web-web_widget_x2many_2d_matrix)
- [date_range](../../odoo-bringout-oca-server-ux-date_range)

View file

@ -0,0 +1,4 @@
# FAQ
- Q: Which Odoo version? A: 16.0 (OCA/OCB packaged).
- Q: How to enable? A: Start server with --addon ddmrp_adjustment or install in UI.

View file

@ -0,0 +1,7 @@
# Install
```bash
pip install odoo-bringout-oca-ddmrp-ddmrp_adjustment"
# or
uv pip install odoo-bringout-oca-ddmrp-ddmrp_adjustment"
```

View file

@ -0,0 +1,14 @@
# Models
Detected core models and extensions in ddmrp_adjustment.
```mermaid
classDiagram
class ddmrp_adjustment
class ddmrp_adjustment_demand
class stock_buffer
```
Notes
- Classes show model technical names; fields omitted for brevity.
- Items listed under _inherit are extensions of existing models.

View file

@ -0,0 +1,6 @@
# Overview
Packaged Odoo addon: ddmrp_adjustment. Provides features documented in upstream Odoo 16 under this addon.
- Source: OCA/OCB 16.0, addon ddmrp_adjustment
- License: LGPL-3

View file

@ -0,0 +1,3 @@
# Reports
This module does not define custom reports.

View file

@ -0,0 +1,41 @@
# Security
Access control and security definitions in ddmrp_adjustment.
## Access Control Lists (ACLs)
Model access permissions defined in:
- **[ir.model.access.csv](../ddmrp_adjustment/security/ir.model.access.csv)**
- 10 model access rules
## Record Rules
Row-level security rules defined in:
## Security Groups & Configuration
Security groups and permissions defined in:
- **[ddmrp_security.xml](../ddmrp_adjustment/security/ddmrp_security.xml)**
```mermaid
graph TB
subgraph "Security Layers"
A[Users] --> B[Groups]
B --> C[Access Control Lists]
C --> D[Models]
B --> E[Record Rules]
E --> F[Individual Records]
end
```
Security files overview:
- **[ddmrp_security.xml](../ddmrp_adjustment/security/ddmrp_security.xml)**
- Security groups, categories, and XML-based rules
- **[ir.model.access.csv](../ddmrp_adjustment/security/ir.model.access.csv)**
- Model access permissions (CRUD rights)
Notes
- Access Control Lists define which groups can access which models
- Record Rules provide row-level security (filter records by user/group)
- Security groups organize users and define permission sets
- All security is enforced at the ORM level by Odoo

View file

@ -0,0 +1,5 @@
# Troubleshooting
- Ensure Python and Odoo environment matches repo guidance.
- Check database connectivity and logs if startup fails.
- Validate that dependent addons listed in DEPENDENCIES.md are installed.

View file

@ -0,0 +1,7 @@
# Usage
Start Odoo including this addon (from repo root):
```bash
python3 scripts/nix_odoo_web_server.py --db-name mydb --addon ddmrp_adjustment
```

View file

@ -0,0 +1,3 @@
# Wizards
This module does not include UI wizards.

View file

@ -0,0 +1,44 @@
[project]
name = "odoo-bringout-oca-ddmrp-ddmrp_adjustment"
version = "16.0.0"
description = "DDMRP Adjustment - Allow to apply factor adjustments to buffers."
authors = [
{ name = "Ernad Husremovic", email = "hernad@bring.out.ba" }
]
dependencies = [
"odoo-bringout-oca-ddmrp-ddmrp>=16.0.0",
"odoo-bringout-oca-ddmrp-web_widget_x2many_2d_matrix>=16.0.0",
"odoo-bringout-oca-ddmrp-date_range>=16.0.0",
"requests>=2.25.1"
]
readme = "README.md"
requires-python = ">= 3.11"
classifiers = [
"Development Status :: 5 - Production/Stable",
"Intended Audience :: Developers",
"License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Topic :: Office/Business",
]
[project.urls]
homepage = "https://github.com/bringout/0"
repository = "https://github.com/bringout/0"
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[tool.hatch.metadata]
allow-direct-references = true
[tool.hatch.build.targets.wheel]
packages = ["ddmrp_adjustment"]
[tool.rye]
managed = true
dev-dependencies = [
"pytest>=8.4.1",
]