Compare commits

..

4 commits

891 changed files with 17193 additions and 351466 deletions

View file

@ -1,24 +0,0 @@
# 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
View file

@ -1,25 +0,0 @@
# 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

View file

@ -1,700 +0,0 @@
# 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

View file

@ -1,17 +0,0 @@
# 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.

View file

@ -1,18 +0,0 @@
# 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.

View file

@ -1,29 +0,0 @@
# 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
View file

@ -1,18 +0,0 @@
# 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
View file

@ -130,3 +130,4 @@ dmypy.json
# Pyre type checker
.pyre/

View file

@ -1,16 +0,0 @@
[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

View file

@ -1,142 +0,0 @@
# 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

View file

@ -1,15 +0,0 @@
# 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/

View file

@ -1,30 +0,0 @@
# 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

View file

@ -1,91 +0,0 @@
[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

View file

@ -1,61 +0,0 @@
[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

View file

@ -1,12 +0,0 @@
{
"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
View file

@ -1,54 +0,0 @@
{
"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
}
}

View file

@ -1,225 +0,0 @@
# 📚 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 ☝️

View file

@ -1,273 +0,0 @@
# 📋 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?

View file

@ -1,81 +0,0 @@
.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
View file

@ -1,259 +0,0 @@
# 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

View file

@ -1,112 +0,0 @@
.. 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.

View file

@ -1,2 +0,0 @@
from . import models
from .hooks import post_init_hook

View file

@ -1,17 +0,0 @@
# 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,
}

View file

@ -1,27 +0,0 @@
# 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
)
);
""")

View file

@ -1,101 +0,0 @@
# 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 ""

View file

@ -1,82 +0,0 @@
# 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 "خط الفاتورة"

View file

@ -1,78 +0,0 @@
# 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 "Фактура"

View file

@ -1,82 +0,0 @@
# 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"

View file

@ -1,82 +0,0 @@
# 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"

View file

@ -1,81 +0,0 @@
# 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"

View file

@ -1,82 +0,0 @@
# 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"

View file

@ -1,79 +0,0 @@
# 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 "Τιμολόγιο"

View file

@ -1,82 +0,0 @@
# 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"

View file

@ -1,85 +0,0 @@
# 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"

View file

@ -1,82 +0,0 @@
# 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"

View file

@ -1,82 +0,0 @@
# 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"

View file

@ -1,79 +0,0 @@
# 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"

View file

@ -1,82 +0,0 @@
# 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"

View file

@ -1,81 +0,0 @@
# 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"

View file

@ -1,78 +0,0 @@
# 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"

View file

@ -1,82 +0,0 @@
# 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"

View file

@ -1,79 +0,0 @@
# 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"

View file

@ -1,82 +0,0 @@
# 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"

View file

@ -1,78 +0,0 @@
# 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"

View file

@ -1,87 +0,0 @@
# 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"

View file

@ -1,84 +0,0 @@
# 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"

View file

@ -1,81 +0,0 @@
# 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"

View file

@ -1,78 +0,0 @@
# 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"

View file

@ -1,85 +0,0 @@
# 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"

View file

@ -1,81 +0,0 @@
# 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 "請求行"

View file

@ -1,82 +0,0 @@
# 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ė"

View file

@ -1,81 +0,0 @@
# 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 "Ставка од фактура"

View file

@ -1,81 +0,0 @@
# 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 "Нэхэмжлэлийн мөр"

View file

@ -1,82 +0,0 @@
# 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"

View file

@ -1,79 +0,0 @@
# 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"

View file

@ -1,81 +0,0 @@
# 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"

View file

@ -1,82 +0,0 @@
# 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"

View file

@ -1,82 +0,0 @@
# 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"

View file

@ -1,80 +0,0 @@
# 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"

View file

@ -1,81 +0,0 @@
# 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"

View file

@ -1,86 +0,0 @@
# 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"

View file

@ -1,82 +0,0 @@
# 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"

View file

@ -1,82 +0,0 @@
# 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"

View file

@ -1,84 +0,0 @@
# 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 "Позиция счета"

View file

@ -1,79 +0,0 @@
# 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"

View file

@ -1,82 +0,0 @@
# 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"

View file

@ -1,85 +0,0 @@
# 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"

View file

@ -1,78 +0,0 @@
# 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 "ใบแจ้งหนี้"

View file

@ -1,82 +0,0 @@
# 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"

View file

@ -1,82 +0,0 @@
# 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ı"

View file

@ -1,83 +0,0 @@
# 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 "发票明细"

View file

@ -1,82 +0,0 @@
# 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 "發票明細"

View file

@ -1,2 +0,0 @@
from . import triple_discount_mixin
from . import account_move_line

View file

@ -1,10 +0,0 @@
# 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"]

View file

@ -1,93 +0,0 @@
# 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)

View file

@ -1,7 +0,0 @@
- 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>\>

View file

@ -1,2 +0,0 @@
This module allows to have three successive discounts on each invoice
line.

View file

@ -1,17 +0,0 @@
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

View file

@ -1,61 +0,0 @@
<?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>

View file

@ -1,244 +0,0 @@
# 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"

View file

@ -1,39 +0,0 @@
<?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>

View file

@ -1,11 +1,18 @@
# Copyright 2025 - Today Criptomart
# Copyright 2025
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
{ # noqa: B018
{
"name": "Account Invoice Triple Discount Readonly",
"version": "18.0.1.0.0",
"version": "16.0.1.0.0",
"summary": "Make total discount readonly and fix discount2/discount3 write issue",
"license": "AGPL-3",
"author": "Odoo Community Association (OCA), Criptomart",
"website": "https://git.criptomart.net/criptomart/addons-cm",
"author": "Criptomart",
"website": "https://github.com/OCA/account-invoicing",
"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,
}

View file

@ -1,5 +1,4 @@
from odoo import fields
from odoo import models
from odoo import fields, models
class TripleDiscountMixin(models.AbstractModel):

View file

@ -1,5 +0,0 @@
# 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

View file

@ -1,3 +0,0 @@
from . import test_triple_discount_mixin
from . import test_account_move
from . import test_purchase_order

View file

@ -1,213 +0,0 @@
# 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)

View file

@ -1,217 +0,0 @@
# 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)

View file

@ -1,243 +0,0 @@
# 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)

View file

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<!-- Make discount field readonly in invoice lines form view -->
<!-- Make discount field readonly in invoice lines -->
<record id="invoice_triple_discount_readonly" model="ir.ui.view">
<field name="name">account.invoice.triple.discount.readonly</field>
<field name="model">account.move</field>
@ -10,7 +10,12 @@
ref="account_invoice_triple_discount.invoice_triple_discount_form_view"
/>
<field name="arch" type="xml">
<!-- Make the total discount field readonly in form view to force users to use discount1/2/3 -->
<xpath
expr="//field[@name='invoice_line_ids']//tree//field[@name='discount']"
position="attributes"
>
<attribute name="readonly">1</attribute>
</xpath>
<xpath
expr="//field[@name='invoice_line_ids']//form//field[@name='discount']"
position="attributes"

View file

@ -1,6 +1,32 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<!-- No need to modify product.supplierinfo views as purchase_triple_discount already hides discount field -->
<!-- Make discount field readonly in supplier info form view -->
<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>

View file

@ -1,6 +1,28 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<!-- No need to modify purchase.order views as purchase_triple_discount already hides discount field -->
<!-- Make discount field readonly in purchase order lines -->
<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>

View file

@ -1,6 +1,18 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<!-- No need to modify partner view as purchase_triple_discount already uses discount1/2/3 fields -->
<!-- Make default_supplierinfo_discount readonly in partner form view -->
<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>

View file

@ -0,0 +1,124 @@
==============================
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.

View file

@ -0,0 +1,3 @@
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from . import models

View file

@ -0,0 +1,27 @@
# 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",
],
}

View file

@ -0,0 +1,25 @@
<?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>

View file

@ -0,0 +1,22 @@
<?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>
<function
model="res.partner"
name="generate_base"
eval="[ref('res_partner_barcode')]"
/>
<function
model="res.partner"
name="generate_barcode"
eval="[ref('res_partner_barcode')]"
/>
</odoo>

View file

@ -0,0 +1,16 @@
<?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_ir_sequence" model="ir.sequence">
<field name="name">Partner Sequence (Generated Barcode)</field>
<field name="padding">10</field>
<field name="number_next">1</field>
</record>
</odoo>

View file

@ -0,0 +1,15 @@
<?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="res_partner_barcode" model="res.partner">
<field name="name">Partner with Generated Barcode</field>
<field name="barcode_rule_id" ref="partner_generated_barcode" />
</record>
</odoo>

View file

@ -0,0 +1,100 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * barcodes_generator_partner
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 12.0\n"
"Report-Msgid-Bugs-To: \n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: barcodes_generator_partner
#: selection:barcode.rule,type:0
msgid "Alias"
msgstr ""
#. module: barcodes_generator_partner
#: model:ir.model,name:barcodes_generator_partner.model_barcode_rule
msgid "Barcode Rule"
msgstr ""
#. module: barcodes_generator_partner
#: selection:barcode.rule,type:0
msgid "Client"
msgstr ""
#. module: barcodes_generator_partner
#: model:ir.model,name:barcodes_generator_partner.model_res_partner
msgid "Contact"
msgstr ""
#. module: barcodes_generator_partner
#: model_terms:ir.ui.view,arch_db:barcodes_generator_partner.view_res_partner_form
msgid "Generate Barcode (Using Barcode Rule)"
msgstr ""
#. module: barcodes_generator_partner
#: model_terms:ir.ui.view,arch_db:barcodes_generator_partner.view_res_partner_form
msgid "Generate Base (Using Sequence)"
msgstr ""
#. module: barcodes_generator_partner
#: model:ir.model.fields,field_description:barcodes_generator_partner.field_barcode_rule__generate_model
msgid "Generate Model"
msgstr ""
#. module: barcodes_generator_partner
#: model:ir.model.fields,help:barcodes_generator_partner.field_barcode_rule__generate_model
msgid "If 'Generate Type' is set, mention the model related to this rule."
msgstr ""
#. module: barcodes_generator_partner
#: selection:barcode.rule,type:0
msgid "Location"
msgstr ""
#. module: barcodes_generator_partner
#: selection:barcode.rule,type:0
msgid "Lot"
msgstr ""
#. module: barcodes_generator_partner
#: selection:barcode.rule,type:0
msgid "Package"
msgstr ""
#. module: barcodes_generator_partner
#: selection:barcode.rule,generate_model:0
msgid "Partners"
msgstr ""
#. module: barcodes_generator_partner
#: selection:barcode.rule,generate_model:0
msgid "Products"
msgstr ""
#. module: barcodes_generator_partner
#: selection:barcode.rule,generate_model:0
msgid "Stock Location"
msgstr ""
#. module: barcodes_generator_partner
#: model:ir.model.fields,field_description:barcodes_generator_partner.field_barcode_rule__type
msgid "Type"
msgstr ""
#. module: barcodes_generator_partner
#: selection:barcode.rule,type:0
msgid "Unit Product"
msgstr ""
#. module: barcodes_generator_partner
#: selection:barcode.rule,type:0
msgid "Weighted Product"
msgstr ""

Some files were not shown because too many files have changed in this diff Show more