mirror of
https://github.com/bringout/oca-mrp.git
synced 2026-04-24 04:12:02 +02:00
Initial commit: OCA Mrp packages (117 packages)
This commit is contained in:
commit
277e84fd7a
4403 changed files with 395154 additions and 0 deletions
44
odoo-bringout-oca-manufacture-quality_control_oca/README.md
Normal file
44
odoo-bringout-oca-manufacture-quality_control_oca/README.md
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
# Quality Control OCA
|
||||
|
||||
Odoo addon: quality_control_oca
|
||||
|
||||
## Installation
|
||||
|
||||
```bash
|
||||
pip install odoo-bringout-oca-manufacture-quality_control_oca
|
||||
```
|
||||
|
||||
## Dependencies
|
||||
|
||||
This addon depends on:
|
||||
- product
|
||||
|
||||
## Manifest Information
|
||||
|
||||
- **Name**: Quality Control OCA
|
||||
- **Version**: 16.0.1.5.1
|
||||
- **Category**: Quality Control
|
||||
- **License**: AGPL-3
|
||||
- **Installable**: True
|
||||
|
||||
## Source
|
||||
|
||||
Based on [OCA/manufacture](https://github.com/OCA/manufacture) branch 16.0, addon `quality_control_oca`.
|
||||
|
||||
## 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
|
||||
|
|
@ -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 Quality_control_oca Module - quality_control_oca
|
||||
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.
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
# Configuration
|
||||
|
||||
Refer to Odoo settings for quality_control_oca. Configure related models, access rights, and options as needed.
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
# Controllers
|
||||
|
||||
This module does not define custom HTTP controllers.
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
# Dependencies
|
||||
|
||||
This addon depends on:
|
||||
|
||||
- [product](../../odoo-bringout-oca-ocb-product)
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
# FAQ
|
||||
|
||||
- Q: Which Odoo version? A: 16.0 (OCA/OCB packaged).
|
||||
- Q: How to enable? A: Start server with --addon quality_control_oca or install in UI.
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
# Install
|
||||
|
||||
```bash
|
||||
pip install odoo-bringout-oca-manufacture-quality_control_oca"
|
||||
# or
|
||||
uv pip install odoo-bringout-oca-manufacture-quality_control_oca"
|
||||
```
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
# Models
|
||||
|
||||
Detected core models and extensions in quality_control_oca.
|
||||
|
||||
```mermaid
|
||||
classDiagram
|
||||
class qc_inspection
|
||||
class qc_inspection_line
|
||||
class qc_test
|
||||
class qc_test_category
|
||||
class qc_test_question
|
||||
class qc_test_question_value
|
||||
class qc_trigger
|
||||
class qc_trigger_line
|
||||
class qc_trigger_product_category_line
|
||||
class qc_trigger_product_line
|
||||
class qc_trigger_product_template_line
|
||||
class mail_thread
|
||||
class product_category
|
||||
class product_product
|
||||
class product_template
|
||||
class qc_trigger_line
|
||||
```
|
||||
|
||||
Notes
|
||||
- Classes show model technical names; fields omitted for brevity.
|
||||
- Items listed under _inherit are extensions of existing models.
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
# Overview
|
||||
|
||||
Packaged Odoo addon: quality_control_oca. Provides features documented in upstream Odoo 16 under this addon.
|
||||
|
||||
- Source: OCA/OCB 16.0, addon quality_control_oca
|
||||
- License: LGPL-3
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
# Reports
|
||||
|
||||
This module does not define custom reports.
|
||||
|
|
@ -0,0 +1,42 @@
|
|||
# Security
|
||||
|
||||
Access control and security definitions in quality_control_oca.
|
||||
|
||||
## Access Control Lists (ACLs)
|
||||
|
||||
Model access permissions defined in:
|
||||
- **[ir.model.access.csv](../quality_control_oca/security/ir.model.access.csv)**
|
||||
- 19 model access rules
|
||||
|
||||
## Record Rules
|
||||
|
||||
Row-level security rules defined in:
|
||||
|
||||
## Security Groups & Configuration
|
||||
|
||||
Security groups and permissions defined in:
|
||||
- **[quality_control_security.xml](../quality_control_oca/security/quality_control_security.xml)**
|
||||
- 2 security groups defined
|
||||
|
||||
```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:
|
||||
- **[ir.model.access.csv](../quality_control_oca/security/ir.model.access.csv)**
|
||||
- Model access permissions (CRUD rights)
|
||||
- **[quality_control_security.xml](../quality_control_oca/security/quality_control_security.xml)**
|
||||
- Security groups, categories, and XML-based rules
|
||||
|
||||
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
|
||||
|
|
@ -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.
|
||||
|
|
@ -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 quality_control_oca
|
||||
```
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
# Wizards
|
||||
|
||||
Transient models exposed as UI wizards in quality_control_oca.
|
||||
|
||||
```mermaid
|
||||
classDiagram
|
||||
class QcInspectionSetTest
|
||||
```
|
||||
|
|
@ -0,0 +1,42 @@
|
|||
[project]
|
||||
name = "odoo-bringout-oca-manufacture-quality_control_oca"
|
||||
version = "16.0.0"
|
||||
description = "Quality Control OCA - Generic infrastructure for quality tests."
|
||||
authors = [
|
||||
{ name = "Ernad Husremovic", email = "hernad@bring.out.ba" }
|
||||
]
|
||||
dependencies = [
|
||||
"odoo-bringout-oca-ocb-product>=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 = ["quality_control_oca"]
|
||||
|
||||
[tool.rye]
|
||||
managed = true
|
||||
dev-dependencies = [
|
||||
"pytest>=8.4.1",
|
||||
]
|
||||
|
|
@ -0,0 +1,137 @@
|
|||
.. image:: https://odoo-community.org/readme-banner-image
|
||||
:target: https://odoo-community.org/get-involved?utm_source=readme
|
||||
:alt: Odoo Community Association
|
||||
|
||||
===================
|
||||
Quality Control OCA
|
||||
===================
|
||||
|
||||
..
|
||||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||
!! This file is generated by oca-gen-addon-readme !!
|
||||
!! changes will be overwritten. !!
|
||||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||
!! source digest: sha256:ae0d8892fe8566e76f4d52dd57054f0d04b20f0f3c76e59ac12ed1529eb79ad9
|
||||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||
|
||||
.. |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%2Fmanufacture-lightgray.png?logo=github
|
||||
:target: https://github.com/OCA/manufacture/tree/16.0/quality_control_oca
|
||||
:alt: OCA/manufacture
|
||||
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
|
||||
:target: https://translation.odoo-community.org/projects/manufacture-16-0/manufacture-16-0-quality_control_oca
|
||||
: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/manufacture&target_branch=16.0
|
||||
:alt: Try me on Runboat
|
||||
|
||||
|badge1| |badge2| |badge3| |badge4| |badge5|
|
||||
|
||||
This module provides a generic infrastructure for quality tests. The idea is
|
||||
that it can be later reused for doing quality inspections on production lots
|
||||
or any other area of the company.
|
||||
|
||||
**Table of contents**
|
||||
|
||||
.. contents::
|
||||
:local:
|
||||
|
||||
Configuration
|
||||
=============
|
||||
|
||||
* Question: The thing to be checked. We have two types of questions:
|
||||
|
||||
* Qualitative: The result is a description, color, yes, no...
|
||||
|
||||
* Quantitative: The result must be within a range.
|
||||
|
||||
* Possible values: The values chosen in qualitative questions.
|
||||
|
||||
* Test: The set of questions to be used in inspections.
|
||||
|
||||
* Once these values are set, we define the inspection.
|
||||
|
||||
We have a *generic* test that can be applied to any model: shipments,
|
||||
invoices or product, or a *test related*, making it specific to a particular
|
||||
product and that eg apply whenever food is sold or when creating a batch.
|
||||
|
||||
Once these parameters are set, we can just pass the test. We create a
|
||||
new inspection, selecting a relationship with the model (sale, stock move...),
|
||||
and pressing "Select test" button to choose the test to pass. Then, you must
|
||||
fill the lines depending on the chosen test.
|
||||
|
||||
The complete inspection workflow is:
|
||||
|
||||
Draft -> Confirmed -> Success
|
||||
|
|
||||
| -> Failure (Pending approval) -> Approved
|
||||
|
||||
Known issues / Roadmap
|
||||
======================
|
||||
|
||||
* Make translatable the trigger name.
|
||||
|
||||
Bug Tracker
|
||||
===========
|
||||
|
||||
Bugs are tracked on `GitHub Issues <https://github.com/OCA/manufacture/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/manufacture/issues/new?body=module:%20quality_control_oca%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
|
||||
~~~~~~~
|
||||
|
||||
* AvanzOSC
|
||||
* Tecnativa
|
||||
|
||||
Contributors
|
||||
~~~~~~~~~~~~
|
||||
|
||||
* Oihane Crucelaegui <oihanecrucelaegi@avanzosc.es>
|
||||
* Ana Juaristi <anajuaristi@avanzosc.es>
|
||||
* Lois Rilo <lois.rilo@forgeflow.com>
|
||||
* Simone Rubino <simone.rubino@agilebg.com>
|
||||
* Juan Humanes <juan.humanes@guadaltech.es>
|
||||
* Ignacio José Alés López <ignacio.ales@guadaltech.es>
|
||||
* Pimolnat Suntian <pimolnats@ecosoft.co.th>
|
||||
* `Tecnativa <https://www.tecnativa.com>`_:
|
||||
|
||||
* Pedro M. Baeza
|
||||
* Carlos Roca
|
||||
|
||||
* `Trey Kilobytes de Soluciones SL <https://www.trey.es>`__:
|
||||
|
||||
* Vicent Cubells
|
||||
|
||||
Other credits
|
||||
~~~~~~~~~~~~~
|
||||
|
||||
* Originally based on the old nan_quality_control_* modules from NaN·tic.
|
||||
|
||||
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.
|
||||
|
||||
This module is part of the `OCA/manufacture <https://github.com/OCA/manufacture/tree/16.0/quality_control_oca>`_ project on GitHub.
|
||||
|
||||
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
|
||||
|
||||
from . import models
|
||||
from . import wizard
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
# Copyright 2010 NaN Projectes de Programari Lliure, S.L.
|
||||
# Copyright 2014-2021 Tecnativa Pedro M. Baeza
|
||||
# Copyright 2014 Oihane Crucelaegui - AvanzOSC
|
||||
# Copyright 2017-2020 ForgeFlow S.L.
|
||||
# Copyright 2017 Simone Rubino - Agile Business Group
|
||||
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
|
||||
|
||||
{
|
||||
"name": "Quality Control OCA",
|
||||
"version": "16.0.1.5.1",
|
||||
"category": "Quality Control",
|
||||
"license": "AGPL-3",
|
||||
"summary": "Generic infrastructure for quality tests.",
|
||||
"author": "AvanzOSC, Tecnativa, Odoo Community Association (OCA)",
|
||||
"website": "https://github.com/OCA/manufacture",
|
||||
"depends": ["product"],
|
||||
"data": [
|
||||
"data/quality_control_data.xml",
|
||||
"security/quality_control_security.xml",
|
||||
"security/ir.model.access.csv",
|
||||
"wizard/qc_test_wizard_view.xml",
|
||||
"views/qc_menus.xml",
|
||||
"views/qc_inspection_view.xml",
|
||||
"views/qc_test_category_view.xml",
|
||||
"views/qc_test_view.xml",
|
||||
"views/qc_trigger_view.xml",
|
||||
"views/product_template_view.xml",
|
||||
"views/product_category_view.xml",
|
||||
],
|
||||
"demo": ["demo/quality_control_demo.xml"],
|
||||
"installable": True,
|
||||
}
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<!-- Copyright 2010 NaN Projectes de Programari Lliure, S.L.
|
||||
Copyright 2014 Serv. Tec. Avanzados - Pedro M. Baeza
|
||||
Copyright 2014 Oihane Crucelaegui - AvanzOSC
|
||||
Copyright 2017 ForgeFlow S.L.
|
||||
Copyright 2017 Simone Rubino - Agile Business Group
|
||||
Copyright 2021 Tecnativa - Carlos Roca
|
||||
License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -->
|
||||
<odoo noupdate="1">
|
||||
<record id="qc_test_template_category_generic" model="qc.test.category">
|
||||
<field name="name">Generic</field>
|
||||
</record>
|
||||
<record id="qc_test_template_category_referenced" model="qc.test.category">
|
||||
<field name="name">Referenced</field>
|
||||
</record>
|
||||
<record forcecreate="True" id="decimal_quality_control" model="decimal.precision">
|
||||
<field name="name">Quality Control</field>
|
||||
<field name="digits">5</field>
|
||||
</record>
|
||||
<record id="seq_qc_inspection" model="ir.sequence">
|
||||
<field name="name">Quality inspection</field>
|
||||
<field name="code">qc.inspection</field>
|
||||
<field name="prefix">QC-</field>
|
||||
<field name="padding">6</field>
|
||||
<field name="company_id" eval="False" />
|
||||
</record>
|
||||
</odoo>
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<odoo noupdate="1">
|
||||
<record model="qc.test" id="qc_test_1">
|
||||
<field name="name">Generic Test (demo)</field>
|
||||
<field name="type">generic</field>
|
||||
<field name="active" eval="True" />
|
||||
<field name="category" ref="qc_test_template_category_generic" />
|
||||
</record>
|
||||
<record model="qc.test.question" id="qc_test_question_1">
|
||||
<field name="name">Overall quality</field>
|
||||
<field name="test" ref="qc_test_1" />
|
||||
<field name="type">qualitative</field>
|
||||
</record>
|
||||
<record model="qc.test.question.value" id="qc_test_question_value_1">
|
||||
<field name="name">Good</field>
|
||||
<field name="ok" eval="True" />
|
||||
<field name="test_line" ref="qc_test_question_1" />
|
||||
</record>
|
||||
<record model="qc.test.question.value" id="qc_test_question_value_2">
|
||||
<field name="name">Bad</field>
|
||||
<field name="ok" eval="False" />
|
||||
<field name="test_line" ref="qc_test_question_1" />
|
||||
</record>
|
||||
<record model="qc.test.question" id="qc_test_question_2">
|
||||
<field name="name">Size</field>
|
||||
<field name="test" ref="qc_test_1" />
|
||||
<field name="type">quantitative</field>
|
||||
<field name="min_value" eval="1.0" />
|
||||
<field name="max_value" eval="10.0" />
|
||||
<field name="uom_id" ref="uom.product_uom_unit" />
|
||||
</record>
|
||||
</odoo>
|
||||
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
|
@ -0,0 +1,973 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * quality_control
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 12.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: quality_control
|
||||
#: model:ir.model,name:quality_control.model_qc_trigger_line
|
||||
msgid "Abstract line for defining triggers"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model_terms:ir.ui.view,arch_db:quality_control.view_qc_test_set_test_form
|
||||
msgid "Accept"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_inspection__message_needaction
|
||||
msgid "Action Needed"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_test__active
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_test_category__active
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_trigger__active
|
||||
msgid "Active"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_inspection__activity_ids
|
||||
msgid "Activities"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_inspection__activity_state
|
||||
msgid "Activity State"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_inspection_line__possible_ql_values
|
||||
#: model_terms:ir.ui.view,arch_db:quality_control.qc_test_question_form_view
|
||||
msgid "Answers"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model_terms:ir.ui.view,arch_db:quality_control.qc_inspection_form_view
|
||||
msgid "Approve"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_inspection__message_attachment_count
|
||||
msgid "Attachment Count"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_inspection__auto_generated
|
||||
#: model_terms:ir.ui.view,arch_db:quality_control.qc_inspection_search_view
|
||||
msgid "Auto-generated"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:qc.test.question.value,name:quality_control.qc_test_question_value_2
|
||||
msgid "Bad"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model_terms:ir.ui.view,arch_db:quality_control.qc_inspection_form_view
|
||||
#: model_terms:ir.ui.view,arch_db:quality_control.view_qc_test_set_test_form
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: selection:qc.inspection,state:0
|
||||
msgid "Canceled"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_inspection_line__test_uom_category
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_test__category
|
||||
msgid "Category"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_test_category__child_ids
|
||||
msgid "Child categories"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_inspection__company_id
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_test__company_id
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_trigger__company_id
|
||||
msgid "Company"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.ui.menu,name:quality_control.menu_qc_config
|
||||
msgid "Configuration"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model_terms:ir.ui.view,arch_db:quality_control.qc_inspection_form_view
|
||||
msgid "Confirm"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.model.fields,help:quality_control.field_qc_inspection_line__test_uom_category
|
||||
msgid "Conversion between Units of Measure can only occur if they belong to the same category. The conversion will be made based on the ratios."
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model_terms:ir.ui.view,arch_db:quality_control.qc_inspection_line_search_view
|
||||
#: model_terms:ir.ui.view,arch_db:quality_control.qc_inspection_search_view
|
||||
msgid "Correct"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_test_question_value__ok
|
||||
msgid "Correct answer?"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_inspection__create_uid
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_inspection_line__create_uid
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_inspection_set_test__create_uid
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_test__create_uid
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_test_category__create_uid
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_test_question__create_uid
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_test_question_value__create_uid
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_trigger__create_uid
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_trigger_product_category_line__create_uid
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_trigger_product_line__create_uid
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_trigger_product_template_line__create_uid
|
||||
msgid "Created by"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_inspection__create_date
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_inspection_line__create_date
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_inspection_set_test__create_date
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_test__create_date
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_test_category__create_date
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_test_question__create_date
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_test_question_value__create_date
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_trigger__create_date
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_trigger_product_category_line__create_date
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_trigger_product_line__create_date
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_trigger_product_template_line__create_date
|
||||
msgid "Created on"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_inspection__date
|
||||
msgid "Date"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_inspection__display_name
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_inspection_line__display_name
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_inspection_set_test__display_name
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_test__display_name
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_test_category__display_name
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_test_question__display_name
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_test_question_value__display_name
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_trigger__display_name
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_trigger_line__display_name
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_trigger_product_category_line__display_name
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_trigger_product_line__display_name
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_trigger_product_template_line__display_name
|
||||
msgid "Display Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model_terms:ir.ui.view,arch_db:quality_control.qc_inspection_form_view
|
||||
#: selection:qc.inspection,state:0
|
||||
msgid "Draft"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: code:addons/quality_control/models/qc_test_category.py:36
|
||||
#, python-format
|
||||
msgid "Error! You can not create recursive categories."
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_inspection__external_notes
|
||||
#: model_terms:ir.ui.view,arch_db:quality_control.qc_inspection_form_view
|
||||
msgid "External notes"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_inspection__message_follower_ids
|
||||
msgid "Followers"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_inspection__message_channel_ids
|
||||
msgid "Followers (Channels)"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_inspection__message_partner_ids
|
||||
msgid "Followers (Partners)"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_test_category__complete_name
|
||||
msgid "Full name"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: selection:qc.test,type:0
|
||||
#: model:qc.test.category,name:quality_control.qc_test_template_category_generic
|
||||
msgid "Generic"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:qc.test,name:quality_control.qc_test_1
|
||||
msgid "Generic Test (demo)"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:qc.test.question.value,name:quality_control.qc_test_question_value_1
|
||||
msgid "Good"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model_terms:ir.ui.view,arch_db:quality_control.qc_inspection_line_search_view
|
||||
#: model_terms:ir.ui.view,arch_db:quality_control.qc_inspection_search_view
|
||||
msgid "Group by..."
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_inspection__id
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_inspection_line__id
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_inspection_set_test__id
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_test__id
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_test_category__id
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_test_question__id
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_test_question_value__id
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_trigger__id
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_trigger_line__id
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_trigger_product_category_line__id
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_trigger_product_line__id
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_trigger_product_template_line__id
|
||||
msgid "ID"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.model.fields,help:quality_control.field_qc_inspection__auto_generated
|
||||
msgid "If an inspection is auto-generated, it can be canceled but not removed."
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.model.fields,help:quality_control.field_qc_inspection__message_unread
|
||||
msgid "If checked new messages require your attention."
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.model.fields,help:quality_control.field_qc_inspection__message_needaction
|
||||
msgid "If checked, new messages require your attention."
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.model.fields,help:quality_control.field_qc_inspection__message_has_error
|
||||
msgid "If checked, some messages have a delivery error."
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.model.fields,help:quality_control.field_qc_trigger_line__partners
|
||||
#: model:ir.model.fields,help:quality_control.field_qc_trigger_product_category_line__partners
|
||||
#: model:ir.model.fields,help:quality_control.field_qc_trigger_product_line__partners
|
||||
#: model:ir.model.fields,help:quality_control.field_qc_trigger_product_template_line__partners
|
||||
msgid "If filled, the test will only be created when the action is done for one of the specified partners. If empty, the test will always be created."
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model_terms:ir.ui.view,arch_db:quality_control.qc_inspection_line_search_view
|
||||
#: model_terms:ir.ui.view,arch_db:quality_control.qc_inspection_search_view
|
||||
msgid "Incorrect"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_inspection_line__inspection_id
|
||||
#: model_terms:ir.ui.view,arch_db:quality_control.qc_inspection_form_view
|
||||
#: model_terms:ir.ui.view,arch_db:quality_control.qc_inspection_line_search_view
|
||||
msgid "Inspection"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.actions.act_window,name:quality_control.action_qc_inspection_line
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_inspection__inspection_lines
|
||||
#: model:ir.ui.menu,name:quality_control.qc_inspection_lines_menu
|
||||
#: model_terms:ir.ui.view,arch_db:quality_control.qc_inspection_form_view
|
||||
#: model_terms:ir.ui.view,arch_db:quality_control.qc_inspection_line_tree_view
|
||||
msgid "Inspection lines"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_inspection__name
|
||||
msgid "Inspection number"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.actions.act_window,name:quality_control.action_qc_inspection
|
||||
#: model:ir.ui.menu,name:quality_control.qc_inspection_menu
|
||||
#: model:ir.ui.menu,name:quality_control.qc_inspection_menu_parent
|
||||
#: model_terms:ir.ui.view,arch_db:quality_control.qc_inspection_tree_view
|
||||
msgid "Inspections"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_inspection__internal_notes
|
||||
#: model_terms:ir.ui.view,arch_db:quality_control.qc_inspection_form_view
|
||||
msgid "Internal notes"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_inspection__message_is_follower
|
||||
msgid "Is Follower"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_inspection____last_update
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_inspection_line____last_update
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_inspection_set_test____last_update
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_test____last_update
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_test_category____last_update
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_test_question____last_update
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_test_question_value____last_update
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_trigger____last_update
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_trigger_line____last_update
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_trigger_product_category_line____last_update
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_trigger_product_line____last_update
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_trigger_product_template_line____last_update
|
||||
msgid "Last Modified on"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_inspection__write_uid
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_inspection_line__write_uid
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_inspection_set_test__write_uid
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_test__write_uid
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_test_category__write_uid
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_test_question__write_uid
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_test_question_value__write_uid
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_trigger__write_uid
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_trigger_product_category_line__write_uid
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_trigger_product_line__write_uid
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_trigger_product_template_line__write_uid
|
||||
msgid "Last Updated by"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_inspection__write_date
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_inspection_line__write_date
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_inspection_set_test__write_date
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_test__write_date
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_test_category__write_date
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_test_question__write_date
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_test_question_value__write_date
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_trigger__write_date
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_trigger_product_category_line__write_date
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_trigger_product_line__write_date
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_trigger_product_template_line__write_date
|
||||
msgid "Last Updated on"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_inspection__message_main_attachment_id
|
||||
msgid "Main Attachment"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:res.groups,name:quality_control.group_quality_control_manager
|
||||
msgid "Manager"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model_terms:ir.ui.view,arch_db:quality_control.qc_inspection_form_view
|
||||
msgid "Mark todo"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_inspection_line__max_value
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_test_question__max_value
|
||||
msgid "Max"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.model.fields,help:quality_control.field_qc_inspection_line__max_value
|
||||
msgid "Maximum valid value for a quantitative question."
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_inspection__message_has_error
|
||||
msgid "Message Delivery error"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_inspection__message_ids
|
||||
msgid "Messages"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_inspection_line__min_value
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_test_question__min_value
|
||||
msgid "Min"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.model.fields,help:quality_control.field_qc_inspection_line__min_value
|
||||
msgid "Minimum valid value for a quantitative question."
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_test__name
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_test_category__name
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_test_question__name
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_test_question_value__name
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_trigger__name
|
||||
msgid "Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_inspection__activity_date_deadline
|
||||
msgid "Next Activity Deadline"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_inspection__activity_summary
|
||||
msgid "Next Activity Summary"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_inspection__activity_type_id
|
||||
msgid "Next Activity Type"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_inspection_line__notes
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_test_question__notes
|
||||
#: model_terms:ir.ui.view,arch_db:quality_control.qc_inspection_form_view
|
||||
msgid "Notes"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_inspection__message_needaction_counter
|
||||
msgid "Number of Actions"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_inspection__message_has_error_counter
|
||||
msgid "Number of error"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.model.fields,help:quality_control.field_qc_inspection__message_needaction_counter
|
||||
msgid "Number of messages which requires an action"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.model.fields,help:quality_control.field_qc_inspection__message_has_error_counter
|
||||
msgid "Number of messages with delivery error"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.model.fields,help:quality_control.field_qc_inspection__message_unread_counter
|
||||
msgid "Number of unread messages"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:qc.test.question,name:quality_control.qc_test_question_1
|
||||
msgid "Overall quality"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: selection:qc.inspection,activity_state:0
|
||||
msgid "Overdue"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_test_category__parent_id
|
||||
msgid "Parent category"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_trigger_line__partners
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_trigger_product_category_line__partners
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_trigger_product_line__partners
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_trigger_product_template_line__partners
|
||||
msgid "Partners"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: selection:qc.inspection,activity_state:0
|
||||
msgid "Planned"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.model,name:quality_control.model_qc_test_question_value
|
||||
msgid "Possible values for qualitative questions."
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_test__fill_correct_values
|
||||
msgid "Pre-fill with correct values"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.model,name:quality_control.model_product_product
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_inspection__product_id
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_inspection_line__product_id
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_trigger_product_line__product
|
||||
#: model_terms:ir.ui.view,arch_db:quality_control.qc_inspection_line_search_view
|
||||
#: model_terms:ir.ui.view,arch_db:quality_control.qc_inspection_search_view
|
||||
msgid "Product"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.model,name:quality_control.model_product_category
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_trigger_product_category_line__product_category
|
||||
msgid "Product Category"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.model,name:quality_control.model_product_template
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_trigger_product_template_line__product_template
|
||||
msgid "Product Template"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.model.fields,help:quality_control.field_qc_inspection__product_id
|
||||
#: model:ir.model.fields,help:quality_control.field_qc_inspection_line__product_id
|
||||
msgid "Product associated with the inspection"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: selection:qc.inspection.line,question_type:0
|
||||
#: selection:qc.test.question,type:0
|
||||
msgid "Qualitative"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_inspection_line__qualitative_value
|
||||
msgid "Qualitative value"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_test_question__ql_values
|
||||
msgid "Qualitative values"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.module.category,name:quality_control.module_category_quality_control
|
||||
#: model:ir.ui.menu,name:quality_control.qc_menu
|
||||
#: model_terms:ir.ui.view,arch_db:quality_control.product_category_qc_form_view
|
||||
#: model_terms:ir.ui.view,arch_db:quality_control.product_template_qc_form_view
|
||||
msgid "Quality control"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.model,name:quality_control.model_qc_inspection
|
||||
msgid "Quality control inspection"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.model,name:quality_control.model_qc_inspection_line
|
||||
msgid "Quality control inspection line"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.model,name:quality_control.model_qc_test_question
|
||||
msgid "Quality control question"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.model,name:quality_control.model_qc_test
|
||||
msgid "Quality control test"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.model,name:quality_control.model_qc_trigger
|
||||
#: model_terms:ir.ui.view,arch_db:quality_control.qc_trigger_form_view
|
||||
msgid "Quality control trigger"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.model.fields,field_description:quality_control.field_product_category__qc_triggers
|
||||
#: model:ir.model.fields,field_description:quality_control.field_product_product__qc_triggers
|
||||
#: model:ir.model.fields,field_description:quality_control.field_product_template__qc_triggers
|
||||
#: model_terms:ir.ui.view,arch_db:quality_control.product_category_qc_form_view
|
||||
#: model_terms:ir.ui.view,arch_db:quality_control.product_template_qc_form_view
|
||||
#: model_terms:ir.ui.view,arch_db:quality_control.qc_trigger_tree_view
|
||||
msgid "Quality control triggers"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: selection:qc.inspection,state:0
|
||||
msgid "Quality failed"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: selection:qc.inspection,state:0
|
||||
msgid "Quality success"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: selection:qc.inspection.line,question_type:0
|
||||
#: selection:qc.test.question,type:0
|
||||
msgid "Quantitative"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_inspection_line__quantitative_value
|
||||
msgid "Quantitative value"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_inspection__qty
|
||||
msgid "Quantity"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_inspection_line__name
|
||||
#: model_terms:ir.ui.view,arch_db:quality_control.qc_inspection_line_search_view
|
||||
msgid "Question"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: code:addons/quality_control/models/qc_test.py:71
|
||||
#, python-format
|
||||
msgid "Question '%s' is not valid: minimum value can't be higher than maximum value."
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: code:addons/quality_control/models/qc_test.py:62
|
||||
#, python-format
|
||||
msgid "Question '%s' is not valid: you have to mark at least one value as OK."
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_inspection_line__question_type
|
||||
msgid "Question type"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model_terms:ir.ui.view,arch_db:quality_control.qc_test_question_form_view
|
||||
msgid "Question value"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_test__test_lines
|
||||
#: model_terms:ir.ui.view,arch_db:quality_control.qc_inspection_form_view
|
||||
#: model_terms:ir.ui.view,arch_db:quality_control.qc_test_form_view
|
||||
msgid "Questions"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: selection:qc.inspection,state:0
|
||||
msgid "Ready"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_inspection__object_id
|
||||
#: model_terms:ir.ui.view,arch_db:quality_control.qc_inspection_search_view
|
||||
msgid "Reference"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_test__object_id
|
||||
msgid "Reference object"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:qc.test.category,name:quality_control.qc_test_template_category_referenced
|
||||
msgid "Referenced"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: selection:qc.test,type:0
|
||||
msgid "Related"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_inspection__user
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_trigger_line__user
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_trigger_product_category_line__user
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_trigger_product_line__user
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_trigger_product_template_line__user
|
||||
#: model_terms:ir.ui.view,arch_db:quality_control.qc_inspection_search_view
|
||||
msgid "Responsible"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_inspection__activity_user_id
|
||||
msgid "Responsible User"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model_terms:ir.ui.view,arch_db:quality_control.qc_inspection_search_view
|
||||
msgid "Search inspection"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model_terms:ir.ui.view,arch_db:quality_control.qc_inspection_line_search_view
|
||||
msgid "Search inspection line"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.actions.act_window,name:quality_control.action_qc_inspection_set_test
|
||||
#: model_terms:ir.ui.view,arch_db:quality_control.view_qc_test_set_test_form
|
||||
msgid "Select test"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_trigger__partner_selectable
|
||||
msgid "Selectable by partner"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_test_question__sequence
|
||||
msgid "Sequence"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model_terms:ir.ui.view,arch_db:quality_control.qc_inspection_form_view
|
||||
msgid "Set test"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.model,name:quality_control.model_qc_inspection_set_test
|
||||
msgid "Set test for inspection"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:qc.test.question,name:quality_control.qc_test_question_2
|
||||
msgid "Size"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_inspection__state
|
||||
#: model_terms:ir.ui.view,arch_db:quality_control.qc_inspection_search_view
|
||||
msgid "State"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.model.fields,help:quality_control.field_qc_inspection__activity_state
|
||||
msgid "Status based on activities\n"
|
||||
"Overdue: Due date is already passed\n"
|
||||
"Today: Activity date is today\n"
|
||||
"Planned: Future activities."
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_inspection__success
|
||||
#: model_terms:ir.ui.view,arch_db:quality_control.qc_inspection_line_search_view
|
||||
#: model_terms:ir.ui.view,arch_db:quality_control.qc_inspection_search_view
|
||||
msgid "Success"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_inspection_line__success
|
||||
msgid "Success?"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_inspection__test
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_inspection_set_test__test
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_test_question__test
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_trigger_line__test
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_trigger_product_category_line__test
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_trigger_product_line__test
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_trigger_product_template_line__test
|
||||
#: model_terms:ir.ui.view,arch_db:quality_control.qc_inspection_search_view
|
||||
#: model_terms:ir.ui.view,arch_db:quality_control.qc_test_form_view
|
||||
msgid "Test"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_inspection_line__test_uom_id
|
||||
msgid "Test UoM"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.actions.act_window,name:quality_control.action_qc_test_category
|
||||
#: model:ir.ui.menu,name:quality_control.qc_test_category_menu
|
||||
#: model_terms:ir.ui.view,arch_db:quality_control.qc_test_category_tree_view
|
||||
msgid "Test categories"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.model,name:quality_control.model_qc_test_category
|
||||
msgid "Test category"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_inspection_line__test_line
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_test_question_value__test_line
|
||||
#: model_terms:ir.ui.view,arch_db:quality_control.qc_test_question_form_view
|
||||
msgid "Test question"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.actions.act_window,name:quality_control.action_qc_test
|
||||
#: model:ir.ui.menu,name:quality_control.qc_menu_test_parent
|
||||
#: model:ir.ui.menu,name:quality_control.qc_test_menu
|
||||
#: model_terms:ir.ui.view,arch_db:quality_control.qc_test_tree_view
|
||||
msgid "Tests"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.model.fields,help:quality_control.field_qc_test_category__active
|
||||
msgid "This field allows you to hide the category without removing it."
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.model.fields,help:quality_control.field_qc_inspection__success
|
||||
msgid "This field will be marked if all tests have succeeded."
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.model.fields,help:quality_control.field_qc_trigger__partner_selectable
|
||||
msgid "This technical field is to allow to filter by partner in triggers"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: selection:qc.inspection,activity_state:0
|
||||
msgid "Today"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_trigger_line__trigger
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_trigger_product_category_line__trigger
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_trigger_product_line__trigger
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_trigger_product_template_line__trigger
|
||||
msgid "Trigger"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_test__type
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_test_question__type
|
||||
msgid "Type"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_inspection__message_unread
|
||||
msgid "Unread Messages"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_inspection__message_unread_counter
|
||||
msgid "Unread Messages Counter"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_inspection_line__uom_id
|
||||
msgid "UoM"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.model.fields,help:quality_control.field_qc_inspection_line__test_uom_id
|
||||
msgid "UoM for minimum and maximum values for a quantitative question."
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.model.fields,help:quality_control.field_qc_inspection_line__uom_id
|
||||
msgid "UoM of the inspection value for a quantitative question."
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_test_question__uom_id
|
||||
msgid "Uom"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:res.groups,name:quality_control.group_quality_control_user
|
||||
msgid "User"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_inspection_line__valid_values
|
||||
msgid "Valid values"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.model.fields,help:quality_control.field_qc_inspection_line__qualitative_value
|
||||
msgid "Value of the result for a qualitative question."
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.model.fields,help:quality_control.field_qc_inspection_line__quantitative_value
|
||||
msgid "Value of the result for a quantitative question."
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: selection:qc.inspection,state:0
|
||||
msgid "Waiting supervisor approval"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.model.fields,field_description:quality_control.field_qc_inspection__website_message_ids
|
||||
msgid "Website Messages"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.model.fields,help:quality_control.field_qc_inspection__website_message_ids
|
||||
msgid "Website communication history"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.model.fields,help:quality_control.field_qc_test_question_value__ok
|
||||
msgid "When this field is marked, the answer is considered correct."
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: code:addons/quality_control/models/qc_inspection.py:106
|
||||
#, python-format
|
||||
msgid "You cannot remove an auto-generated inspection."
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: code:addons/quality_control/models/qc_inspection.py:109
|
||||
#, python-format
|
||||
msgid "You cannot remove an inspection that is not in draft state."
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: code:addons/quality_control/models/qc_inspection.py:122
|
||||
#, python-format
|
||||
msgid "You must first set the test to perform."
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: code:addons/quality_control/models/qc_inspection.py:137
|
||||
#, python-format
|
||||
msgid "You should provide a unit of measure for quantitative questions."
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: code:addons/quality_control/models/qc_inspection.py:132
|
||||
#, python-format
|
||||
msgid "You should provide an answer for all qualitative questions."
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model_terms:ir.ui.view,arch_db:quality_control.view_qc_test_set_test_form
|
||||
msgid "or"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.model,name:quality_control.model_qc_trigger_product_category_line
|
||||
msgid "qc.trigger.product_category_line"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.model,name:quality_control.model_qc_trigger_product_line
|
||||
msgid "qc.trigger.product_line"
|
||||
msgstr ""
|
||||
|
||||
#. module: quality_control
|
||||
#: model:ir.model,name:quality_control.model_qc_trigger_product_template_line
|
||||
msgid "qc.trigger.product_template_line"
|
||||
msgstr ""
|
||||
|
||||
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
|
@ -0,0 +1,13 @@
|
|||
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
|
||||
|
||||
from . import qc_trigger
|
||||
from . import qc_trigger_line
|
||||
from . import qc_test_category
|
||||
from . import qc_test
|
||||
from . import qc_inspection
|
||||
from . import product_product
|
||||
from . import product_template
|
||||
from . import product_category
|
||||
from . import qc_trigger_product_category_line
|
||||
from . import qc_trigger_product_line
|
||||
from . import qc_trigger_product_template_line
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
# Copyright 2010 NaN Projectes de Programari Lliure, S.L.
|
||||
# Copyright 2014 Serv. Tec. Avanzados - Pedro M. Baeza
|
||||
# Copyright 2014 Oihane Crucelaegui - AvanzOSC
|
||||
# Copyright 2017 ForgeFlow S.L.
|
||||
# Copyright 2017 Simone Rubino - Agile Business Group
|
||||
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
|
||||
|
||||
from odoo import fields, models
|
||||
|
||||
|
||||
class ProductCategory(models.Model):
|
||||
_inherit = "product.category"
|
||||
|
||||
qc_triggers = fields.One2many(
|
||||
comodel_name="qc.trigger.product_category_line",
|
||||
inverse_name="product_category",
|
||||
string="Quality control triggers",
|
||||
)
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
# Copyright 2010 NaN Projectes de Programari Lliure, S.L.
|
||||
# Copyright 2014 Serv. Tec. Avanzados - Pedro M. Baeza
|
||||
# Copyright 2014 Oihane Crucelaegui - AvanzOSC
|
||||
# Copyright 2017 ForgeFlow S.L.
|
||||
# Copyright 2017 Simone Rubino - Agile Business Group
|
||||
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
|
||||
|
||||
from odoo import fields, models
|
||||
|
||||
|
||||
class ProductProduct(models.Model):
|
||||
_inherit = "product.product"
|
||||
|
||||
qc_triggers = fields.One2many(
|
||||
comodel_name="qc.trigger.product_line",
|
||||
inverse_name="product",
|
||||
string="Quality control triggers",
|
||||
)
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
# Copyright 2010 NaN Projectes de Programari Lliure, S.L.
|
||||
# Copyright 2014 Serv. Tec. Avanzados - Pedro M. Baeza
|
||||
# Copyright 2014 Oihane Crucelaegui - AvanzOSC
|
||||
# Copyright 2017 ForgeFlow S.L.
|
||||
# Copyright 2017 Simone Rubino - Agile Business Group
|
||||
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
|
||||
|
||||
from odoo import fields, models
|
||||
|
||||
|
||||
class ProductTemplate(models.Model):
|
||||
_inherit = "product.template"
|
||||
|
||||
qc_triggers = fields.One2many(
|
||||
comodel_name="qc.trigger.product_template_line",
|
||||
inverse_name="product_template",
|
||||
string="Quality control triggers",
|
||||
)
|
||||
|
|
@ -0,0 +1,376 @@
|
|||
# Copyright 2010 NaN Projectes de Programari Lliure, S.L.
|
||||
# Copyright 2014 Serv. Tec. Avanzados - Pedro M. Baeza
|
||||
# Copyright 2014 Oihane Crucelaegui - AvanzOSC
|
||||
# Copyright 2017 ForgeFlow S.L.
|
||||
# Copyright 2017 Simone Rubino - Agile Business Group
|
||||
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
|
||||
|
||||
from datetime import datetime
|
||||
|
||||
from odoo import _, api, exceptions, fields, models
|
||||
from odoo.tools import formatLang
|
||||
|
||||
|
||||
class QcInspection(models.Model):
|
||||
_name = "qc.inspection"
|
||||
_description = "Quality control inspection"
|
||||
_inherit = ["mail.thread", "mail.activity.mixin"]
|
||||
|
||||
@api.depends("inspection_lines", "inspection_lines.success")
|
||||
def _compute_success(self):
|
||||
for i in self:
|
||||
i.success = all([x.success for x in i.inspection_lines])
|
||||
|
||||
def object_selection_values(self):
|
||||
"""
|
||||
Overridable method for adding more object models to an inspection.
|
||||
:return: A list with the selection's possible values.
|
||||
"""
|
||||
return [("product.product", "Product")]
|
||||
|
||||
@api.depends("object_id")
|
||||
def _compute_product_id(self):
|
||||
for i in self:
|
||||
if i.object_id and i.object_id._name == "product.product":
|
||||
i.product_id = i.object_id
|
||||
else:
|
||||
i.product_id = False
|
||||
|
||||
name = fields.Char(
|
||||
string="Inspection number",
|
||||
required=True,
|
||||
default="/",
|
||||
readonly=True,
|
||||
states={"draft": [("readonly", False)]},
|
||||
copy=False,
|
||||
)
|
||||
date = fields.Datetime(
|
||||
string="Plan Date",
|
||||
required=True,
|
||||
readonly=True,
|
||||
copy=False,
|
||||
default=fields.Datetime.now,
|
||||
states={"plan": [("readonly", False)], "draft": [("readonly", False)]},
|
||||
)
|
||||
date_done = fields.Datetime("Completion Date", readonly=True)
|
||||
object_id = fields.Reference(
|
||||
string="Reference",
|
||||
selection="object_selection_values",
|
||||
readonly=True,
|
||||
states={"draft": [("readonly", False)]},
|
||||
ondelete="set null",
|
||||
)
|
||||
product_id = fields.Many2one(
|
||||
comodel_name="product.product",
|
||||
compute="_compute_product_id",
|
||||
store=True,
|
||||
help="Product associated with the inspection",
|
||||
)
|
||||
qty = fields.Float(string="Quantity", default=1.0)
|
||||
test = fields.Many2one(comodel_name="qc.test", readonly=True)
|
||||
inspection_lines = fields.One2many(
|
||||
comodel_name="qc.inspection.line",
|
||||
inverse_name="inspection_id",
|
||||
readonly=True,
|
||||
states={"ready": [("readonly", False)]},
|
||||
)
|
||||
internal_notes = fields.Text(string="Internal notes")
|
||||
external_notes = fields.Text(
|
||||
states={"success": [("readonly", True)], "failed": [("readonly", True)]},
|
||||
)
|
||||
state = fields.Selection(
|
||||
[
|
||||
("plan", "Plan"),
|
||||
("draft", "Draft"),
|
||||
("ready", "Ready"),
|
||||
("waiting", "Waiting supervisor approval"),
|
||||
("success", "Quality success"),
|
||||
("failed", "Quality failed"),
|
||||
("canceled", "Canceled"),
|
||||
],
|
||||
readonly=True,
|
||||
default="draft",
|
||||
tracking=True,
|
||||
)
|
||||
success = fields.Boolean(
|
||||
compute="_compute_success",
|
||||
help="This field will be marked if all tests have succeeded.",
|
||||
store=True,
|
||||
)
|
||||
auto_generated = fields.Boolean(
|
||||
string="Auto-generated",
|
||||
readonly=True,
|
||||
copy=False,
|
||||
help="If an inspection is auto-generated, it can be canceled but not removed.",
|
||||
)
|
||||
company_id = fields.Many2one(
|
||||
comodel_name="res.company",
|
||||
string="Company",
|
||||
readonly=True,
|
||||
states={"draft": [("readonly", False)]},
|
||||
default=lambda self: self.env.company,
|
||||
)
|
||||
user = fields.Many2one(
|
||||
comodel_name="res.users",
|
||||
string="Responsible",
|
||||
tracking=True,
|
||||
default=lambda self: self.env.user,
|
||||
)
|
||||
|
||||
@api.model_create_multi
|
||||
def create(self, vals_list):
|
||||
for vals in vals_list:
|
||||
if vals.get("name", "/") == "/":
|
||||
vals["name"] = self.env["ir.sequence"].next_by_code("qc.inspection")
|
||||
return super().create(vals_list)
|
||||
|
||||
def write(self, vals):
|
||||
if "state" in vals:
|
||||
if vals["state"] in ["success", "failed"]:
|
||||
vals["date_done"] = datetime.now()
|
||||
elif vals["state"] == "draft":
|
||||
vals["date_done"] = False
|
||||
return super().write(vals)
|
||||
|
||||
@api.ondelete(at_uninstall=False)
|
||||
def _unlink_except_autogenerated_and_non_draft(self):
|
||||
if self.auto_generated and not self.env.is_superuser():
|
||||
raise exceptions.UserError(
|
||||
_("You cannot remove an auto-generated inspection.")
|
||||
)
|
||||
if self.state != "draft":
|
||||
raise exceptions.UserError(
|
||||
_("You cannot remove an inspection that is not in draft state.")
|
||||
)
|
||||
|
||||
def action_draft(self):
|
||||
self.write({"state": "draft"})
|
||||
|
||||
def action_todo(self):
|
||||
for inspection in self:
|
||||
if not inspection.test:
|
||||
raise exceptions.UserError(_("You must first set the test to perform."))
|
||||
self.write({"state": "ready"})
|
||||
|
||||
def action_confirm(self):
|
||||
for inspection in self:
|
||||
for line in inspection.inspection_lines:
|
||||
if line.question_type == "qualitative" and not line.qualitative_value:
|
||||
raise exceptions.UserError(
|
||||
_(
|
||||
"You should provide an answer for all "
|
||||
"qualitative questions."
|
||||
)
|
||||
)
|
||||
if line.question_type != "qualitative" and not line.uom_id:
|
||||
raise exceptions.UserError(
|
||||
_(
|
||||
"You should provide a unit of measure for "
|
||||
"quantitative questions."
|
||||
)
|
||||
)
|
||||
if inspection.success:
|
||||
inspection.state = "success"
|
||||
else:
|
||||
inspection.state = "waiting"
|
||||
|
||||
def action_approve(self):
|
||||
for inspection in self:
|
||||
if inspection.success:
|
||||
inspection.state = "success"
|
||||
else:
|
||||
inspection.state = "failed"
|
||||
|
||||
def action_cancel(self):
|
||||
self.write({"state": "canceled"})
|
||||
|
||||
def set_test(self, trigger_line, force_fill=False):
|
||||
for inspection in self:
|
||||
header = self._prepare_inspection_header(inspection.object_id, trigger_line)
|
||||
del header["state"] # don't change current status
|
||||
del header["auto_generated"] # don't change auto_generated flag
|
||||
del header["user"] # don't change current user
|
||||
inspection.write(header)
|
||||
inspection.inspection_lines.unlink()
|
||||
inspection.inspection_lines = inspection._prepare_inspection_lines(
|
||||
trigger_line.test, force_fill=force_fill
|
||||
)
|
||||
|
||||
def _make_inspection(self, object_ref, trigger_line, date=None):
|
||||
"""Overridable hook method for creating inspection from test.
|
||||
:param object_ref: Object instance
|
||||
:param trigger_line: Trigger line instance
|
||||
:return: Inspection object
|
||||
"""
|
||||
inspection = self.create(
|
||||
self._prepare_inspection_header(object_ref, trigger_line)
|
||||
)
|
||||
if date:
|
||||
inspection.date = date
|
||||
inspection.set_test(trigger_line)
|
||||
return inspection
|
||||
|
||||
def _prepare_inspection_header(self, object_ref, trigger_line):
|
||||
"""Overridable hook method for preparing inspection header.
|
||||
:param object_ref: Object instance
|
||||
:param trigger_line: Trigger line instance
|
||||
:return: List of values for creating the inspection
|
||||
"""
|
||||
return {
|
||||
"object_id": object_ref
|
||||
and "{},{}".format(object_ref._name, object_ref.id)
|
||||
or False,
|
||||
"state": trigger_line.timing == "plan_ahead" and "plan" or "ready",
|
||||
"test": trigger_line.test.id,
|
||||
"user": trigger_line.user.id,
|
||||
"auto_generated": True,
|
||||
}
|
||||
|
||||
def _prepare_inspection_lines(self, test, force_fill=False):
|
||||
new_data = []
|
||||
for line in test.test_lines:
|
||||
data = self._prepare_inspection_line(
|
||||
test, line, fill=test.fill_correct_values or force_fill
|
||||
)
|
||||
new_data.append((0, 0, data))
|
||||
return new_data
|
||||
|
||||
def _prepare_inspection_line(self, test, line, fill=None):
|
||||
data = {
|
||||
"name": line.name,
|
||||
"test_line": line.id,
|
||||
"notes": line.notes,
|
||||
"min_value": line.min_value,
|
||||
"max_value": line.max_value,
|
||||
"test_uom_id": line.uom_id.id,
|
||||
"uom_id": line.uom_id.id,
|
||||
"question_type": line.type,
|
||||
"possible_ql_values": [x.id for x in line.ql_values],
|
||||
}
|
||||
if fill:
|
||||
if line.type == "qualitative":
|
||||
# Fill with the first correct value found
|
||||
for value in line.ql_values:
|
||||
if value.ok:
|
||||
data["qualitative_value"] = value.id
|
||||
break
|
||||
else:
|
||||
# Fill with a value inside the interval
|
||||
data["quantitative_value"] = (line.min_value + line.max_value) * 0.5
|
||||
return data
|
||||
|
||||
def _get_existing_inspections(self, records):
|
||||
reference_vals = []
|
||||
for rec in records:
|
||||
reference_vals.append(",".join([rec._name, str(rec.id)]))
|
||||
return self.sudo().search([("object_id", "in", reference_vals)])
|
||||
|
||||
|
||||
class QcInspectionLine(models.Model):
|
||||
_name = "qc.inspection.line"
|
||||
_description = "Quality control inspection line"
|
||||
|
||||
@api.depends(
|
||||
"question_type",
|
||||
"uom_id",
|
||||
"test_uom_id",
|
||||
"max_value",
|
||||
"min_value",
|
||||
"quantitative_value",
|
||||
"qualitative_value",
|
||||
"possible_ql_values",
|
||||
)
|
||||
def _compute_quality_test_check(self):
|
||||
for insp_line in self:
|
||||
if insp_line.question_type == "qualitative":
|
||||
insp_line.success = insp_line.qualitative_value.ok
|
||||
else:
|
||||
if insp_line.uom_id.id == insp_line.test_uom_id.id:
|
||||
amount = insp_line.quantitative_value
|
||||
else:
|
||||
amount = self.env["uom.uom"]._compute_quantity(
|
||||
insp_line.quantitative_value, insp_line.test_uom_id.id
|
||||
)
|
||||
insp_line.success = insp_line.max_value >= amount >= insp_line.min_value
|
||||
|
||||
@api.depends(
|
||||
"possible_ql_values", "min_value", "max_value", "test_uom_id", "question_type"
|
||||
)
|
||||
def _compute_valid_values(self):
|
||||
for insp_line in self:
|
||||
if insp_line.question_type == "qualitative":
|
||||
insp_line.valid_values = ", ".join(
|
||||
[x.name for x in insp_line.possible_ql_values if x.ok]
|
||||
)
|
||||
else:
|
||||
insp_line.valid_values = "{} ~ {}".format(
|
||||
formatLang(self.env, insp_line.min_value),
|
||||
formatLang(self.env, insp_line.max_value),
|
||||
)
|
||||
if self.env.ref("uom.group_uom") in self.env.user.groups_id:
|
||||
insp_line.valid_values += " %s" % insp_line.test_uom_id.name
|
||||
|
||||
inspection_id = fields.Many2one(
|
||||
comodel_name="qc.inspection", string="Inspection", ondelete="cascade"
|
||||
)
|
||||
name = fields.Char(string="Question", readonly=True)
|
||||
product_id = fields.Many2one(
|
||||
comodel_name="product.product",
|
||||
related="inspection_id.product_id",
|
||||
store=True,
|
||||
)
|
||||
test_line = fields.Many2one(
|
||||
comodel_name="qc.test.question", string="Test question", readonly=True
|
||||
)
|
||||
possible_ql_values = fields.Many2many(
|
||||
comodel_name="qc.test.question.value", string="Answers"
|
||||
)
|
||||
quantitative_value = fields.Float(
|
||||
string="Quantitative value",
|
||||
digits="Quality Control",
|
||||
help="Value of the result for a quantitative question.",
|
||||
)
|
||||
qualitative_value = fields.Many2one(
|
||||
comodel_name="qc.test.question.value",
|
||||
string="Qualitative value",
|
||||
help="Value of the result for a qualitative question.",
|
||||
domain="[('id', 'in', possible_ql_values)]",
|
||||
)
|
||||
notes = fields.Text()
|
||||
min_value = fields.Float(
|
||||
string="Min",
|
||||
digits="Quality Control",
|
||||
readonly=True,
|
||||
help="Minimum valid value for a quantitative question.",
|
||||
)
|
||||
max_value = fields.Float(
|
||||
string="Max",
|
||||
digits="Quality Control",
|
||||
readonly=True,
|
||||
help="Maximum valid value for a quantitative question.",
|
||||
)
|
||||
test_uom_id = fields.Many2one(
|
||||
comodel_name="uom.uom",
|
||||
string="Test UoM",
|
||||
readonly=True,
|
||||
help="UoM for minimum and maximum values for a quantitative " "question.",
|
||||
)
|
||||
test_uom_category = fields.Many2one(
|
||||
comodel_name="uom.category", related="test_uom_id.category_id", store=True
|
||||
)
|
||||
uom_id = fields.Many2one(
|
||||
comodel_name="uom.uom",
|
||||
string="UoM",
|
||||
domain="[('category_id', '=', test_uom_category)]",
|
||||
help="UoM of the inspection value for a quantitative question.",
|
||||
)
|
||||
question_type = fields.Selection(
|
||||
[("qualitative", "Qualitative"), ("quantitative", "Quantitative")],
|
||||
readonly=True,
|
||||
)
|
||||
valid_values = fields.Char(
|
||||
string="Valid values", store=True, compute="_compute_valid_values"
|
||||
)
|
||||
success = fields.Boolean(
|
||||
compute="_compute_quality_test_check", string="Success?", store=True
|
||||
)
|
||||
|
|
@ -0,0 +1,116 @@
|
|||
# Copyright 2010 NaN Projectes de Programari Lliure, S.L.
|
||||
# Copyright 2014 Serv. Tec. Avanzados - Pedro M. Baeza
|
||||
# Copyright 2014 Oihane Crucelaegui - AvanzOSC
|
||||
# Copyright 2017 ForgeFlow S.L.
|
||||
# Copyright 2017 Simone Rubino - Agile Business Group
|
||||
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
|
||||
|
||||
from odoo import _, api, exceptions, fields, models
|
||||
|
||||
|
||||
class QcTest(models.Model):
|
||||
"""
|
||||
A test is a group of questions along with the values that make them valid.
|
||||
"""
|
||||
|
||||
_name = "qc.test"
|
||||
_description = "Quality control test"
|
||||
_inherit = "mail.thread"
|
||||
|
||||
def object_selection_values(self):
|
||||
return set()
|
||||
|
||||
@api.onchange("type")
|
||||
def onchange_type(self):
|
||||
if self.type == "generic":
|
||||
self.object_id = False
|
||||
|
||||
active = fields.Boolean(default=True)
|
||||
name = fields.Char(required=True, translate=True)
|
||||
test_lines = fields.One2many(
|
||||
comodel_name="qc.test.question",
|
||||
inverse_name="test",
|
||||
string="Questions",
|
||||
copy=True,
|
||||
)
|
||||
object_id = fields.Reference(
|
||||
string="Reference object",
|
||||
selection="object_selection_values",
|
||||
)
|
||||
fill_correct_values = fields.Boolean(string="Pre-fill with correct values")
|
||||
type = fields.Selection(
|
||||
[("generic", "Generic"), ("related", "Related")],
|
||||
required=True,
|
||||
default="generic",
|
||||
)
|
||||
category = fields.Many2one(comodel_name="qc.test.category")
|
||||
company_id = fields.Many2one(
|
||||
comodel_name="res.company",
|
||||
default=lambda self: self.env.company,
|
||||
)
|
||||
|
||||
|
||||
class QcTestQuestion(models.Model):
|
||||
"""Each test line is a question with its valid value(s)."""
|
||||
|
||||
_name = "qc.test.question"
|
||||
_description = "Quality control question"
|
||||
_order = "sequence, id"
|
||||
|
||||
@api.constrains("ql_values")
|
||||
def _check_valid_answers(self):
|
||||
for tc in self:
|
||||
if (
|
||||
tc.type == "qualitative"
|
||||
and tc.ql_values
|
||||
and not tc.ql_values.filtered("ok")
|
||||
):
|
||||
raise exceptions.ValidationError(
|
||||
_(
|
||||
"Question '%s' is not valid: "
|
||||
"you have to mark at least one value as OK."
|
||||
)
|
||||
% tc.name_get()[0][1]
|
||||
)
|
||||
|
||||
@api.constrains("min_value", "max_value")
|
||||
def _check_valid_range(self):
|
||||
for tc in self:
|
||||
if tc.type == "quantitative" and tc.min_value > tc.max_value:
|
||||
raise exceptions.ValidationError(
|
||||
_(
|
||||
"Question '%s' is not valid: "
|
||||
"minimum value can't be higher than maximum value."
|
||||
)
|
||||
% tc.name_get()[0][1]
|
||||
)
|
||||
|
||||
sequence = fields.Integer(required=True, default="10")
|
||||
test = fields.Many2one(comodel_name="qc.test")
|
||||
name = fields.Char(required=True, translate=True)
|
||||
type = fields.Selection(
|
||||
[("qualitative", "Qualitative"), ("quantitative", "Quantitative")],
|
||||
required=True,
|
||||
)
|
||||
ql_values = fields.One2many(
|
||||
comodel_name="qc.test.question.value",
|
||||
inverse_name="test_line",
|
||||
string="Qualitative values",
|
||||
copy=True,
|
||||
)
|
||||
notes = fields.Text()
|
||||
min_value = fields.Float(string="Min", digits="Quality Control")
|
||||
max_value = fields.Float(string="Max", digits="Quality Control")
|
||||
uom_id = fields.Many2one(comodel_name="uom.uom", string="Uom")
|
||||
|
||||
|
||||
class QcTestQuestionValue(models.Model):
|
||||
_name = "qc.test.question.value"
|
||||
_description = "Possible values for qualitative questions."
|
||||
|
||||
test_line = fields.Many2one(comodel_name="qc.test.question", string="Test question")
|
||||
name = fields.Char(required=True, translate=True)
|
||||
ok = fields.Boolean(
|
||||
string="Correct answer?",
|
||||
help="When this field is marked, the answer is considered correct.",
|
||||
)
|
||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue