Compare commits
76 commits
16.0
...
feature/re
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a1431d3521 | ||
|
|
02a4758635 | ||
|
|
625b9582b3 | ||
|
|
5d4552581c | ||
|
|
19eb1b91b5 | ||
|
|
fee8ec9c45 | ||
|
|
ed048c85eb | ||
|
|
dbf5bd38b4 | ||
|
|
6fbc7b9456 | ||
|
|
5c89795e30 | ||
|
|
8b0a402ccf | ||
|
|
c70de71cff | ||
|
|
267059fa1b | ||
|
|
b07b7dc671 | ||
|
|
b15e9bc977 | ||
|
|
dc44ace78f | ||
|
|
40ce973bd6 | ||
|
|
5eb039ffe0 | ||
|
|
534876242e | ||
|
|
40db038e15 | ||
|
|
4c1b18ec30 | ||
|
|
fbcc1dfaa2 | ||
|
|
f2a8596d75 | ||
|
|
5721687488 | ||
|
|
e29d7e41d4 | ||
|
|
e59df5a428 | ||
|
|
8e5a4a39e0 | ||
|
|
83b6cca09a | ||
|
|
6fed8639ed | ||
|
|
0a0cf5a018 | ||
|
|
df572337d6 | ||
|
|
9000e92324 | ||
|
|
eb6b53db1a | ||
|
|
9807feef90 | ||
|
|
8b728b8b7c | ||
|
|
23e156a13e | ||
|
|
a128c1ee1e | ||
|
|
1f37f289ba | ||
|
|
10ae5bcbf6 | ||
|
|
d90f043617 | ||
|
|
a1317b8ade | ||
|
|
5ba8ddda92 | ||
|
|
0d5f0be88c | ||
|
|
115c9c0cc4 | ||
|
|
713acd065e | ||
|
|
b5410d24bc | ||
|
|
3eae4fa884 | ||
|
|
4bb7edfbec | ||
|
|
1208990be3 | ||
|
|
2eaef82f3a | ||
|
|
6d94484710 | ||
|
|
f3a258766b | ||
|
|
b916779a67 | ||
|
|
55811d54b1 | ||
|
|
fd83d31188 | ||
|
|
4b78dc4447 | ||
|
|
70ed972e23 | ||
|
|
c308d538a3 | ||
|
|
f5a689bcc8 | ||
|
|
4207afbc3f | ||
|
|
0889cdfc3a | ||
|
|
b10ba1fc15 | ||
|
|
2a480b74bb | ||
|
|
4d23e98f7b | ||
|
|
3cb0af6a7b | ||
|
|
ec9f5a572c | ||
|
|
fe137dc265 | ||
|
|
5b9c6e3211 | ||
|
|
370c8ca66a | ||
|
|
7cff89e418 | ||
|
|
69917d1ec2 | ||
|
|
39eb9608dc | ||
|
|
80c2617c40 | ||
|
|
e27cacd65b | ||
|
|
1bcc31b810 | ||
|
|
123aabb775 |
892 changed files with 351861 additions and 17588 deletions
24
.editorconfig
Normal file
24
.editorconfig
Normal file
|
|
@ -0,0 +1,24 @@
|
||||||
|
# Configuration for EditorConfig
|
||||||
|
# https://EditorConfig.org
|
||||||
|
|
||||||
|
root = true
|
||||||
|
|
||||||
|
[*]
|
||||||
|
charset = utf-8
|
||||||
|
end_of_line = lf
|
||||||
|
insert_final_newline = true
|
||||||
|
trim_trailing_whitespace = true
|
||||||
|
|
||||||
|
[*.{py,pyi}]
|
||||||
|
indent_size = 4
|
||||||
|
indent_style = space
|
||||||
|
|
||||||
|
[*.{xml,yml,yaml,json,js,css,scss,md,rst}]
|
||||||
|
indent_size = 2
|
||||||
|
indent_style = space
|
||||||
|
|
||||||
|
[*.{md,rst}]
|
||||||
|
trim_trailing_whitespace = false
|
||||||
|
|
||||||
|
[Makefile]
|
||||||
|
indent_style = tab
|
||||||
25
.flake8
Normal file
25
.flake8
Normal file
|
|
@ -0,0 +1,25 @@
|
||||||
|
# See https://github.com/OCA/maintainer-tools/issues/38
|
||||||
|
# E123, E133, E226, E241, E242 are ignored by default
|
||||||
|
# E203 for black (whitespace before : in slice)
|
||||||
|
|
||||||
|
[flake8]
|
||||||
|
max-line-length = 88
|
||||||
|
max-complexity = 30
|
||||||
|
# B = bugbear
|
||||||
|
# B9 = bugbear opinionated (incl line length)
|
||||||
|
select = C,E,F,W,B,B9
|
||||||
|
# E203: whitespace before ':' (black-compatible)
|
||||||
|
# E501: line too long (black-compatible)
|
||||||
|
# W503: line break before binary operator (black-compatible)
|
||||||
|
# B950: line too long (soft limit, complements B)
|
||||||
|
ignore = E203,E501,W503,B950
|
||||||
|
exclude =
|
||||||
|
.git,
|
||||||
|
__pycache__,
|
||||||
|
.tox,
|
||||||
|
.eggs,
|
||||||
|
*.egg,
|
||||||
|
build,
|
||||||
|
.venv,
|
||||||
|
.env,
|
||||||
|
setup
|
||||||
700
.github/copilot-instructions.md
vendored
Normal file
700
.github/copilot-instructions.md
vendored
Normal file
|
|
@ -0,0 +1,700 @@
|
||||||
|
# AI Agent Skills & Prompt Guidance
|
||||||
|
|
||||||
|
Para máxima productividad y calidad, los agentes AI deben seguir estas pautas y consultar los archivos de skills detallados:
|
||||||
|
|
||||||
|
## 1. Skills por Lenguaje/Stack
|
||||||
|
|
||||||
|
- **Python/Odoo ORM**: `.github/skills/python.md`
|
||||||
|
- **XML/Odoo Views**: `.github/skills/xml.md`
|
||||||
|
- **HTML/CSS/QWeb**: `.github/skills/html_css.md`
|
||||||
|
- **JavaScript/Odoo Web**: `.github/skills/javascript.md`
|
||||||
|
|
||||||
|
## 2. Ejecución de tests
|
||||||
|
|
||||||
|
Siempre usa:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker-compose run odoo odoo -d odoo --test-enable --stop-after-init -u addon_name
|
||||||
|
```
|
||||||
|
|
||||||
|
> NOTA: Usa `docker-compose run` (no `exec`) para evitar efectos de caché.
|
||||||
|
|
||||||
|
## 3. Patrones y convenciones clave
|
||||||
|
|
||||||
|
- Sigue OCA guidelines y skills.
|
||||||
|
- No pongas lógica en QWeb, solo acceso a datos preparados en el controller.
|
||||||
|
- Usa `main_seller_id` en vez de `default_supplier_id` en product_main_seller.
|
||||||
|
- Para bulk updates, prefiere `search().write()` sobre loops.
|
||||||
|
|
||||||
|
## 4. Errores comunes a evitar
|
||||||
|
|
||||||
|
- No uses `_()` en definiciones de campos, solo en métodos ejecutables.
|
||||||
|
- No pongas lógica de negocio en JavaScript, solo en Python.
|
||||||
|
- No uses estilos inline en QWeb salvo casos justificados.
|
||||||
|
|
||||||
|
## 5. Documentación y referencias
|
||||||
|
|
||||||
|
- Consulta este archivo para patrones globales.
|
||||||
|
- Consulta los archivos de skills para detalles por lenguaje.
|
||||||
|
- Para troubleshooting de templates, revisa `docs/QWEB_BEST_PRACTICES.md` y `docs/FINAL_SOLUTION_SUMMARY.md`.
|
||||||
|
|
||||||
|
# GitHub Copilot Instructions - Kidekoop Addons Custom
|
||||||
|
|
||||||
|
## Project Overview
|
||||||
|
|
||||||
|
Este repositorio contiene addons personalizados y modificados de Odoo 18.0. El proyecto combina:
|
||||||
|
|
||||||
|
- **OCB (Odoo Community Backports)**: Base de Odoo 18.0 community en `/ocb`
|
||||||
|
- **Addons OCA**: Módulos de la comunidad OCA de los que heredan nuestros addons, modificados para adaptarse a nuestras necesidades
|
||||||
|
- **Addons Custom**: Módulos desarrollados por este proyecto
|
||||||
|
|
||||||
|
## Architecture & Stack
|
||||||
|
|
||||||
|
- **Odoo Version**: 18.0 (OCB)
|
||||||
|
- **Python Version**: 3.10+
|
||||||
|
- **Framework**: Odoo ORM
|
||||||
|
- **Deployment**: Docker Compose
|
||||||
|
- **DB**: PostgreSQL
|
||||||
|
- **Languages**: Python, XML, JavaScript, QWeb
|
||||||
|
|
||||||
|
## Code Standards
|
||||||
|
|
||||||
|
### Python Style
|
||||||
|
|
||||||
|
- Seguir **OCA guidelines** estrictamente
|
||||||
|
- Usar **black** para formateo (configurado en `pyproject.toml`)
|
||||||
|
- **isort** para ordenar imports (perfil black)
|
||||||
|
- **flake8** para linting
|
||||||
|
- **pylint** con pylint-odoo para verificaciones específicas de Odoo
|
||||||
|
- Pre-commit hooks activos (ver `.pre-commit-config.yaml`)
|
||||||
|
|
||||||
|
### Odoo Conventions
|
||||||
|
|
||||||
|
- **Model names**: snake_case con punto (`product.price.category`)
|
||||||
|
- **Class names**: PascalCase (`ProductPriceCategory`)
|
||||||
|
- **File names**: snake_case (`product_price_category.py`)
|
||||||
|
- **XML IDs**: módulo.nombre_descriptivo (`product_price_category.view_form`)
|
||||||
|
- **Manifest**: Siempre `__manifest__.py`, nunca `__openerp__.py`
|
||||||
|
|
||||||
|
### XML/View Standards
|
||||||
|
|
||||||
|
- **Indent**: 4 espacios (no tabs)
|
||||||
|
- **XPath**: Usar `position` explícito (`before`, `after`, `inside`, `replace`, `attributes`)
|
||||||
|
- **Groups**: Referenciar grupos con módulo.xml_id (`sales_team.group_sale_manager`)
|
||||||
|
- **Sequence**: Usar `sequence` attribute para ordenar campos en vistas
|
||||||
|
|
||||||
|
### Translation System
|
||||||
|
|
||||||
|
**IMPORTANTE**: El sistema de traducciones está funcionando correctamente. Seguir estas reglas:
|
||||||
|
|
||||||
|
1. **Estructura de carpeta i18n/**:
|
||||||
|
|
||||||
|
```
|
||||||
|
addon_name/
|
||||||
|
├── i18n/
|
||||||
|
│ ├── es.po # Español (obligatorio)
|
||||||
|
│ ├── eu.po # Euskera (obligatorio)
|
||||||
|
│ └── addon_name.pot # Template (generado)
|
||||||
|
```
|
||||||
|
|
||||||
|
2. **NO usar `_()` en definiciones de campos a nivel de módulo**:
|
||||||
|
|
||||||
|
```python
|
||||||
|
# ❌ INCORRECTO - causa warnings
|
||||||
|
from odoo import _
|
||||||
|
name = fields.Char(string=_("Name"))
|
||||||
|
|
||||||
|
# ✅ CORRECTO - traducción se maneja por .po files
|
||||||
|
name = fields.Char(string="Name")
|
||||||
|
```
|
||||||
|
|
||||||
|
3. **Usar `_()` solo en métodos y código ejecutable**:
|
||||||
|
|
||||||
|
```python
|
||||||
|
def action_confirm(self):
|
||||||
|
message = _("Confirmed successfully")
|
||||||
|
return {'warning': {'message': message}}
|
||||||
|
```
|
||||||
|
|
||||||
|
4. **Generar/actualizar traducciones**:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Exportar términos a traducir
|
||||||
|
Pedir al usuario generar a través de UI, no sabemos el método correcto para exportar SÓLO las cadenas del addon sin incluir todo el sistema.
|
||||||
|
```
|
||||||
|
|
||||||
|
Usar sólo polib y apend cadenas en los archivos .po, msmerge corrompe los archivos.
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
5. **Formato de archivos .po**:
|
||||||
|
- Encoding: UTF-8
|
||||||
|
- Content-Type: text/plain; charset=UTF-8
|
||||||
|
- Language codes: `es`, `eu`, `ca`, `gl`, `pt`, `fr`, `it`
|
||||||
|
|
||||||
|
## Project Structure
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
addons-cm/
|
||||||
|
├── .github/ # GitHub configs
|
||||||
|
│ └── copilot-instructions.md # Este archivo
|
||||||
|
├── ocb/ # Odoo Community Backports (18.0)
|
||||||
|
│ └── addons/ # Addons core de Odoo
|
||||||
|
├── oca_dependencies.txt # Dependencias OCA
|
||||||
|
├── requirements.txt # Dependencias Python
|
||||||
|
├── docker-compose.yml # Configuración Docker
|
||||||
|
├── Makefile # Comandos útiles
|
||||||
|
│
|
||||||
|
├── # === ADDONS OCA NO MODIFICADOS ===
|
||||||
|
├── account_invoice_triple_discount/ # Triple descuento en facturas (OCA)
|
||||||
|
├── purchase_triple_discount/ # Triple descuento en compras (OCA)
|
||||||
|
├── product_origin/ # Origen del producto (OCA)
|
||||||
|
├── product_get_price_helper/ # Helper de precios (OCA)
|
||||||
|
├── product_main_seller/ # Proveedor principal (OCA)
|
||||||
|
├── product_price_category/ # Categorías de precio (OCA)
|
||||||
|
│
|
||||||
|
├── # === ADDONS CUSTOM ===
|
||||||
|
├── account_invoice_triple_discount_readonly/ # Fix para triple descuento
|
||||||
|
├── product_price_category_supplier/ # Extensión categorías precio
|
||||||
|
├── product_sale_price_from_pricelist/ # Auto-cálculo precio venta
|
||||||
|
└── website_sale_aplicoop/ # Sistema eskaera (compras grupo)
|
||||||
|
|
||||||
|
````
|
||||||
|
|
||||||
|
## Addon References
|
||||||
|
|
||||||
|
**Para arquitectura, detalles de implementación y uso específico de cada addon, consultar su `README.md` individual.**
|
||||||
|
|
||||||
|
### Addons OCA No Modificados
|
||||||
|
|
||||||
|
- [account_invoice_triple_discount](../account_invoice_triple_discount/README.rst)
|
||||||
|
- [purchase_triple_discount](../purchase_triple_discount/README.rst)
|
||||||
|
- [product_origin](../product_origin/README.rst)
|
||||||
|
- [product_get_price_helper](../product_get_price_helper/README.rst)
|
||||||
|
- [product_main_seller](../product_main_seller/README.rst)
|
||||||
|
- [product_price_category](../product_price_category/README.rst)
|
||||||
|
|
||||||
|
### Addons Custom Propios
|
||||||
|
|
||||||
|
- [account_invoice_triple_discount_readonly](../account_invoice_triple_discount_readonly/README.md) - Fix bug descuentos
|
||||||
|
- [product_price_category_supplier](../product_price_category_supplier/README.md) - Gestión categorías por proveedor
|
||||||
|
- [product_sale_price_from_pricelist](../product_sale_price_from_pricelist/README.md) - Auto-precio basado en compra
|
||||||
|
- [website_sale_aplicoop](../website_sale_aplicoop/README.md) - Sistema eskaera completo
|
||||||
|
|
||||||
|
## Development Workflow
|
||||||
|
|
||||||
|
### Local Development
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Iniciar entorno (puertos: 8070=web, 8073=longpolling)
|
||||||
|
docker-compose up -d
|
||||||
|
|
||||||
|
# Actualizar addon
|
||||||
|
docker-compose exec odoo odoo -d odoo -u addon_name --stop-after-init
|
||||||
|
|
||||||
|
# Ver logs
|
||||||
|
docker-compose logs -f odoo
|
||||||
|
|
||||||
|
# Ejecutar tests
|
||||||
|
docker-compose run odoo odoo -d odoo --test-enable --stop-after-init -u addon_name
|
||||||
|
|
||||||
|
# NOTA: Usa `docker-compose run` (no `exec`) para lanzar un contenedor limpio y evitar efectos de caché. Cambia `addon_name` por el módulo a testear.
|
||||||
|
|
||||||
|
# Acceder a shell de Odoo
|
||||||
|
docker-compose exec odoo bash
|
||||||
|
|
||||||
|
# Acceder a PostgreSQL
|
||||||
|
docker-compose exec db psql -U odoo -d odoo
|
||||||
|
````
|
||||||
|
|
||||||
|
### Quality Checks
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Ejecutar todos los checks (usa .pre-commit-config.yaml)
|
||||||
|
pre-commit run --all-files
|
||||||
|
|
||||||
|
# O usar Makefile (ver `make help` para todos los comandos)
|
||||||
|
make lint # Solo linting (pre-commit)
|
||||||
|
make format # Formatear código (black + isort)
|
||||||
|
make check-format # Verificar formateo sin modificar
|
||||||
|
make flake8 # Ejecutar flake8
|
||||||
|
make pylint # Ejecutar pylint (todos)
|
||||||
|
make pylint-required # Solo verificaciones mandatorias
|
||||||
|
make clean # Limpiar archivos temporales
|
||||||
|
```
|
||||||
|
|
||||||
|
### Tools Configuration
|
||||||
|
|
||||||
|
- **black**: Line length 88, target Python 3.10+ (ver `pyproject.toml`)
|
||||||
|
- **isort**: Profile black, sections: STDLIB > THIRDPARTY > ODOO > ODOO_ADDONS > FIRSTPARTY > LOCALFOLDER
|
||||||
|
- **flake8**: Ver `.flake8` para reglas específicas
|
||||||
|
- **pylint**: Configurado para Odoo con `pylint-odoo` plugin
|
||||||
|
|
||||||
|
### Testing
|
||||||
|
|
||||||
|
- Tests en `tests/` de cada addon
|
||||||
|
- Naming: `test_*.py`
|
||||||
|
- Herencia: `odoo.tests.common.TransactionCase`
|
||||||
|
- Ejecutar: `--test-enable` flag
|
||||||
|
|
||||||
|
## Critical Architecture Patterns
|
||||||
|
|
||||||
|
### Product Variants Architecture
|
||||||
|
|
||||||
|
**IMPORTANTE**: Los campos de lógica de negocio SIEMPRE van en `product.product` (variantes), no en `product.template`:
|
||||||
|
|
||||||
|
```python
|
||||||
|
# ✅ CORRECTO - Lógica en product.product
|
||||||
|
class ProductProduct(models.Model):
|
||||||
|
_inherit = 'product.product'
|
||||||
|
|
||||||
|
last_purchase_price_updated = fields.Boolean(default=False)
|
||||||
|
list_price_theoritical = fields.Float(default=0.0)
|
||||||
|
|
||||||
|
def _compute_theoritical_price(self):
|
||||||
|
for product in self:
|
||||||
|
# Cálculo real por variante
|
||||||
|
pass
|
||||||
|
|
||||||
|
# ✅ CORRECTO - Template solo tiene campos related
|
||||||
|
class ProductTemplate(models.Model):
|
||||||
|
_inherit = 'product.template'
|
||||||
|
|
||||||
|
last_purchase_price_updated = fields.Boolean(
|
||||||
|
related='product_variant_ids.last_purchase_price_updated',
|
||||||
|
readonly=False
|
||||||
|
)
|
||||||
|
```
|
||||||
|
|
||||||
|
**Por qué**: Evita problemas con pricelists y reportes que operan a nivel de variante. Ver `product_sale_price_from_pricelist` como ejemplo.
|
||||||
|
|
||||||
|
### QWeb Template Best Practices
|
||||||
|
|
||||||
|
**CRÍTICO**: QWeb tiene limitaciones estrictas con lógica compleja. **Siempre mover lógica al controller**:
|
||||||
|
|
||||||
|
```python
|
||||||
|
# ❌ MAL - QWeb no puede parsear esto
|
||||||
|
# <t t-set="price" t-value="price_info.get('price') or product.list_price or 0"/>
|
||||||
|
|
||||||
|
# ✅ CORRECTO - Preparar datos en controller
|
||||||
|
class WebsiteController:
|
||||||
|
def _prepare_product_display_info(self, product, price_info):
|
||||||
|
"""Pre-procesar todos los valores para QWeb."""
|
||||||
|
price = price_info.get(product.id, {}).get('price') or product.list_price or 0.0
|
||||||
|
return {
|
||||||
|
'display_price': float(price),
|
||||||
|
'safe_uom_category': product.uom_id.category_id.name or '',
|
||||||
|
}
|
||||||
|
|
||||||
|
# En template: acceso simple, sin lógica
|
||||||
|
# <span t-esc="product_display['display_price']"/>
|
||||||
|
```
|
||||||
|
|
||||||
|
Ver [docs/QWEB_BEST_PRACTICES.md](../docs/QWEB_BEST_PRACTICES.md) para más detalles.
|
||||||
|
|
||||||
|
## Common Patterns
|
||||||
|
|
||||||
|
### Extending Models
|
||||||
|
|
||||||
|
```python
|
||||||
|
from odoo import models, fields, api
|
||||||
|
|
||||||
|
class ResPartner(models.Model):
|
||||||
|
_inherit = 'res.partner'
|
||||||
|
|
||||||
|
custom_field = fields.Char(string="Custom Field")
|
||||||
|
|
||||||
|
@api.depends('field1', 'field2')
|
||||||
|
def _compute_custom(self):
|
||||||
|
for record in self:
|
||||||
|
record.custom_computed = record.field1 + record.field2
|
||||||
|
```
|
||||||
|
|
||||||
|
### Creating Wizards (Transient Models)
|
||||||
|
|
||||||
|
```python
|
||||||
|
class WizardModel(models.TransientModel):
|
||||||
|
_name = 'wizard.model.name'
|
||||||
|
_description = "Wizard Description"
|
||||||
|
|
||||||
|
def action_confirm(self):
|
||||||
|
# Business logic
|
||||||
|
return {'type': 'ir.actions.act_window_close'}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Bulk Updates
|
||||||
|
|
||||||
|
```python
|
||||||
|
# Prefer SQL-level updates for performance
|
||||||
|
self.env['product.template'].search([
|
||||||
|
('default_supplier_id', '=', partner_id)
|
||||||
|
]).write({'price_category_id': category_id})
|
||||||
|
```
|
||||||
|
|
||||||
|
### Notifications
|
||||||
|
|
||||||
|
```python
|
||||||
|
return {
|
||||||
|
'type': 'ir.actions.client',
|
||||||
|
'tag': 'display_notification',
|
||||||
|
'params': {
|
||||||
|
'title': _('Success'),
|
||||||
|
'message': _('Operation completed'),
|
||||||
|
'type': 'success', # or 'warning', 'danger', 'info'
|
||||||
|
'sticky': False,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Logging Pattern
|
||||||
|
|
||||||
|
```python
|
||||||
|
import logging
|
||||||
|
|
||||||
|
_logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
# En métodos de cálculo de precios, usar logging detallado:
|
||||||
|
_logger.info(
|
||||||
|
"[PRICE DEBUG] Product %s [%s]: base_price=%.2f, tax_amount=%.2f",
|
||||||
|
product.default_code or product.name,
|
||||||
|
product.id,
|
||||||
|
base_price,
|
||||||
|
tax_amount,
|
||||||
|
)
|
||||||
|
```
|
||||||
|
|
||||||
|
### Price Calculation Pattern
|
||||||
|
|
||||||
|
```python
|
||||||
|
# Usar product_get_price_helper para cálculos consistentes
|
||||||
|
partial_price = product._get_price(qty=1, pricelist=pricelist)
|
||||||
|
base_price = partial_price.get('value', 0.0) or 0.0
|
||||||
|
|
||||||
|
# Siempre validar taxes
|
||||||
|
if not product.taxes_id:
|
||||||
|
raise UserError(_("No taxes defined for product %s") % product.name)
|
||||||
|
```
|
||||||
|
|
||||||
|
## Dependencies Management
|
||||||
|
|
||||||
|
### OCA Dependencies (`oca_dependencies.txt`)
|
||||||
|
|
||||||
|
```
|
||||||
|
account-invoicing
|
||||||
|
product-attribute
|
||||||
|
purchase-workflow
|
||||||
|
sale-workflow
|
||||||
|
```
|
||||||
|
|
||||||
|
### Python Dependencies (`requirements.txt`)
|
||||||
|
|
||||||
|
- Versiones específicas para evitar breaking changes
|
||||||
|
- Incluir herramientas de desarrollo (linters, etc)
|
||||||
|
|
||||||
|
## Security & Access Rights
|
||||||
|
|
||||||
|
### Grupos Comunes
|
||||||
|
|
||||||
|
- `base.group_user` - Usuario interno
|
||||||
|
- `base.group_system` - Administrador
|
||||||
|
- `sales_team.group_sale_manager` - Manager de ventas
|
||||||
|
- `sales_team.group_sale_salesman` - Vendedor
|
||||||
|
- `purchase.group_purchase_manager` - Manager de compras
|
||||||
|
|
||||||
|
### Security Files
|
||||||
|
|
||||||
|
```xml
|
||||||
|
<!-- security/ir.model.access.csv -->
|
||||||
|
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
|
||||||
|
access_model_user,model.name.user,model_model_name,base.group_user,1,1,1,0
|
||||||
|
```
|
||||||
|
|
||||||
|
## Common Issues & Solutions
|
||||||
|
|
||||||
|
### Translation Warnings
|
||||||
|
|
||||||
|
**Problem**: `WARNING: _() called at import time at module...`
|
||||||
|
**Solution**: Remove `_()` from field definitions, use only in methods
|
||||||
|
|
||||||
|
### XPath Not Found
|
||||||
|
|
||||||
|
**Problem**: `Element ... not found in parent view`
|
||||||
|
**Solution**: Check view inheritance chain, verify XML IDs are correct
|
||||||
|
|
||||||
|
### Discount Reset Issue
|
||||||
|
|
||||||
|
**Problem**: Multiple discounts being accumulated in discount1
|
||||||
|
**Solution**: Use `account_invoice_triple_discount_readonly` addon
|
||||||
|
|
||||||
|
### Price Calculation
|
||||||
|
|
||||||
|
**Problem**: Prices not updating from pricelist
|
||||||
|
**Solution**:
|
||||||
|
|
||||||
|
1. Use `product_sale_price_from_pricelist` with proper configuration
|
||||||
|
2. Set pricelist in Settings > Sales > Automatic Price Configuration
|
||||||
|
3. Ensure `last_purchase_price_compute_type` is NOT set to `manual_update`
|
||||||
|
4. Verify product has taxes configured (required for price calculation)
|
||||||
|
|
||||||
|
### Product Variant Issues
|
||||||
|
|
||||||
|
**Problem**: Computed fields not working in pricelists/reports
|
||||||
|
**Solution**: Move business logic from `product.template` to `product.product` and use `related` fields in template
|
||||||
|
|
||||||
|
### Manifest Dependencies
|
||||||
|
|
||||||
|
**Problem**: Module not loading, dependency errors
|
||||||
|
**Solution**: Check both `__manifest__.py` depends AND `oca_dependencies.txt` for OCA repos
|
||||||
|
|
||||||
|
### QWeb Template Errors
|
||||||
|
|
||||||
|
**Problem**: `TypeError: 'NoneType' object is not callable` in templates
|
||||||
|
**Solution**:
|
||||||
|
|
||||||
|
1. Move complex logic from template to controller
|
||||||
|
2. Use simple attribute access in templates (no conditionals)
|
||||||
|
3. Pre-process all display values in Python
|
||||||
|
4. See [docs/QWEB_BEST_PRACTICES.md](../docs/QWEB_BEST_PRACTICES.md) for patterns
|
||||||
|
|
||||||
|
**Example Pattern**:
|
||||||
|
|
||||||
|
```python
|
||||||
|
# Controller: prepare clean data
|
||||||
|
def _prepare_display_info(self, product):
|
||||||
|
return {
|
||||||
|
'price': product.price or 0.0,
|
||||||
|
'uom': product.uom_id.name or '',
|
||||||
|
}
|
||||||
|
|
||||||
|
# Template: use simple access
|
||||||
|
<span t-esc="display_info['price']"/>
|
||||||
|
```
|
||||||
|
|
||||||
|
## Testing Guidelines
|
||||||
|
|
||||||
|
### Unit Tests
|
||||||
|
|
||||||
|
- Test business logic in isolation
|
||||||
|
- Mock external dependencies
|
||||||
|
- Use `TransactionCase` for DB tests
|
||||||
|
|
||||||
|
### Integration Tests
|
||||||
|
|
||||||
|
- Test workflow end-to-end
|
||||||
|
- Verify computed fields
|
||||||
|
- Check access rights
|
||||||
|
|
||||||
|
### UI Tests (Tours)
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
odoo.define("module.tour", function (require) {
|
||||||
|
"use strict";
|
||||||
|
var tour = require("web_tour.tour");
|
||||||
|
tour.register(
|
||||||
|
"tour_name",
|
||||||
|
{
|
||||||
|
test: true,
|
||||||
|
url: "/web",
|
||||||
|
},
|
||||||
|
[
|
||||||
|
// Tour steps
|
||||||
|
],
|
||||||
|
);
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
|
## Debugging Tips
|
||||||
|
|
||||||
|
### Enable Developer Mode
|
||||||
|
|
||||||
|
```
|
||||||
|
Settings > Activate Developer Mode
|
||||||
|
```
|
||||||
|
|
||||||
|
### Check Logs
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker-compose logs -f odoo | grep ERROR
|
||||||
|
docker-compose logs -f odoo | grep addon_name
|
||||||
|
```
|
||||||
|
|
||||||
|
### Python Debugger
|
||||||
|
|
||||||
|
```python
|
||||||
|
import pdb; pdb.set_trace() # Set breakpoint
|
||||||
|
```
|
||||||
|
|
||||||
|
### Performance Profiling
|
||||||
|
|
||||||
|
```bash
|
||||||
|
--log-level=debug_sql # Show SQL queries
|
||||||
|
```
|
||||||
|
|
||||||
|
## Documentation Standards
|
||||||
|
|
||||||
|
### README.md Structure
|
||||||
|
|
||||||
|
Cada addon debe tener un README.md con:
|
||||||
|
|
||||||
|
1. **Title & Summary**: Qué hace el addon
|
||||||
|
2. **Features**: Lista de funcionalidades
|
||||||
|
3. **Dependencies**: Addons requeridos
|
||||||
|
4. **Installation**: Comandos de instalación
|
||||||
|
5. **Configuration**: Settings necesarios
|
||||||
|
6. **Usage**: Flujo de trabajo típico
|
||||||
|
7. **Technical Details**: Modelos, campos, métodos
|
||||||
|
8. **Translations**: Estado de traducciones (si aplica)
|
||||||
|
|
||||||
|
### **manifest**.py Structure
|
||||||
|
|
||||||
|
Todos los addons custom deben seguir esta estructura:
|
||||||
|
|
||||||
|
```python
|
||||||
|
# Copyright YEAR - Today AUTHOR
|
||||||
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||||
|
{ # noqa: B018
|
||||||
|
"name": "Addon Name",
|
||||||
|
"version": "18.0.X.Y.Z", # X=major, Y=minor, Z=patch
|
||||||
|
"category": "category_name",
|
||||||
|
"summary": "Short description",
|
||||||
|
"author": "Odoo Community Association (OCA), Your Company",
|
||||||
|
"maintainers": ["maintainer_github"],
|
||||||
|
"website": "https://github.com/OCA/repo",
|
||||||
|
"license": "AGPL-3",
|
||||||
|
"depends": [
|
||||||
|
"base",
|
||||||
|
# Lista ordenada alfabéticamente
|
||||||
|
],
|
||||||
|
"data": [
|
||||||
|
"security/ir.model.access.csv",
|
||||||
|
"views/actions.xml",
|
||||||
|
"views/menu.xml",
|
||||||
|
"views/model_views.xml",
|
||||||
|
],
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Code Comments
|
||||||
|
|
||||||
|
- Docstrings en clases y métodos públicos
|
||||||
|
- Comentarios inline para lógica compleja
|
||||||
|
- TODOs con contexto completo
|
||||||
|
- Logging detallado en operaciones de precios/descuentos
|
||||||
|
|
||||||
|
## Version Control
|
||||||
|
|
||||||
|
### Commit Messages
|
||||||
|
|
||||||
|
```
|
||||||
|
[TAG] module: Brief description
|
||||||
|
|
||||||
|
Longer explanation if needed
|
||||||
|
```
|
||||||
|
|
||||||
|
Tags: `[ADD]`, `[FIX]`, `[IMP]`, `[REF]`, `[REM]`, `[I18N]`, `[DOC]`
|
||||||
|
|
||||||
|
### Branch Strategy
|
||||||
|
|
||||||
|
- `main` - Production ready
|
||||||
|
- `dev` - Development
|
||||||
|
- `feature/*` - New features
|
||||||
|
- `fix/*` - Bug fixes
|
||||||
|
|
||||||
|
## Performance Considerations
|
||||||
|
|
||||||
|
- Use `@api.depends` correctamente para computed fields
|
||||||
|
- Prefer `search()` + `write()` sobre loops con `write()`
|
||||||
|
- Use `create()` con lista de vals para bulk creates
|
||||||
|
- Indexes en campos frecuentemente buscados
|
||||||
|
- Avoid N+1 queries con `prefetch`
|
||||||
|
|
||||||
|
## Key Business Features
|
||||||
|
|
||||||
|
### Eskaera System (website_sale_aplicoop)
|
||||||
|
|
||||||
|
Sistema completo de compras colaborativas para cooperativas de consumo:
|
||||||
|
|
||||||
|
- **Group Orders**: Pedidos grupales con estados (draft → confirmed → collected → completed)
|
||||||
|
- **Separate Carts**: Carrito independiente por miembro y por grupo
|
||||||
|
- **Cutoff Dates**: Validación de fechas límite para pedidos
|
||||||
|
- **Pickup Management**: Gestión de días de recogida
|
||||||
|
- **Lazy Loading**: Carga configurable de productos (v18.0.1.3.0+)
|
||||||
|
- **Multi-language**: ES, EU, CA, GL, PT, FR, IT
|
||||||
|
- **Member Tracking**: Gestión de miembros activos/inactivos por grupo
|
||||||
|
|
||||||
|
**Flujo típico**:
|
||||||
|
|
||||||
|
1. Administrador crea grupo order con fechas (collection, cutoff, pickup)
|
||||||
|
2. Miembros añaden productos a su carrito individual
|
||||||
|
3. Sistema valida cutoff date antes de confirmar
|
||||||
|
4. Notificaciones automáticas al cambiar estados
|
||||||
|
5. Tracking de fulfillment por miembro
|
||||||
|
|
||||||
|
**Configuración Lazy Loading** (v18.0.1.3.0+):
|
||||||
|
|
||||||
|
```
|
||||||
|
Settings > Website > Shop Performance
|
||||||
|
[✓] Enable Lazy Loading
|
||||||
|
[20] Products Per Page
|
||||||
|
```
|
||||||
|
|
||||||
|
**Mejoras Recientes**:
|
||||||
|
|
||||||
|
- v18.0.1.3.1: Fixes críticos de cálculo de fechas
|
||||||
|
- v18.0.1.3.0: Lazy loading, mejora de rendimiento de 10-20s → 500-800ms
|
||||||
|
- Refactor de template rendering: Mover lógica QWeb al controller
|
||||||
|
|
||||||
|
Ver [website_sale_aplicoop/README.md](../website_sale_aplicoop/README.md) y [docs/LAZY_LOADING.md](../docs/LAZY_LOADING.md) para detalles.
|
||||||
|
|
||||||
|
### Triple Discount System
|
||||||
|
|
||||||
|
Todos los documentos de compra/venta soportan 3 descuentos consecutivos:
|
||||||
|
|
||||||
|
```python
|
||||||
|
# Ejemplo: Precio = 600.00
|
||||||
|
# Desc. 1 = 50% → 300.00
|
||||||
|
# Desc. 2 = 50% → 150.00
|
||||||
|
# Desc. 3 = 50% → 75.00
|
||||||
|
```
|
||||||
|
|
||||||
|
**IMPORTANTE**: Usar `account_invoice_triple_discount_readonly` para evitar bug de acumulación de descuentos.
|
||||||
|
|
||||||
|
### Automatic Pricing System
|
||||||
|
|
||||||
|
`product_sale_price_from_pricelist` calcula automáticamente precio de venta basado en:
|
||||||
|
|
||||||
|
- Último precio de compra (`last_purchase_price_received`)
|
||||||
|
- Tipo de cálculo de descuentos (`last_purchase_price_compute_type`)
|
||||||
|
- Pricelist configurado en Settings
|
||||||
|
- Impuestos del producto
|
||||||
|
|
||||||
|
**Configuración crítica**:
|
||||||
|
|
||||||
|
```python
|
||||||
|
# En Settings > Sales > Automatic Price Configuration
|
||||||
|
product_pricelist_automatic = [ID_pricelist]
|
||||||
|
|
||||||
|
# En producto
|
||||||
|
last_purchase_price_compute_type != "manual_update" # Para auto-cálculo
|
||||||
|
```
|
||||||
|
|
||||||
|
## Resources
|
||||||
|
|
||||||
|
- **OCA Guidelines**: https://github.com/OCA/odoo-community.org/blob/master/website/Contribution/CONTRIBUTING.rst
|
||||||
|
- **Odoo Documentation**: https://www.odoo.com/documentation/18.0/
|
||||||
|
- **OCB Repository**: https://github.com/OCA/OCB
|
||||||
|
- **OCA Repositories**: https://github.com/OCA/
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Last Updated**: 2026-02-18
|
||||||
|
**Odoo Version**: 18.0
|
||||||
|
**Python Version**: 3.10+
|
||||||
|
|
||||||
|
## Recent Changes Summary
|
||||||
|
|
||||||
|
- **2026-02-18**: Refactor `product_main_seller` - Remover alias innecesario `default_supplier_id`
|
||||||
|
- **2026-02-16**: v18.0.1.3.1 fixes críticos de cálculo de fechas en Eskaera
|
||||||
|
- **2026-02-12**: v18.0.1.3.0 Lazy loading y fixes de template rendering QWeb
|
||||||
|
- **2026-02-02**: UI improvements y date calculation fixes
|
||||||
17
.github/skills/html_css.md
vendored
Normal file
17
.github/skills/html_css.md
vendored
Normal file
|
|
@ -0,0 +1,17 @@
|
||||||
|
# Skill: HTML & CSS (Odoo/QWeb)
|
||||||
|
|
||||||
|
## Estilo y convenciones
|
||||||
|
- Usa HTML5 válido en QWeb y vistas web.
|
||||||
|
- No uses lógica condicional en QWeb, solo acceso a atributos.
|
||||||
|
- Prepara todos los datos en el controller Python.
|
||||||
|
- CSS: usa clases BEM o utilitarias, nunca estilos inline.
|
||||||
|
- Indentación: 4 espacios.
|
||||||
|
|
||||||
|
## Patrones clave
|
||||||
|
- Templates en `views/*.xml` o `static/src/xml/`.
|
||||||
|
- Para estilos, usa `static/src/css/` y carga en manifest si es necesario.
|
||||||
|
- Para responsive, usa clases utilitarias o Bootstrap si está disponible.
|
||||||
|
|
||||||
|
## Errores comunes
|
||||||
|
- No pongas lógica en QWeb, solo acceso a datos.
|
||||||
|
- No uses estilos inline salvo casos muy justificados.
|
||||||
18
.github/skills/javascript.md
vendored
Normal file
18
.github/skills/javascript.md
vendored
Normal file
|
|
@ -0,0 +1,18 @@
|
||||||
|
# Skill: JavaScript (Odoo Web/Frontend)
|
||||||
|
|
||||||
|
## Estilo y convenciones
|
||||||
|
- Usa ES6+ (let/const, arrow functions, etc).
|
||||||
|
- Sigue el patrón Odoo: módulos AMD (`odoo.define`).
|
||||||
|
- Linting con ESLint (`.eslintrc.js` en raíz).
|
||||||
|
- No mezcles lógica de negocio en JS, solo UI y eventos.
|
||||||
|
- Usa comentarios para explicar hacks o workarounds.
|
||||||
|
|
||||||
|
## Patrones clave
|
||||||
|
- Scripts en `static/src/js/`.
|
||||||
|
- Registra tours de UI con `web_tour.tour`.
|
||||||
|
- Usa eventos delegados para elementos dinámicos (lazy loading, infinite scroll).
|
||||||
|
- Para AJAX, usa los helpers de Odoo (`ajax.jsonRpc`).
|
||||||
|
|
||||||
|
## Errores comunes
|
||||||
|
- No pongas lógica de negocio en JS, solo en Python.
|
||||||
|
- Reatacha listeners tras manipular el DOM dinámicamente.
|
||||||
29
.github/skills/python.md
vendored
Normal file
29
.github/skills/python.md
vendored
Normal file
|
|
@ -0,0 +1,29 @@
|
||||||
|
# Skill: Python (Odoo ORM)
|
||||||
|
|
||||||
|
## Estilo y convenciones
|
||||||
|
- Sigue las OCA guidelines estrictamente.
|
||||||
|
- Usa `black` para formateo automático (ver `pyproject.toml`).
|
||||||
|
- Ordena imports con `isort` (perfil black).
|
||||||
|
- Linting obligatorio con `flake8` y `pylint-odoo`.
|
||||||
|
- Usa docstrings en clases y métodos públicos.
|
||||||
|
- Comentarios inline solo para lógica compleja.
|
||||||
|
|
||||||
|
## Patrones clave
|
||||||
|
- Modelos: hereda de `models.Model` o `models.TransientModel`.
|
||||||
|
- Campos de negocio siempre en `product.product` (no en `product.template`).
|
||||||
|
- Usa `@api.depends` para campos computados.
|
||||||
|
- Notificaciones: usa `ir.actions.client` con `display_notification`.
|
||||||
|
- Logging: `_logger.info()` para trazabilidad de precios y descuentos.
|
||||||
|
- Bulk updates: prefiere `search().write()` sobre loops.
|
||||||
|
|
||||||
|
## Testing
|
||||||
|
- Tests en `tests/` de cada addon.
|
||||||
|
- Hereda de `odoo.tests.common.TransactionCase`.
|
||||||
|
- Ejecuta tests con:
|
||||||
|
```bash
|
||||||
|
docker-compose run odoo odoo -d odoo --test-enable --stop-after-init -u addon_name
|
||||||
|
```
|
||||||
|
|
||||||
|
## Errores comunes
|
||||||
|
- No uses `_()` en definiciones de campos (solo en métodos ejecutables).
|
||||||
|
- Usa `related` fields en templates para lógica de variantes.
|
||||||
18
.github/skills/xml.md
vendored
Normal file
18
.github/skills/xml.md
vendored
Normal file
|
|
@ -0,0 +1,18 @@
|
||||||
|
# Skill: XML (Odoo Views)
|
||||||
|
|
||||||
|
## Estilo y convenciones
|
||||||
|
- Indentación: 4 espacios (no tabs).
|
||||||
|
- Usa `position` explícito en XPaths (`before`, `after`, `inside`, `replace`, `attributes`).
|
||||||
|
- Referencia grupos con `module.xml_id`.
|
||||||
|
- Usa `sequence` para ordenar campos en vistas.
|
||||||
|
- No pongas lógica condicional en QWeb, solo acceso a atributos.
|
||||||
|
|
||||||
|
## Patrones clave
|
||||||
|
- Define vistas en `views/*.xml`.
|
||||||
|
- IDs: usa el patrón `modulo.nombre_descriptivo`.
|
||||||
|
- Traduce strings en XML, nunca en Python para campos.
|
||||||
|
- Para QWeb, prepara todos los datos en el controller.
|
||||||
|
|
||||||
|
## Errores comunes
|
||||||
|
- XPath not found: revisa la herencia y los XML IDs.
|
||||||
|
- No uses lógica compleja en QWeb (ver QWEB_BEST_PRACTICES.md).
|
||||||
1
.gitignore
vendored
1
.gitignore
vendored
|
|
@ -130,4 +130,3 @@ dmypy.json
|
||||||
|
|
||||||
# Pyre type checker
|
# Pyre type checker
|
||||||
.pyre/
|
.pyre/
|
||||||
|
|
||||||
|
|
|
||||||
16
.isort.cfg
Normal file
16
.isort.cfg
Normal file
|
|
@ -0,0 +1,16 @@
|
||||||
|
[isort]
|
||||||
|
profile = black
|
||||||
|
force_single_line = True
|
||||||
|
# For black compatibility
|
||||||
|
line_length = 88
|
||||||
|
multi_line_output = 3
|
||||||
|
include_trailing_comma = True
|
||||||
|
force_grid_wrap = 0
|
||||||
|
use_parentheses = True
|
||||||
|
ensure_newline_before_comments = True
|
||||||
|
# Skip __init__.py as per OCA standards
|
||||||
|
skip_glob = */__init__.py
|
||||||
|
known_odoo=odoo
|
||||||
|
known_odoo_addons=odoo.addons
|
||||||
|
sections=FUTURE,STDLIB,THIRDPARTY,ODOO,ODOO_ADDONS,FIRSTPARTY,LOCALFOLDER
|
||||||
|
default_section=THIRDPARTY
|
||||||
142
.pre-commit-config.yaml
Normal file
142
.pre-commit-config.yaml
Normal file
|
|
@ -0,0 +1,142 @@
|
||||||
|
# See https://pre-commit.com for more information
|
||||||
|
# See https://pre-commit.com/hooks.html for more hooks
|
||||||
|
exclude: |
|
||||||
|
(?x)
|
||||||
|
# NOT INSTALLABLE ADDONS
|
||||||
|
# END NOT INSTALLABLE ADDONS
|
||||||
|
# Files and folders generated by bots, to avoid loops
|
||||||
|
/setup/|/README\.rst$|/static/description/index\.html$|
|
||||||
|
# Maybe reactivate this when all README files include prettier ignore tags?
|
||||||
|
^README\.md$|
|
||||||
|
# Library files can have extraneous formatting (even minimized)
|
||||||
|
/static/(src/)?lib/|
|
||||||
|
# Repos using Sphinx to generate docs don't need prettying
|
||||||
|
^docs/_templates/.*\.html$|
|
||||||
|
# You don't usually want a bot to modify your legal texts
|
||||||
|
(LICENSE.*|COPYING.*)
|
||||||
|
default_language_version:
|
||||||
|
python: python3
|
||||||
|
node: "16.17.0"
|
||||||
|
repos:
|
||||||
|
- repo: local
|
||||||
|
hooks:
|
||||||
|
# These files are most likely copier diff rejection junks; if found,
|
||||||
|
# review them manually, fix the problem (if needed) and remove them
|
||||||
|
- id: forbidden-files
|
||||||
|
name: forbidden files
|
||||||
|
entry: found forbidden files; remove them
|
||||||
|
language: fail
|
||||||
|
files: "\\.rej$"
|
||||||
|
- repo: https://github.com/oca/maintainer-tools
|
||||||
|
rev: 71aa4caec15e8c1456b4da19e9f39aa0aa7377a9
|
||||||
|
hooks:
|
||||||
|
# update the NOT INSTALLABLE ADDONS section above
|
||||||
|
- id: oca-update-pre-commit-excluded-addons
|
||||||
|
- repo: https://github.com/myint/autoflake
|
||||||
|
rev: v2.3.1
|
||||||
|
hooks:
|
||||||
|
- id: autoflake
|
||||||
|
args: ["-i", "--ignore-init-module-imports"]
|
||||||
|
- repo: https://github.com/psf/black
|
||||||
|
rev: 26.1.0
|
||||||
|
hooks:
|
||||||
|
- id: black
|
||||||
|
- repo: https://github.com/pre-commit/mirrors-prettier
|
||||||
|
rev: v4.0.0-alpha.8
|
||||||
|
hooks:
|
||||||
|
- id: prettier
|
||||||
|
name: prettier + plugin-xml
|
||||||
|
additional_dependencies:
|
||||||
|
- "prettier@2.7.1"
|
||||||
|
- "@prettier/plugin-xml@2.2.0"
|
||||||
|
args:
|
||||||
|
- --plugin=@prettier/plugin-xml
|
||||||
|
files: \.(css|htm|html|js|json|json5|scss|toml|xml|yaml|yml)$
|
||||||
|
- repo: https://github.com/pre-commit/mirrors-eslint
|
||||||
|
rev: v10.0.0
|
||||||
|
hooks:
|
||||||
|
- id: eslint
|
||||||
|
verbose: true
|
||||||
|
args:
|
||||||
|
- --color
|
||||||
|
- --fix
|
||||||
|
- repo: https://github.com/pre-commit/pre-commit-hooks
|
||||||
|
rev: v6.0.0
|
||||||
|
hooks:
|
||||||
|
- id: trailing-whitespace
|
||||||
|
# exclude autogenerated files
|
||||||
|
exclude: /README\.rst$|\.pot?$
|
||||||
|
- id: end-of-file-fixer
|
||||||
|
# exclude autogenerated files
|
||||||
|
exclude: /README\.rst$|\.pot?$
|
||||||
|
- id: debug-statements
|
||||||
|
- id: check-case-conflict
|
||||||
|
- id: check-docstring-first
|
||||||
|
- id: check-executables-have-shebangs
|
||||||
|
- id: check-merge-conflict
|
||||||
|
# exclude files where underlines are not distinguishable from merge conflicts
|
||||||
|
exclude: /README\.rst$|^docs/.*\.rst$
|
||||||
|
- id: check-symlinks
|
||||||
|
- id: check-xml
|
||||||
|
- id: mixed-line-ending
|
||||||
|
args: ["--fix=lf"]
|
||||||
|
- repo: https://github.com/asottile/pyupgrade
|
||||||
|
rev: v3.21.2
|
||||||
|
hooks:
|
||||||
|
- id: pyupgrade
|
||||||
|
args: ["--py38-plus"]
|
||||||
|
- repo: https://github.com/PyCQA/isort
|
||||||
|
rev: 7.0.0
|
||||||
|
hooks:
|
||||||
|
- id: isort
|
||||||
|
name: isort except __init__.py
|
||||||
|
args:
|
||||||
|
- --settings=.
|
||||||
|
exclude: /__init__\.py$
|
||||||
|
# setuptools-odoo deshabilitado temporalmente (no soporta Odoo 18.0)
|
||||||
|
# - repo: https://github.com/acsone/setuptools-odoo
|
||||||
|
# rev: 3.3.2
|
||||||
|
# hooks:
|
||||||
|
# - id: setuptools-odoo-make-default
|
||||||
|
# - id: setuptools-odoo-get-requirements
|
||||||
|
# args:
|
||||||
|
# - --output
|
||||||
|
# - requirements.txt
|
||||||
|
# - --header
|
||||||
|
# - "# generated from manifests external_dependencies"
|
||||||
|
- repo: https://github.com/PyCQA/flake8
|
||||||
|
rev: 7.3.0
|
||||||
|
hooks:
|
||||||
|
- id: flake8
|
||||||
|
name: flake8
|
||||||
|
additional_dependencies: ["flake8-bugbear==23.12.2"]
|
||||||
|
- repo: https://github.com/pre-commit/mirrors-mypy
|
||||||
|
rev: v1.19.1
|
||||||
|
hooks:
|
||||||
|
- id: mypy
|
||||||
|
# do not run on test files or __init__ files (mypy does not support
|
||||||
|
# namespace packages)
|
||||||
|
exclude: (/tests/|/__init__\.py$)
|
||||||
|
additional_dependencies:
|
||||||
|
- "lxml"
|
||||||
|
- "odoo-stubs"
|
||||||
|
- "types-python-dateutil"
|
||||||
|
- "types-pytz"
|
||||||
|
- "types-requests"
|
||||||
|
- "types-setuptools"
|
||||||
|
- repo: https://github.com/PyCQA/pylint
|
||||||
|
rev: v4.0.4
|
||||||
|
hooks:
|
||||||
|
- id: pylint
|
||||||
|
name: pylint with optional checks
|
||||||
|
args:
|
||||||
|
- --rcfile=.pylintrc
|
||||||
|
- --exit-zero
|
||||||
|
verbose: true
|
||||||
|
additional_dependencies: &pylint_deps
|
||||||
|
- pylint-odoo==10.0.0
|
||||||
|
- id: pylint
|
||||||
|
name: pylint with mandatory checks
|
||||||
|
args:
|
||||||
|
- --rcfile=.pylintrc-mandatory
|
||||||
|
additional_dependencies: *pylint_deps
|
||||||
15
.prettierignore
Normal file
15
.prettierignore
Normal file
|
|
@ -0,0 +1,15 @@
|
||||||
|
# Prettier ignore patterns for Odoo addons
|
||||||
|
|
||||||
|
# Ignore XML files - prettier has issues with QWeb mixed content
|
||||||
|
*.xml
|
||||||
|
|
||||||
|
# Odoo core
|
||||||
|
ocb/**
|
||||||
|
|
||||||
|
# Build artifacts
|
||||||
|
*.pyc
|
||||||
|
__pycache__/
|
||||||
|
*.egg-info/
|
||||||
|
|
||||||
|
# Git
|
||||||
|
.git/
|
||||||
30
.prettierrc.yml
Normal file
30
.prettierrc.yml
Normal file
|
|
@ -0,0 +1,30 @@
|
||||||
|
# Prettier configuration for Odoo addons
|
||||||
|
# Note: XML formatting disabled for QWeb templates due to prettier limitations
|
||||||
|
# with mixed content (text + tags). Use manual formatting for .xml files.
|
||||||
|
|
||||||
|
printWidth: 100
|
||||||
|
tabWidth: 4
|
||||||
|
useTabs: false
|
||||||
|
|
||||||
|
# XML/HTML specific - disabled, causes readability issues with QWeb
|
||||||
|
# xmlWhitespaceSensitivity: "strict"
|
||||||
|
# xmlSelfClosingSpace: true
|
||||||
|
|
||||||
|
# Keep tags more compact - don't break every attribute
|
||||||
|
overrides:
|
||||||
|
# Disable prettier for XML files - manual formatting preferred
|
||||||
|
# - files: "*.xml"
|
||||||
|
# options:
|
||||||
|
# printWidth: 120
|
||||||
|
# xmlWhitespaceSensitivity: "strict"
|
||||||
|
# singleAttributePerLine: false
|
||||||
|
# bracketSameLine: true
|
||||||
|
|
||||||
|
- files: "*.py"
|
||||||
|
options:
|
||||||
|
printWidth: 88
|
||||||
|
|
||||||
|
- files: ["*.json", "*.json5"]
|
||||||
|
options:
|
||||||
|
printWidth: 120
|
||||||
|
tabWidth: 2
|
||||||
91
.pylintrc
Normal file
91
.pylintrc
Normal file
|
|
@ -0,0 +1,91 @@
|
||||||
|
[MASTER]
|
||||||
|
load-plugins=pylint_odoo
|
||||||
|
score=n
|
||||||
|
|
||||||
|
[MESSAGES CONTROL]
|
||||||
|
disable=all
|
||||||
|
|
||||||
|
# This .pylintrc contains optional AND mandatory checks and is meant to be
|
||||||
|
# loaded in an IDE to have it check everything, in the hope this will make
|
||||||
|
# optional checks more visible to contributors who otherwise never look at a
|
||||||
|
# green CI pipeline.
|
||||||
|
#
|
||||||
|
# .pylintrc-mandatory will be used by pre-commit to check only mandatory
|
||||||
|
# checks.
|
||||||
|
|
||||||
|
enable=anomalous-backslash-in-string,
|
||||||
|
assignment-from-none,
|
||||||
|
attribute-deprecated,
|
||||||
|
attribute-string-redundant,
|
||||||
|
bad-builtin-groupby,
|
||||||
|
category-allowed,
|
||||||
|
category-allowed-app,
|
||||||
|
consider-merging-classes-inherited,
|
||||||
|
context-overridden,
|
||||||
|
dangerous-default-value,
|
||||||
|
deprecated-name-get,
|
||||||
|
deprecated-odoo-model-method,
|
||||||
|
development-status-allowed,
|
||||||
|
duplicate-key,
|
||||||
|
except-pass,
|
||||||
|
external-request-timeout,
|
||||||
|
inheritable-method-lambda,
|
||||||
|
inheritable-method-string,
|
||||||
|
invalid-commit,
|
||||||
|
invalid-email,
|
||||||
|
license-allowed,
|
||||||
|
manifest-author-string,
|
||||||
|
manifest-behind-migrations,
|
||||||
|
manifest-data-duplicated,
|
||||||
|
manifest-deprecated-key,
|
||||||
|
manifest-external-assets,
|
||||||
|
manifest-maintainers-list,
|
||||||
|
manifest-required-author,
|
||||||
|
manifest-required-key,
|
||||||
|
manifest-required-key-app,
|
||||||
|
manifest-superfluous-key,
|
||||||
|
manifest-version-format,
|
||||||
|
method-compute,
|
||||||
|
method-inverse,
|
||||||
|
method-required-super,
|
||||||
|
method-search,
|
||||||
|
missing-odoo-file,
|
||||||
|
missing-odoo-file-app,
|
||||||
|
missing-readme,
|
||||||
|
missing-return,
|
||||||
|
no-raise-unlink,
|
||||||
|
no-search-all,
|
||||||
|
no-wizard-in-models,
|
||||||
|
no-write-in-compute,
|
||||||
|
odoo-addons-relative-import,
|
||||||
|
odoo-exception-warning,
|
||||||
|
pointless-statement,
|
||||||
|
pointless-string-statement,
|
||||||
|
prefer-env-translation,
|
||||||
|
print-used,
|
||||||
|
prohibited-method-override,
|
||||||
|
redundant-keyword-arg,
|
||||||
|
renamed-field-parameter,
|
||||||
|
resource-not-exist,
|
||||||
|
sql-injection,
|
||||||
|
super-method-mismatch,
|
||||||
|
test-folder-imported,
|
||||||
|
too-few-format-args,
|
||||||
|
translation-contains-variable,
|
||||||
|
translation-field,
|
||||||
|
translation-format-interpolation,
|
||||||
|
translation-format-truncated,
|
||||||
|
translation-fstring-interpolation,
|
||||||
|
translation-not-lazy,
|
||||||
|
translation-positional-used,
|
||||||
|
translation-required,
|
||||||
|
translation-too-few-args,
|
||||||
|
translation-too-many-args,
|
||||||
|
translation-unsupported-format,
|
||||||
|
use-vim-comment,
|
||||||
|
website-manifest-key-not-valid-uri
|
||||||
|
|
||||||
|
[REPORTS]
|
||||||
|
msg-template={path}:{line}: [{msg_id}({symbol}), {obj}] {msg}
|
||||||
|
output-format=colorized
|
||||||
|
reports=no
|
||||||
61
.pylintrc-mandatory
Normal file
61
.pylintrc-mandatory
Normal file
|
|
@ -0,0 +1,61 @@
|
||||||
|
[MASTER]
|
||||||
|
load-plugins=pylint_odoo
|
||||||
|
score=n
|
||||||
|
|
||||||
|
[MESSAGES CONTROL]
|
||||||
|
disable=all
|
||||||
|
|
||||||
|
enable=anomalous-backslash-in-string,
|
||||||
|
assignment-from-none,
|
||||||
|
attribute-deprecated,
|
||||||
|
consider-merging-classes-inherited,
|
||||||
|
context-overridden,
|
||||||
|
dangerous-default-value,
|
||||||
|
deprecated-name-get,
|
||||||
|
deprecated-odoo-model-method,
|
||||||
|
development-status-allowed,
|
||||||
|
duplicate-key,
|
||||||
|
except-pass,
|
||||||
|
external-request-timeout,
|
||||||
|
inheritable-method-lambda,
|
||||||
|
inheritable-method-string,
|
||||||
|
invalid-commit,
|
||||||
|
license-allowed,
|
||||||
|
manifest-author-string,
|
||||||
|
manifest-behind-migrations,
|
||||||
|
manifest-data-duplicated,
|
||||||
|
manifest-deprecated-key,
|
||||||
|
manifest-maintainers-list,
|
||||||
|
manifest-required-author,
|
||||||
|
manifest-required-key,
|
||||||
|
manifest-superfluous-key,
|
||||||
|
manifest-version-format,
|
||||||
|
method-compute,
|
||||||
|
method-inverse,
|
||||||
|
method-required-super,
|
||||||
|
method-search,
|
||||||
|
missing-readme,
|
||||||
|
missing-return,
|
||||||
|
no-raise-unlink,
|
||||||
|
no-write-in-compute,
|
||||||
|
odoo-addons-relative-import,
|
||||||
|
odoo-exception-warning,
|
||||||
|
pointless-statement,
|
||||||
|
pointless-string-statement,
|
||||||
|
print-used,
|
||||||
|
prohibited-method-override,
|
||||||
|
redundant-keyword-arg,
|
||||||
|
renamed-field-parameter,
|
||||||
|
resource-not-exist,
|
||||||
|
sql-injection,
|
||||||
|
test-folder-imported,
|
||||||
|
too-few-format-args,
|
||||||
|
translation-field,
|
||||||
|
translation-positional-used,
|
||||||
|
translation-required,
|
||||||
|
use-vim-comment
|
||||||
|
|
||||||
|
[REPORTS]
|
||||||
|
msg-template={path}:{line}: [{msg_id}({symbol}), {obj}] {msg}
|
||||||
|
output-format=colorized
|
||||||
|
reports=no
|
||||||
12
.vscode/extensions.json
vendored
Normal file
12
.vscode/extensions.json
vendored
Normal file
|
|
@ -0,0 +1,12 @@
|
||||||
|
{
|
||||||
|
"recommendations": [
|
||||||
|
"ms-python.python",
|
||||||
|
"ms-python.black-formatter",
|
||||||
|
"ms-python.isort",
|
||||||
|
"ms-python.pylint",
|
||||||
|
"ms-python.flake8",
|
||||||
|
"esbenp.prettier-vscode",
|
||||||
|
"editorconfig.editorconfig",
|
||||||
|
"odoo.odoo-snippets"
|
||||||
|
]
|
||||||
|
}
|
||||||
54
.vscode/settings.json
vendored
Normal file
54
.vscode/settings.json
vendored
Normal file
|
|
@ -0,0 +1,54 @@
|
||||||
|
{
|
||||||
|
"xml.symbols.enabled": false,
|
||||||
|
"python.languageServer": "None",
|
||||||
|
"python.linting.enabled": true,
|
||||||
|
"python.linting.pylintEnabled": true,
|
||||||
|
"python.linting.pylintArgs": ["--rcfile=.pylintrc"],
|
||||||
|
"python.linting.flake8Enabled": true,
|
||||||
|
"python.linting.flake8Args": ["--config=.flake8"],
|
||||||
|
"python.formatting.provider": "black",
|
||||||
|
"python.formatting.blackArgs": ["--config=pyproject.toml"],
|
||||||
|
"editor.formatOnSave": true,
|
||||||
|
"editor.codeActionsOnSave": {
|
||||||
|
"source.organizeImports": "explicit"
|
||||||
|
},
|
||||||
|
"python.sortImports.args": ["--settings-path=.isort.cfg"],
|
||||||
|
"[python]": {
|
||||||
|
"editor.formatOnSave": true,
|
||||||
|
"editor.defaultFormatter": "ms-python.black-formatter",
|
||||||
|
"editor.codeActionsOnSave": {
|
||||||
|
"source.organizeImports": "explicit"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"[xml]": {
|
||||||
|
"editor.formatOnSave": true,
|
||||||
|
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
||||||
|
},
|
||||||
|
"[json]": {
|
||||||
|
"editor.formatOnSave": true,
|
||||||
|
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
||||||
|
},
|
||||||
|
"[yaml]": {
|
||||||
|
"editor.formatOnSave": true,
|
||||||
|
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
||||||
|
},
|
||||||
|
"files.trimTrailingWhitespace": true,
|
||||||
|
"files.insertFinalNewline": true,
|
||||||
|
"files.exclude": {
|
||||||
|
"**/__pycache__": true,
|
||||||
|
"**/*.pyc": true,
|
||||||
|
"**/*.pyo": true,
|
||||||
|
"**/.pytest_cache": true,
|
||||||
|
"**/.tox": true,
|
||||||
|
"**/.eggs": true,
|
||||||
|
"**/*.egg-info": true
|
||||||
|
},
|
||||||
|
"search.exclude": {
|
||||||
|
"**/__pycache__": true,
|
||||||
|
"**/*.pyc": true,
|
||||||
|
"**/.pytest_cache": true,
|
||||||
|
"**/.tox": true,
|
||||||
|
"**/.eggs": true,
|
||||||
|
"**/*.egg-info": true
|
||||||
|
}
|
||||||
|
}
|
||||||
225
DOCUMENTATION.md
Normal file
225
DOCUMENTATION.md
Normal file
|
|
@ -0,0 +1,225 @@
|
||||||
|
# 📚 Documentación del Proyecto - Índice
|
||||||
|
|
||||||
|
## 🚀 Lazy Loading v18.0.1.3.0 - Documentación Rápida
|
||||||
|
|
||||||
|
¿Buscas información sobre la nueva feature de lazy loading? Empieza aquí:
|
||||||
|
|
||||||
|
### ⚡ Solo tengo 5 minutos
|
||||||
|
👉 **[docs/LAZY_LOADING_QUICK_START.md](docs/LAZY_LOADING_QUICK_START.md)** - TL;DR y setup rápido
|
||||||
|
|
||||||
|
### 🔧 Necesito instalar / actualizar
|
||||||
|
👉 **[docs/UPGRADE_INSTRUCTIONS_v18.0.1.3.0.md](docs/UPGRADE_INSTRUCTIONS_v18.0.1.3.0.md)** - Paso a paso con validación y troubleshooting
|
||||||
|
|
||||||
|
### 🎓 Quiero entender la arquitectura
|
||||||
|
👉 **[docs/LAZY_LOADING.md](docs/LAZY_LOADING.md)** - Detalles técnicos completos
|
||||||
|
|
||||||
|
### 📍 No sé dónde empezar
|
||||||
|
👉 **[docs/LAZY_LOADING_DOCS_INDEX.md](docs/LAZY_LOADING_DOCS_INDEX.md)** - Índice con guía de selección por rol
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📖 Documentación General del Proyecto
|
||||||
|
|
||||||
|
### Quick Links
|
||||||
|
| Categoría | Documento | Propósito |
|
||||||
|
|-----------|-----------|----------|
|
||||||
|
| **Start** | [README.md](README.md) | Descripción general del proyecto |
|
||||||
|
| **Development** | [.github/copilot-instructions.md](.github/copilot-instructions.md) | Guía para desarrollo con IA |
|
||||||
|
| **All Docs** | [docs/README.md](docs/README.md) | Índice completo de documentación técnica |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📂 Estructura de Documentación
|
||||||
|
|
||||||
|
```
|
||||||
|
addons-cm/
|
||||||
|
├── README.md # Descripción general del proyecto
|
||||||
|
│
|
||||||
|
├── docs/ # 📚 Documentación técnica
|
||||||
|
│ ├── README.md # Índice de todos los docs técnicos
|
||||||
|
│ │
|
||||||
|
│ ├── 🚀 LAZY LOADING (v18.0.1.3.0)
|
||||||
|
│ ├── LAZY_LOADING_QUICK_START.md # ⚡ 5 min - Lo esencial
|
||||||
|
│ ├── LAZY_LOADING_DOCS_INDEX.md # 📍 Índice con guía por rol
|
||||||
|
│ ├── LAZY_LOADING.md # 🎓 Detalles técnicos
|
||||||
|
│ ├── UPGRADE_INSTRUCTIONS_v18.0.1.3.0.md # 🔧 Instalación
|
||||||
|
│ │
|
||||||
|
│ ├── 📋 OTROS DOCS
|
||||||
|
│ ├── LINTERS_README.md # Herramientas de código
|
||||||
|
│ ├── TRANSLATIONS.md # Sistema de traducciones
|
||||||
|
│ ├── INSTALACION_COMPLETA.md # Instalación del proyecto
|
||||||
|
│ ├── RESUMEN_INSTALACION.md # Resumen de instalación
|
||||||
|
│ ├── CORRECCION_PRECIOS_IVA.md # Precios e impuestos
|
||||||
|
│ └── TEST_MANUAL.md # Testing manual
|
||||||
|
│
|
||||||
|
├── website_sale_aplicoop/ # 📦 Addon principal
|
||||||
|
│ ├── README.md # Features y configuración
|
||||||
|
│ └── CHANGELOG.md # Historial de versiones
|
||||||
|
│
|
||||||
|
└── DOCUMENTATION_UPDATE_SUMMARY.md # 📋 Resumen de cambios (Este proyecto)
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🎯 Guía Rápida por Tipo de Usuario
|
||||||
|
|
||||||
|
### 👤 Administrador del Sistema
|
||||||
|
1. **Instalación**: [UPGRADE_INSTRUCTIONS_v18.0.1.3.0.md](docs/UPGRADE_INSTRUCTIONS_v18.0.1.3.0.md)
|
||||||
|
2. **Configuración**: Settings → Website → Shop Settings
|
||||||
|
3. **Troubleshooting**: Sección de troubleshooting en UPGRADE_INSTRUCTIONS
|
||||||
|
4. **Performance**: Sección "Verificación de Rendimiento"
|
||||||
|
|
||||||
|
### 👨💻 Desarrollador
|
||||||
|
1. **Arquitectura**: [docs/LAZY_LOADING.md](docs/LAZY_LOADING.md)
|
||||||
|
2. **Código**: Sección "Code Changes" en LAZY_LOADING.md
|
||||||
|
3. **Testing**: Sección "Debugging & Testing"
|
||||||
|
4. **Mejoras**: "Future Improvements" al final
|
||||||
|
|
||||||
|
### 🎓 Alguien Nuevo en el Proyecto
|
||||||
|
1. **Start**: [README.md](README.md)
|
||||||
|
2. **Features**: [website_sale_aplicoop/README.md](website_sale_aplicoop/README.md)
|
||||||
|
3. **Lazy Loading**: [docs/LAZY_LOADING_DOCS_INDEX.md](docs/LAZY_LOADING_DOCS_INDEX.md)
|
||||||
|
4. **Detalles Técnicos**: [.github/copilot-instructions.md](.github/copilot-instructions.md)
|
||||||
|
|
||||||
|
### 🚀 Alguien que Solo Quiere Setup Rápido
|
||||||
|
1. [docs/LAZY_LOADING_QUICK_START.md](docs/LAZY_LOADING_QUICK_START.md) (5 min)
|
||||||
|
2. Done! ✅
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📊 Resumen de Documentación
|
||||||
|
|
||||||
|
### Lazy Loading Feature (v18.0.1.3.0)
|
||||||
|
|
||||||
|
**Problema Solucionado**:
|
||||||
|
- ❌ Antes: Página tarda 10-20 segundos en cargar todos los productos y calcular precios
|
||||||
|
|
||||||
|
**Solución**:
|
||||||
|
- ✅ Después: Página carga en 500-800ms (20x más rápido)
|
||||||
|
- ✅ Productos se cargan bajo demanda con botón "Load More"
|
||||||
|
- ✅ Configurable: Activable/desactivable, items por página ajustable
|
||||||
|
|
||||||
|
**Documentación Incluida**:
|
||||||
|
- ✅ Quick Start (5 min)
|
||||||
|
- ✅ Upgrade Instructions (paso a paso)
|
||||||
|
- ✅ Technical Documentation (detalles completos)
|
||||||
|
- ✅ Troubleshooting (4 escenarios comunes)
|
||||||
|
- ✅ Performance Metrics (verificación)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔗 Enlaces Directos
|
||||||
|
|
||||||
|
### Lazy Loading
|
||||||
|
- [⚡ Quick Start](docs/LAZY_LOADING_QUICK_START.md) - Start here (5 min)
|
||||||
|
- [🔧 Upgrade Instructions](docs/UPGRADE_INSTRUCTIONS_v18.0.1.3.0.md) - Installation & Config
|
||||||
|
- [🎓 Technical Docs](docs/LAZY_LOADING.md) - Deep dive
|
||||||
|
- [📍 Documentation Index](docs/LAZY_LOADING_DOCS_INDEX.md) - Navigation guide
|
||||||
|
|
||||||
|
### Proyecto General
|
||||||
|
- [📋 Project README](README.md) - Descripción general
|
||||||
|
- [📚 Technical Docs](docs/README.md) - Índice de todos los docs
|
||||||
|
- [🤖 Copilot Guide](.github/copilot-instructions.md) - Desarrollo con IA
|
||||||
|
- [🧪 Testing](docs/TEST_MANUAL.md) - Manual testing
|
||||||
|
|
||||||
|
### Addons Específicos
|
||||||
|
- [🛍️ website_sale_aplicoop](website_sale_aplicoop/README.md) - Sistema eskaera
|
||||||
|
- [💰 product_sale_price_from_pricelist](product_sale_price_from_pricelist/README.md) - Auto-pricing
|
||||||
|
- [📦 product_price_category_supplier](product_price_category_supplier/README.md) - Categorías por proveedor
|
||||||
|
- [🐛 account_invoice_triple_discount_readonly](account_invoice_triple_discount_readonly/README.md) - Fix de descuentos
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📞 ¿Necesitas Ayuda?
|
||||||
|
|
||||||
|
### Selecciona tu situación:
|
||||||
|
|
||||||
|
| Situación | Qué leer |
|
||||||
|
|-----------|----------|
|
||||||
|
| "¿Qué es lazy loading?" | [LAZY_LOADING_QUICK_START.md](docs/LAZY_LOADING_QUICK_START.md) |
|
||||||
|
| "¿Cómo instalo?" | [UPGRADE_INSTRUCTIONS_v18.0.1.3.0.md](docs/UPGRADE_INSTRUCTIONS_v18.0.1.3.0.md) |
|
||||||
|
| "¿Cómo configuro?" | UPGRADE_INSTRUCTIONS → Configuration |
|
||||||
|
| "¿Cómo verifico que funciona?" | UPGRADE_INSTRUCTIONS → Performance Verification |
|
||||||
|
| "Algo no funciona" | UPGRADE_INSTRUCTIONS → Troubleshooting |
|
||||||
|
| "¿Cómo hago rollback?" | UPGRADE_INSTRUCTIONS → Rollback Instructions |
|
||||||
|
| "Detalles técnicos completos" | [LAZY_LOADING.md](docs/LAZY_LOADING.md) |
|
||||||
|
| "¿Qué archivos fueron modificados?" | LAZY_LOADING.md → Code Changes |
|
||||||
|
| "¿Cómo hago testing?" | LAZY_LOADING.md → Debugging & Testing |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ✅ Estado de Documentación
|
||||||
|
|
||||||
|
- ✅ **Implementación**: Completada (v18.0.1.3.0)
|
||||||
|
- ✅ **Quick Start**: Disponible (5 min)
|
||||||
|
- ✅ **Upgrade Guide**: Disponible (paso a paso)
|
||||||
|
- ✅ **Technical Docs**: Disponible (600+ líneas)
|
||||||
|
- ✅ **Troubleshooting**: Disponible (4+ escenarios)
|
||||||
|
- ✅ **Performance Metrics**: Documentadas (20x mejora)
|
||||||
|
- ✅ **Backward Compatibility**: Confirmada (desactivable)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🎓 Aprendizaje Rápido
|
||||||
|
|
||||||
|
Para entender rápidamente cómo funciona:
|
||||||
|
|
||||||
|
1. **El Problema** (2 min): Lee intro de [LAZY_LOADING_QUICK_START.md](docs/LAZY_LOADING_QUICK_START.md)
|
||||||
|
2. **La Solución** (2 min): Lee "Installation" en QUICK_START
|
||||||
|
3. **Verificación** (1 min): Sigue "Verificación Rápida" en QUICK_START
|
||||||
|
4. **Listo** ✅
|
||||||
|
|
||||||
|
Para profundizar → [LAZY_LOADING.md](docs/LAZY_LOADING.md)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📈 Impacto de Performance
|
||||||
|
|
||||||
|
| Métrica | Antes | Después | Mejora |
|
||||||
|
|---------|-------|---------|--------|
|
||||||
|
| Carga inicial | 10-20s | 500-800ms | **20x** 🚀 |
|
||||||
|
| Carga página 2 | — | 200-400ms | — |
|
||||||
|
| DOM size | 1000+ elementos | 20 elementos | **50x** |
|
||||||
|
| Rendimiento | Lento | Rápido | ✅ |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📝 Cambios Principales
|
||||||
|
|
||||||
|
### Archivos Modificados (5)
|
||||||
|
1. `/models/res_config_settings.py` - Configuración
|
||||||
|
2. `/models/group_order.py` - Paginación backend
|
||||||
|
3. `/controllers/website_sale.py` - Endpoints HTTP
|
||||||
|
4. `/views/website_templates.xml` - Templates QWeb
|
||||||
|
5. `/static/src/js/website_sale.js` - AJAX JavaScript
|
||||||
|
|
||||||
|
### Documentación Creada (4)
|
||||||
|
1. LAZY_LOADING_QUICK_START.md
|
||||||
|
2. LAZY_LOADING_DOCS_INDEX.md
|
||||||
|
3. LAZY_LOADING.md
|
||||||
|
4. UPGRADE_INSTRUCTIONS_v18.0.1.3.0.md
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🚀 Siguientes Pasos
|
||||||
|
|
||||||
|
### Inmediato
|
||||||
|
- [ ] Lee [LAZY_LOADING_QUICK_START.md](docs/LAZY_LOADING_QUICK_START.md)
|
||||||
|
- [ ] Actualiza a v18.0.1.3.0 si no lo has hecho
|
||||||
|
|
||||||
|
### Corto Plazo
|
||||||
|
- [ ] Configura en Settings (si es necesario)
|
||||||
|
- [ ] Verifica performance (sección "Verificación" en docs)
|
||||||
|
|
||||||
|
### Largo Plazo
|
||||||
|
- [ ] Monitorea performance en producción
|
||||||
|
- [ ] Considera mejoras futuras (ver LAZY_LOADING.md)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Última Actualización**: 2026-02-16
|
||||||
|
**Versión de Documentación**: 1.0
|
||||||
|
**Odoo Version**: 18.0+
|
||||||
|
**Lazy Loading Version**: 18.0.1.3.0+
|
||||||
|
|
||||||
|
Para comenzar, selecciona la sección que más te interese arriba ☝️
|
||||||
273
DOCUMENTATION_UPDATE_SUMMARY.md
Normal file
273
DOCUMENTATION_UPDATE_SUMMARY.md
Normal file
|
|
@ -0,0 +1,273 @@
|
||||||
|
# 📋 Resumen de Documentación Creada - Lazy Loading v18.0.1.3.0
|
||||||
|
|
||||||
|
## ✅ Actualización Completa
|
||||||
|
|
||||||
|
Se ha completado la actualización de toda la documentación del proyecto para reflejar la nueva feature de lazy loading implementada en `website_sale_aplicoop`.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📄 Archivos Creados y Actualizados
|
||||||
|
|
||||||
|
### 🆕 Nuevos Archivos Creados
|
||||||
|
|
||||||
|
#### 1. [docs/LAZY_LOADING_QUICK_START.md](../docs/LAZY_LOADING_QUICK_START.md)
|
||||||
|
**Tipo**: Guía Rápida (~100 líneas)
|
||||||
|
**Contenido**:
|
||||||
|
- ✅ TL;DR - Lo más importante
|
||||||
|
- ✅ Qué necesitas hacer (actualizar y listo)
|
||||||
|
- ✅ Métricas de mejora de performance (20x más rápido)
|
||||||
|
- ✅ Configuración opcional (enable/disable, items per page)
|
||||||
|
- ✅ Troubleshooting rápido (5 problemas comunes)
|
||||||
|
- ✅ Verificación rápida (cómo comprobar que funciona)
|
||||||
|
- ✅ Rollback instructions
|
||||||
|
- ✅ Enlaces a documentación completa
|
||||||
|
|
||||||
|
**Audiencia**: Usuarios que quieren "instalar y olvidar"
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
#### 2. [docs/LAZY_LOADING.md](../docs/LAZY_LOADING.md)
|
||||||
|
**Tipo**: Documentación Técnica Completa (~600 líneas)
|
||||||
|
**Contenido**:
|
||||||
|
- ✅ Descripción detallada del problema (carga 10-20s)
|
||||||
|
- ✅ Solución implementada (lazy loading + configuración)
|
||||||
|
- ✅ Arquitectura y diseño del sistema
|
||||||
|
- ✅ Cambios de código por archivo (5 archivos modificados)
|
||||||
|
- ✅ Configuración en res_config_settings
|
||||||
|
- ✅ Endpoints HTTP (eskaera_shop, load_eskaera_page)
|
||||||
|
- ✅ Métricas de rendimiento (20x más rápido)
|
||||||
|
- ✅ Guía de testing y debugging
|
||||||
|
- ✅ Troubleshooting avanzado
|
||||||
|
- ✅ Roadmap de mejoras futuras
|
||||||
|
|
||||||
|
**Audiencia**: Desarrolladores, Administradores Técnicos
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
#### 3. [docs/UPGRADE_INSTRUCTIONS_v18.0.1.3.0.md](../docs/UPGRADE_INSTRUCTIONS_v18.0.1.3.0.md)
|
||||||
|
**Tipo**: Guía de Actualización e Instalación (~180 líneas)
|
||||||
|
**Contenido**:
|
||||||
|
- ✅ Resumen de cambios en v18.0.1.3.0
|
||||||
|
- ✅ Pasos de actualización paso a paso
|
||||||
|
- ✅ Configuración de settings (3 opciones)
|
||||||
|
- ✅ Valores recomendados y explicaciones
|
||||||
|
- ✅ Checklist de validación post-instalación (4 pasos)
|
||||||
|
- ✅ Troubleshooting de problemas comunes (4 escenarios):
|
||||||
|
- "Load More" button not appearing
|
||||||
|
- Products not loading on button click
|
||||||
|
- Spinner never disappears
|
||||||
|
- Page crashes after loading products
|
||||||
|
- ✅ Método de verificación de rendimiento
|
||||||
|
- ✅ Instrucciones de rollback
|
||||||
|
- ✅ Notas importantes sobre comportamiento
|
||||||
|
|
||||||
|
**Audiencia**: Administradores de Sistema, DevOps
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
#### 3. [docs/LAZY_LOADING_DOCS_INDEX.md](../docs/LAZY_LOADING_DOCS_INDEX.md)
|
||||||
|
**Tipo**: Índice Centralizado de Documentación
|
||||||
|
**Contenido**:
|
||||||
|
- ✅ Overview de la feature
|
||||||
|
- ✅ Índice de los 4 documentos relacionados
|
||||||
|
- ✅ Guía de selección (qué leer según tu rol)
|
||||||
|
- ✅ Resumen de cambios de código
|
||||||
|
- ✅ Checklist de implementación
|
||||||
|
- ✅ Notas importantes y limitaciones
|
||||||
|
- ✅ Enlaces rápidos a todos los docs
|
||||||
|
- ✅ Información de impacto y performance
|
||||||
|
|
||||||
|
**Audiencia**: Todos (punto de partida recomendado)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
#### 4. [website_sale_aplicoop/CHANGELOG.md](../website_sale_aplicoop/CHANGELOG.md)
|
||||||
|
**Tipo**: Registro de Cambios
|
||||||
|
**Contenido**:
|
||||||
|
- ✅ v18.0.1.3.0: Lazy loading feature (2 puntos)
|
||||||
|
- ✅ v18.0.1.2.0: UI improvements (3 puntos)
|
||||||
|
- ✅ v18.0.1.0.0: Initial release
|
||||||
|
|
||||||
|
**Audiencia**: Todos
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 🔄 Archivos Actualizados
|
||||||
|
|
||||||
|
#### 5. [README.md](../README.md) - Proyecto Principal
|
||||||
|
**Cambios realizados**:
|
||||||
|
- ✅ Añadido emoji 🚀 a website_sale_aplicoop en tabla de componentes
|
||||||
|
- ✅ Añadida nota sobre lazy loading en v18.0.1.3.0 con referencia a docs
|
||||||
|
- ✅ Añadidos dos enlaces nuevos en sección "Documentos Principales":
|
||||||
|
- 🚀 [Lazy Loading Documentation](docs/LAZY_LOADING.md)
|
||||||
|
- 📦 [Upgrade Instructions v18.0.1.3.0](docs/UPGRADE_INSTRUCTIONS_v18.0.1.3.0.md)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
#### 6. [docs/README.md](../docs/README.md) - Índice de Documentación Técnica
|
||||||
|
**Cambios realizados**:
|
||||||
|
- ✅ Añadida nueva sección "Performance & Features (Nuevas)"
|
||||||
|
- ✅ Tres nuevos enlaces:
|
||||||
|
- [LAZY_LOADING_DOCS_INDEX.md](LAZY_LOADING_DOCS_INDEX.md)
|
||||||
|
- [LAZY_LOADING.md](LAZY_LOADING.md)
|
||||||
|
- [UPGRADE_INSTRUCTIONS_v18.0.1.3.0.md](UPGRADE_INSTRUCTIONS_v18.0.1.3.0.md)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
#### 7. [website_sale_aplicoop/README.md](../website_sale_aplicoop/README.md) - Addon Específico
|
||||||
|
**Cambios realizados** (realizados en fase anterior):
|
||||||
|
- ✅ Añadida feature de lazy loading en lista de features
|
||||||
|
- ✅ Actualizado changelog con v18.0.1.3.0
|
||||||
|
- ✅ Descripción detallada de lazy loading en changelog
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🎯 Estructura de Documentación Recomendada
|
||||||
|
|
||||||
|
### Para Administradores/Usuarios:
|
||||||
|
```
|
||||||
|
1. Lee: docs/LAZY_LOADING_DOCS_INDEX.md (orientación)
|
||||||
|
2. Luego: docs/UPGRADE_INSTRUCTIONS_v18.0.1.3.0.md (instalación)
|
||||||
|
3. Si hay dudas: Consulta sección de configuración en website_sale_aplicoop/README.md
|
||||||
|
4. Si hay problemas: Troubleshooting en UPGRADE_INSTRUCTIONS
|
||||||
|
```
|
||||||
|
|
||||||
|
### Para Desarrolladores:
|
||||||
|
```
|
||||||
|
1. Lee: docs/LAZY_LOADING_DOCS_INDEX.md (visión general)
|
||||||
|
2. Luego: docs/LAZY_LOADING.md (arquitectura técnica)
|
||||||
|
3. Revisa: Cambios de código en LAZY_LOADING.md (sección "Code Changes")
|
||||||
|
4. Debugging: Sección "Debugging & Testing" en LAZY_LOADING.md
|
||||||
|
5. Mejoras: "Future Improvements" al final de LAZY_LOADING.md
|
||||||
|
```
|
||||||
|
|
||||||
|
### Para Troubleshooting:
|
||||||
|
```
|
||||||
|
1. Primero: docs/UPGRADE_INSTRUCTIONS_v18.0.1.3.0.md (Troubleshooting section)
|
||||||
|
2. Si persiste: docs/LAZY_LOADING.md (Debugging & Testing)
|
||||||
|
3. Para rollback: UPGRADE_INSTRUCTIONS_v18.0.1.3.0.md (Rollback Instructions)
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📊 Cobertura de Documentación
|
||||||
|
|
||||||
|
| Tema | Covered | Donde |
|
||||||
|
|------|---------|-------|
|
||||||
|
| **Problem Statement** | ✅ | LAZY_LOADING.md, UPGRADE_INSTRUCTIONS |
|
||||||
|
| **Solution Overview** | ✅ | LAZY_LOADING_DOCS_INDEX.md, LAZY_LOADING.md |
|
||||||
|
| **Architecture** | ✅ | LAZY_LOADING.md |
|
||||||
|
| **Code Changes** | ✅ | LAZY_LOADING.md (por archivo) |
|
||||||
|
| **Configuration** | ✅ | UPGRADE_INSTRUCTIONS, website_sale_aplicoop/README.md |
|
||||||
|
| **Installation** | ✅ | UPGRADE_INSTRUCTIONS |
|
||||||
|
| **Testing** | ✅ | LAZY_LOADING.md |
|
||||||
|
| **Troubleshooting** | ✅ | UPGRADE_INSTRUCTIONS, LAZY_LOADING.md |
|
||||||
|
| **Performance Metrics** | ✅ | Todos los docs |
|
||||||
|
| **Rollback** | ✅ | UPGRADE_INSTRUCTIONS |
|
||||||
|
| **Future Improvements** | ✅ | LAZY_LOADING.md |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔗 Matriz de Enlaces
|
||||||
|
|
||||||
|
Todos los documentos están interconectados para facilitar la navegación:
|
||||||
|
|
||||||
|
```
|
||||||
|
README.md (principal)
|
||||||
|
├── docs/LAZY_LOADING_DOCS_INDEX.md (índice)
|
||||||
|
│ ├── docs/LAZY_LOADING.md (técnico)
|
||||||
|
│ ├── docs/UPGRADE_INSTRUCTIONS_v18.0.1.3.0.md (instalación)
|
||||||
|
│ ├── website_sale_aplicoop/README.md (addon)
|
||||||
|
│ └── website_sale_aplicoop/CHANGELOG.md (historial)
|
||||||
|
├── docs/README.md (índice de docs)
|
||||||
|
└── website_sale_aplicoop/README.md (addon directo)
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📈 Métricas de la Documentación
|
||||||
|
|
||||||
|
| Métrica | Valor |
|
||||||
|
|---------|-------|
|
||||||
|
| **Archivos nuevos creados** | 4 |
|
||||||
|
| **Archivos actualizados** | 4 |
|
||||||
|
| **Líneas de documentación** | ~1,400+ |
|
||||||
|
| **Secciones documentadas** | 20+ |
|
||||||
|
| **Ejemplos incluidos** | 15+ |
|
||||||
|
| **Problemas cubiertos en troubleshooting** | 4 |
|
||||||
|
| **Mejoras futuras documentadas** | 4 |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ✨ Highlights de la Documentación
|
||||||
|
|
||||||
|
### 📌 Punto de Entrada Único
|
||||||
|
- **[docs/LAZY_LOADING_DOCS_INDEX.md](../docs/LAZY_LOADING_DOCS_INDEX.md)** - Índice con guía de selección según rol
|
||||||
|
|
||||||
|
### 📌 Documentación Técnica Completa
|
||||||
|
- **[docs/LAZY_LOADING.md](../docs/LAZY_LOADING.md)** - 600+ líneas de detalles técnicos, cambios de código, testing, debugging
|
||||||
|
|
||||||
|
### 📌 Guía Práctica de Instalación
|
||||||
|
- **[docs/UPGRADE_INSTRUCTIONS_v18.0.1.3.0.md](../docs/UPGRADE_INSTRUCTIONS_v18.0.1.3.0.md)** - Paso a paso con checklist de validación y troubleshooting
|
||||||
|
|
||||||
|
### 📌 Changelog Detallado
|
||||||
|
- **[website_sale_aplicoop/CHANGELOG.md](../website_sale_aplicoop/CHANGELOG.md)** - Historial completo de versiones
|
||||||
|
|
||||||
|
### 📌 README Actualizado
|
||||||
|
- **[README.md](../README.md)** - Referencia al nuevo feature con enlaces
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🚀 Próximos Pasos
|
||||||
|
|
||||||
|
La documentación está completa y lista para:
|
||||||
|
|
||||||
|
1. ✅ **Publicación**: Todos los archivos están listos para ser compartidos
|
||||||
|
2. ✅ **Integración**: Enlaces cruzados correctamente configurados
|
||||||
|
3. ✅ **Accesibilidad**: Índice centralizado para encontrar información fácilmente
|
||||||
|
4. ✅ **Mantenibilidad**: Estructura clara para futuras actualizaciones
|
||||||
|
|
||||||
|
### Sugerencias Futuras:
|
||||||
|
- Crear video tutorial (5-10 min) demostrando lazy loading en acción
|
||||||
|
- Agregar métricas en vivo de performance en Settings UI
|
||||||
|
- Crear tests automatizados para validar configuración
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📞 Preguntas Frecuentes Documentadas
|
||||||
|
|
||||||
|
| Pregunta | Respuesta en |
|
||||||
|
|----------|-------------|
|
||||||
|
| ¿Qué es lazy loading? | LAZY_LOADING.md intro |
|
||||||
|
| ¿Cómo instalo? | UPGRADE_INSTRUCTIONS |
|
||||||
|
| ¿Cómo configuro? | UPGRADE_INSTRUCTIONS + website_sale_aplicoop/README.md |
|
||||||
|
| ¿Cómo veo mejora de performance? | UPGRADE_INSTRUCTIONS (Performance Verification) |
|
||||||
|
| ¿Qué pasa si falla? | UPGRADE_INSTRUCTIONS (Troubleshooting) |
|
||||||
|
| ¿Puedo deshabilitarlo? | Sí, UPGRADE_INSTRUCTIONS sección Configuration |
|
||||||
|
| ¿Cómo hago rollback? | UPGRADE_INSTRUCTIONS (Rollback Instructions) |
|
||||||
|
| ¿Detalles técnicos? | LAZY_LOADING.md |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🎓 Aprendizaje de Documentación
|
||||||
|
|
||||||
|
Esta documentación demuestra:
|
||||||
|
- ✅ Documentación técnica completa y detallada
|
||||||
|
- ✅ Guías prácticas paso a paso
|
||||||
|
- ✅ Índices centralizados para fácil navegación
|
||||||
|
- ✅ Troubleshooting proactivo
|
||||||
|
- ✅ Interconexión de documentos
|
||||||
|
- ✅ Diferentes niveles de profundidad (overview → técnico)
|
||||||
|
- ✅ Cobertura completa de usuario y desarrollador
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Estado**: ✅ COMPLETADO
|
||||||
|
**Documentación Creada**: 3 archivos nuevos, 4 actualizados
|
||||||
|
**Líneas Totales**: 1,200+
|
||||||
|
**Fecha**: 2026-02-16
|
||||||
|
**Versión Aplicable**: 18.0.1.3.0+
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
¿Necesitas que ajuste algo en la documentación o que cree documentos adicionales?
|
||||||
81
Makefile
Normal file
81
Makefile
Normal file
|
|
@ -0,0 +1,81 @@
|
||||||
|
.PHONY: help
|
||||||
|
help:
|
||||||
|
@echo "Comandos disponibles para verificación de código OCA:"
|
||||||
|
@echo ""
|
||||||
|
@echo " make lint - Ejecutar todas las verificaciones (pre-commit)"
|
||||||
|
@echo " make format - Formatear código (black + isort)"
|
||||||
|
@echo " make check-format - Verificar formateo sin modificar"
|
||||||
|
@echo " make flake8 - Ejecutar flake8"
|
||||||
|
@echo " make pylint - Ejecutar pylint (opcionales y mandatorios)"
|
||||||
|
@echo " make pylint-required - Ejecutar solo verificaciones mandatorias"
|
||||||
|
@echo " make test - Ejecutar tests"
|
||||||
|
@echo " make install-hooks - Instalar pre-commit hooks"
|
||||||
|
@echo " make update-hooks - Actualizar pre-commit hooks"
|
||||||
|
@echo " make clean - Limpiar archivos temporales"
|
||||||
|
@echo ""
|
||||||
|
|
||||||
|
.PHONY: install-hooks
|
||||||
|
install-hooks:
|
||||||
|
pre-commit install
|
||||||
|
|
||||||
|
.PHONY: update-hooks
|
||||||
|
update-hooks:
|
||||||
|
pre-commit autoupdate
|
||||||
|
|
||||||
|
.PHONY: lint
|
||||||
|
lint:
|
||||||
|
pre-commit run --all-files
|
||||||
|
|
||||||
|
.PHONY: lint-changed
|
||||||
|
lint-changed:
|
||||||
|
pre-commit run
|
||||||
|
|
||||||
|
.PHONY: format
|
||||||
|
format:
|
||||||
|
black .
|
||||||
|
isort .
|
||||||
|
|
||||||
|
.PHONY: check-format
|
||||||
|
check-format:
|
||||||
|
black --check .
|
||||||
|
isort --check-only .
|
||||||
|
|
||||||
|
.PHONY: flake8
|
||||||
|
flake8:
|
||||||
|
flake8 .
|
||||||
|
|
||||||
|
.PHONY: pylint
|
||||||
|
pylint:
|
||||||
|
@for addon in $$(ls -d */ | grep -v "\."); do \
|
||||||
|
if [ -f "$$addon/__manifest__.py" ] || [ -f "$$addon/__openerp__.py" ]; then \
|
||||||
|
echo "Checking $$addon with pylint..."; \
|
||||||
|
pylint --rcfile=.pylintrc --exit-zero $$addon; \
|
||||||
|
fi \
|
||||||
|
done
|
||||||
|
|
||||||
|
.PHONY: pylint-required
|
||||||
|
pylint-required:
|
||||||
|
@for addon in $$(ls -d */ | grep -v "\."); do \
|
||||||
|
if [ -f "$$addon/__manifest__.py" ] || [ -f "$$addon/__openerp__.py" ]; then \
|
||||||
|
echo "Checking $$addon with pylint (mandatory checks)..."; \
|
||||||
|
pylint --rcfile=.pylintrc-mandatory $$addon; \
|
||||||
|
fi \
|
||||||
|
done
|
||||||
|
|
||||||
|
.PHONY: test
|
||||||
|
test:
|
||||||
|
@echo "Ejecutar tests de Odoo aquí"
|
||||||
|
@echo "Por ejemplo: pytest o python -m pytest"
|
||||||
|
|
||||||
|
.PHONY: clean
|
||||||
|
clean:
|
||||||
|
find . -type f -name '*.pyc' -delete
|
||||||
|
find . -type d -name '__pycache__' -delete
|
||||||
|
find . -type d -name '*.egg-info' -exec rm -rf {} + || true
|
||||||
|
find . -type d -name '.pytest_cache' -exec rm -rf {} + || true
|
||||||
|
find . -type d -name '.tox' -exec rm -rf {} + || true
|
||||||
|
rm -rf build/ dist/
|
||||||
|
|
||||||
|
.PHONY: requirements
|
||||||
|
requirements:
|
||||||
|
pre-commit run setuptools-odoo-get-requirements --all-files
|
||||||
259
README.md
Normal file
259
README.md
Normal file
|
|
@ -0,0 +1,259 @@
|
||||||
|
# Kidekoop - Addons Custom para Odoo 18.0
|
||||||
|
|
||||||
|
Sistema de gestión de compras colaborativas (grupo de consumo) basado en Odoo 18.0 con módulos personalizados y modificados.
|
||||||
|
|
||||||
|
## 🎯 Descripción
|
||||||
|
|
||||||
|
Este repositorio contiene los addons personalizados para Kidekoop, un sistema completo de gestión de grupos de consumo que permite:
|
||||||
|
|
||||||
|
- **Gestión de compras colaborativas** (eskaera)
|
||||||
|
- **Sistema de precios multinivel** con categorías y descuentos múltiples
|
||||||
|
- **Integración con proveedores** y gestión de precios automática
|
||||||
|
- **Interfaz web moderna** para pedidos grupales
|
||||||
|
- **Multiidioma** (ES, EU, CA, GL, PT, FR, IT)
|
||||||
|
|
||||||
|
## 📦 Componentes del Proyecto
|
||||||
|
|
||||||
|
### 1. OCB - Odoo Community Backports
|
||||||
|
- **Ubicación**: `/ocb`
|
||||||
|
- **Versión**: 18.0
|
||||||
|
- **Descripción**: Base de Odoo Community Edition
|
||||||
|
- **Repositorio**: https://github.com/OCA/OCB
|
||||||
|
|
||||||
|
### 2. Addons OCA Modificados
|
||||||
|
|
||||||
|
| Addon | Propósito | Repositorio OCA |
|
||||||
|
|-------|-----------|-----------------|
|
||||||
|
| [account_invoice_triple_discount](account_invoice_triple_discount/) | Sistema de triple descuento en facturas | account-invoicing |
|
||||||
|
| [purchase_triple_discount](purchase_triple_discount/) | Sistema de triple descuento en compras | purchase-workflow |
|
||||||
|
| [product_origin](product_origin/) | Campo de origen del producto | product-attribute |
|
||||||
|
| [product_get_price_helper](product_get_price_helper/) | Helper para cálculo de precios | product-attribute |
|
||||||
|
| [product_main_seller](product_main_seller/) | Proveedor principal por producto | purchase-workflow |
|
||||||
|
| [product_price_category](product_price_category/) | Sistema de categorías de precio | product-attribute |
|
||||||
|
|
||||||
|
### 3. Addons Custom Propios
|
||||||
|
|
||||||
|
| Addon | Propósito | Estado |
|
||||||
|
|-------|-----------|--------|
|
||||||
|
| [account_invoice_triple_discount_readonly](account_invoice_triple_discount_readonly/) | Fix para bug de descuentos acumulados | ✅ Estable |
|
||||||
|
| [product_price_category_supplier](product_price_category_supplier/) | Gestión de categorías por proveedor | ✅ Estable |
|
||||||
|
| [product_sale_price_from_pricelist](product_sale_price_from_pricelist/) | Auto-cálculo precio venta desde compra | ✅ Estable |
|
||||||
|
| [website_sale_aplicoop](website_sale_aplicoop/) | Sistema completo de eskaera web | ✅ **v18.0.1.3.1** - Estable |
|
||||||
|
|
||||||
|
**✨ Feature v18.0.1.3.0**: `website_sale_aplicoop` incluye **lazy loading configurable** para mejorar el rendimiento de carga de productos (10-20s → 500-800ms).
|
||||||
|
|
||||||
|
**🔧 Fixes v18.0.1.3.1**: Correcciones críticas en cálculo de fechas y refactor de template rendering para evitar errores QWeb.
|
||||||
|
|
||||||
|
Ver [docs/LAZY_LOADING.md](docs/LAZY_LOADING.md) y [docs/FINAL_SOLUTION_SUMMARY.md](docs/FINAL_SOLUTION_SUMMARY.md) para detalles.
|
||||||
|
|
||||||
|
## 🚀 Quick Start
|
||||||
|
|
||||||
|
### Requisitos
|
||||||
|
|
||||||
|
- Docker & Docker Compose
|
||||||
|
- Python 3.10+
|
||||||
|
- PostgreSQL 14+
|
||||||
|
|
||||||
|
### Instalación
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Clonar repositorio
|
||||||
|
git clone [URL_REPO]
|
||||||
|
cd addons-cm
|
||||||
|
|
||||||
|
# Iniciar entorno
|
||||||
|
docker-compose up -d
|
||||||
|
|
||||||
|
# Verificar logs
|
||||||
|
docker-compose logs -f odoo
|
||||||
|
```
|
||||||
|
|
||||||
|
### Instalar un addon
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker-compose exec odoo odoo -d odoo -u addon_name --stop-after-init
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🛠️ Desarrollo
|
||||||
|
|
||||||
|
### Estructura de Carpetas
|
||||||
|
|
||||||
|
```
|
||||||
|
addons-cm/
|
||||||
|
├── .github/ # GitHub Copilot instructions
|
||||||
|
├── ocb/ # Odoo 18.0 base
|
||||||
|
├── account_invoice_*/ # Addons de facturación
|
||||||
|
├── purchase_*/ # Addons de compras
|
||||||
|
├── product_*/ # Addons de productos
|
||||||
|
├── website_sale_aplicoop/ # Sistema eskaera
|
||||||
|
├── docker-compose.yml # Configuración Docker
|
||||||
|
├── requirements.txt # Dependencias Python
|
||||||
|
├── oca_dependencies.txt # Dependencias OCA
|
||||||
|
├── Makefile # Comandos útiles
|
||||||
|
└── .pre-commit-config.yaml # Hooks de pre-commit
|
||||||
|
```
|
||||||
|
|
||||||
|
### Herramientas de Calidad
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Ejecutar checks de código
|
||||||
|
make lint
|
||||||
|
|
||||||
|
# Formatear código
|
||||||
|
make format
|
||||||
|
|
||||||
|
# Ejecutar todos los pre-commit hooks
|
||||||
|
pre-commit run --all-files
|
||||||
|
|
||||||
|
# Verificar addon específico
|
||||||
|
./check_addon.sh addon_name
|
||||||
|
```
|
||||||
|
|
||||||
|
### Tests
|
||||||
|
|
||||||
|
```bash
|
||||||
|
|
||||||
|
# Ejecutar tests de un addon
|
||||||
|
docker-compose run odoo odoo -d odoo --test-enable --stop-after-init -u addon_name
|
||||||
|
# NOTA: Usa `docker-compose run` (no `exec`) para lanzar un contenedor limpio y evitar efectos de caché. Cambia `addon_name` por el módulo a testear.
|
||||||
|
|
||||||
|
# Tests específicos con Python unittest
|
||||||
|
docker-compose exec odoo python -m pytest addons/addon_name/tests/
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🌍 Sistema de Traducciones
|
||||||
|
|
||||||
|
Todos los addons custom incluyen traducciones completas en:
|
||||||
|
|
||||||
|
- **Español** (es) - Obligatorio
|
||||||
|
- **Euskera** (eu) - Obligatorio
|
||||||
|
- **Catalán** (ca)
|
||||||
|
- **Gallego** (gl)
|
||||||
|
- **Portugués** (pt)
|
||||||
|
- **Francés** (fr)
|
||||||
|
- **Italiano** (it)
|
||||||
|
|
||||||
|
### Actualizar Traducciones
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Exportar términos traducibles
|
||||||
|
docker-compose exec odoo odoo \
|
||||||
|
--addons-path=/mnt/extra-addons \
|
||||||
|
--i18n-export=/tmp/addon_name.pot \
|
||||||
|
--modules=addon_name \
|
||||||
|
--db=odoo
|
||||||
|
|
||||||
|
# Actualizar archivos .po
|
||||||
|
cd addon_name/i18n
|
||||||
|
msgmerge --update es.po addon_name.pot
|
||||||
|
msgmerge --update eu.po addon_name.pot
|
||||||
|
```
|
||||||
|
|
||||||
|
**Importante**: No usar `_()` en definiciones de campos a nivel de módulo. Solo usar en métodos.
|
||||||
|
|
||||||
|
📖 **[Ver guía completa de traducciones](docs/TRANSLATIONS.md)**
|
||||||
|
|
||||||
|
## 📖 Documentación Adicional
|
||||||
|
|
||||||
|
Cada addon incluye su propio README.md con:
|
||||||
|
- Arquitectura y diseño
|
||||||
|
- Detalles de implementación
|
||||||
|
- Ejemplos de uso
|
||||||
|
- Casos de prueba
|
||||||
|
|
||||||
|
### Documentos Principales
|
||||||
|
|
||||||
|
- [GitHub Copilot Instructions](.github/copilot-instructions.md) - Guía para desarrollo con AI
|
||||||
|
- [Documentación Técnica](docs/) - Guías de instalación, linters, y troubleshooting
|
||||||
|
- **[🚀 Lazy Loading Documentation](docs/LAZY_LOADING.md)** - Guía técnica completa sobre la nueva feature de carga lazy
|
||||||
|
- **[📦 Upgrade Instructions v18.0.1.3.0](docs/UPGRADE_INSTRUCTIONS_v18.0.1.3.0.md)** - Guía de actualización e instalación de lazy loading
|
||||||
|
- [Makefile](Makefile) - Comandos disponibles
|
||||||
|
- [requirements.txt](requirements.txt) - Dependencias Python
|
||||||
|
- [oca_dependencies.txt](oca_dependencies.txt) - Repositorios OCA necesarios
|
||||||
|
|
||||||
|
## 🔧 Configuración
|
||||||
|
|
||||||
|
### Dependencias OCA
|
||||||
|
|
||||||
|
Este proyecto depende de los siguientes repositorios OCA:
|
||||||
|
|
||||||
|
- **account-invoicing**: Sistema de facturación extendido
|
||||||
|
- **product-attribute**: Gestión avanzada de productos
|
||||||
|
- **purchase-workflow**: Flujos de compra personalizados
|
||||||
|
- **sale-workflow**: Flujos de venta personalizados
|
||||||
|
|
||||||
|
### Configuración de Odoo
|
||||||
|
|
||||||
|
Archivo `odoo.conf` incluye:
|
||||||
|
- Configuración de addons path
|
||||||
|
- Parámetros de base de datos
|
||||||
|
- Configuración de workers y límites
|
||||||
|
|
||||||
|
## 🐛 Issues Conocidos y Soluciones
|
||||||
|
|
||||||
|
### Descuentos Acumulándose en discount1
|
||||||
|
|
||||||
|
**Problema**: Al usar triple descuento, todos los descuentos se acumulan en el primer campo.
|
||||||
|
|
||||||
|
**Solución**: Instalar `account_invoice_triple_discount_readonly`
|
||||||
|
|
||||||
|
### Precio de Venta No Actualiza
|
||||||
|
|
||||||
|
**Problema**: El precio de venta no se calcula automáticamente desde el precio de compra.
|
||||||
|
|
||||||
|
**Solución**: Configurar `product_sale_price_from_pricelist` correctamente.
|
||||||
|
|
||||||
|
### Warnings de Traducción
|
||||||
|
|
||||||
|
**Problema**: `WARNING: _() called at import time at module...`
|
||||||
|
|
||||||
|
**Solución**: No usar `_()` en definiciones de campos, solo en métodos ejecutables.
|
||||||
|
|
||||||
|
## 🤝 Contribuir
|
||||||
|
|
||||||
|
### Estándares de Código
|
||||||
|
|
||||||
|
- Seguir [OCA Guidelines](https://github.com/OCA/odoo-community.org/blob/master/website/Contribution/CONTRIBUTING.rst)
|
||||||
|
- Usar **black** para formateo
|
||||||
|
- Usar **isort** para imports
|
||||||
|
- Pasar **flake8** y **pylint-odoo**
|
||||||
|
- Todos los commits deben pasar pre-commit hooks
|
||||||
|
|
||||||
|
### Estructura de Commits
|
||||||
|
|
||||||
|
```
|
||||||
|
[TAG] module_name: Brief description
|
||||||
|
|
||||||
|
Detailed explanation if needed
|
||||||
|
|
||||||
|
Tags: [ADD], [FIX], [IMP], [REF], [REM], [I18N], [DOC]
|
||||||
|
```
|
||||||
|
|
||||||
|
### Testing
|
||||||
|
|
||||||
|
Todos los nuevos features deben incluir:
|
||||||
|
- Tests unitarios
|
||||||
|
- Tests de integración (si aplica)
|
||||||
|
- Documentación actualizada
|
||||||
|
|
||||||
|
## 📝 License
|
||||||
|
|
||||||
|
AGPL-3.0 or later
|
||||||
|
|
||||||
|
## 👥 Autores
|
||||||
|
|
||||||
|
- **Criptomart** - Development
|
||||||
|
- **OCA Community** - Base addons
|
||||||
|
|
||||||
|
## 🔗 Enlaces
|
||||||
|
|
||||||
|
- **Odoo Documentation**: https://www.odoo.com/documentation/18.0/
|
||||||
|
- **OCA**: https://github.com/OCA
|
||||||
|
- **OCB**: https://github.com/OCA/OCB
|
||||||
|
- **OCA Guidelines**: https://github.com/OCA/odoo-community.org
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Versión Odoo**: 18.0
|
||||||
|
**Python**: 3.10+
|
||||||
|
**Última Actualización**: 2026-02-12
|
||||||
112
account_invoice_triple_discount/README.rst
Normal file
112
account_invoice_triple_discount/README.rst
Normal file
|
|
@ -0,0 +1,112 @@
|
||||||
|
.. image:: https://odoo-community.org/readme-banner-image
|
||||||
|
:target: https://odoo-community.org/get-involved?utm_source=readme
|
||||||
|
:alt: Odoo Community Association
|
||||||
|
|
||||||
|
===============================
|
||||||
|
Account Invoice Triple Discount
|
||||||
|
===============================
|
||||||
|
|
||||||
|
..
|
||||||
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||||
|
!! This file is generated by oca-gen-addon-readme !!
|
||||||
|
!! changes will be overwritten. !!
|
||||||
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||||
|
!! source digest: sha256:96fbed1626bb94b34b29d3287cbf750e394cae6f90526ddba1450a75f4c45b49
|
||||||
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||||
|
|
||||||
|
.. |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%2Faccount--invoicing-lightgray.png?logo=github
|
||||||
|
:target: https://github.com/OCA/account-invoicing/tree/18.0/account_invoice_triple_discount
|
||||||
|
:alt: OCA/account-invoicing
|
||||||
|
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
|
||||||
|
:target: https://translation.odoo-community.org/projects/account-invoicing-18-0/account-invoicing-18-0-account_invoice_triple_discount
|
||||||
|
: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/account-invoicing&target_branch=18.0
|
||||||
|
:alt: Try me on Runboat
|
||||||
|
|
||||||
|
|badge1| |badge2| |badge3| |badge4| |badge5|
|
||||||
|
|
||||||
|
This module allows to have three successive discounts on each invoice
|
||||||
|
line.
|
||||||
|
|
||||||
|
**Table of contents**
|
||||||
|
|
||||||
|
.. contents::
|
||||||
|
:local:
|
||||||
|
|
||||||
|
Usage
|
||||||
|
=====
|
||||||
|
|
||||||
|
Create a new invoice and add discounts in any of the three discount
|
||||||
|
fields given. They go in order of precedence so discount 2 will be
|
||||||
|
calculated over discount 1 and discount 3 over the result of discount 2.
|
||||||
|
For example, let's divide by two on every discount:
|
||||||
|
|
||||||
|
Unit price: 600.00 ->
|
||||||
|
|
||||||
|
- Disc. 1 = 50% -> Amount = 300.00
|
||||||
|
- Disc. 2 = 50% -> Amount = 150.00
|
||||||
|
- Disc. 3 = 50% -> Amount = 75.00
|
||||||
|
|
||||||
|
You can also use negative values to charge instead of discount:
|
||||||
|
|
||||||
|
Unit price: 600.00 ->
|
||||||
|
|
||||||
|
- Disc. 1 = 50% -> Amount = 300.00
|
||||||
|
- Disc. 2 = -5% -> Amount = 315.00
|
||||||
|
|
||||||
|
Bug Tracker
|
||||||
|
===========
|
||||||
|
|
||||||
|
Bugs are tracked on `GitHub Issues <https://github.com/OCA/account-invoicing/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/account-invoicing/issues/new?body=module:%20account_invoice_triple_discount%0Aversion:%2018.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
|
||||||
|
-------
|
||||||
|
|
||||||
|
* QubiQ
|
||||||
|
* Tecnativa
|
||||||
|
* GRAP
|
||||||
|
|
||||||
|
Contributors
|
||||||
|
------------
|
||||||
|
|
||||||
|
- David Vidal <david.vidal@tecnativa.com>
|
||||||
|
- Pedro M. Baeza <pedro.baeza@tecnativa.com>
|
||||||
|
- Nikul Chaudhary <nikulchaudhary2112@gmail.com>
|
||||||
|
- `Aion Tech <https://aiontech.company/>`__:
|
||||||
|
|
||||||
|
- Simone Rubino <simone.rubino@aion-tech.it>
|
||||||
|
|
||||||
|
- Laurent Mignon <laurent.mignon@acsone.eu>
|
||||||
|
- 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.
|
||||||
|
|
||||||
|
This module is part of the `OCA/account-invoicing <https://github.com/OCA/account-invoicing/tree/18.0/account_invoice_triple_discount>`_ project on GitHub.
|
||||||
|
|
||||||
|
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
|
||||||
2
account_invoice_triple_discount/__init__.py
Normal file
2
account_invoice_triple_discount/__init__.py
Normal file
|
|
@ -0,0 +1,2 @@
|
||||||
|
from . import models
|
||||||
|
from .hooks import post_init_hook
|
||||||
17
account_invoice_triple_discount/__manifest__.py
Normal file
17
account_invoice_triple_discount/__manifest__.py
Normal file
|
|
@ -0,0 +1,17 @@
|
||||||
|
# Copyright 2018 QubiQ (http://www.qubiq.es)
|
||||||
|
# Copyright 2017 Tecnativa - David Vidal
|
||||||
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||||
|
{
|
||||||
|
"name": "Account Invoice Triple Discount",
|
||||||
|
"version": "18.0.1.0.0",
|
||||||
|
"category": "Accounting & Finance",
|
||||||
|
"author": "QubiQ, Tecnativa, GRAP, Odoo Community Association (OCA)",
|
||||||
|
"website": "https://github.com/OCA/account-invoicing",
|
||||||
|
"license": "AGPL-3",
|
||||||
|
"summary": "Manage triple discount on invoice lines",
|
||||||
|
"depends": ["account"],
|
||||||
|
"excludes": ["account_invoice_fixed_discount"],
|
||||||
|
"post_init_hook": "post_init_hook",
|
||||||
|
"data": ["report/invoice.xml", "views/account_move.xml"],
|
||||||
|
"installable": True,
|
||||||
|
}
|
||||||
27
account_invoice_triple_discount/hooks.py
Normal file
27
account_invoice_triple_discount/hooks.py
Normal file
|
|
@ -0,0 +1,27 @@
|
||||||
|
# Copyright 2024-Today - Sylvain Le GAL (GRAP)
|
||||||
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||||
|
|
||||||
|
import logging
|
||||||
|
|
||||||
|
_logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
|
def post_init_hook(env):
|
||||||
|
_logger.info("Initializing column discount1 on table account_move_line")
|
||||||
|
env.cr.execute("""
|
||||||
|
UPDATE account_move_line
|
||||||
|
SET discount1 = discount
|
||||||
|
WHERE discount != 0
|
||||||
|
""")
|
||||||
|
# if discounts are : 10% - 20% - 30% main discount is : 49.6 %
|
||||||
|
# if discounts are : 05% - 09% - 13% main discount is : 24.7885 %
|
||||||
|
env.cr.execute("""
|
||||||
|
UPDATE account_move_line
|
||||||
|
SET discount = 100 * (
|
||||||
|
1 - (
|
||||||
|
(100 - COALESCE(discount1, 0.0)) / 100
|
||||||
|
* (100 - COALESCE(discount2, 0.0)) / 100
|
||||||
|
* (100 - COALESCE(discount3, 0.0)) / 100
|
||||||
|
)
|
||||||
|
);
|
||||||
|
""")
|
||||||
|
|
@ -0,0 +1,101 @@
|
||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * account_invoice_triple_discount
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Odoo Server 18.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: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.1 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.2 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.3 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.1%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.2%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.3%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount
|
||||||
|
msgid "Discount (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount1
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_triple_discount_mixin__discount1
|
||||||
|
msgid "Discount 1 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.constraint,message:account_invoice_triple_discount.constraint_account_move_line_discount1_limit
|
||||||
|
#: model:ir.model.constraint,message:account_invoice_triple_discount.constraint_triple_discount_mixin_discount1_limit
|
||||||
|
msgid "Discount 1 must be lower than 100%."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount2
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_triple_discount_mixin__discount2
|
||||||
|
msgid "Discount 2 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.constraint,message:account_invoice_triple_discount.constraint_account_move_line_discount2_limit
|
||||||
|
#: model:ir.model.constraint,message:account_invoice_triple_discount.constraint_triple_discount_mixin_discount2_limit
|
||||||
|
msgid "Discount 2 must be lower than 100%."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount3
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_triple_discount_mixin__discount3
|
||||||
|
msgid "Discount 3 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.constraint,message:account_invoice_triple_discount.constraint_account_move_line_discount3_limit
|
||||||
|
#: model:ir.model.constraint,message:account_invoice_triple_discount.constraint_triple_discount_mixin_discount3_limit
|
||||||
|
msgid "Discount 3 must be lower than 100%."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model,name:account_invoice_triple_discount.model_account_move_line
|
||||||
|
msgid "Journal Item"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_triple_discount_mixin__discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Total discount"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model,name:account_invoice_triple_discount.model_triple_discount_mixin
|
||||||
|
msgid "Triple discount mixin"
|
||||||
|
msgstr ""
|
||||||
82
account_invoice_triple_discount/i18n/ar.po
Normal file
82
account_invoice_triple_discount/i18n/ar.po
Normal file
|
|
@ -0,0 +1,82 @@
|
||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * account_invoice_triple_discount
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# OCA Transbot <transbot@odoo-community.org>, 2017
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Odoo Server 10.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2017-08-09 02:45+0000\n"
|
||||||
|
"PO-Revision-Date: 2017-08-09 02:45+0000\n"
|
||||||
|
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2017\n"
|
||||||
|
"Language-Team: Arabic (https://www.transifex.com/oca/teams/23907/ar/)\n"
|
||||||
|
"Language: ar\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: \n"
|
||||||
|
"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
|
||||||
|
"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.1 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.2 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.3 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.1%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.2%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.3%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount1
|
||||||
|
msgid "Discount 1 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount2
|
||||||
|
msgid "Discount 2 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount3
|
||||||
|
msgid "Discount 3 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model,name:account_invoice_triple_discount.model_account_move_line
|
||||||
|
msgid "Journal Item"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Total discount"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#~ msgid "Invoice"
|
||||||
|
#~ msgstr "فاتورة"
|
||||||
|
|
||||||
|
#~ msgid "Invoice Line"
|
||||||
|
#~ msgstr "خط الفاتورة"
|
||||||
78
account_invoice_triple_discount/i18n/bg.po
Normal file
78
account_invoice_triple_discount/i18n/bg.po
Normal file
|
|
@ -0,0 +1,78 @@
|
||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * account_invoice_triple_discount
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# OCA Transbot <transbot@odoo-community.org>, 2017
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Odoo Server 10.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2017-08-09 02:45+0000\n"
|
||||||
|
"PO-Revision-Date: 2017-08-09 02:45+0000\n"
|
||||||
|
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2017\n"
|
||||||
|
"Language-Team: Bulgarian (https://www.transifex.com/oca/teams/23907/bg/)\n"
|
||||||
|
"Language: bg\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"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.1 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.2 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.3 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.1%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.2%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.3%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount1
|
||||||
|
msgid "Discount 1 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount2
|
||||||
|
msgid "Discount 2 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount3
|
||||||
|
msgid "Discount 3 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model,name:account_invoice_triple_discount.model_account_move_line
|
||||||
|
msgid "Journal Item"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Total discount"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#~ msgid "Invoice"
|
||||||
|
#~ msgstr "Фактура"
|
||||||
82
account_invoice_triple_discount/i18n/bs.po
Normal file
82
account_invoice_triple_discount/i18n/bs.po
Normal file
|
|
@ -0,0 +1,82 @@
|
||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * account_invoice_triple_discount
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# OCA Transbot <transbot@odoo-community.org>, 2017
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Odoo Server 10.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2017-08-09 02:45+0000\n"
|
||||||
|
"PO-Revision-Date: 2017-08-09 02:45+0000\n"
|
||||||
|
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2017\n"
|
||||||
|
"Language-Team: Bosnian (https://www.transifex.com/oca/teams/23907/bs/)\n"
|
||||||
|
"Language: bs\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: \n"
|
||||||
|
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
|
||||||
|
"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.1 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.2 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.3 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.1%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.2%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.3%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount1
|
||||||
|
msgid "Discount 1 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount2
|
||||||
|
msgid "Discount 2 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount3
|
||||||
|
msgid "Discount 3 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model,name:account_invoice_triple_discount.model_account_move_line
|
||||||
|
msgid "Journal Item"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Total discount"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#~ msgid "Invoice"
|
||||||
|
#~ msgstr "Faktura"
|
||||||
|
|
||||||
|
#~ msgid "Invoice Line"
|
||||||
|
#~ msgstr "Stavka fakture"
|
||||||
82
account_invoice_triple_discount/i18n/ca.po
Normal file
82
account_invoice_triple_discount/i18n/ca.po
Normal file
|
|
@ -0,0 +1,82 @@
|
||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * account_invoice_triple_discount
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# OCA Transbot <transbot@odoo-community.org>, 2017
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Odoo Server 10.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2017-08-09 02:45+0000\n"
|
||||||
|
"PO-Revision-Date: 2022-08-09 10:06+0000\n"
|
||||||
|
"Last-Translator: jabelchi <jabelchi@gmail.com>\n"
|
||||||
|
"Language-Team: Catalan (https://www.transifex.com/oca/teams/23907/ca/)\n"
|
||||||
|
"Language: ca\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.3.2\n"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.1 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.2 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.3 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.1%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.2%"
|
||||||
|
msgstr "Desc.2%"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.3%"
|
||||||
|
msgstr "Desc.3%"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount1
|
||||||
|
msgid "Discount 1 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount2
|
||||||
|
msgid "Discount 2 (%)"
|
||||||
|
msgstr "Descompte 2 (%)"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount3
|
||||||
|
msgid "Discount 3 (%)"
|
||||||
|
msgstr "Descompte 3 (%)"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model,name:account_invoice_triple_discount.model_account_move_line
|
||||||
|
msgid "Journal Item"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Total discount"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#~ msgid "Invoice"
|
||||||
|
#~ msgstr "Factura"
|
||||||
|
|
||||||
|
#~ msgid "Invoice Line"
|
||||||
|
#~ msgstr "Línia factura"
|
||||||
81
account_invoice_triple_discount/i18n/cs.po
Normal file
81
account_invoice_triple_discount/i18n/cs.po
Normal file
|
|
@ -0,0 +1,81 @@
|
||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * account_invoice_triple_discount
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# OCA Transbot <transbot@odoo-community.org>, 2017
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Odoo Server 10.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2017-08-09 02:45+0000\n"
|
||||||
|
"PO-Revision-Date: 2017-08-09 02:45+0000\n"
|
||||||
|
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2017\n"
|
||||||
|
"Language-Team: Czech (https://www.transifex.com/oca/teams/23907/cs/)\n"
|
||||||
|
"Language: cs\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: \n"
|
||||||
|
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.1 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.2 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.3 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.1%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.2%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.3%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount1
|
||||||
|
msgid "Discount 1 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount2
|
||||||
|
msgid "Discount 2 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount3
|
||||||
|
msgid "Discount 3 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model,name:account_invoice_triple_discount.model_account_move_line
|
||||||
|
msgid "Journal Item"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Total discount"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#~ msgid "Invoice"
|
||||||
|
#~ msgstr "Faktura"
|
||||||
|
|
||||||
|
#~ msgid "Invoice Line"
|
||||||
|
#~ msgstr "Řádek faktury"
|
||||||
82
account_invoice_triple_discount/i18n/de.po
Normal file
82
account_invoice_triple_discount/i18n/de.po
Normal file
|
|
@ -0,0 +1,82 @@
|
||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * account_invoice_triple_discount
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# OCA Transbot <transbot@odoo-community.org>, 2017
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Odoo Server 10.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2017-08-09 02:45+0000\n"
|
||||||
|
"PO-Revision-Date: 2018-10-11 11:45+0000\n"
|
||||||
|
"Last-Translator: Rudolf Schnapka <rs@techno-flex.de>\n"
|
||||||
|
"Language-Team: German (https://www.transifex.com/oca/teams/23907/de/)\n"
|
||||||
|
"Language: de\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 3.1.1\n"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.1 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.2 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.3 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.1%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.2%"
|
||||||
|
msgstr "2. Rabatt (%)"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.3%"
|
||||||
|
msgstr "3. Rabatt (%)"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount1
|
||||||
|
msgid "Discount 1 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount2
|
||||||
|
msgid "Discount 2 (%)"
|
||||||
|
msgstr "2. Rabatt (%)"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount3
|
||||||
|
msgid "Discount 3 (%)"
|
||||||
|
msgstr "3. Rabatt (%)"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model,name:account_invoice_triple_discount.model_account_move_line
|
||||||
|
msgid "Journal Item"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Total discount"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#~ msgid "Invoice"
|
||||||
|
#~ msgstr "Rechnung"
|
||||||
|
|
||||||
|
#~ msgid "Invoice Line"
|
||||||
|
#~ msgstr "Rechnungsposition"
|
||||||
79
account_invoice_triple_discount/i18n/el_GR.po
Normal file
79
account_invoice_triple_discount/i18n/el_GR.po
Normal file
|
|
@ -0,0 +1,79 @@
|
||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * account_invoice_triple_discount
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# OCA Transbot <transbot@odoo-community.org>, 2017
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Odoo Server 10.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2017-08-09 02:45+0000\n"
|
||||||
|
"PO-Revision-Date: 2017-08-09 02:45+0000\n"
|
||||||
|
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2017\n"
|
||||||
|
"Language-Team: Greek (Greece) (https://www.transifex.com/oca/teams/23907/"
|
||||||
|
"el_GR/)\n"
|
||||||
|
"Language: el_GR\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"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.1 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.2 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.3 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.1%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.2%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.3%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount1
|
||||||
|
msgid "Discount 1 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount2
|
||||||
|
msgid "Discount 2 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount3
|
||||||
|
msgid "Discount 3 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model,name:account_invoice_triple_discount.model_account_move_line
|
||||||
|
msgid "Journal Item"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Total discount"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#~ msgid "Invoice"
|
||||||
|
#~ msgstr "Τιμολόγιο"
|
||||||
82
account_invoice_triple_discount/i18n/en_GB.po
Normal file
82
account_invoice_triple_discount/i18n/en_GB.po
Normal file
|
|
@ -0,0 +1,82 @@
|
||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * account_invoice_triple_discount
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# OCA Transbot <transbot@odoo-community.org>, 2017
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Odoo Server 10.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2017-08-09 02:45+0000\n"
|
||||||
|
"PO-Revision-Date: 2017-08-09 02:45+0000\n"
|
||||||
|
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2017\n"
|
||||||
|
"Language-Team: English (United Kingdom) (https://www.transifex.com/oca/"
|
||||||
|
"teams/23907/en_GB/)\n"
|
||||||
|
"Language: en_GB\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"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.1 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.2 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.3 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.1%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.2%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.3%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount1
|
||||||
|
msgid "Discount 1 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount2
|
||||||
|
msgid "Discount 2 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount3
|
||||||
|
msgid "Discount 3 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model,name:account_invoice_triple_discount.model_account_move_line
|
||||||
|
msgid "Journal Item"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Total discount"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#~ msgid "Invoice"
|
||||||
|
#~ msgstr "Invoice"
|
||||||
|
|
||||||
|
#~ msgid "Invoice Line"
|
||||||
|
#~ msgstr "Invoice Line"
|
||||||
85
account_invoice_triple_discount/i18n/es.po
Normal file
85
account_invoice_triple_discount/i18n/es.po
Normal file
|
|
@ -0,0 +1,85 @@
|
||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * account_invoice_triple_discount
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# OCA Transbot <transbot@odoo-community.org>, 2017
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Odoo Server 10.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2017-08-09 02:45+0000\n"
|
||||||
|
"PO-Revision-Date: 2026-02-03 07:04+0000\n"
|
||||||
|
"Last-Translator: Enric Tobella <etobella@creublanca.es>\n"
|
||||||
|
"Language-Team: Spanish (https://www.transifex.com/oca/teams/23907/es/)\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 5.15.2\n"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.1 %</span>"
|
||||||
|
msgstr "<span>Desc.1 %</span>"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.2 %</span>"
|
||||||
|
msgstr "<span>Desc. 2 (%)</span>"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.3 %</span>"
|
||||||
|
msgstr "<span>Desc.3 %</span>"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.1%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.2%"
|
||||||
|
msgstr "Desc.2%"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.3%"
|
||||||
|
msgstr "Desc.3%"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount1
|
||||||
|
msgid "Discount 1 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount2
|
||||||
|
msgid "Discount 2 (%)"
|
||||||
|
msgstr "Descuento 2 (%)"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount3
|
||||||
|
msgid "Discount 3 (%)"
|
||||||
|
msgstr "Descuento 3 (%)"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model,name:account_invoice_triple_discount.model_account_move_line
|
||||||
|
msgid "Journal Item"
|
||||||
|
msgstr "Artículo diario"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Total discount"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#~ msgid "Journal Entry"
|
||||||
|
#~ msgstr "Entrada Diaria"
|
||||||
|
|
||||||
|
#~ msgid "Invoice"
|
||||||
|
#~ msgstr "Factura"
|
||||||
|
|
||||||
|
#~ msgid "Invoice Line"
|
||||||
|
#~ msgstr "Línea de factura"
|
||||||
82
account_invoice_triple_discount/i18n/es_CR.po
Normal file
82
account_invoice_triple_discount/i18n/es_CR.po
Normal file
|
|
@ -0,0 +1,82 @@
|
||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * account_invoice_triple_discount
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# OCA Transbot <transbot@odoo-community.org>, 2017
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Odoo Server 10.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2017-08-09 02:45+0000\n"
|
||||||
|
"PO-Revision-Date: 2017-08-09 02:45+0000\n"
|
||||||
|
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2017\n"
|
||||||
|
"Language-Team: Spanish (Costa Rica) (https://www.transifex.com/oca/"
|
||||||
|
"teams/23907/es_CR/)\n"
|
||||||
|
"Language: es_CR\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"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.1 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.2 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.3 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.1%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.2%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.3%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount1
|
||||||
|
msgid "Discount 1 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount2
|
||||||
|
msgid "Discount 2 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount3
|
||||||
|
msgid "Discount 3 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model,name:account_invoice_triple_discount.model_account_move_line
|
||||||
|
msgid "Journal Item"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Total discount"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#~ msgid "Invoice"
|
||||||
|
#~ msgstr "Factura"
|
||||||
|
|
||||||
|
#~ msgid "Invoice Line"
|
||||||
|
#~ msgstr "Línea de factura"
|
||||||
82
account_invoice_triple_discount/i18n/es_EC.po
Normal file
82
account_invoice_triple_discount/i18n/es_EC.po
Normal file
|
|
@ -0,0 +1,82 @@
|
||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * account_invoice_triple_discount
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# OCA Transbot <transbot@odoo-community.org>, 2017
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Odoo Server 10.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2017-08-09 02:45+0000\n"
|
||||||
|
"PO-Revision-Date: 2017-08-09 02:45+0000\n"
|
||||||
|
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2017\n"
|
||||||
|
"Language-Team: Spanish (Ecuador) (https://www.transifex.com/oca/teams/23907/"
|
||||||
|
"es_EC/)\n"
|
||||||
|
"Language: es_EC\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"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.1 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.2 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.3 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.1%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.2%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.3%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount1
|
||||||
|
msgid "Discount 1 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount2
|
||||||
|
msgid "Discount 2 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount3
|
||||||
|
msgid "Discount 3 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model,name:account_invoice_triple_discount.model_account_move_line
|
||||||
|
msgid "Journal Item"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Total discount"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#~ msgid "Invoice"
|
||||||
|
#~ msgstr "Factura"
|
||||||
|
|
||||||
|
#~ msgid "Invoice Line"
|
||||||
|
#~ msgstr "Detalle de Factura"
|
||||||
79
account_invoice_triple_discount/i18n/es_ES.po
Normal file
79
account_invoice_triple_discount/i18n/es_ES.po
Normal file
|
|
@ -0,0 +1,79 @@
|
||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * account_invoice_triple_discount
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# Fernando Lara <gennesis45@gmail.com>, 2017
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Odoo Server 10.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2017-08-09 02:45+0000\n"
|
||||||
|
"PO-Revision-Date: 2017-08-09 02:45+0000\n"
|
||||||
|
"Last-Translator: Fernando Lara <gennesis45@gmail.com>, 2017\n"
|
||||||
|
"Language-Team: Spanish (Spain) (https://www.transifex.com/oca/teams/23907/"
|
||||||
|
"es_ES/)\n"
|
||||||
|
"Language: es_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"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.1 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.2 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.3 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.1%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.2%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.3%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount1
|
||||||
|
msgid "Discount 1 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount2
|
||||||
|
msgid "Discount 2 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount3
|
||||||
|
msgid "Discount 3 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model,name:account_invoice_triple_discount.model_account_move_line
|
||||||
|
msgid "Journal Item"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Total discount"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#~ msgid "Invoice"
|
||||||
|
#~ msgstr "Factura"
|
||||||
82
account_invoice_triple_discount/i18n/es_MX.po
Normal file
82
account_invoice_triple_discount/i18n/es_MX.po
Normal file
|
|
@ -0,0 +1,82 @@
|
||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * account_invoice_triple_discount
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# OCA Transbot <transbot@odoo-community.org>, 2017
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Odoo Server 10.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2017-08-09 02:45+0000\n"
|
||||||
|
"PO-Revision-Date: 2017-08-09 02:45+0000\n"
|
||||||
|
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2017\n"
|
||||||
|
"Language-Team: Spanish (Mexico) (https://www.transifex.com/oca/teams/23907/"
|
||||||
|
"es_MX/)\n"
|
||||||
|
"Language: es_MX\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"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.1 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.2 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.3 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.1%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.2%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.3%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount1
|
||||||
|
msgid "Discount 1 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount2
|
||||||
|
msgid "Discount 2 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount3
|
||||||
|
msgid "Discount 3 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model,name:account_invoice_triple_discount.model_account_move_line
|
||||||
|
msgid "Journal Item"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Total discount"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#~ msgid "Invoice"
|
||||||
|
#~ msgstr "Factura"
|
||||||
|
|
||||||
|
#~ msgid "Invoice Line"
|
||||||
|
#~ msgstr "Línea de factura"
|
||||||
81
account_invoice_triple_discount/i18n/et.po
Normal file
81
account_invoice_triple_discount/i18n/et.po
Normal file
|
|
@ -0,0 +1,81 @@
|
||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * account_invoice_triple_discount
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# OCA Transbot <transbot@odoo-community.org>, 2017
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Odoo Server 10.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2017-08-09 02:45+0000\n"
|
||||||
|
"PO-Revision-Date: 2017-08-09 02:45+0000\n"
|
||||||
|
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2017\n"
|
||||||
|
"Language-Team: Estonian (https://www.transifex.com/oca/teams/23907/et/)\n"
|
||||||
|
"Language: et\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"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.1 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.2 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.3 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.1%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.2%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.3%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount1
|
||||||
|
msgid "Discount 1 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount2
|
||||||
|
msgid "Discount 2 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount3
|
||||||
|
msgid "Discount 3 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model,name:account_invoice_triple_discount.model_account_move_line
|
||||||
|
msgid "Journal Item"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Total discount"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#~ msgid "Invoice"
|
||||||
|
#~ msgstr "Arve"
|
||||||
|
|
||||||
|
#~ msgid "Invoice Line"
|
||||||
|
#~ msgstr "Arve rida"
|
||||||
78
account_invoice_triple_discount/i18n/fi.po
Normal file
78
account_invoice_triple_discount/i18n/fi.po
Normal file
|
|
@ -0,0 +1,78 @@
|
||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * account_invoice_triple_discount
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# OCA Transbot <transbot@odoo-community.org>, 2017
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Odoo Server 10.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2017-08-09 02:45+0000\n"
|
||||||
|
"PO-Revision-Date: 2017-08-09 02:45+0000\n"
|
||||||
|
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2017\n"
|
||||||
|
"Language-Team: Finnish (https://www.transifex.com/oca/teams/23907/fi/)\n"
|
||||||
|
"Language: fi\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"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.1 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.2 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.3 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.1%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.2%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.3%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount1
|
||||||
|
msgid "Discount 1 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount2
|
||||||
|
msgid "Discount 2 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount3
|
||||||
|
msgid "Discount 3 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model,name:account_invoice_triple_discount.model_account_move_line
|
||||||
|
msgid "Journal Item"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Total discount"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#~ msgid "Invoice"
|
||||||
|
#~ msgstr "Lasku"
|
||||||
82
account_invoice_triple_discount/i18n/fr.po
Normal file
82
account_invoice_triple_discount/i18n/fr.po
Normal file
|
|
@ -0,0 +1,82 @@
|
||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * account_invoice_triple_discount
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# OCA Transbot <transbot@odoo-community.org>, 2017
|
||||||
|
# Quentin THEURET <odoo@kerpeo.com>, 2017
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Odoo Server 10.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2017-08-09 02:45+0000\n"
|
||||||
|
"PO-Revision-Date: 2017-08-09 02:45+0000\n"
|
||||||
|
"Last-Translator: Quentin THEURET <odoo@kerpeo.com>, 2017\n"
|
||||||
|
"Language-Team: French (https://www.transifex.com/oca/teams/23907/fr/)\n"
|
||||||
|
"Language: fr\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"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.1 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.2 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.3 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.1%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.2%"
|
||||||
|
msgstr "Remise 2 (%)"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.3%"
|
||||||
|
msgstr "Remise 3 (%)"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount1
|
||||||
|
msgid "Discount 1 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount2
|
||||||
|
msgid "Discount 2 (%)"
|
||||||
|
msgstr "Remise 2 (%)"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount3
|
||||||
|
msgid "Discount 3 (%)"
|
||||||
|
msgstr "Remise 3 (%)"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model,name:account_invoice_triple_discount.model_account_move_line
|
||||||
|
msgid "Journal Item"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Total discount"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#~ msgid "Invoice"
|
||||||
|
#~ msgstr "Facture"
|
||||||
|
|
||||||
|
#~ msgid "Invoice Line"
|
||||||
|
#~ msgstr "Ligne de facture"
|
||||||
79
account_invoice_triple_discount/i18n/fr_CA.po
Normal file
79
account_invoice_triple_discount/i18n/fr_CA.po
Normal file
|
|
@ -0,0 +1,79 @@
|
||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * account_invoice_triple_discount
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# OCA Transbot <transbot@odoo-community.org>, 2017
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Odoo Server 10.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2017-08-09 02:45+0000\n"
|
||||||
|
"PO-Revision-Date: 2017-08-09 02:45+0000\n"
|
||||||
|
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2017\n"
|
||||||
|
"Language-Team: French (Canada) (https://www.transifex.com/oca/teams/23907/"
|
||||||
|
"fr_CA/)\n"
|
||||||
|
"Language: fr_CA\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"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.1 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.2 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.3 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.1%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.2%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.3%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount1
|
||||||
|
msgid "Discount 1 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount2
|
||||||
|
msgid "Discount 2 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount3
|
||||||
|
msgid "Discount 3 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model,name:account_invoice_triple_discount.model_account_move_line
|
||||||
|
msgid "Journal Item"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Total discount"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#~ msgid "Invoice"
|
||||||
|
#~ msgstr "Facture"
|
||||||
82
account_invoice_triple_discount/i18n/fr_CH.po
Normal file
82
account_invoice_triple_discount/i18n/fr_CH.po
Normal file
|
|
@ -0,0 +1,82 @@
|
||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * account_invoice_triple_discount
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# OCA Transbot <transbot@odoo-community.org>, 2017
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Odoo Server 10.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2017-08-09 02:45+0000\n"
|
||||||
|
"PO-Revision-Date: 2017-08-09 02:45+0000\n"
|
||||||
|
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2017\n"
|
||||||
|
"Language-Team: French (Switzerland) (https://www.transifex.com/oca/"
|
||||||
|
"teams/23907/fr_CH/)\n"
|
||||||
|
"Language: fr_CH\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"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.1 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.2 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.3 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.1%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.2%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.3%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount1
|
||||||
|
msgid "Discount 1 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount2
|
||||||
|
msgid "Discount 2 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount3
|
||||||
|
msgid "Discount 3 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model,name:account_invoice_triple_discount.model_account_move_line
|
||||||
|
msgid "Journal Item"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Total discount"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#~ msgid "Invoice"
|
||||||
|
#~ msgstr "Facture"
|
||||||
|
|
||||||
|
#~ msgid "Invoice Line"
|
||||||
|
#~ msgstr "Ligne de facture"
|
||||||
78
account_invoice_triple_discount/i18n/gl.po
Normal file
78
account_invoice_triple_discount/i18n/gl.po
Normal file
|
|
@ -0,0 +1,78 @@
|
||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * account_invoice_triple_discount
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# OCA Transbot <transbot@odoo-community.org>, 2017
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Odoo Server 10.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2017-08-09 02:45+0000\n"
|
||||||
|
"PO-Revision-Date: 2017-08-09 02:45+0000\n"
|
||||||
|
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2017\n"
|
||||||
|
"Language-Team: Galician (https://www.transifex.com/oca/teams/23907/gl/)\n"
|
||||||
|
"Language: gl\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"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.1 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.2 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.3 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.1%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.2%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.3%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount1
|
||||||
|
msgid "Discount 1 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount2
|
||||||
|
msgid "Discount 2 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount3
|
||||||
|
msgid "Discount 3 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model,name:account_invoice_triple_discount.model_account_move_line
|
||||||
|
msgid "Journal Item"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Total discount"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#~ msgid "Invoice"
|
||||||
|
#~ msgstr "Factura"
|
||||||
87
account_invoice_triple_discount/i18n/hr.po
Normal file
87
account_invoice_triple_discount/i18n/hr.po
Normal file
|
|
@ -0,0 +1,87 @@
|
||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * account_invoice_triple_discount
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# OCA Transbot <transbot@odoo-community.org>, 2017
|
||||||
|
# Bole <bole@dajmi5.com>, 2018
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Odoo Server 10.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2018-02-03 01:14+0000\n"
|
||||||
|
"PO-Revision-Date: 2023-04-03 13:23+0000\n"
|
||||||
|
"Last-Translator: Bole <bole@dajmi5.com>\n"
|
||||||
|
"Language-Team: Croatian (https://www.transifex.com/oca/teams/23907/hr/)\n"
|
||||||
|
"Language: hr\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: \n"
|
||||||
|
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
|
||||||
|
"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
|
||||||
|
"X-Generator: Weblate 4.14.1\n"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.1 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.2 %</span>"
|
||||||
|
msgstr "<span>Pop.2 %</span>"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.3 %</span>"
|
||||||
|
msgstr "<span>Pop.3 %</span>"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.1%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.2%"
|
||||||
|
msgstr "Popust 2 (%)"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.3%"
|
||||||
|
msgstr "Popust 3 (%)"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount1
|
||||||
|
msgid "Discount 1 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount2
|
||||||
|
msgid "Discount 2 (%)"
|
||||||
|
msgstr "Popust 2 (%)"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount3
|
||||||
|
msgid "Discount 3 (%)"
|
||||||
|
msgstr "Popust 3 (%)"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model,name:account_invoice_triple_discount.model_account_move_line
|
||||||
|
msgid "Journal Item"
|
||||||
|
msgstr "Stavka dnevnika"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Total discount"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#~ msgid "Journal Entry"
|
||||||
|
#~ msgstr "Temeljnica"
|
||||||
|
|
||||||
|
#~ msgid "Invoice"
|
||||||
|
#~ msgstr "Račun"
|
||||||
|
|
||||||
|
#~ msgid "Invoice Line"
|
||||||
|
#~ msgstr "Stavka računa"
|
||||||
84
account_invoice_triple_discount/i18n/hr_HR.po
Normal file
84
account_invoice_triple_discount/i18n/hr_HR.po
Normal file
|
|
@ -0,0 +1,84 @@
|
||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * account_invoice_triple_discount
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# OCA Transbot <transbot@odoo-community.org>, 2017
|
||||||
|
# Bole <bole@dajmi5.com>, 2017
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Odoo Server 10.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2017-08-11 23:30+0000\n"
|
||||||
|
"PO-Revision-Date: 2017-08-11 23:30+0000\n"
|
||||||
|
"Last-Translator: Bole <bole@dajmi5.com>, 2017\n"
|
||||||
|
"Language-Team: Croatian (Croatia) (https://www.transifex.com/oca/teams/23907/"
|
||||||
|
"hr_HR/)\n"
|
||||||
|
"Language: hr_HR\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: \n"
|
||||||
|
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
|
||||||
|
"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.1 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.2 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.3 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.1%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.2%"
|
||||||
|
msgstr "Popust 2 (%)"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.3%"
|
||||||
|
msgstr "Popust 3 (%)"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount1
|
||||||
|
msgid "Discount 1 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount2
|
||||||
|
msgid "Discount 2 (%)"
|
||||||
|
msgstr "Popust 2 (%)"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount3
|
||||||
|
msgid "Discount 3 (%)"
|
||||||
|
msgstr "Popust 3 (%)"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model,name:account_invoice_triple_discount.model_account_move_line
|
||||||
|
msgid "Journal Item"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Total discount"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#~ msgid "Invoice"
|
||||||
|
#~ msgstr "Račun"
|
||||||
|
|
||||||
|
#~ msgid "Invoice Line"
|
||||||
|
#~ msgstr "Stavka računa"
|
||||||
81
account_invoice_triple_discount/i18n/hu.po
Normal file
81
account_invoice_triple_discount/i18n/hu.po
Normal file
|
|
@ -0,0 +1,81 @@
|
||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * account_invoice_triple_discount
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# OCA Transbot <transbot@odoo-community.org>, 2017
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Odoo Server 10.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2017-08-09 02:45+0000\n"
|
||||||
|
"PO-Revision-Date: 2017-08-09 02:45+0000\n"
|
||||||
|
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2017\n"
|
||||||
|
"Language-Team: Hungarian (https://www.transifex.com/oca/teams/23907/hu/)\n"
|
||||||
|
"Language: hu\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"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.1 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.2 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.3 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.1%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.2%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.3%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount1
|
||||||
|
msgid "Discount 1 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount2
|
||||||
|
msgid "Discount 2 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount3
|
||||||
|
msgid "Discount 3 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model,name:account_invoice_triple_discount.model_account_move_line
|
||||||
|
msgid "Journal Item"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Total discount"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#~ msgid "Invoice"
|
||||||
|
#~ msgstr "Számla"
|
||||||
|
|
||||||
|
#~ msgid "Invoice Line"
|
||||||
|
#~ msgstr "Számlasor"
|
||||||
78
account_invoice_triple_discount/i18n/id.po
Normal file
78
account_invoice_triple_discount/i18n/id.po
Normal file
|
|
@ -0,0 +1,78 @@
|
||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * account_invoice_triple_discount
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# OCA Transbot <transbot@odoo-community.org>, 2017
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Odoo Server 10.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2017-08-09 02:45+0000\n"
|
||||||
|
"PO-Revision-Date: 2017-08-09 02:45+0000\n"
|
||||||
|
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2017\n"
|
||||||
|
"Language-Team: Indonesian (https://www.transifex.com/oca/teams/23907/id/)\n"
|
||||||
|
"Language: id\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: \n"
|
||||||
|
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.1 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.2 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.3 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.1%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.2%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.3%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount1
|
||||||
|
msgid "Discount 1 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount2
|
||||||
|
msgid "Discount 2 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount3
|
||||||
|
msgid "Discount 3 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model,name:account_invoice_triple_discount.model_account_move_line
|
||||||
|
msgid "Journal Item"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Total discount"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#~ msgid "Invoice"
|
||||||
|
#~ msgstr "Faktur"
|
||||||
85
account_invoice_triple_discount/i18n/it.po
Normal file
85
account_invoice_triple_discount/i18n/it.po
Normal file
|
|
@ -0,0 +1,85 @@
|
||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * account_invoice_triple_discount
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# OCA Transbot <transbot@odoo-community.org>, 2017
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Odoo Server 10.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2017-08-09 02:45+0000\n"
|
||||||
|
"PO-Revision-Date: 2025-02-25 15:06+0000\n"
|
||||||
|
"Last-Translator: mymage <stefano.consolaro@mymage.it>\n"
|
||||||
|
"Language-Team: Italian (https://www.transifex.com/oca/teams/23907/it/)\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: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.1 %</span>"
|
||||||
|
msgstr "<span>Sconto 1 %</span>"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.2 %</span>"
|
||||||
|
msgstr "<span>Sconto 2 (%)</span>"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.3 %</span>"
|
||||||
|
msgstr "<span>Sconto 3 (%)</span>"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.1%"
|
||||||
|
msgstr "Sconto 1%"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.2%"
|
||||||
|
msgstr "Sconto 2 (%)"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.3%"
|
||||||
|
msgstr "Sconto 3 (%)"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount1
|
||||||
|
msgid "Discount 1 (%)"
|
||||||
|
msgstr "Sconto 1%"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount2
|
||||||
|
msgid "Discount 2 (%)"
|
||||||
|
msgstr "Sconto 2 (%)"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount3
|
||||||
|
msgid "Discount 3 (%)"
|
||||||
|
msgstr "Sconto 3 (%)"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model,name:account_invoice_triple_discount.model_account_move_line
|
||||||
|
msgid "Journal Item"
|
||||||
|
msgstr "Movimento contabile"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Total discount"
|
||||||
|
msgstr "Sconto totale"
|
||||||
|
|
||||||
|
#~ msgid "Journal Entry"
|
||||||
|
#~ msgstr "Registrazione contabile"
|
||||||
|
|
||||||
|
#~ msgid "Invoice"
|
||||||
|
#~ msgstr "Fattura"
|
||||||
|
|
||||||
|
#~ msgid "Invoice Line"
|
||||||
|
#~ msgstr "Righe Fattura"
|
||||||
81
account_invoice_triple_discount/i18n/ja.po
Normal file
81
account_invoice_triple_discount/i18n/ja.po
Normal file
|
|
@ -0,0 +1,81 @@
|
||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * account_invoice_triple_discount
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# OCA Transbot <transbot@odoo-community.org>, 2017
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Odoo Server 10.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2017-08-09 02:45+0000\n"
|
||||||
|
"PO-Revision-Date: 2017-08-09 02:45+0000\n"
|
||||||
|
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2017\n"
|
||||||
|
"Language-Team: Japanese (https://www.transifex.com/oca/teams/23907/ja/)\n"
|
||||||
|
"Language: ja\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: \n"
|
||||||
|
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.1 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.2 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.3 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.1%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.2%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.3%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount1
|
||||||
|
msgid "Discount 1 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount2
|
||||||
|
msgid "Discount 2 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount3
|
||||||
|
msgid "Discount 3 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model,name:account_invoice_triple_discount.model_account_move_line
|
||||||
|
msgid "Journal Item"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Total discount"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#~ msgid "Invoice"
|
||||||
|
#~ msgstr "請求書"
|
||||||
|
|
||||||
|
#~ msgid "Invoice Line"
|
||||||
|
#~ msgstr "請求行"
|
||||||
82
account_invoice_triple_discount/i18n/lt.po
Normal file
82
account_invoice_triple_discount/i18n/lt.po
Normal file
|
|
@ -0,0 +1,82 @@
|
||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * account_invoice_triple_discount
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# OCA Transbot <transbot@odoo-community.org>, 2017
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Odoo Server 10.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2017-08-09 02:45+0000\n"
|
||||||
|
"PO-Revision-Date: 2017-08-09 02:45+0000\n"
|
||||||
|
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2017\n"
|
||||||
|
"Language-Team: Lithuanian (https://www.transifex.com/oca/teams/23907/lt/)\n"
|
||||||
|
"Language: lt\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: \n"
|
||||||
|
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
|
||||||
|
"(n%100<10 || n%100>=20) ? 1 : 2);\n"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.1 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.2 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.3 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.1%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.2%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.3%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount1
|
||||||
|
msgid "Discount 1 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount2
|
||||||
|
msgid "Discount 2 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount3
|
||||||
|
msgid "Discount 3 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model,name:account_invoice_triple_discount.model_account_move_line
|
||||||
|
msgid "Journal Item"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Total discount"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#~ msgid "Invoice"
|
||||||
|
#~ msgstr "Sąskaita faktūra"
|
||||||
|
|
||||||
|
#~ msgid "Invoice Line"
|
||||||
|
#~ msgstr "Sąskaitos faktūros eilutė"
|
||||||
81
account_invoice_triple_discount/i18n/mk.po
Normal file
81
account_invoice_triple_discount/i18n/mk.po
Normal file
|
|
@ -0,0 +1,81 @@
|
||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * account_invoice_triple_discount
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# OCA Transbot <transbot@odoo-community.org>, 2017
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Odoo Server 10.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2017-08-09 02:45+0000\n"
|
||||||
|
"PO-Revision-Date: 2017-08-09 02:45+0000\n"
|
||||||
|
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2017\n"
|
||||||
|
"Language-Team: Macedonian (https://www.transifex.com/oca/teams/23907/mk/)\n"
|
||||||
|
"Language: mk\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: \n"
|
||||||
|
"Plural-Forms: nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;\n"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.1 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.2 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.3 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.1%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.2%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.3%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount1
|
||||||
|
msgid "Discount 1 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount2
|
||||||
|
msgid "Discount 2 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount3
|
||||||
|
msgid "Discount 3 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model,name:account_invoice_triple_discount.model_account_move_line
|
||||||
|
msgid "Journal Item"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Total discount"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#~ msgid "Invoice"
|
||||||
|
#~ msgstr "Фактура"
|
||||||
|
|
||||||
|
#~ msgid "Invoice Line"
|
||||||
|
#~ msgstr "Ставка од фактура"
|
||||||
81
account_invoice_triple_discount/i18n/mn.po
Normal file
81
account_invoice_triple_discount/i18n/mn.po
Normal file
|
|
@ -0,0 +1,81 @@
|
||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * account_invoice_triple_discount
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# OCA Transbot <transbot@odoo-community.org>, 2017
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Odoo Server 10.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2017-08-09 02:45+0000\n"
|
||||||
|
"PO-Revision-Date: 2017-08-09 02:45+0000\n"
|
||||||
|
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2017\n"
|
||||||
|
"Language-Team: Mongolian (https://www.transifex.com/oca/teams/23907/mn/)\n"
|
||||||
|
"Language: mn\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"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.1 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.2 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.3 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.1%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.2%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.3%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount1
|
||||||
|
msgid "Discount 1 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount2
|
||||||
|
msgid "Discount 2 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount3
|
||||||
|
msgid "Discount 3 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model,name:account_invoice_triple_discount.model_account_move_line
|
||||||
|
msgid "Journal Item"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Total discount"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#~ msgid "Invoice"
|
||||||
|
#~ msgstr "Нэхэмжлэл"
|
||||||
|
|
||||||
|
#~ msgid "Invoice Line"
|
||||||
|
#~ msgstr "Нэхэмжлэлийн мөр"
|
||||||
82
account_invoice_triple_discount/i18n/nb.po
Normal file
82
account_invoice_triple_discount/i18n/nb.po
Normal file
|
|
@ -0,0 +1,82 @@
|
||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * account_invoice_triple_discount
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# OCA Transbot <transbot@odoo-community.org>, 2017
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Odoo Server 10.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2017-08-09 02:45+0000\n"
|
||||||
|
"PO-Revision-Date: 2017-08-09 02:45+0000\n"
|
||||||
|
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2017\n"
|
||||||
|
"Language-Team: Norwegian Bokmål (https://www.transifex.com/oca/teams/23907/"
|
||||||
|
"nb/)\n"
|
||||||
|
"Language: nb\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"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.1 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.2 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.3 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.1%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.2%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.3%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount1
|
||||||
|
msgid "Discount 1 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount2
|
||||||
|
msgid "Discount 2 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount3
|
||||||
|
msgid "Discount 3 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model,name:account_invoice_triple_discount.model_account_move_line
|
||||||
|
msgid "Journal Item"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Total discount"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#~ msgid "Invoice"
|
||||||
|
#~ msgstr "Faktura"
|
||||||
|
|
||||||
|
#~ msgid "Invoice Line"
|
||||||
|
#~ msgstr "Fakturalinje"
|
||||||
79
account_invoice_triple_discount/i18n/nb_NO.po
Normal file
79
account_invoice_triple_discount/i18n/nb_NO.po
Normal file
|
|
@ -0,0 +1,79 @@
|
||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * account_invoice_triple_discount
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# OCA Transbot <transbot@odoo-community.org>, 2017
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Odoo Server 10.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2017-08-09 02:45+0000\n"
|
||||||
|
"PO-Revision-Date: 2017-08-09 02:45+0000\n"
|
||||||
|
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2017\n"
|
||||||
|
"Language-Team: Norwegian Bokmål (Norway) (https://www.transifex.com/oca/"
|
||||||
|
"teams/23907/nb_NO/)\n"
|
||||||
|
"Language: nb_NO\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"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.1 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.2 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.3 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.1%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.2%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.3%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount1
|
||||||
|
msgid "Discount 1 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount2
|
||||||
|
msgid "Discount 2 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount3
|
||||||
|
msgid "Discount 3 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model,name:account_invoice_triple_discount.model_account_move_line
|
||||||
|
msgid "Journal Item"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Total discount"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#~ msgid "Invoice"
|
||||||
|
#~ msgstr "Innmelding"
|
||||||
81
account_invoice_triple_discount/i18n/nl.po
Normal file
81
account_invoice_triple_discount/i18n/nl.po
Normal file
|
|
@ -0,0 +1,81 @@
|
||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * account_invoice_triple_discount
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# OCA Transbot <transbot@odoo-community.org>, 2017
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Odoo Server 10.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2017-08-09 02:45+0000\n"
|
||||||
|
"PO-Revision-Date: 2017-08-09 02:45+0000\n"
|
||||||
|
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2017\n"
|
||||||
|
"Language-Team: Dutch (https://www.transifex.com/oca/teams/23907/nl/)\n"
|
||||||
|
"Language: nl\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"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.1 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.2 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.3 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.1%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.2%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.3%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount1
|
||||||
|
msgid "Discount 1 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount2
|
||||||
|
msgid "Discount 2 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount3
|
||||||
|
msgid "Discount 3 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model,name:account_invoice_triple_discount.model_account_move_line
|
||||||
|
msgid "Journal Item"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Total discount"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#~ msgid "Invoice"
|
||||||
|
#~ msgstr "Factuur"
|
||||||
|
|
||||||
|
#~ msgid "Invoice Line"
|
||||||
|
#~ msgstr "Factuurregel"
|
||||||
82
account_invoice_triple_discount/i18n/nl_BE.po
Normal file
82
account_invoice_triple_discount/i18n/nl_BE.po
Normal file
|
|
@ -0,0 +1,82 @@
|
||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * account_invoice_triple_discount
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# OCA Transbot <transbot@odoo-community.org>, 2017
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Odoo Server 10.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2017-08-09 02:45+0000\n"
|
||||||
|
"PO-Revision-Date: 2017-08-09 02:45+0000\n"
|
||||||
|
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2017\n"
|
||||||
|
"Language-Team: Dutch (Belgium) (https://www.transifex.com/oca/teams/23907/"
|
||||||
|
"nl_BE/)\n"
|
||||||
|
"Language: nl_BE\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"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.1 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.2 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.3 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.1%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.2%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.3%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount1
|
||||||
|
msgid "Discount 1 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount2
|
||||||
|
msgid "Discount 2 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount3
|
||||||
|
msgid "Discount 3 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model,name:account_invoice_triple_discount.model_account_move_line
|
||||||
|
msgid "Journal Item"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Total discount"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#~ msgid "Invoice"
|
||||||
|
#~ msgstr "Factuur"
|
||||||
|
|
||||||
|
#~ msgid "Invoice Line"
|
||||||
|
#~ msgstr "Factuurlijn"
|
||||||
82
account_invoice_triple_discount/i18n/nl_NL.po
Normal file
82
account_invoice_triple_discount/i18n/nl_NL.po
Normal file
|
|
@ -0,0 +1,82 @@
|
||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * account_invoice_triple_discount
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# Peter Hageman <hageman.p@gmail.com>, 2017
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Odoo Server 10.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2017-08-09 02:45+0000\n"
|
||||||
|
"PO-Revision-Date: 2017-08-09 02:45+0000\n"
|
||||||
|
"Last-Translator: Peter Hageman <hageman.p@gmail.com>, 2017\n"
|
||||||
|
"Language-Team: Dutch (Netherlands) (https://www.transifex.com/oca/"
|
||||||
|
"teams/23907/nl_NL/)\n"
|
||||||
|
"Language: nl_NL\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"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.1 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.2 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.3 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.1%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.2%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.3%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount1
|
||||||
|
msgid "Discount 1 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount2
|
||||||
|
msgid "Discount 2 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount3
|
||||||
|
msgid "Discount 3 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model,name:account_invoice_triple_discount.model_account_move_line
|
||||||
|
msgid "Journal Item"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Total discount"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#~ msgid "Invoice"
|
||||||
|
#~ msgstr "Factuur"
|
||||||
|
|
||||||
|
#~ msgid "Invoice Line"
|
||||||
|
#~ msgstr "Factuurregel"
|
||||||
80
account_invoice_triple_discount/i18n/pl.po
Normal file
80
account_invoice_triple_discount/i18n/pl.po
Normal file
|
|
@ -0,0 +1,80 @@
|
||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * account_invoice_triple_discount
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# OCA Transbot <transbot@odoo-community.org>, 2017
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Odoo Server 10.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2017-08-09 02:45+0000\n"
|
||||||
|
"PO-Revision-Date: 2017-08-09 02:45+0000\n"
|
||||||
|
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2017\n"
|
||||||
|
"Language-Team: Polish (https://www.transifex.com/oca/teams/23907/pl/)\n"
|
||||||
|
"Language: pl\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: \n"
|
||||||
|
"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && "
|
||||||
|
"(n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && "
|
||||||
|
"n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.1 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.2 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.3 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.1%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.2%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.3%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount1
|
||||||
|
msgid "Discount 1 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount2
|
||||||
|
msgid "Discount 2 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount3
|
||||||
|
msgid "Discount 3 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model,name:account_invoice_triple_discount.model_account_move_line
|
||||||
|
msgid "Journal Item"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Total discount"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#~ msgid "Invoice"
|
||||||
|
#~ msgstr "Faktura"
|
||||||
81
account_invoice_triple_discount/i18n/pt.po
Normal file
81
account_invoice_triple_discount/i18n/pt.po
Normal file
|
|
@ -0,0 +1,81 @@
|
||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * account_invoice_triple_discount
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# OCA Transbot <transbot@odoo-community.org>, 2017
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Odoo Server 10.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2017-08-09 02:45+0000\n"
|
||||||
|
"PO-Revision-Date: 2017-08-09 02:45+0000\n"
|
||||||
|
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2017\n"
|
||||||
|
"Language-Team: Portuguese (https://www.transifex.com/oca/teams/23907/pt/)\n"
|
||||||
|
"Language: pt\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"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.1 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.2 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.3 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.1%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.2%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.3%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount1
|
||||||
|
msgid "Discount 1 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount2
|
||||||
|
msgid "Discount 2 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount3
|
||||||
|
msgid "Discount 3 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model,name:account_invoice_triple_discount.model_account_move_line
|
||||||
|
msgid "Journal Item"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Total discount"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#~ msgid "Invoice"
|
||||||
|
#~ msgstr "Fatura"
|
||||||
|
|
||||||
|
#~ msgid "Invoice Line"
|
||||||
|
#~ msgstr "Linha de fatura"
|
||||||
86
account_invoice_triple_discount/i18n/pt_BR.po
Normal file
86
account_invoice_triple_discount/i18n/pt_BR.po
Normal file
|
|
@ -0,0 +1,86 @@
|
||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * account_invoice_triple_discount
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# OCA Transbot <transbot@odoo-community.org>, 2017
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Odoo Server 10.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2017-08-09 02:45+0000\n"
|
||||||
|
"PO-Revision-Date: 2023-07-01 22:12+0000\n"
|
||||||
|
"Last-Translator: Adriano Prado <adrianojprado@gmail.com>\n"
|
||||||
|
"Language-Team: Portuguese (Brazil) (https://www.transifex.com/oca/"
|
||||||
|
"teams/23907/pt_BR/)\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: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.1 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.2 %</span>"
|
||||||
|
msgstr "<span>Disco.2 %</span>"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.3 %</span>"
|
||||||
|
msgstr "<span>Disco.3 %</span>"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.1%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.2%"
|
||||||
|
msgstr "Desconto 2 (%)"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.3%"
|
||||||
|
msgstr "Desconto 3 (%)"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount1
|
||||||
|
msgid "Discount 1 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount2
|
||||||
|
msgid "Discount 2 (%)"
|
||||||
|
msgstr "Desconto 2 (%)"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount3
|
||||||
|
msgid "Discount 3 (%)"
|
||||||
|
msgstr "Desconto 3 (%)"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model,name:account_invoice_triple_discount.model_account_move_line
|
||||||
|
msgid "Journal Item"
|
||||||
|
msgstr "Item Diário"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Total discount"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#~ msgid "Journal Entry"
|
||||||
|
#~ msgstr "Entrada Diário"
|
||||||
|
|
||||||
|
#~ msgid "Invoice"
|
||||||
|
#~ msgstr "Fatura"
|
||||||
|
|
||||||
|
#~ msgid "Invoice Line"
|
||||||
|
#~ msgstr "Linha da Fatura"
|
||||||
82
account_invoice_triple_discount/i18n/pt_PT.po
Normal file
82
account_invoice_triple_discount/i18n/pt_PT.po
Normal file
|
|
@ -0,0 +1,82 @@
|
||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * account_invoice_triple_discount
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# OCA Transbot <transbot@odoo-community.org>, 2017
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Odoo Server 10.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2017-08-09 02:45+0000\n"
|
||||||
|
"PO-Revision-Date: 2017-08-09 02:45+0000\n"
|
||||||
|
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2017\n"
|
||||||
|
"Language-Team: Portuguese (Portugal) (https://www.transifex.com/oca/"
|
||||||
|
"teams/23907/pt_PT/)\n"
|
||||||
|
"Language: pt_PT\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"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.1 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.2 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.3 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.1%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.2%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.3%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount1
|
||||||
|
msgid "Discount 1 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount2
|
||||||
|
msgid "Discount 2 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount3
|
||||||
|
msgid "Discount 3 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model,name:account_invoice_triple_discount.model_account_move_line
|
||||||
|
msgid "Journal Item"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Total discount"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#~ msgid "Invoice"
|
||||||
|
#~ msgstr "Fatura"
|
||||||
|
|
||||||
|
#~ msgid "Invoice Line"
|
||||||
|
#~ msgstr "Linha da Fatura"
|
||||||
82
account_invoice_triple_discount/i18n/ro.po
Normal file
82
account_invoice_triple_discount/i18n/ro.po
Normal file
|
|
@ -0,0 +1,82 @@
|
||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * account_invoice_triple_discount
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# OCA Transbot <transbot@odoo-community.org>, 2017
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Odoo Server 10.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2017-08-09 02:45+0000\n"
|
||||||
|
"PO-Revision-Date: 2017-08-09 02:45+0000\n"
|
||||||
|
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2017\n"
|
||||||
|
"Language-Team: Romanian (https://www.transifex.com/oca/teams/23907/ro/)\n"
|
||||||
|
"Language: ro\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: \n"
|
||||||
|
"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?"
|
||||||
|
"2:1));\n"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.1 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.2 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.3 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.1%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.2%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.3%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount1
|
||||||
|
msgid "Discount 1 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount2
|
||||||
|
msgid "Discount 2 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount3
|
||||||
|
msgid "Discount 3 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model,name:account_invoice_triple_discount.model_account_move_line
|
||||||
|
msgid "Journal Item"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Total discount"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#~ msgid "Invoice"
|
||||||
|
#~ msgstr "Factura"
|
||||||
|
|
||||||
|
#~ msgid "Invoice Line"
|
||||||
|
#~ msgstr "Linie factura"
|
||||||
84
account_invoice_triple_discount/i18n/ru.po
Normal file
84
account_invoice_triple_discount/i18n/ru.po
Normal file
|
|
@ -0,0 +1,84 @@
|
||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * account_invoice_triple_discount
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# OCA Transbot <transbot@odoo-community.org>, 2017
|
||||||
|
# nek, 2018
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Odoo Server 10.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2018-03-17 01:09+0000\n"
|
||||||
|
"PO-Revision-Date: 2018-03-17 01:09+0000\n"
|
||||||
|
"Last-Translator: nek, 2018\n"
|
||||||
|
"Language-Team: Russian (https://www.transifex.com/oca/teams/23907/ru/)\n"
|
||||||
|
"Language: ru\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: \n"
|
||||||
|
"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
|
||||||
|
"n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || "
|
||||||
|
"(n%100>=11 && n%100<=14)? 2 : 3);\n"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.1 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.2 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.3 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.1%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.2%"
|
||||||
|
msgstr "Скидка 2 (%)"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.3%"
|
||||||
|
msgstr "Скидка 3 (%)"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount1
|
||||||
|
msgid "Discount 1 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount2
|
||||||
|
msgid "Discount 2 (%)"
|
||||||
|
msgstr "Скидка 2 (%)"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount3
|
||||||
|
msgid "Discount 3 (%)"
|
||||||
|
msgstr "Скидка 3 (%)"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model,name:account_invoice_triple_discount.model_account_move_line
|
||||||
|
msgid "Journal Item"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Total discount"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#~ msgid "Invoice"
|
||||||
|
#~ msgstr "Счет"
|
||||||
|
|
||||||
|
#~ msgid "Invoice Line"
|
||||||
|
#~ msgstr "Позиция счета"
|
||||||
79
account_invoice_triple_discount/i18n/sk_SK.po
Normal file
79
account_invoice_triple_discount/i18n/sk_SK.po
Normal file
|
|
@ -0,0 +1,79 @@
|
||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * account_invoice_triple_discount
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# OCA Transbot <transbot@odoo-community.org>, 2017
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Odoo Server 10.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2017-08-09 02:45+0000\n"
|
||||||
|
"PO-Revision-Date: 2017-08-09 02:45+0000\n"
|
||||||
|
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2017\n"
|
||||||
|
"Language-Team: Slovak (Slovakia) (https://www.transifex.com/oca/teams/23907/"
|
||||||
|
"sk_SK/)\n"
|
||||||
|
"Language: sk_SK\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: \n"
|
||||||
|
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.1 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.2 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.3 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.1%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.2%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.3%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount1
|
||||||
|
msgid "Discount 1 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount2
|
||||||
|
msgid "Discount 2 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount3
|
||||||
|
msgid "Discount 3 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model,name:account_invoice_triple_discount.model_account_move_line
|
||||||
|
msgid "Journal Item"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Total discount"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#~ msgid "Invoice"
|
||||||
|
#~ msgstr "Faktúra"
|
||||||
82
account_invoice_triple_discount/i18n/sl.po
Normal file
82
account_invoice_triple_discount/i18n/sl.po
Normal file
|
|
@ -0,0 +1,82 @@
|
||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * account_invoice_triple_discount
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# OCA Transbot <transbot@odoo-community.org>, 2017
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Odoo Server 10.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2017-08-09 02:45+0000\n"
|
||||||
|
"PO-Revision-Date: 2017-08-09 02:45+0000\n"
|
||||||
|
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2017\n"
|
||||||
|
"Language-Team: Slovenian (https://www.transifex.com/oca/teams/23907/sl/)\n"
|
||||||
|
"Language: sl\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: \n"
|
||||||
|
"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || "
|
||||||
|
"n%100==4 ? 2 : 3);\n"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.1 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.2 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.3 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.1%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.2%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.3%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount1
|
||||||
|
msgid "Discount 1 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount2
|
||||||
|
msgid "Discount 2 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount3
|
||||||
|
msgid "Discount 3 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model,name:account_invoice_triple_discount.model_account_move_line
|
||||||
|
msgid "Journal Item"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Total discount"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#~ msgid "Invoice"
|
||||||
|
#~ msgstr "Račun"
|
||||||
|
|
||||||
|
#~ msgid "Invoice Line"
|
||||||
|
#~ msgstr "Postavka računa"
|
||||||
85
account_invoice_triple_discount/i18n/sv.po
Normal file
85
account_invoice_triple_discount/i18n/sv.po
Normal file
|
|
@ -0,0 +1,85 @@
|
||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * account_invoice_triple_discount
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# OCA Transbot <transbot@odoo-community.org>, 2017
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Odoo Server 10.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2017-08-09 02:45+0000\n"
|
||||||
|
"PO-Revision-Date: 2024-06-18 16:38+0000\n"
|
||||||
|
"Last-Translator: jakobkrabbe <jakob@syscare.se>\n"
|
||||||
|
"Language-Team: Swedish (https://www.transifex.com/oca/teams/23907/sv/)\n"
|
||||||
|
"Language: sv\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: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.1 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.2 %</span>"
|
||||||
|
msgstr "<span>Disc.2 %</span>"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.3 %</span>"
|
||||||
|
msgstr "<span>Disc.3 %</span>"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.1%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.2%"
|
||||||
|
msgstr "Skiva.2%"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.3%"
|
||||||
|
msgstr "Skiva.3%"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount1
|
||||||
|
msgid "Discount 1 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount2
|
||||||
|
msgid "Discount 2 (%)"
|
||||||
|
msgstr "Rabatt 2 (%)"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount3
|
||||||
|
msgid "Discount 3 (%)"
|
||||||
|
msgstr "Rabatt 3 (%)"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model,name:account_invoice_triple_discount.model_account_move_line
|
||||||
|
msgid "Journal Item"
|
||||||
|
msgstr "Verifikat"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Total discount"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#~ msgid "Journal Entry"
|
||||||
|
#~ msgstr "Verifikat"
|
||||||
|
|
||||||
|
#~ msgid "Invoice"
|
||||||
|
#~ msgstr "Faktura"
|
||||||
|
|
||||||
|
#~ msgid "Invoice Line"
|
||||||
|
#~ msgstr "Fakturarad"
|
||||||
78
account_invoice_triple_discount/i18n/th.po
Normal file
78
account_invoice_triple_discount/i18n/th.po
Normal file
|
|
@ -0,0 +1,78 @@
|
||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * account_invoice_triple_discount
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# OCA Transbot <transbot@odoo-community.org>, 2017
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Odoo Server 10.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2017-08-09 02:45+0000\n"
|
||||||
|
"PO-Revision-Date: 2017-08-09 02:45+0000\n"
|
||||||
|
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2017\n"
|
||||||
|
"Language-Team: Thai (https://www.transifex.com/oca/teams/23907/th/)\n"
|
||||||
|
"Language: th\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: \n"
|
||||||
|
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.1 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.2 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.3 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.1%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.2%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.3%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount1
|
||||||
|
msgid "Discount 1 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount2
|
||||||
|
msgid "Discount 2 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount3
|
||||||
|
msgid "Discount 3 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model,name:account_invoice_triple_discount.model_account_move_line
|
||||||
|
msgid "Journal Item"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Total discount"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#~ msgid "Invoice"
|
||||||
|
#~ msgstr "ใบแจ้งหนี้"
|
||||||
82
account_invoice_triple_discount/i18n/tr.po
Normal file
82
account_invoice_triple_discount/i18n/tr.po
Normal file
|
|
@ -0,0 +1,82 @@
|
||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * account_invoice_triple_discount
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# OCA Transbot <transbot@odoo-community.org>, 2017
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Odoo Server 10.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2017-08-09 02:45+0000\n"
|
||||||
|
"PO-Revision-Date: 2025-09-04 11:42+0000\n"
|
||||||
|
"Last-Translator: Tamer Sezgin <tamer.sezgin@gmail.com>\n"
|
||||||
|
"Language-Team: Turkish (https://www.transifex.com/oca/teams/23907/tr/)\n"
|
||||||
|
"Language: tr\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.10.4\n"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.1 %</span>"
|
||||||
|
msgstr "<span>İnd.1 %</span>"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.2 %</span>"
|
||||||
|
msgstr "<span>İnd.2 %</span>"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.3 %</span>"
|
||||||
|
msgstr "<span>İnd.3 %</span>"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.1%"
|
||||||
|
msgstr "İnd.1%"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.2%"
|
||||||
|
msgstr "İnd.2%"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.3%"
|
||||||
|
msgstr "İnd.3%"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount1
|
||||||
|
msgid "Discount 1 (%)"
|
||||||
|
msgstr "İndirim 1 (%)"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount2
|
||||||
|
msgid "Discount 2 (%)"
|
||||||
|
msgstr "İndirim 2 (%)"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount3
|
||||||
|
msgid "Discount 3 (%)"
|
||||||
|
msgstr "İndirim 3 (%)"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model,name:account_invoice_triple_discount.model_account_move_line
|
||||||
|
msgid "Journal Item"
|
||||||
|
msgstr "Yevmiye Kalemi"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Total discount"
|
||||||
|
msgstr "Toplam indirim"
|
||||||
|
|
||||||
|
#~ msgid "Invoice"
|
||||||
|
#~ msgstr "Fatura"
|
||||||
|
|
||||||
|
#~ msgid "Invoice Line"
|
||||||
|
#~ msgstr "Fatura kalemi"
|
||||||
82
account_invoice_triple_discount/i18n/tr_TR.po
Normal file
82
account_invoice_triple_discount/i18n/tr_TR.po
Normal file
|
|
@ -0,0 +1,82 @@
|
||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * account_invoice_triple_discount
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# OCA Transbot <transbot@odoo-community.org>, 2017
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Odoo Server 10.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2017-08-09 02:45+0000\n"
|
||||||
|
"PO-Revision-Date: 2017-08-09 02:45+0000\n"
|
||||||
|
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2017\n"
|
||||||
|
"Language-Team: Turkish (Turkey) (https://www.transifex.com/oca/teams/23907/"
|
||||||
|
"tr_TR/)\n"
|
||||||
|
"Language: tr_TR\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: \n"
|
||||||
|
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.1 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.2 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.3 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.1%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.2%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.3%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount1
|
||||||
|
msgid "Discount 1 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount2
|
||||||
|
msgid "Discount 2 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount3
|
||||||
|
msgid "Discount 3 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model,name:account_invoice_triple_discount.model_account_move_line
|
||||||
|
msgid "Journal Item"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Total discount"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#~ msgid "Invoice"
|
||||||
|
#~ msgstr "Fatura"
|
||||||
|
|
||||||
|
#~ msgid "Invoice Line"
|
||||||
|
#~ msgstr "Fatura hizası"
|
||||||
83
account_invoice_triple_discount/i18n/zh_CN.po
Normal file
83
account_invoice_triple_discount/i18n/zh_CN.po
Normal file
|
|
@ -0,0 +1,83 @@
|
||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * account_invoice_triple_discount
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# OCA Transbot <transbot@odoo-community.org>, 2017
|
||||||
|
# 三 张 <731414193@qq.com>, 2017
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Odoo Server 10.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2017-08-09 02:45+0000\n"
|
||||||
|
"PO-Revision-Date: 2017-08-09 02:45+0000\n"
|
||||||
|
"Last-Translator: 三 张 <731414193@qq.com>, 2017\n"
|
||||||
|
"Language-Team: Chinese (China) (https://www.transifex.com/oca/teams/23907/"
|
||||||
|
"zh_CN/)\n"
|
||||||
|
"Language: zh_CN\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: \n"
|
||||||
|
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.1 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.2 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.3 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.1%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.2%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.3%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount1
|
||||||
|
msgid "Discount 1 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount2
|
||||||
|
msgid "Discount 2 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount3
|
||||||
|
msgid "Discount 3 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model,name:account_invoice_triple_discount.model_account_move_line
|
||||||
|
msgid "Journal Item"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Total discount"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#~ msgid "Invoice"
|
||||||
|
#~ msgstr "发票"
|
||||||
|
|
||||||
|
#~ msgid "Invoice Line"
|
||||||
|
#~ msgstr "发票明细"
|
||||||
82
account_invoice_triple_discount/i18n/zh_TW.po
Normal file
82
account_invoice_triple_discount/i18n/zh_TW.po
Normal file
|
|
@ -0,0 +1,82 @@
|
||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * account_invoice_triple_discount
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# OCA Transbot <transbot@odoo-community.org>, 2017
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Odoo Server 10.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2017-08-09 02:45+0000\n"
|
||||||
|
"PO-Revision-Date: 2017-08-09 02:45+0000\n"
|
||||||
|
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2017\n"
|
||||||
|
"Language-Team: Chinese (Taiwan) (https://www.transifex.com/oca/teams/23907/"
|
||||||
|
"zh_TW/)\n"
|
||||||
|
"Language: zh_TW\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: \n"
|
||||||
|
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.1 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.2 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
|
||||||
|
msgid "<span>Disc.3 %</span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.1%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.2%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Disc.3%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount1
|
||||||
|
msgid "Discount 1 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount2
|
||||||
|
msgid "Discount 2 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount3
|
||||||
|
msgid "Discount 3 (%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model,name:account_invoice_triple_discount.model_account_move_line
|
||||||
|
msgid "Journal Item"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_invoice_triple_discount
|
||||||
|
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
|
||||||
|
msgid "Total discount"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#~ msgid "Invoice"
|
||||||
|
#~ msgstr "發票"
|
||||||
|
|
||||||
|
#~ msgid "Invoice Line"
|
||||||
|
#~ msgstr "發票明細"
|
||||||
2
account_invoice_triple_discount/models/__init__.py
Normal file
2
account_invoice_triple_discount/models/__init__.py
Normal file
|
|
@ -0,0 +1,2 @@
|
||||||
|
from . import triple_discount_mixin
|
||||||
|
from . import account_move_line
|
||||||
10
account_invoice_triple_discount/models/account_move_line.py
Normal file
10
account_invoice_triple_discount/models/account_move_line.py
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
# Copyright 2020 ACSONE SA/NV
|
||||||
|
# Copyright 2023 Simone Rubino - Aion Tech
|
||||||
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||||
|
|
||||||
|
from odoo import models
|
||||||
|
|
||||||
|
|
||||||
|
class AccountMoveLine(models.Model):
|
||||||
|
_name = "account.move.line"
|
||||||
|
_inherit = ["account.move.line", "triple.discount.mixin"]
|
||||||
|
|
@ -0,0 +1,93 @@
|
||||||
|
# Copyright 2019 Tecnativa - David Vidal
|
||||||
|
# Copyright 2019 Tecnativa - Pedro M. Baeza
|
||||||
|
# Copyright 2020 ACSONE SA/NV
|
||||||
|
# Copyright 2023 Simone Rubino - Aion Tech
|
||||||
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||||
|
import functools
|
||||||
|
|
||||||
|
from odoo import api
|
||||||
|
from odoo import fields
|
||||||
|
from odoo import models
|
||||||
|
|
||||||
|
|
||||||
|
class TripleDiscountMixin(models.AbstractModel):
|
||||||
|
_name = "triple.discount.mixin"
|
||||||
|
_description = "Triple discount mixin"
|
||||||
|
|
||||||
|
# core discount field is now a computed field
|
||||||
|
# based on the 3 discounts defined below.
|
||||||
|
# the digits limitation is removed, to make
|
||||||
|
# the computation of the subtotal exact.
|
||||||
|
# For exemple, if discounts are 05%, 09% and 13%
|
||||||
|
# the main discount is 24.7885 % (and not 24.79)
|
||||||
|
discount = fields.Float(
|
||||||
|
string="Total discount",
|
||||||
|
compute="_compute_discount",
|
||||||
|
store=True,
|
||||||
|
readonly=True,
|
||||||
|
digits=None,
|
||||||
|
)
|
||||||
|
discount1 = fields.Float(string="Discount 1 (%)", digits="Discount")
|
||||||
|
|
||||||
|
discount2 = fields.Float(string="Discount 2 (%)", digits="Discount")
|
||||||
|
|
||||||
|
discount3 = fields.Float(string="Discount 3 (%)", digits="Discount")
|
||||||
|
|
||||||
|
_sql_constraints = [
|
||||||
|
(
|
||||||
|
"discount1_limit",
|
||||||
|
"CHECK (discount1 <= 100.0)",
|
||||||
|
"Discount 1 must be lower than 100%.",
|
||||||
|
),
|
||||||
|
(
|
||||||
|
"discount2_limit",
|
||||||
|
"CHECK (discount2 <= 100.0)",
|
||||||
|
"Discount 2 must be lower than 100%.",
|
||||||
|
),
|
||||||
|
(
|
||||||
|
"discount3_limit",
|
||||||
|
"CHECK (discount3 <= 100.0)",
|
||||||
|
"Discount 3 must be lower than 100%.",
|
||||||
|
),
|
||||||
|
]
|
||||||
|
|
||||||
|
@api.depends(lambda self: self._get_multiple_discount_field_names())
|
||||||
|
def _compute_discount(self):
|
||||||
|
for line in self:
|
||||||
|
line.discount = line._get_aggregated_multiple_discounts(
|
||||||
|
[line[x] for x in line._get_multiple_discount_field_names()]
|
||||||
|
)
|
||||||
|
|
||||||
|
def _get_aggregated_multiple_discounts(self, discounts):
|
||||||
|
"""
|
||||||
|
Returns the aggregate discount corresponding to any number of discounts.
|
||||||
|
For exemple, if discounts is [11.0, 22.0, 33.0]
|
||||||
|
It will return 46.5114
|
||||||
|
"""
|
||||||
|
discount_values = []
|
||||||
|
for discount in discounts:
|
||||||
|
discount_values.append(1 - (discount or 0.0) / 100.0)
|
||||||
|
aggregated_discount = (
|
||||||
|
1 - functools.reduce((lambda x, y: x * y), discount_values)
|
||||||
|
) * 100
|
||||||
|
return aggregated_discount
|
||||||
|
|
||||||
|
@api.model
|
||||||
|
def _get_multiple_discount_field_names(self):
|
||||||
|
return ["discount1", "discount2", "discount3"]
|
||||||
|
|
||||||
|
@api.model_create_multi
|
||||||
|
def create(self, vals_list):
|
||||||
|
for vals in vals_list:
|
||||||
|
if vals.get("discount") and not any(
|
||||||
|
vals.get(field) for field in self._get_multiple_discount_field_names()
|
||||||
|
):
|
||||||
|
vals["discount1"] = vals.pop("discount")
|
||||||
|
return super().create(vals_list)
|
||||||
|
|
||||||
|
def write(self, vals):
|
||||||
|
discount_fields = self._get_multiple_discount_field_names()
|
||||||
|
if "discount" in vals:
|
||||||
|
vals["discount1"] = vals.pop("discount")
|
||||||
|
vals.update({field: 0 for field in discount_fields[1:]})
|
||||||
|
return super().write(vals)
|
||||||
7
account_invoice_triple_discount/readme/CONTRIBUTORS.md
Normal file
7
account_invoice_triple_discount/readme/CONTRIBUTORS.md
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
- David Vidal \<<david.vidal@tecnativa.com>\>
|
||||||
|
- Pedro M. Baeza \<<pedro.baeza@tecnativa.com>\>
|
||||||
|
- Nikul Chaudhary \<<nikulchaudhary2112@gmail.com>\>
|
||||||
|
- [Aion Tech](https://aiontech.company/):
|
||||||
|
- Simone Rubino \<<simone.rubino@aion-tech.it>\>
|
||||||
|
- Laurent Mignon \<<laurent.mignon@acsone.eu>\>
|
||||||
|
- Akim Juillerat \<<akim.juillerat@camptocamp.com>\>
|
||||||
2
account_invoice_triple_discount/readme/DESCRIPTION.md
Normal file
2
account_invoice_triple_discount/readme/DESCRIPTION.md
Normal file
|
|
@ -0,0 +1,2 @@
|
||||||
|
This module allows to have three successive discounts on each invoice
|
||||||
|
line.
|
||||||
17
account_invoice_triple_discount/readme/USAGE.md
Normal file
17
account_invoice_triple_discount/readme/USAGE.md
Normal file
|
|
@ -0,0 +1,17 @@
|
||||||
|
Create a new invoice and add discounts in any of the three discount
|
||||||
|
fields given. They go in order of precedence so discount 2 will be
|
||||||
|
calculated over discount 1 and discount 3 over the result of discount 2.
|
||||||
|
For example, let's divide by two on every discount:
|
||||||
|
|
||||||
|
Unit price: 600.00 -\>
|
||||||
|
|
||||||
|
> - Disc. 1 = 50% -\> Amount = 300.00
|
||||||
|
> - Disc. 2 = 50% -\> Amount = 150.00
|
||||||
|
> - Disc. 3 = 50% -\> Amount = 75.00
|
||||||
|
|
||||||
|
You can also use negative values to charge instead of discount:
|
||||||
|
|
||||||
|
Unit price: 600.00 -\>
|
||||||
|
|
||||||
|
> - Disc. 1 = 50% -\> Amount = 300.00
|
||||||
|
> - Disc. 2 = -5% -\> Amount = 315.00
|
||||||
61
account_invoice_triple_discount/report/invoice.xml
Normal file
61
account_invoice_triple_discount/report/invoice.xml
Normal file
|
|
@ -0,0 +1,61 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
|
<odoo>
|
||||||
|
<template
|
||||||
|
id="report_invoice_document"
|
||||||
|
inherit_id="account.report_invoice_document"
|
||||||
|
priority="100"
|
||||||
|
>
|
||||||
|
<xpath expr="//t[@t-set='display_discount']" position="attributes">
|
||||||
|
<attribute name="t-value">False</attribute>
|
||||||
|
</xpath>
|
||||||
|
<xpath expr="//t[@t-set='display_discount']" position="after">
|
||||||
|
<t
|
||||||
|
t-set="discount_class"
|
||||||
|
t-value="'text-end %s' % ('d-none d-md-table-cell' if report_type == 'html' else '')"
|
||||||
|
/>
|
||||||
|
</xpath>
|
||||||
|
<xpath expr="//th[@name='th_discount']" position="attributes">
|
||||||
|
<attribute name="style">visibility: hidden;</attribute>
|
||||||
|
</xpath>
|
||||||
|
<xpath expr="//th[@name='th_discount']" position="after">
|
||||||
|
<th
|
||||||
|
name="th_discount1"
|
||||||
|
t-if="display_discount"
|
||||||
|
t-att-class="discount_class"
|
||||||
|
>
|
||||||
|
<span>Disc.1 %</span>
|
||||||
|
</th>
|
||||||
|
<th
|
||||||
|
name="th_discount2"
|
||||||
|
t-if="display_discount"
|
||||||
|
t-att-class="discount_class"
|
||||||
|
>
|
||||||
|
<span>Disc.2 %</span>
|
||||||
|
</th>
|
||||||
|
<th
|
||||||
|
name="th_discount3"
|
||||||
|
t-if="display_discount"
|
||||||
|
t-att-class="discount_class"
|
||||||
|
>
|
||||||
|
<span>Disc.3 %</span>
|
||||||
|
</th>
|
||||||
|
</xpath>
|
||||||
|
<xpath
|
||||||
|
expr="//td[span[@t-field='line.discount']]"
|
||||||
|
position="attributes"
|
||||||
|
>
|
||||||
|
<attribute name="style">visibility: hidden;</attribute>
|
||||||
|
</xpath>
|
||||||
|
<xpath expr="//td[span[@t-field='line.discount']]" position="after">
|
||||||
|
<td t-if="display_discount" t-att-class="discount_class">
|
||||||
|
<span class="text-nowrap" t-field="line.discount1" />
|
||||||
|
</td>
|
||||||
|
<td t-if="display_discount" t-att-class="discount_class">
|
||||||
|
<span class="text-nowrap" t-field="line.discount2" />
|
||||||
|
</td>
|
||||||
|
<td t-if="display_discount" t-att-class="discount_class">
|
||||||
|
<span class="text-nowrap" t-field="line.discount3" />
|
||||||
|
</td>
|
||||||
|
</xpath>
|
||||||
|
</template>
|
||||||
|
</odoo>
|
||||||
|
Before Width: | Height: | Size: 9.2 KiB After Width: | Height: | Size: 9.2 KiB |
|
|
@ -3,15 +3,16 @@
|
||||||
<head>
|
<head>
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||||
<meta name="generator" content="Docutils: https://docutils.sourceforge.io/" />
|
<meta name="generator" content="Docutils: https://docutils.sourceforge.io/" />
|
||||||
<title>Product Update Price From Last Purchase</title>
|
<title>README.rst</title>
|
||||||
<style type="text/css">
|
<style type="text/css">
|
||||||
|
|
||||||
/*
|
/*
|
||||||
:Author: David Goodger (goodger@python.org)
|
:Author: David Goodger (goodger@python.org)
|
||||||
:Id: $Id: html4css1.css 8954 2022-01-20 10:10:25Z milde $
|
:Id: $Id: html4css1.css 9511 2024-01-13 09:50:07Z milde $
|
||||||
:Copyright: This stylesheet has been placed in the public domain.
|
:Copyright: This stylesheet has been placed in the public domain.
|
||||||
|
|
||||||
Default cascading style sheet for the HTML output of Docutils.
|
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
|
See https://docutils.sourceforge.io/docs/howto/html-stylesheets.html for how to
|
||||||
customize this style sheet.
|
customize this style sheet.
|
||||||
|
|
@ -274,7 +275,7 @@ pre.literal-block, pre.doctest-block, pre.math, pre.code {
|
||||||
margin-left: 2em ;
|
margin-left: 2em ;
|
||||||
margin-right: 2em }
|
margin-right: 2em }
|
||||||
|
|
||||||
pre.code .ln { color: grey; } /* line numbers */
|
pre.code .ln { color: gray; } /* line numbers */
|
||||||
pre.code, code { background-color: #eeeeee }
|
pre.code, code { background-color: #eeeeee }
|
||||||
pre.code .comment, code .comment { color: #5C6576 }
|
pre.code .comment, code .comment { color: #5C6576 }
|
||||||
pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold }
|
pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold }
|
||||||
|
|
@ -300,7 +301,7 @@ span.option {
|
||||||
span.pre {
|
span.pre {
|
||||||
white-space: pre }
|
white-space: pre }
|
||||||
|
|
||||||
span.problematic {
|
span.problematic, pre.problematic {
|
||||||
color: red }
|
color: red }
|
||||||
|
|
||||||
span.section-subtitle {
|
span.section-subtitle {
|
||||||
|
|
@ -359,49 +360,103 @@ ul.auto-toc {
|
||||||
</style>
|
</style>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div class="document" id="product-update-price-from-last-purchase">
|
<div class="document">
|
||||||
<h1 class="title">Product Update Price From Last Purchase</h1>
|
|
||||||
|
|
||||||
|
|
||||||
|
<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="account-invoice-triple-discount">
|
||||||
|
<h1>Account Invoice Triple Discount</h1>
|
||||||
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||||
!! This file is generated by oca-gen-addon-readme !!
|
!! This file is generated by oca-gen-addon-readme !!
|
||||||
!! changes will be overwritten. !!
|
!! changes will be overwritten. !!
|
||||||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||||
!! source digest: sha256:9a3d6dc2e0410212d91f0fba1627ece05131bc10535ebe1e51b03c5a7026f30d
|
!! source digest: sha256:96fbed1626bb94b34b29d3287cbf750e394cae6f90526ddba1450a75f4c45b49
|
||||||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
|
||||||
<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/licence-AGPL--3-blue.png" /></a> <a class="reference external image-reference" href="https://github.com/Criptomart/addons_cm/tree/16.0/product_update_price_last_purchase"><img alt="Criptomart/addons_cm" src="https://img.shields.io/badge/github-Criptomart%2Faddons_cm-lightgray.png?logo=github" /></a></p>
|
<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/account-invoicing/tree/18.0/account_invoice_triple_discount"><img alt="OCA/account-invoicing" src="https://img.shields.io/badge/github-OCA%2Faccount--invoicing-lightgray.png?logo=github" /></a> <a class="reference external image-reference" href="https://translation.odoo-community.org/projects/account-invoicing-18-0/account-invoicing-18-0-account_invoice_triple_discount"><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/account-invoicing&target_branch=18.0"><img alt="Try me on Runboat" src="https://img.shields.io/badge/runboat-Try%20me-875A7B.png" /></a></p>
|
||||||
<p>Update price from last purchase price, using product classification
|
<p>This module allows to have three successive discounts on each invoice
|
||||||
margin</p>
|
line.</p>
|
||||||
<p><strong>Table of contents</strong></p>
|
<p><strong>Table of contents</strong></p>
|
||||||
<div class="contents local topic" id="contents">
|
<div class="contents local topic" id="contents">
|
||||||
<ul class="simple">
|
<ul class="simple">
|
||||||
<li><a class="reference internal" href="#bug-tracker" id="toc-entry-1">Bug Tracker</a></li>
|
<li><a class="reference internal" href="#usage" id="toc-entry-1">Usage</a></li>
|
||||||
<li><a class="reference internal" href="#credits" id="toc-entry-2">Credits</a><ul>
|
<li><a class="reference internal" href="#bug-tracker" id="toc-entry-2">Bug Tracker</a></li>
|
||||||
<li><a class="reference internal" href="#authors" id="toc-entry-3">Authors</a></li>
|
<li><a class="reference internal" href="#credits" id="toc-entry-3">Credits</a><ul>
|
||||||
<li><a class="reference internal" href="#maintainers" id="toc-entry-4">Maintainers</a></li>
|
<li><a class="reference internal" href="#authors" id="toc-entry-4">Authors</a></li>
|
||||||
|
<li><a class="reference internal" href="#contributors" id="toc-entry-5">Contributors</a></li>
|
||||||
|
<li><a class="reference internal" href="#maintainers" id="toc-entry-6">Maintainers</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="section" id="usage">
|
||||||
|
<h2><a class="toc-backref" href="#toc-entry-1">Usage</a></h2>
|
||||||
|
<p>Create a new invoice and add discounts in any of the three discount
|
||||||
|
fields given. They go in order of precedence so discount 2 will be
|
||||||
|
calculated over discount 1 and discount 3 over the result of discount 2.
|
||||||
|
For example, let’s divide by two on every discount:</p>
|
||||||
|
<p>Unit price: 600.00 -></p>
|
||||||
|
<blockquote>
|
||||||
|
<ul class="simple">
|
||||||
|
<li>Disc. 1 = 50% -> Amount = 300.00</li>
|
||||||
|
<li>Disc. 2 = 50% -> Amount = 150.00</li>
|
||||||
|
<li>Disc. 3 = 50% -> Amount = 75.00</li>
|
||||||
|
</ul>
|
||||||
|
</blockquote>
|
||||||
|
<p>You can also use negative values to charge instead of discount:</p>
|
||||||
|
<p>Unit price: 600.00 -></p>
|
||||||
|
<blockquote>
|
||||||
|
<ul class="simple">
|
||||||
|
<li>Disc. 1 = 50% -> Amount = 300.00</li>
|
||||||
|
<li>Disc. 2 = -5% -> Amount = 315.00</li>
|
||||||
|
</ul>
|
||||||
|
</blockquote>
|
||||||
|
</div>
|
||||||
<div class="section" id="bug-tracker">
|
<div class="section" id="bug-tracker">
|
||||||
<h1><a class="toc-backref" href="#toc-entry-1">Bug Tracker</a></h1>
|
<h2><a class="toc-backref" href="#toc-entry-2">Bug Tracker</a></h2>
|
||||||
<p>Bugs are tracked on <a class="reference external" href="https://github.com/Criptomart/addons_cm/issues">GitHub Issues</a>.
|
<p>Bugs are tracked on <a class="reference external" href="https://github.com/OCA/account-invoicing/issues">GitHub Issues</a>.
|
||||||
In case of trouble, please check there if your issue has already been reported.
|
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
|
If you spotted it first, help us to smash it by providing a detailed and welcomed
|
||||||
<a class="reference external" href="https://github.com/Criptomart/addons_cm/issues/new?body=module:%20product_update_price_last_purchase%0Aversion:%2016.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**">feedback</a>.</p>
|
<a class="reference external" href="https://github.com/OCA/account-invoicing/issues/new?body=module:%20account_invoice_triple_discount%0Aversion:%2018.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>
|
<p>Do not contact contributors directly about support or help with technical issues.</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="section" id="credits">
|
<div class="section" id="credits">
|
||||||
<h1><a class="toc-backref" href="#toc-entry-2">Credits</a></h1>
|
<h2><a class="toc-backref" href="#toc-entry-3">Credits</a></h2>
|
||||||
<div class="section" id="authors">
|
<div class="section" id="authors">
|
||||||
<h2><a class="toc-backref" href="#toc-entry-3">Authors</a></h2>
|
<h3><a class="toc-backref" href="#toc-entry-4">Authors</a></h3>
|
||||||
<ul class="simple">
|
<ul class="simple">
|
||||||
<li>Criptomart</li>
|
<li>QubiQ</li>
|
||||||
|
<li>Tecnativa</li>
|
||||||
|
<li>GRAP</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="section" id="contributors">
|
||||||
|
<h3><a class="toc-backref" href="#toc-entry-5">Contributors</a></h3>
|
||||||
|
<ul class="simple">
|
||||||
|
<li>David Vidal <<a class="reference external" href="mailto:david.vidal@tecnativa.com">david.vidal@tecnativa.com</a>></li>
|
||||||
|
<li>Pedro M. Baeza <<a class="reference external" href="mailto:pedro.baeza@tecnativa.com">pedro.baeza@tecnativa.com</a>></li>
|
||||||
|
<li>Nikul Chaudhary <<a class="reference external" href="mailto:nikulchaudhary2112@gmail.com">nikulchaudhary2112@gmail.com</a>></li>
|
||||||
|
<li><a class="reference external" href="https://aiontech.company/">Aion Tech</a>:<ul>
|
||||||
|
<li>Simone Rubino <<a class="reference external" href="mailto:simone.rubino@aion-tech.it">simone.rubino@aion-tech.it</a>></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>Laurent Mignon <<a class="reference external" href="mailto:laurent.mignon@acsone.eu">laurent.mignon@acsone.eu</a>></li>
|
||||||
|
<li>Akim Juillerat <<a class="reference external" href="mailto:akim.juillerat@camptocamp.com">akim.juillerat@camptocamp.com</a>></li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<div class="section" id="maintainers">
|
<div class="section" id="maintainers">
|
||||||
<h2><a class="toc-backref" href="#toc-entry-4">Maintainers</a></h2>
|
<h3><a class="toc-backref" href="#toc-entry-6">Maintainers</a></h3>
|
||||||
<p>This module is part of the <a class="reference external" href="https://github.com/Criptomart/addons_cm/tree/16.0/product_update_price_last_purchase">Criptomart/addons_cm</a> project on GitHub.</p>
|
<p>This module is maintained by the OCA.</p>
|
||||||
<p>You are welcome to contribute.</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>This module is part of the <a class="reference external" href="https://github.com/OCA/account-invoicing/tree/18.0/account_invoice_triple_discount">OCA/account-invoicing</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>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -1,3 +1,3 @@
|
||||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||||
|
|
||||||
from . import controller
|
from . import test_invoice_triple_discount
|
||||||
|
|
@ -0,0 +1,244 @@
|
||||||
|
# Copyright 2017 Tecnativa - David Vidal
|
||||||
|
# Copyright 2023 Simone Rubino - Aion Tech
|
||||||
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||||
|
|
||||||
|
from odoo.tests import Form
|
||||||
|
|
||||||
|
from odoo.addons.base.tests.common import BaseCommon
|
||||||
|
|
||||||
|
|
||||||
|
class TestInvoiceTripleDiscount(BaseCommon):
|
||||||
|
@classmethod
|
||||||
|
def setUpClass(cls):
|
||||||
|
super().setUpClass()
|
||||||
|
cls.Account = cls.env["account.account"]
|
||||||
|
cls.AccountMove = cls.env["account.move"]
|
||||||
|
cls.AccountMoveLine = cls.env["account.move.line"]
|
||||||
|
cls.AccountTax = cls.env["account.tax"]
|
||||||
|
cls.Partner = cls.env["res.partner"]
|
||||||
|
cls.Journal = cls.env["account.journal"]
|
||||||
|
|
||||||
|
cls.tax = cls.AccountTax.create(
|
||||||
|
{
|
||||||
|
"name": "TAX 15%",
|
||||||
|
"amount_type": "percent",
|
||||||
|
"type_tax_use": "purchase",
|
||||||
|
"amount": 15.0,
|
||||||
|
"country_id": cls.env.ref("base.us").id,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
cls.account = cls.Account.create(
|
||||||
|
{
|
||||||
|
"name": "Test account",
|
||||||
|
"code": "TEST",
|
||||||
|
"account_type": "asset_receivable",
|
||||||
|
"reconcile": True,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
cls.sale_journal = cls.Journal.search([("type", "=", "sale")], limit=1)
|
||||||
|
|
||||||
|
def create_simple_invoice(self, amount):
|
||||||
|
invoice_form = Form(
|
||||||
|
self.AccountMove.with_context(
|
||||||
|
default_move_type="out_invoice",
|
||||||
|
default_journal_id=self.sale_journal.id,
|
||||||
|
)
|
||||||
|
)
|
||||||
|
invoice_form.partner_id = self.partner
|
||||||
|
|
||||||
|
with invoice_form.invoice_line_ids.new() as line_form:
|
||||||
|
line_form.name = "Line 1"
|
||||||
|
line_form.quantity = 1
|
||||||
|
line_form.price_unit = amount
|
||||||
|
line_form.tax_ids.clear()
|
||||||
|
line_form.tax_ids.add(self.tax)
|
||||||
|
|
||||||
|
invoice = invoice_form.save()
|
||||||
|
return invoice
|
||||||
|
|
||||||
|
def test_01_discounts(self):
|
||||||
|
"""Tests multiple discounts in line with taxes"""
|
||||||
|
invoice = self.create_simple_invoice(200)
|
||||||
|
|
||||||
|
invoice_form = Form(invoice)
|
||||||
|
with invoice_form.invoice_line_ids.edit(0) as line_form:
|
||||||
|
line_form.discount1 = 50.0
|
||||||
|
invoice_form.save()
|
||||||
|
|
||||||
|
invoice_line = invoice.invoice_line_ids[0]
|
||||||
|
|
||||||
|
# Adds a first discount
|
||||||
|
self.assertEqual(invoice.amount_total, 115.0)
|
||||||
|
|
||||||
|
# Adds a second discount over the price calculated before
|
||||||
|
with invoice_form.invoice_line_ids.edit(0) as line_form:
|
||||||
|
line_form.discount2 = 40.0
|
||||||
|
invoice_form.save()
|
||||||
|
self.assertEqual(invoice.amount_total, 69.0)
|
||||||
|
|
||||||
|
# Adds a third discount over the price calculated before
|
||||||
|
with invoice_form.invoice_line_ids.edit(0) as line_form:
|
||||||
|
line_form.discount3 = 50.0
|
||||||
|
invoice_form.save()
|
||||||
|
self.assertEqual(invoice.amount_total, 34.5)
|
||||||
|
|
||||||
|
# Deletes first discount
|
||||||
|
with invoice_form.invoice_line_ids.edit(0) as line_form:
|
||||||
|
line_form.discount1 = 0
|
||||||
|
invoice_form.save()
|
||||||
|
self.assertEqual(invoice.amount_total, 69)
|
||||||
|
|
||||||
|
# Charge 5% over price:
|
||||||
|
with invoice_form.invoice_line_ids.edit(0) as line_form:
|
||||||
|
line_form.discount1 = -5
|
||||||
|
invoice_form.save()
|
||||||
|
self.assertEqual(invoice.amount_total, 72.45)
|
||||||
|
|
||||||
|
self.assertEqual(invoice_line.price_unit, 200)
|
||||||
|
|
||||||
|
def test_02_discounts_multiple_lines(self):
|
||||||
|
invoice = self.create_simple_invoice(200)
|
||||||
|
invoice_form = Form(invoice)
|
||||||
|
with invoice_form.invoice_line_ids.new() as line_form:
|
||||||
|
line_form.name = "Line 2"
|
||||||
|
line_form.quantity = 1
|
||||||
|
line_form.price_unit = 500
|
||||||
|
line_form.tax_ids.clear()
|
||||||
|
invoice_form.save()
|
||||||
|
|
||||||
|
invoice_line2 = invoice.invoice_line_ids[1]
|
||||||
|
self.assertEqual(invoice_line2.price_subtotal, 500.0)
|
||||||
|
|
||||||
|
with invoice_form.invoice_line_ids.edit(1) as line_form:
|
||||||
|
line_form.discount3 = 50.0
|
||||||
|
invoice_form.save()
|
||||||
|
self.assertEqual(invoice.amount_total, 480.0)
|
||||||
|
|
||||||
|
with invoice_form.invoice_line_ids.edit(0) as line_form:
|
||||||
|
line_form.discount1 = 50.0
|
||||||
|
invoice_form.save()
|
||||||
|
self.assertEqual(invoice.amount_total, 365.0)
|
||||||
|
|
||||||
|
def test_03_discounts_decimals_price(self):
|
||||||
|
"""
|
||||||
|
Tests discount with decimals price
|
||||||
|
causing a round up after discount
|
||||||
|
"""
|
||||||
|
invoice = self.create_simple_invoice(0)
|
||||||
|
invoice_form = Form(invoice)
|
||||||
|
with invoice_form.invoice_line_ids.edit(0) as line_form:
|
||||||
|
line_form.name = "Line Decimals"
|
||||||
|
line_form.quantity = 9950
|
||||||
|
line_form.price_unit = 0.14
|
||||||
|
line_form.tax_ids.clear()
|
||||||
|
invoice_form.save()
|
||||||
|
|
||||||
|
invoice_line1 = invoice.invoice_line_ids[0]
|
||||||
|
|
||||||
|
self.assertEqual(invoice_line1.price_subtotal, 1393.0)
|
||||||
|
|
||||||
|
with invoice_form.invoice_line_ids.edit(0) as line_form:
|
||||||
|
line_form.discount1 = 15.0
|
||||||
|
invoice_form.save()
|
||||||
|
|
||||||
|
self.assertEqual(invoice_line1.price_subtotal, 1184.05)
|
||||||
|
|
||||||
|
def test_04_discounts_decimals_tax(self):
|
||||||
|
"""
|
||||||
|
Tests amount tax with discount
|
||||||
|
"""
|
||||||
|
invoice = self.create_simple_invoice(0)
|
||||||
|
invoice_form = Form(invoice)
|
||||||
|
with invoice_form.invoice_line_ids.edit(0) as line_form:
|
||||||
|
line_form.name = "Line Decimals"
|
||||||
|
line_form.quantity = 9950
|
||||||
|
line_form.price_unit = 0.14
|
||||||
|
line_form.discount1 = 0
|
||||||
|
line_form.discount2 = 0
|
||||||
|
invoice_form.save()
|
||||||
|
|
||||||
|
self.assertEqual(invoice.amount_tax, 208.95)
|
||||||
|
with invoice_form.invoice_line_ids.edit(0) as line_form:
|
||||||
|
line_form.discount1 = 15.0
|
||||||
|
invoice_form.save()
|
||||||
|
|
||||||
|
def test_06_round_discount(self):
|
||||||
|
"""Discount value is rounded correctly"""
|
||||||
|
invoice = self.create_simple_invoice(0)
|
||||||
|
invoice_line = invoice.invoice_line_ids[0]
|
||||||
|
invoice_line.discount1 = 100
|
||||||
|
self.assertEqual(invoice_line.discount1, 100)
|
||||||
|
self.assertEqual(invoice_line.discount, 100)
|
||||||
|
|
||||||
|
def test_07_round_tax_discount(self):
|
||||||
|
"""Discount value is rounded correctly when taxes change"""
|
||||||
|
invoice = self.create_simple_invoice(0)
|
||||||
|
invoice_line = invoice.invoice_line_ids[0]
|
||||||
|
invoice_line.discount1 = 100
|
||||||
|
invoice_line.tax_ids = False
|
||||||
|
self.assertEqual(invoice_line.discount1, 100)
|
||||||
|
self.assertEqual(invoice_line.discount, 100)
|
||||||
|
|
||||||
|
def test_09_create_with_main_discount(self):
|
||||||
|
"""
|
||||||
|
Tests if creating a invoice line with main discount field
|
||||||
|
set correctly discount1, discount2 and discount3
|
||||||
|
"""
|
||||||
|
invoice = self.create_simple_invoice(0)
|
||||||
|
|
||||||
|
invoice_line2 = self.AccountMoveLine.create(
|
||||||
|
{
|
||||||
|
"move_id": invoice.id,
|
||||||
|
"name": "Line With Main Discount",
|
||||||
|
"quantity": 1,
|
||||||
|
"price_unit": 1000,
|
||||||
|
"discount": 10,
|
||||||
|
"tax_ids": [],
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
# 1000 * 0.9
|
||||||
|
self.assertEqual(invoice_line2.price_subtotal, 900.0)
|
||||||
|
self.assertEqual(invoice_line2.discount1, 10.0)
|
||||||
|
self.assertEqual(invoice_line2.discount2, 0.0)
|
||||||
|
self.assertEqual(invoice_line2.discount3, 0.0)
|
||||||
|
|
||||||
|
def test_10_create_invoice_with_discounts(self):
|
||||||
|
invoice = self.env["account.move"].create(
|
||||||
|
{
|
||||||
|
"partner_id": self.partner.id,
|
||||||
|
"move_type": "out_invoice",
|
||||||
|
"invoice_line_ids": [
|
||||||
|
(
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
{
|
||||||
|
"name": "Line 1",
|
||||||
|
"quantity": 1,
|
||||||
|
"price_unit": 100,
|
||||||
|
"discount1": 30,
|
||||||
|
"discount2": 20,
|
||||||
|
"discount3": 10,
|
||||||
|
},
|
||||||
|
)
|
||||||
|
],
|
||||||
|
}
|
||||||
|
)
|
||||||
|
invoice_line1 = invoice.invoice_line_ids[0]
|
||||||
|
self.assertEqual(invoice_line1.discount1, 30.0)
|
||||||
|
self.assertEqual(invoice_line1.discount2, 20.0)
|
||||||
|
self.assertEqual(invoice_line1.discount3, 10.0)
|
||||||
|
|
||||||
|
def test_tax_compute_with_lock_date(self):
|
||||||
|
# Check that the tax computation works even if the lock date is set
|
||||||
|
invoice = self.create_simple_invoice(0)
|
||||||
|
invoice_form = Form(invoice)
|
||||||
|
with invoice_form.invoice_line_ids.edit(0) as line_form:
|
||||||
|
line_form.name = "Line Decimals"
|
||||||
|
line_form.quantity = 9950
|
||||||
|
line_form.price_unit = 0.14
|
||||||
|
line_form.discount1 = 10
|
||||||
|
line_form.discount2 = 20
|
||||||
|
invoice_form.save()
|
||||||
|
invoice.action_post()
|
||||||
|
self.env.user.company_id.fiscalyear_lock_date = "2000-01-01"
|
||||||
39
account_invoice_triple_discount/views/account_move.xml
Normal file
39
account_invoice_triple_discount/views/account_move.xml
Normal file
|
|
@ -0,0 +1,39 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
|
<odoo>
|
||||||
|
<record id="invoice_triple_discount_form_view" model="ir.ui.view">
|
||||||
|
<field name="name">account.invoice.triple.discount.form</field>
|
||||||
|
<field name="model">account.move</field>
|
||||||
|
<field name="inherit_id" ref="account.view_move_form" />
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<xpath
|
||||||
|
expr="//field[@name='invoice_line_ids']//list//field[@name='discount']"
|
||||||
|
position="attributes"
|
||||||
|
>
|
||||||
|
<attribute name="optional">hide</attribute>
|
||||||
|
<attribute name="string">Total discount</attribute>
|
||||||
|
</xpath>
|
||||||
|
<xpath
|
||||||
|
expr="//field[@name='invoice_line_ids']//list//field[@name='discount']"
|
||||||
|
position="after"
|
||||||
|
>
|
||||||
|
<field name="discount1" optional="show" string="Disc.1%" />
|
||||||
|
<field name="discount2" optional="show" string="Disc.2%" />
|
||||||
|
<field name="discount3" optional="show" string="Disc.3%" />
|
||||||
|
</xpath>
|
||||||
|
<xpath
|
||||||
|
expr="//field[@name='invoice_line_ids']//form//field[@name='discount']"
|
||||||
|
position="attributes"
|
||||||
|
>
|
||||||
|
<attribute name="string">Total discount</attribute>
|
||||||
|
</xpath>
|
||||||
|
<xpath
|
||||||
|
expr="//field[@name='invoice_line_ids']//form//field[@name='discount']"
|
||||||
|
position="after"
|
||||||
|
>
|
||||||
|
<field name="discount1" string="Disc.1%" />
|
||||||
|
<field name="discount2" string="Disc.2%" />
|
||||||
|
<field name="discount3" string="Disc.3%" />
|
||||||
|
</xpath>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
</odoo>
|
||||||
|
|
@ -1,18 +1,11 @@
|
||||||
# Copyright 2025
|
# Copyright 2025 - Today Criptomart
|
||||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||||
{
|
{ # noqa: B018
|
||||||
"name": "Account Invoice Triple Discount Readonly",
|
"name": "Account Invoice Triple Discount Readonly",
|
||||||
"version": "16.0.1.0.0",
|
"version": "18.0.1.0.0",
|
||||||
"summary": "Make total discount readonly and fix discount2/discount3 write issue",
|
"summary": "Make total discount readonly and fix discount2/discount3 write issue",
|
||||||
"license": "AGPL-3",
|
"license": "AGPL-3",
|
||||||
"author": "Criptomart",
|
"author": "Odoo Community Association (OCA), Criptomart",
|
||||||
"website": "https://github.com/OCA/account-invoicing",
|
"website": "https://git.criptomart.net/criptomart/addons-cm",
|
||||||
"depends": ["account_invoice_triple_discount", "purchase_triple_discount"],
|
"depends": ["account_invoice_triple_discount", "purchase_triple_discount"],
|
||||||
"data": [
|
|
||||||
"views/product_supplierinfo_view.xml",
|
|
||||||
"views/res_partner_view.xml",
|
|
||||||
"views/purchase_order_view.xml",
|
|
||||||
"views/account_move_view.xml",
|
|
||||||
],
|
|
||||||
"installable": True,
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
from odoo import fields, models
|
from odoo import fields
|
||||||
|
from odoo import models
|
||||||
|
|
||||||
|
|
||||||
class TripleDiscountMixin(models.AbstractModel):
|
class TripleDiscountMixin(models.AbstractModel):
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,5 @@
|
||||||
|
# OCA Dependencies for account_invoice_triple_discount_readonly
|
||||||
|
# Format: repository_name branch
|
||||||
|
|
||||||
|
account-invoicing https://github.com/OCA/account-invoicing.git 18.0
|
||||||
|
purchase-workflow https://github.com/OCA/purchase-workflow.git 18.0
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
from . import test_triple_discount_mixin
|
||||||
|
from . import test_account_move
|
||||||
|
from . import test_purchase_order
|
||||||
|
|
@ -0,0 +1,213 @@
|
||||||
|
# Copyright (C) 2025: Criptomart (https://criptomart.net)
|
||||||
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
||||||
|
|
||||||
|
from odoo.tests import tagged
|
||||||
|
from odoo.tests.common import TransactionCase
|
||||||
|
|
||||||
|
|
||||||
|
@tagged("post_install", "-at_install")
|
||||||
|
class TestAccountMove(TransactionCase):
|
||||||
|
@classmethod
|
||||||
|
def setUpClass(cls):
|
||||||
|
super().setUpClass()
|
||||||
|
|
||||||
|
# Create a partner
|
||||||
|
cls.partner = cls.env["res.partner"].create(
|
||||||
|
{
|
||||||
|
"name": "Test Customer",
|
||||||
|
"email": "customer@test.com",
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
# Create a product
|
||||||
|
cls.product = cls.env["product.product"].create(
|
||||||
|
{
|
||||||
|
"name": "Test Product Invoice",
|
||||||
|
"type": "consu",
|
||||||
|
"list_price": 200.0,
|
||||||
|
"standard_price": 100.0,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
# Create tax
|
||||||
|
cls.tax = cls.env["account.tax"].create(
|
||||||
|
{
|
||||||
|
"name": "Test Tax 10%",
|
||||||
|
"amount": 10.0,
|
||||||
|
"amount_type": "percent",
|
||||||
|
"type_tax_use": "sale",
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
# Create an invoice
|
||||||
|
cls.invoice = cls.env["account.move"].create(
|
||||||
|
{
|
||||||
|
"move_type": "out_invoice",
|
||||||
|
"partner_id": cls.partner.id,
|
||||||
|
"invoice_date": "2026-01-01",
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
# Create invoice line
|
||||||
|
cls.invoice_line = cls.env["account.move.line"].create(
|
||||||
|
{
|
||||||
|
"move_id": cls.invoice.id,
|
||||||
|
"product_id": cls.product.id,
|
||||||
|
"quantity": 5,
|
||||||
|
"price_unit": 200.0,
|
||||||
|
"discount1": 10.0,
|
||||||
|
"discount2": 5.0,
|
||||||
|
"discount3": 2.0,
|
||||||
|
"tax_ids": [(6, 0, [cls.tax.id])],
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
def test_invoice_line_discount_readonly(self):
|
||||||
|
"""Test that discount field is readonly in invoice lines"""
|
||||||
|
field = self.invoice_line._fields["discount"]
|
||||||
|
self.assertTrue(
|
||||||
|
field.readonly, "Discount field should be readonly in invoice lines"
|
||||||
|
)
|
||||||
|
|
||||||
|
def test_invoice_line_write_with_explicit_discounts(self):
|
||||||
|
"""Test writing invoice line with explicit discounts"""
|
||||||
|
self.invoice_line.write(
|
||||||
|
{
|
||||||
|
"discount": 30.0, # Should be ignored
|
||||||
|
"discount1": 15.0,
|
||||||
|
"discount2": 10.0,
|
||||||
|
"discount3": 5.0,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
self.assertEqual(self.invoice_line.discount1, 15.0)
|
||||||
|
self.assertEqual(self.invoice_line.discount2, 10.0)
|
||||||
|
self.assertEqual(self.invoice_line.discount3, 5.0)
|
||||||
|
|
||||||
|
def test_invoice_line_legacy_discount(self):
|
||||||
|
"""Test legacy discount behavior in invoice lines"""
|
||||||
|
self.invoice_line.write(
|
||||||
|
{
|
||||||
|
"discount": 20.0,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
# Should map to discount1 and reset others
|
||||||
|
self.assertEqual(self.invoice_line.discount1, 20.0)
|
||||||
|
self.assertEqual(self.invoice_line.discount2, 0.0)
|
||||||
|
self.assertEqual(self.invoice_line.discount3, 0.0)
|
||||||
|
|
||||||
|
def test_invoice_line_price_calculation(self):
|
||||||
|
"""Test that price subtotal is calculated correctly with triple discount"""
|
||||||
|
self.invoice_line.write(
|
||||||
|
{
|
||||||
|
"discount1": 10.0,
|
||||||
|
"discount2": 5.0,
|
||||||
|
"discount3": 0.0,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
# Base: 5 * 200 = 1000
|
||||||
|
# After 10% discount: 900
|
||||||
|
# After 5% discount: 855
|
||||||
|
expected_subtotal = 5 * 200 * 0.9 * 0.95
|
||||||
|
self.assertAlmostEqual(
|
||||||
|
self.invoice_line.price_subtotal, expected_subtotal, places=2
|
||||||
|
)
|
||||||
|
|
||||||
|
def test_multiple_invoice_lines(self):
|
||||||
|
"""Test multiple invoice lines with different discounts"""
|
||||||
|
line2 = self.env["account.move.line"].create(
|
||||||
|
{
|
||||||
|
"move_id": self.invoice.id,
|
||||||
|
"product_id": self.product.id,
|
||||||
|
"quantity": 3,
|
||||||
|
"price_unit": 150.0,
|
||||||
|
"discount1": 20.0,
|
||||||
|
"discount2": 10.0,
|
||||||
|
"discount3": 5.0,
|
||||||
|
"tax_ids": [(6, 0, [self.tax.id])],
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
# Verify both lines have correct discounts
|
||||||
|
self.assertEqual(self.invoice_line.discount1, 10.0)
|
||||||
|
self.assertEqual(line2.discount1, 20.0)
|
||||||
|
self.assertEqual(line2.discount2, 10.0)
|
||||||
|
self.assertEqual(line2.discount3, 5.0)
|
||||||
|
|
||||||
|
def test_invoice_line_update_quantity(self):
|
||||||
|
"""Test updating quantity doesn't affect discounts"""
|
||||||
|
initial_discount1 = self.invoice_line.discount1
|
||||||
|
initial_discount2 = self.invoice_line.discount2
|
||||||
|
|
||||||
|
self.invoice_line.write(
|
||||||
|
{
|
||||||
|
"quantity": 10,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
# Discounts should remain unchanged
|
||||||
|
self.assertEqual(self.invoice_line.discount1, initial_discount1)
|
||||||
|
self.assertEqual(self.invoice_line.discount2, initial_discount2)
|
||||||
|
# Quantity should be updated
|
||||||
|
self.assertEqual(self.invoice_line.quantity, 10)
|
||||||
|
|
||||||
|
def test_invoice_line_update_price(self):
|
||||||
|
"""Test updating price doesn't affect discounts"""
|
||||||
|
initial_discount1 = self.invoice_line.discount1
|
||||||
|
|
||||||
|
self.invoice_line.write(
|
||||||
|
{
|
||||||
|
"price_unit": 250.0,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
# Discount should remain unchanged
|
||||||
|
self.assertEqual(self.invoice_line.discount1, initial_discount1)
|
||||||
|
# Price should be updated
|
||||||
|
self.assertEqual(self.invoice_line.price_unit, 250.0)
|
||||||
|
|
||||||
|
def test_invoice_with_zero_discounts(self):
|
||||||
|
"""Test invoice line with all zero discounts"""
|
||||||
|
self.invoice_line.write(
|
||||||
|
{
|
||||||
|
"discount1": 0.0,
|
||||||
|
"discount2": 0.0,
|
||||||
|
"discount3": 0.0,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
# All discounts should be zero
|
||||||
|
self.assertEqual(self.invoice_line.discount, 0.0)
|
||||||
|
self.assertEqual(self.invoice_line.discount1, 0.0)
|
||||||
|
self.assertEqual(self.invoice_line.discount2, 0.0)
|
||||||
|
self.assertEqual(self.invoice_line.discount3, 0.0)
|
||||||
|
|
||||||
|
# Subtotal should be quantity * price
|
||||||
|
expected = 5 * 200
|
||||||
|
self.assertEqual(self.invoice_line.price_subtotal, expected)
|
||||||
|
|
||||||
|
def test_invoice_line_combined_operations(self):
|
||||||
|
"""Test combined operations on invoice line"""
|
||||||
|
# Update multiple fields at once
|
||||||
|
self.invoice_line.write(
|
||||||
|
{
|
||||||
|
"quantity": 8,
|
||||||
|
"price_unit": 180.0,
|
||||||
|
"discount1": 12.0,
|
||||||
|
"discount2": 6.0,
|
||||||
|
"discount3": 0.0, # Reset discount3 explicitly
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
# All fields should be updated correctly
|
||||||
|
self.assertEqual(self.invoice_line.quantity, 8)
|
||||||
|
self.assertEqual(self.invoice_line.price_unit, 180.0)
|
||||||
|
self.assertEqual(self.invoice_line.discount1, 12.0)
|
||||||
|
self.assertEqual(self.invoice_line.discount2, 6.0)
|
||||||
|
self.assertEqual(self.invoice_line.discount3, 0.0)
|
||||||
|
|
||||||
|
# Calculate expected subtotal: 8 * 180 * (1-0.12) * (1-0.06)
|
||||||
|
expected = 8 * 180 * 0.88 * 0.94
|
||||||
|
self.assertAlmostEqual(self.invoice_line.price_subtotal, expected, places=2)
|
||||||
|
|
@ -0,0 +1,217 @@
|
||||||
|
# Copyright (C) 2025: Criptomart (https://criptomart.net)
|
||||||
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
||||||
|
|
||||||
|
from odoo.tests import tagged
|
||||||
|
from odoo.tests.common import TransactionCase
|
||||||
|
|
||||||
|
|
||||||
|
@tagged("post_install", "-at_install")
|
||||||
|
class TestPurchaseOrder(TransactionCase):
|
||||||
|
@classmethod
|
||||||
|
def setUpClass(cls):
|
||||||
|
super().setUpClass()
|
||||||
|
|
||||||
|
# Create a supplier
|
||||||
|
cls.supplier = cls.env["res.partner"].create(
|
||||||
|
{
|
||||||
|
"name": "Test Supplier",
|
||||||
|
"email": "supplier@test.com",
|
||||||
|
"supplier_rank": 1,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
# Create a product template first, then get the variant
|
||||||
|
cls.product_template = cls.env["product.template"].create(
|
||||||
|
{
|
||||||
|
"name": "Test Product PO",
|
||||||
|
"type": "consu",
|
||||||
|
"list_price": 150.0,
|
||||||
|
"standard_price": 80.0,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
# Get the auto-created product variant
|
||||||
|
cls.product = cls.product_template.product_variant_ids[0]
|
||||||
|
|
||||||
|
# Create a purchase order
|
||||||
|
cls.purchase_order = cls.env["purchase.order"].create(
|
||||||
|
{
|
||||||
|
"partner_id": cls.supplier.id,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
# Create purchase order line
|
||||||
|
cls.po_line = cls.env["purchase.order.line"].create(
|
||||||
|
{
|
||||||
|
"order_id": cls.purchase_order.id,
|
||||||
|
"product_id": cls.product.id,
|
||||||
|
"product_qty": 10,
|
||||||
|
"price_unit": 150.0,
|
||||||
|
"discount1": 10.0,
|
||||||
|
"discount2": 5.0,
|
||||||
|
"discount3": 2.0,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
def test_po_line_discount_readonly(self):
|
||||||
|
"""Test that discount field is readonly in PO lines"""
|
||||||
|
field = self.po_line._fields["discount"]
|
||||||
|
self.assertTrue(field.readonly, "Discount field should be readonly in PO lines")
|
||||||
|
|
||||||
|
def test_po_line_write_with_explicit_discounts(self):
|
||||||
|
"""Test writing PO line with explicit discounts"""
|
||||||
|
self.po_line.write(
|
||||||
|
{
|
||||||
|
"discount": 25.0, # Should be ignored
|
||||||
|
"discount1": 12.0,
|
||||||
|
"discount2": 8.0,
|
||||||
|
"discount3": 4.0,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
self.assertEqual(self.po_line.discount1, 12.0)
|
||||||
|
self.assertEqual(self.po_line.discount2, 8.0)
|
||||||
|
self.assertEqual(self.po_line.discount3, 4.0)
|
||||||
|
|
||||||
|
def test_po_line_legacy_discount(self):
|
||||||
|
"""Test legacy discount behavior in PO lines"""
|
||||||
|
self.po_line.write(
|
||||||
|
{
|
||||||
|
"discount": 18.0,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
# Should map to discount1 and reset others
|
||||||
|
self.assertEqual(self.po_line.discount1, 18.0)
|
||||||
|
self.assertEqual(self.po_line.discount2, 0.0)
|
||||||
|
self.assertEqual(self.po_line.discount3, 0.0)
|
||||||
|
|
||||||
|
def test_po_line_price_calculation(self):
|
||||||
|
"""Test that price subtotal is calculated correctly with triple discount"""
|
||||||
|
self.po_line.write(
|
||||||
|
{
|
||||||
|
"discount1": 15.0,
|
||||||
|
"discount2": 10.0,
|
||||||
|
"discount3": 5.0,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
# Base: 10 * 150 = 1500
|
||||||
|
# After 15% discount: 1275
|
||||||
|
# After 10% discount: 1147.5
|
||||||
|
# After 5% discount: 1090.125
|
||||||
|
expected_subtotal = 10 * 150 * 0.85 * 0.90 * 0.95
|
||||||
|
self.assertAlmostEqual(self.po_line.price_subtotal, expected_subtotal, places=2)
|
||||||
|
|
||||||
|
def test_multiple_po_lines(self):
|
||||||
|
"""Test multiple PO lines with different discounts"""
|
||||||
|
line2 = self.env["purchase.order.line"].create(
|
||||||
|
{
|
||||||
|
"order_id": self.purchase_order.id,
|
||||||
|
"product_id": self.product.id,
|
||||||
|
"product_qty": 5,
|
||||||
|
"price_unit": 120.0,
|
||||||
|
"discount1": 20.0,
|
||||||
|
"discount2": 15.0,
|
||||||
|
"discount3": 10.0,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
# Verify both lines have correct discounts
|
||||||
|
self.assertEqual(self.po_line.discount1, 15.0)
|
||||||
|
self.assertEqual(line2.discount1, 20.0)
|
||||||
|
self.assertEqual(line2.discount2, 15.0)
|
||||||
|
self.assertEqual(line2.discount3, 10.0)
|
||||||
|
|
||||||
|
def test_po_line_update_quantity(self):
|
||||||
|
"""Test updating quantity doesn't affect discounts"""
|
||||||
|
initial_discount1 = self.po_line.discount1
|
||||||
|
initial_discount2 = self.po_line.discount2
|
||||||
|
|
||||||
|
self.po_line.write(
|
||||||
|
{
|
||||||
|
"product_qty": 20,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
# Discounts should remain unchanged
|
||||||
|
self.assertEqual(self.po_line.discount1, initial_discount1)
|
||||||
|
self.assertEqual(self.po_line.discount2, initial_discount2)
|
||||||
|
# Quantity should be updated
|
||||||
|
self.assertEqual(self.po_line.product_qty, 20)
|
||||||
|
|
||||||
|
def test_po_line_update_price(self):
|
||||||
|
"""Test updating price doesn't affect discounts"""
|
||||||
|
initial_discount1 = self.po_line.discount1
|
||||||
|
|
||||||
|
self.po_line.write(
|
||||||
|
{
|
||||||
|
"price_unit": 200.0,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
# Discount should remain unchanged
|
||||||
|
self.assertEqual(self.po_line.discount1, initial_discount1)
|
||||||
|
# Price should be updated
|
||||||
|
self.assertEqual(self.po_line.price_unit, 200.0)
|
||||||
|
|
||||||
|
def test_po_with_zero_discounts(self):
|
||||||
|
"""Test PO line with all zero discounts"""
|
||||||
|
self.po_line.write(
|
||||||
|
{
|
||||||
|
"discount1": 0.0,
|
||||||
|
"discount2": 0.0,
|
||||||
|
"discount3": 0.0,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
# All discounts should be zero
|
||||||
|
self.assertEqual(self.po_line.discount, 0.0)
|
||||||
|
self.assertEqual(self.po_line.discount1, 0.0)
|
||||||
|
self.assertEqual(self.po_line.discount2, 0.0)
|
||||||
|
self.assertEqual(self.po_line.discount3, 0.0)
|
||||||
|
|
||||||
|
# Subtotal should be quantity * price
|
||||||
|
expected = 10 * 150
|
||||||
|
self.assertEqual(self.po_line.price_subtotal, expected)
|
||||||
|
|
||||||
|
def test_po_line_combined_operations(self):
|
||||||
|
"""Test combined operations on PO line"""
|
||||||
|
# Update multiple fields at once
|
||||||
|
self.po_line.write(
|
||||||
|
{
|
||||||
|
"product_qty": 15,
|
||||||
|
"price_unit": 175.0,
|
||||||
|
"discount1": 18.0,
|
||||||
|
"discount2": 12.0,
|
||||||
|
"discount3": 6.0,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
# All fields should be updated correctly
|
||||||
|
self.assertEqual(self.po_line.product_qty, 15)
|
||||||
|
self.assertEqual(self.po_line.price_unit, 175.0)
|
||||||
|
self.assertEqual(self.po_line.discount1, 18.0)
|
||||||
|
self.assertEqual(self.po_line.discount2, 12.0)
|
||||||
|
self.assertEqual(self.po_line.discount3, 6.0)
|
||||||
|
|
||||||
|
# Calculate expected subtotal
|
||||||
|
expected = 15 * 175 * 0.82 * 0.88 * 0.94
|
||||||
|
self.assertAlmostEqual(self.po_line.price_subtotal, expected, places=2)
|
||||||
|
|
||||||
|
def test_po_confirm_with_discounts(self):
|
||||||
|
"""Test confirming PO doesn't alter discounts"""
|
||||||
|
self.po_line.write(
|
||||||
|
{
|
||||||
|
"discount1": 10.0,
|
||||||
|
"discount2": 5.0,
|
||||||
|
"discount3": 2.0,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
# Confirm the purchase order
|
||||||
|
self.purchase_order.button_confirm()
|
||||||
|
|
||||||
|
# Discounts should remain unchanged after confirmation
|
||||||
|
self.assertEqual(self.po_line.discount1, 10.0)
|
||||||
|
self.assertEqual(self.po_line.discount2, 5.0)
|
||||||
|
self.assertEqual(self.po_line.discount3, 2.0)
|
||||||
|
|
@ -0,0 +1,243 @@
|
||||||
|
# Copyright (C) 2025: Criptomart (https://criptomart.net)
|
||||||
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
||||||
|
|
||||||
|
from odoo.tests import tagged
|
||||||
|
from odoo.tests.common import TransactionCase
|
||||||
|
|
||||||
|
|
||||||
|
@tagged("post_install", "-at_install")
|
||||||
|
class TestTripleDiscountMixin(TransactionCase):
|
||||||
|
@classmethod
|
||||||
|
def setUpClass(cls):
|
||||||
|
super().setUpClass()
|
||||||
|
|
||||||
|
# Create a partner
|
||||||
|
cls.partner = cls.env["res.partner"].create(
|
||||||
|
{
|
||||||
|
"name": "Test Partner",
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
# Create a product template first, then get the variant
|
||||||
|
cls.product_template = cls.env["product.template"].create(
|
||||||
|
{
|
||||||
|
"name": "Test Product",
|
||||||
|
"type": "consu",
|
||||||
|
"list_price": 100.0,
|
||||||
|
"standard_price": 50.0,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
# Get the auto-created product variant
|
||||||
|
cls.product = cls.product_template.product_variant_ids[0]
|
||||||
|
|
||||||
|
# Create a purchase order
|
||||||
|
cls.purchase_order = cls.env["purchase.order"].create(
|
||||||
|
{
|
||||||
|
"partner_id": cls.partner.id,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
# Create a purchase order line
|
||||||
|
cls.po_line = cls.env["purchase.order.line"].create(
|
||||||
|
{
|
||||||
|
"order_id": cls.purchase_order.id,
|
||||||
|
"product_id": cls.product.id,
|
||||||
|
"product_qty": 10,
|
||||||
|
"price_unit": 100.0,
|
||||||
|
"discount1": 10.0,
|
||||||
|
"discount2": 5.0,
|
||||||
|
"discount3": 2.0,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
def test_discount_field_is_readonly(self):
|
||||||
|
"""Test that the discount field is readonly"""
|
||||||
|
field = self.po_line._fields["discount"]
|
||||||
|
self.assertTrue(field.readonly, "Discount field should be readonly")
|
||||||
|
|
||||||
|
def test_write_with_explicit_discounts(self):
|
||||||
|
"""Test writing with explicit discount1, discount2, discount3"""
|
||||||
|
# Write with explicit discounts
|
||||||
|
self.po_line.write(
|
||||||
|
{
|
||||||
|
"discount": 20.0, # This should be ignored
|
||||||
|
"discount1": 15.0,
|
||||||
|
"discount2": 10.0,
|
||||||
|
"discount3": 5.0,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
# Verify explicit discounts were applied
|
||||||
|
self.assertEqual(self.po_line.discount1, 15.0)
|
||||||
|
self.assertEqual(self.po_line.discount2, 10.0)
|
||||||
|
self.assertEqual(self.po_line.discount3, 5.0)
|
||||||
|
|
||||||
|
# The computed discount field should reflect the combined discounts
|
||||||
|
# Formula: 100 - (100 * (1 - 0.15) * (1 - 0.10) * (1 - 0.05))
|
||||||
|
expected_discount = 100 - (100 * 0.85 * 0.90 * 0.95)
|
||||||
|
self.assertAlmostEqual(self.po_line.discount, expected_discount, places=2)
|
||||||
|
|
||||||
|
def test_write_only_discount1(self):
|
||||||
|
"""Test writing only discount1 explicitly"""
|
||||||
|
self.po_line.write(
|
||||||
|
{
|
||||||
|
"discount": 25.0, # This should be ignored
|
||||||
|
"discount1": 20.0,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
# Only discount1 should change
|
||||||
|
self.assertEqual(self.po_line.discount1, 20.0)
|
||||||
|
# Others should remain unchanged
|
||||||
|
self.assertEqual(self.po_line.discount2, 5.0)
|
||||||
|
self.assertEqual(self.po_line.discount3, 2.0)
|
||||||
|
|
||||||
|
def test_write_only_discount2(self):
|
||||||
|
"""Test writing only discount2 explicitly"""
|
||||||
|
self.po_line.write(
|
||||||
|
{
|
||||||
|
"discount": 30.0, # This should be ignored
|
||||||
|
"discount2": 12.0,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
# Only discount2 should change
|
||||||
|
self.assertEqual(self.po_line.discount2, 12.0)
|
||||||
|
# Others should remain unchanged from previous test
|
||||||
|
self.assertEqual(self.po_line.discount1, 20.0)
|
||||||
|
self.assertEqual(self.po_line.discount3, 2.0)
|
||||||
|
|
||||||
|
def test_write_only_discount3(self):
|
||||||
|
"""Test writing only discount3 explicitly"""
|
||||||
|
self.po_line.write(
|
||||||
|
{
|
||||||
|
"discount": 35.0, # This should be ignored
|
||||||
|
"discount3": 8.0,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
# Only discount3 should change
|
||||||
|
self.assertEqual(self.po_line.discount3, 8.0)
|
||||||
|
# Others should remain unchanged from previous tests
|
||||||
|
self.assertEqual(self.po_line.discount1, 20.0)
|
||||||
|
self.assertEqual(self.po_line.discount2, 12.0)
|
||||||
|
|
||||||
|
def test_write_legacy_discount_only(self):
|
||||||
|
"""Test legacy behavior: writing only discount field"""
|
||||||
|
# Reset to known state first
|
||||||
|
self.po_line.write(
|
||||||
|
{
|
||||||
|
"discount1": 10.0,
|
||||||
|
"discount2": 5.0,
|
||||||
|
"discount3": 2.0,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
# Write only discount (legacy behavior)
|
||||||
|
self.po_line.write(
|
||||||
|
{
|
||||||
|
"discount": 25.0,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
# Should map to discount1 and reset others
|
||||||
|
self.assertEqual(self.po_line.discount1, 25.0)
|
||||||
|
self.assertEqual(self.po_line.discount2, 0.0)
|
||||||
|
self.assertEqual(self.po_line.discount3, 0.0)
|
||||||
|
|
||||||
|
def test_write_multiple_times(self):
|
||||||
|
"""Test writing multiple times to ensure consistency"""
|
||||||
|
# First write
|
||||||
|
self.po_line.write(
|
||||||
|
{
|
||||||
|
"discount1": 10.0,
|
||||||
|
"discount2": 10.0,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
self.assertEqual(self.po_line.discount1, 10.0)
|
||||||
|
self.assertEqual(self.po_line.discount2, 10.0)
|
||||||
|
|
||||||
|
# Second write
|
||||||
|
self.po_line.write(
|
||||||
|
{
|
||||||
|
"discount": 5.0,
|
||||||
|
"discount3": 5.0,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
# discount3 should change, others remain
|
||||||
|
self.assertEqual(self.po_line.discount1, 10.0)
|
||||||
|
self.assertEqual(self.po_line.discount2, 10.0)
|
||||||
|
self.assertEqual(self.po_line.discount3, 5.0)
|
||||||
|
|
||||||
|
def test_write_zero_discounts(self):
|
||||||
|
"""Test writing zero discounts"""
|
||||||
|
self.po_line.write(
|
||||||
|
{
|
||||||
|
"discount1": 0.0,
|
||||||
|
"discount2": 0.0,
|
||||||
|
"discount3": 0.0,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
self.assertEqual(self.po_line.discount1, 0.0)
|
||||||
|
self.assertEqual(self.po_line.discount2, 0.0)
|
||||||
|
self.assertEqual(self.po_line.discount3, 0.0)
|
||||||
|
self.assertEqual(self.po_line.discount, 0.0)
|
||||||
|
|
||||||
|
def test_write_combined_scenario(self):
|
||||||
|
"""Test a realistic combined scenario"""
|
||||||
|
# Initial state
|
||||||
|
self.po_line.write(
|
||||||
|
{
|
||||||
|
"discount1": 15.0,
|
||||||
|
"discount2": 5.0,
|
||||||
|
"discount3": 0.0,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
# User tries to update discount field (should be ignored if explicit discounts present)
|
||||||
|
self.po_line.write(
|
||||||
|
{
|
||||||
|
"discount": 50.0,
|
||||||
|
"discount1": 20.0,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
# discount1 should be updated, others unchanged
|
||||||
|
self.assertEqual(self.po_line.discount1, 20.0)
|
||||||
|
self.assertEqual(self.po_line.discount2, 5.0)
|
||||||
|
self.assertEqual(self.po_line.discount3, 0.0)
|
||||||
|
|
||||||
|
def test_discount_calculation_accuracy(self):
|
||||||
|
"""Test that discount calculation is accurate"""
|
||||||
|
self.po_line.write(
|
||||||
|
{
|
||||||
|
"discount1": 10.0,
|
||||||
|
"discount2": 10.0,
|
||||||
|
"discount3": 10.0,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
# Combined discount: 100 - (100 * 0.9 * 0.9 * 0.9) = 27.1
|
||||||
|
expected = 100 - (100 * 0.9 * 0.9 * 0.9)
|
||||||
|
self.assertAlmostEqual(self.po_line.discount, expected, places=2)
|
||||||
|
|
||||||
|
def test_write_without_discount_field(self):
|
||||||
|
"""Test writing other fields without touching discount fields"""
|
||||||
|
initial_discount1 = self.po_line.discount1
|
||||||
|
|
||||||
|
# Write other fields
|
||||||
|
self.po_line.write(
|
||||||
|
{
|
||||||
|
"product_qty": 20,
|
||||||
|
"price_unit": 150.0,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
# Discounts should remain unchanged
|
||||||
|
self.assertEqual(self.po_line.discount1, initial_discount1)
|
||||||
|
# But other fields should be updated
|
||||||
|
self.assertEqual(self.po_line.product_qty, 20)
|
||||||
|
self.assertEqual(self.po_line.price_unit, 150.0)
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version="1.0" encoding="utf-8" ?>
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
<odoo>
|
<odoo>
|
||||||
|
|
||||||
<!-- Make discount field readonly in invoice lines -->
|
<!-- Make discount field readonly in invoice lines form view -->
|
||||||
<record id="invoice_triple_discount_readonly" model="ir.ui.view">
|
<record id="invoice_triple_discount_readonly" model="ir.ui.view">
|
||||||
<field name="name">account.invoice.triple.discount.readonly</field>
|
<field name="name">account.invoice.triple.discount.readonly</field>
|
||||||
<field name="model">account.move</field>
|
<field name="model">account.move</field>
|
||||||
|
|
@ -10,12 +10,7 @@
|
||||||
ref="account_invoice_triple_discount.invoice_triple_discount_form_view"
|
ref="account_invoice_triple_discount.invoice_triple_discount_form_view"
|
||||||
/>
|
/>
|
||||||
<field name="arch" type="xml">
|
<field name="arch" type="xml">
|
||||||
<xpath
|
<!-- Make the total discount field readonly in form view to force users to use discount1/2/3 -->
|
||||||
expr="//field[@name='invoice_line_ids']//tree//field[@name='discount']"
|
|
||||||
position="attributes"
|
|
||||||
>
|
|
||||||
<attribute name="readonly">1</attribute>
|
|
||||||
</xpath>
|
|
||||||
<xpath
|
<xpath
|
||||||
expr="//field[@name='invoice_line_ids']//form//field[@name='discount']"
|
expr="//field[@name='invoice_line_ids']//form//field[@name='discount']"
|
||||||
position="attributes"
|
position="attributes"
|
||||||
|
|
|
||||||
|
|
@ -1,32 +1,6 @@
|
||||||
<?xml version="1.0" encoding="utf-8" ?>
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
<odoo>
|
<odoo>
|
||||||
|
|
||||||
<!-- Make discount field readonly in supplier info form view -->
|
<!-- No need to modify product.supplierinfo views as purchase_triple_discount already hides discount field -->
|
||||||
<record model="ir.ui.view" id="product_supplierinfo_form_view_readonly_discount">
|
|
||||||
<field name="model">product.supplierinfo</field>
|
|
||||||
<field
|
|
||||||
name="inherit_id"
|
|
||||||
ref="purchase_triple_discount.product_supplierinfo_form_view"
|
|
||||||
/>
|
|
||||||
<field name="arch" type="xml">
|
|
||||||
<xpath expr="//field[@name='discount']" position="attributes">
|
|
||||||
<attribute name="invisible">1</attribute>
|
|
||||||
</xpath>
|
|
||||||
</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<!-- Make discount field readonly in supplier info tree view -->
|
|
||||||
<record model="ir.ui.view" id="product_supplierinfo_tree_view_readonly_discount">
|
|
||||||
<field name="model">product.supplierinfo</field>
|
|
||||||
<field
|
|
||||||
name="inherit_id"
|
|
||||||
ref="purchase_triple_discount.product_supplierinfo_tree_view"
|
|
||||||
/>
|
|
||||||
<field name="arch" type="xml">
|
|
||||||
<xpath expr="//field[@name='discount']" position="attributes">
|
|
||||||
<attribute name="invisible">1</attribute>
|
|
||||||
</xpath>
|
|
||||||
</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
</odoo>
|
</odoo>
|
||||||
|
|
|
||||||
|
|
@ -1,28 +1,6 @@
|
||||||
<?xml version="1.0" encoding="utf-8" ?>
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
<odoo>
|
<odoo>
|
||||||
|
|
||||||
<!-- Make discount field readonly in purchase order lines -->
|
<!-- No need to modify purchase.order views as purchase_triple_discount already hides discount field -->
|
||||||
<record id="purchase_order_triple_discount_readonly" model="ir.ui.view">
|
|
||||||
<field name="name">purchase.order.triple.discount.readonly</field>
|
|
||||||
<field name="model">purchase.order</field>
|
|
||||||
<field
|
|
||||||
name="inherit_id"
|
|
||||||
ref="purchase_triple_discount.purchase_order_triple_discount_form_view"
|
|
||||||
/>
|
|
||||||
<field name="arch" type="xml">
|
|
||||||
<xpath
|
|
||||||
expr="//field[@name='order_line']//tree//field[@name='discount']"
|
|
||||||
position="attributes"
|
|
||||||
>
|
|
||||||
<attribute name="readonly">1</attribute>
|
|
||||||
</xpath>
|
|
||||||
<xpath
|
|
||||||
expr="//field[@name='order_line']//form//field[@name='discount']"
|
|
||||||
position="attributes"
|
|
||||||
>
|
|
||||||
<attribute name="readonly">1</attribute>
|
|
||||||
</xpath>
|
|
||||||
</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
</odoo>
|
</odoo>
|
||||||
|
|
|
||||||
|
|
@ -1,18 +1,6 @@
|
||||||
<?xml version="1.0" encoding="utf-8" ?>
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
<odoo>
|
<odoo>
|
||||||
|
|
||||||
<!-- Make default_supplierinfo_discount readonly in partner form view -->
|
<!-- No need to modify partner view as purchase_triple_discount already uses discount1/2/3 fields -->
|
||||||
<record model="ir.ui.view" id="res_partner_form_view_readonly_discount">
|
|
||||||
<field name="model">res.partner</field>
|
|
||||||
<field
|
|
||||||
name="inherit_id"
|
|
||||||
ref="purchase_triple_discount.res_partner_form_view"
|
|
||||||
/>
|
|
||||||
<field name="arch" type="xml">
|
|
||||||
<field name="default_supplierinfo_discount" position="attributes">
|
|
||||||
<attribute name="invisible">1</attribute>
|
|
||||||
</field>
|
|
||||||
</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
</odoo>
|
</odoo>
|
||||||
|
|
|
||||||
|
|
@ -1,124 +0,0 @@
|
||||||
==============================
|
|
||||||
Generate Barcodes for Partners
|
|
||||||
==============================
|
|
||||||
|
|
||||||
..
|
|
||||||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
||||||
!! This file is generated by oca-gen-addon-readme !!
|
|
||||||
!! changes will be overwritten. !!
|
|
||||||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
||||||
!! source digest: sha256:0c984bdd1b103633bb285af4d69763047cc898ed9b6e3499c164a41d8e300f99
|
|
||||||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
||||||
|
|
||||||
.. |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/licence-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%2Fstock--logistics--barcode-lightgray.png?logo=github
|
|
||||||
:target: https://github.com/OCA/stock-logistics-barcode/tree/12.0/barcodes_generator_partner
|
|
||||||
:alt: OCA/stock-logistics-barcode
|
|
||||||
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
|
|
||||||
:target: https://translation.odoo-community.org/projects/stock-logistics-barcode-12-0/stock-logistics-barcode-12-0-barcodes_generator_partner
|
|
||||||
: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/stock-logistics-barcode&target_branch=12.0
|
|
||||||
:alt: Try me on Runboat
|
|
||||||
|
|
||||||
|badge1| |badge2| |badge3| |badge4| |badge5|
|
|
||||||
|
|
||||||
This module expands Odoo functionality, allowing user to generate barcode
|
|
||||||
depending on a given barcode rule for Partners.
|
|
||||||
|
|
||||||
For example, a typical pattern for partners is "042........." that means
|
|
||||||
that:
|
|
||||||
|
|
||||||
* the EAN13 code will begin by '042'
|
|
||||||
* followed by 0 digits (named Barcode Base in this module)
|
|
||||||
* a 13 digit control
|
|
||||||
|
|
||||||
With this module, it is possible to:
|
|
||||||
|
|
||||||
* Assign a pattern (barcode.rule) to a res.partner
|
|
||||||
|
|
||||||
* Define a Barcode base:
|
|
||||||
* manually, if the base of the barcode must be set by a user. (typically an
|
|
||||||
internal code defined in your company)
|
|
||||||
* automaticaly by a sequence, if you want to let Odoo to increment a
|
|
||||||
sequence. (typical case of a customer number incrementation)
|
|
||||||
|
|
||||||
* Generate a barcode, based on the defined pattern and the barcode base
|
|
||||||
|
|
||||||
**Table of contents**
|
|
||||||
|
|
||||||
.. contents::
|
|
||||||
:local:
|
|
||||||
|
|
||||||
Configuration
|
|
||||||
=============
|
|
||||||
|
|
||||||
* To configure this module, see the 'Configuration' Section of the description of the module 'barcodes_generator_abstract'
|
|
||||||
|
|
||||||
Usage
|
|
||||||
=====
|
|
||||||
|
|
||||||
To use this module, you need to:
|
|
||||||
|
|
||||||
* Go to a Customer/Contact form, Sales & Purchases Tab:
|
|
||||||
|
|
||||||
1 for manual generation
|
|
||||||
* Set a Barcode Rule
|
|
||||||
* Set a Barcode Base
|
|
||||||
* click on the button 'Generate Barcode (Using Barcode Rule)'
|
|
||||||
|
|
||||||
2 for automatic generation
|
|
||||||
* Set a Barcode Rule
|
|
||||||
* click on the button 'Generate Base (Using Sequence)'
|
|
||||||
* click on the button 'Generate Barcode (Using Barcode Rule)'
|
|
||||||
|
|
||||||
.. image:: https://raw.githubusercontent.com/barcodes_generator_partner/static/description/res_partner_sequence_generation.png
|
|
||||||
:width: 1100px
|
|
||||||
|
|
||||||
Bug Tracker
|
|
||||||
===========
|
|
||||||
|
|
||||||
Bugs are tracked on `GitHub Issues <https://github.com/OCA/stock-logistics-barcode/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/stock-logistics-barcode/issues/new?body=module:%20barcodes_generator_partner%0Aversion:%2012.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
|
|
||||||
~~~~~~~
|
|
||||||
|
|
||||||
* GRAP
|
|
||||||
* La Louve
|
|
||||||
|
|
||||||
Contributors
|
|
||||||
~~~~~~~~~~~~
|
|
||||||
|
|
||||||
* Sylvain LE GAL (https://twitter.com/legalsylvain)
|
|
||||||
* Dave Lasley <dave@laslabs.com>
|
|
||||||
* Druidoo (https://druidoo.io)
|
|
||||||
|
|
||||||
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/stock-logistics-barcode <https://github.com/OCA/stock-logistics-barcode/tree/12.0/barcodes_generator_partner>`_ project on GitHub.
|
|
||||||
|
|
||||||
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
||||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
|
||||||
|
|
||||||
from . import models
|
|
||||||
|
|
@ -1,27 +0,0 @@
|
||||||
# Copyright (C) 2014-Today GRAP (http://www.grap.coop)
|
|
||||||
# Copyright (C) 2016-Today La Louve (http://www.lalouve.net)
|
|
||||||
# @author: Sylvain LE GAL (https://twitter.com/legalsylvain)
|
|
||||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
|
||||||
|
|
||||||
{
|
|
||||||
"name": "Generate Barcodes for Partners",
|
|
||||||
"summary": "Generate Barcodes for Partners",
|
|
||||||
"version": "16.0.1.0.1",
|
|
||||||
"category": "Tools",
|
|
||||||
"author": "GRAP," "La Louve," "Odoo Community Association (OCA)",
|
|
||||||
"website": "https://github.com/OCA/stock-logistics-barcode",
|
|
||||||
"license": "AGPL-3",
|
|
||||||
"depends": [
|
|
||||||
"barcodes_generator_abstract",
|
|
||||||
"point_of_sale",
|
|
||||||
],
|
|
||||||
"data": [
|
|
||||||
"views/view_res_partner.xml",
|
|
||||||
],
|
|
||||||
"demo": [
|
|
||||||
"demo/ir_sequence.xml",
|
|
||||||
"demo/barcode_rule.xml",
|
|
||||||
"demo/res_partner.xml",
|
|
||||||
"demo/function.xml",
|
|
||||||
],
|
|
||||||
}
|
|
||||||
|
|
@ -1,25 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8" ?>
|
|
||||||
<!--
|
|
||||||
Copyright (C) 2016-Today: GRAP (http://www.grap.coop)
|
|
||||||
Copyright (C) 2016-Today La Louve (http://www.lalouve.net)
|
|
||||||
@author Sylvain LE GAL (https://twitter.com/legalsylvain)
|
|
||||||
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
|
||||||
-->
|
|
||||||
<odoo>
|
|
||||||
|
|
||||||
<record id="partner_generated_barcode" model="barcode.rule">
|
|
||||||
<field name="name">Partner Rule (Generated Barcode)</field>
|
|
||||||
<field
|
|
||||||
name="barcode_nomenclature_id"
|
|
||||||
ref="barcodes.default_barcode_nomenclature"
|
|
||||||
/>
|
|
||||||
<field name="type">client</field>
|
|
||||||
<field name="sequence">998</field>
|
|
||||||
<field name="encoding">ean13</field>
|
|
||||||
<field name="pattern">042.........</field>
|
|
||||||
<field name="generate_type" eval="'sequence'" />
|
|
||||||
<field name="generate_model" eval="'res.partner'" />
|
|
||||||
<field name="sequence_id" ref="partner_ir_sequence" />
|
|
||||||
</record>
|
|
||||||
|
|
||||||
</odoo>
|
|
||||||
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