Initial import from Docker volume

This commit is contained in:
root
2025-12-26 13:11:43 +00:00
commit 4998dc066a
13336 changed files with 1767801 additions and 0 deletions

View File

@@ -0,0 +1,16 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
from trytond.pool import Pool
from . import sale
def register():
Pool.register(
sale.Promotion,
sale.Promotion_Product,
sale.Promotion_ProductCategory,
sale.Sale,
sale.Line,
module='sale_promotion', type_='model')

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,8 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
from trytond.model.exceptions import ValidationError
class FormulaError(ValidationError):
pass

View File

@@ -0,0 +1,136 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:sale.line,draft_unit_price:"
msgid "Draft Unit Price"
msgstr ""
#, fuzzy
msgctxt "field:sale.line,promotion:"
msgid "Promotion"
msgstr "Promotions"
msgctxt "field:sale.promotion,amount:"
msgid "Amount"
msgstr ""
msgctxt "field:sale.promotion,categories:"
msgid "Categories"
msgstr ""
#, fuzzy
msgctxt "field:sale.promotion,company:"
msgid "Company"
msgstr "Фирма"
msgctxt "field:sale.promotion,currency:"
msgid "Currency"
msgstr ""
#, fuzzy
msgctxt "field:sale.promotion,end_date:"
msgid "End Date"
msgstr "Крайна дата"
#, fuzzy
msgctxt "field:sale.promotion,formula:"
msgid "Formula"
msgstr "Формула"
#, fuzzy
msgctxt "field:sale.promotion,name:"
msgid "Name"
msgstr "Условие за плащане"
#, fuzzy
msgctxt "field:sale.promotion,price_list:"
msgid "Price List"
msgstr "Ценова листа"
#, fuzzy
msgctxt "field:sale.promotion,products:"
msgid "Products"
msgstr "Продукти по местонахождения"
#, fuzzy
msgctxt "field:sale.promotion,quantity:"
msgid "Quantity"
msgstr "Количество"
#, fuzzy
msgctxt "field:sale.promotion,start_date:"
msgid "Start Date"
msgstr "Начална дата"
#, fuzzy
msgctxt "field:sale.promotion,unit:"
msgid "Unit"
msgstr "Единица"
msgctxt "field:sale.promotion,untaxed_amount:"
msgid "Untaxed Amount"
msgstr ""
msgctxt "field:sale.promotion-product.category,category:"
msgid "Category"
msgstr ""
#, fuzzy
msgctxt "field:sale.promotion-product.category,promotion:"
msgid "Promotion"
msgstr "Promotions"
#, fuzzy
msgctxt "field:sale.promotion-product.product,product:"
msgid "Product"
msgstr "Продукт"
#, fuzzy
msgctxt "field:sale.promotion-product.product,promotion:"
msgid "Promotion"
msgstr "Promotions"
#, fuzzy
msgctxt "help:sale.promotion,formula:"
msgid ""
"Python expression that will be evaluated with:\n"
"- unit_price: the original unit_price"
msgstr ""
"Израз на python който ще се изпълни с:\n"
"- unit_price: оригиналната единична цена"
msgctxt "model:ir.action,name:act_promotion_form"
msgid "Promotions"
msgstr "Promotions"
msgctxt "model:ir.action,name:act_promotion_relate"
msgid "Sale Promotions"
msgstr "Sale Promotions"
msgctxt "model:ir.message,text:msg_invalid_formula"
msgid ""
"Invalid formula \"%(formula)s\" in promotion \"%(promotion)s\" 'with "
"exception \"%(exception)s\"."
msgstr ""
msgctxt "model:ir.rule.group,name:rule_group_promotion_companies"
msgid "User in companies"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_promotion"
msgid "Promotions"
msgstr "Promotions"
#, fuzzy
msgctxt "model:sale.promotion,name:"
msgid "Sale Promotion"
msgstr "Sale Promotions"
msgctxt "model:sale.promotion-product.category,name:"
msgid "Sale Promotion - Product Category"
msgstr ""
msgctxt "model:sale.promotion-product.product,name:"
msgid "Sale Promotion - Product"
msgstr ""

View File

@@ -0,0 +1,123 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:sale.line,draft_unit_price:"
msgid "Draft Unit Price"
msgstr "Preu unitari esborrany"
msgctxt "field:sale.line,promotion:"
msgid "Promotion"
msgstr "Promoció"
msgctxt "field:sale.promotion,amount:"
msgid "Amount"
msgstr "Import"
msgctxt "field:sale.promotion,categories:"
msgid "Categories"
msgstr "Categories"
msgctxt "field:sale.promotion,company:"
msgid "Company"
msgstr "Empresa"
msgctxt "field:sale.promotion,currency:"
msgid "Currency"
msgstr "Moneda"
msgctxt "field:sale.promotion,end_date:"
msgid "End Date"
msgstr "Data final"
msgctxt "field:sale.promotion,formula:"
msgid "Formula"
msgstr "Fórmula"
msgctxt "field:sale.promotion,name:"
msgid "Name"
msgstr "Nom"
msgctxt "field:sale.promotion,price_list:"
msgid "Price List"
msgstr "Tarifa"
msgctxt "field:sale.promotion,products:"
msgid "Products"
msgstr "Productes"
msgctxt "field:sale.promotion,quantity:"
msgid "Quantity"
msgstr "Quantitat"
msgctxt "field:sale.promotion,start_date:"
msgid "Start Date"
msgstr "Data inicial"
msgctxt "field:sale.promotion,unit:"
msgid "Unit"
msgstr "Unitat"
msgctxt "field:sale.promotion,untaxed_amount:"
msgid "Untaxed Amount"
msgstr "Base imponible"
msgctxt "field:sale.promotion-product.category,category:"
msgid "Category"
msgstr "Categoria"
msgctxt "field:sale.promotion-product.category,promotion:"
msgid "Promotion"
msgstr "Promoció"
msgctxt "field:sale.promotion-product.product,product:"
msgid "Product"
msgstr "Producte"
msgctxt "field:sale.promotion-product.product,promotion:"
msgid "Promotion"
msgstr "Promoció"
msgctxt "help:sale.promotion,formula:"
msgid ""
"Python expression that will be evaluated with:\n"
"- unit_price: the original unit_price"
msgstr ""
"Expressió Python que s'avaluarà amb:\n"
"- unit_price: El preu unitari original"
msgctxt "model:ir.action,name:act_promotion_form"
msgid "Promotions"
msgstr "Promocions"
msgctxt "model:ir.action,name:act_promotion_relate"
msgid "Sale Promotions"
msgstr "Promocions de venda"
msgctxt "model:ir.message,text:msg_invalid_formula"
msgid ""
"Invalid formula \"%(formula)s\" in promotion \"%(promotion)s\" 'with "
"exception \"%(exception)s\"."
msgstr ""
"La fórmula \"%(formula)s\" de la promoció \"%(promotion)s\" es invàlida amb "
"l'excepció \"%(exception)s\"."
msgctxt "model:ir.rule.group,name:rule_group_promotion_companies"
msgid "User in companies"
msgstr "Usuari a les empreses"
msgctxt "model:ir.ui.menu,name:menu_promotion"
msgid "Promotions"
msgstr "Promocions"
msgctxt "model:sale.promotion,name:"
msgid "Sale Promotion"
msgstr "Promoció de venda"
msgctxt "model:sale.promotion-product.category,name:"
msgid "Sale Promotion - Product Category"
msgstr "Promoció de venda - Categoria de producte"
msgctxt "model:sale.promotion-product.product,name:"
msgid "Sale Promotion - Product"
msgstr "Promoció de venda - Producte"

View File

@@ -0,0 +1,124 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:sale.line,draft_unit_price:"
msgid "Draft Unit Price"
msgstr ""
#, fuzzy
msgctxt "field:sale.line,promotion:"
msgid "Promotion"
msgstr "Promotions"
msgctxt "field:sale.promotion,amount:"
msgid "Amount"
msgstr ""
msgctxt "field:sale.promotion,categories:"
msgid "Categories"
msgstr ""
msgctxt "field:sale.promotion,company:"
msgid "Company"
msgstr ""
msgctxt "field:sale.promotion,currency:"
msgid "Currency"
msgstr ""
msgctxt "field:sale.promotion,end_date:"
msgid "End Date"
msgstr ""
msgctxt "field:sale.promotion,formula:"
msgid "Formula"
msgstr ""
#, fuzzy
msgctxt "field:sale.promotion,name:"
msgid "Name"
msgstr "Namu"
msgctxt "field:sale.promotion,price_list:"
msgid "Price List"
msgstr ""
msgctxt "field:sale.promotion,products:"
msgid "Products"
msgstr ""
msgctxt "field:sale.promotion,quantity:"
msgid "Quantity"
msgstr ""
msgctxt "field:sale.promotion,start_date:"
msgid "Start Date"
msgstr ""
msgctxt "field:sale.promotion,unit:"
msgid "Unit"
msgstr ""
msgctxt "field:sale.promotion,untaxed_amount:"
msgid "Untaxed Amount"
msgstr ""
msgctxt "field:sale.promotion-product.category,category:"
msgid "Category"
msgstr ""
#, fuzzy
msgctxt "field:sale.promotion-product.category,promotion:"
msgid "Promotion"
msgstr "Promotions"
msgctxt "field:sale.promotion-product.product,product:"
msgid "Product"
msgstr ""
#, fuzzy
msgctxt "field:sale.promotion-product.product,promotion:"
msgid "Promotion"
msgstr "Promotions"
msgctxt "help:sale.promotion,formula:"
msgid ""
"Python expression that will be evaluated with:\n"
"- unit_price: the original unit_price"
msgstr ""
msgctxt "model:ir.action,name:act_promotion_form"
msgid "Promotions"
msgstr "Promotions"
msgctxt "model:ir.action,name:act_promotion_relate"
msgid "Sale Promotions"
msgstr "Sale Promotions"
msgctxt "model:ir.message,text:msg_invalid_formula"
msgid ""
"Invalid formula \"%(formula)s\" in promotion \"%(promotion)s\" 'with "
"exception \"%(exception)s\"."
msgstr ""
msgctxt "model:ir.rule.group,name:rule_group_promotion_companies"
msgid "User in companies"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_promotion"
msgid "Promotions"
msgstr "Promotions"
#, fuzzy
msgctxt "model:sale.promotion,name:"
msgid "Sale Promotion"
msgstr "Sale Promotions"
msgctxt "model:sale.promotion-product.category,name:"
msgid "Sale Promotion - Product Category"
msgstr ""
msgctxt "model:sale.promotion-product.product,name:"
msgid "Sale Promotion - Product"
msgstr ""

View File

@@ -0,0 +1,123 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:sale.line,draft_unit_price:"
msgid "Draft Unit Price"
msgstr "Einzelpreis Entwurf"
msgctxt "field:sale.line,promotion:"
msgid "Promotion"
msgstr "Verkaufsaktion"
msgctxt "field:sale.promotion,amount:"
msgid "Amount"
msgstr "Betrag"
msgctxt "field:sale.promotion,categories:"
msgid "Categories"
msgstr "Kategorien"
msgctxt "field:sale.promotion,company:"
msgid "Company"
msgstr "Unternehmen"
msgctxt "field:sale.promotion,currency:"
msgid "Currency"
msgstr "Währung"
msgctxt "field:sale.promotion,end_date:"
msgid "End Date"
msgstr "Enddatum"
msgctxt "field:sale.promotion,formula:"
msgid "Formula"
msgstr "Formel"
msgctxt "field:sale.promotion,name:"
msgid "Name"
msgstr "Name"
msgctxt "field:sale.promotion,price_list:"
msgid "Price List"
msgstr "Preisliste"
msgctxt "field:sale.promotion,products:"
msgid "Products"
msgstr "Artikel"
msgctxt "field:sale.promotion,quantity:"
msgid "Quantity"
msgstr "Menge"
msgctxt "field:sale.promotion,start_date:"
msgid "Start Date"
msgstr "Startdatum"
msgctxt "field:sale.promotion,unit:"
msgid "Unit"
msgstr "Einheit"
msgctxt "field:sale.promotion,untaxed_amount:"
msgid "Untaxed Amount"
msgstr "Nettobetrag"
msgctxt "field:sale.promotion-product.category,category:"
msgid "Category"
msgstr "Kategorie"
msgctxt "field:sale.promotion-product.category,promotion:"
msgid "Promotion"
msgstr "Verkaufsaktion"
msgctxt "field:sale.promotion-product.product,product:"
msgid "Product"
msgstr "Artikel"
msgctxt "field:sale.promotion-product.product,promotion:"
msgid "Promotion"
msgstr "Verkaufsaktion"
msgctxt "help:sale.promotion,formula:"
msgid ""
"Python expression that will be evaluated with:\n"
"- unit_price: the original unit_price"
msgstr ""
"Ein Pythonausdruck, der ausgewertet wird mit:\n"
"unit_price: originaler unit_price (Preis pro Einheit)"
msgctxt "model:ir.action,name:act_promotion_form"
msgid "Promotions"
msgstr "Verkaufsaktionen"
msgctxt "model:ir.action,name:act_promotion_relate"
msgid "Sale Promotions"
msgstr "Verkaufsaktionen"
msgctxt "model:ir.message,text:msg_invalid_formula"
msgid ""
"Invalid formula \"%(formula)s\" in promotion \"%(promotion)s\" 'with "
"exception \"%(exception)s\"."
msgstr ""
"Ungültige Formel \"%(formula)s\" in Verkaufsaktion \"%(promotion)s\" mit "
"Fehler \"%(exception)s\"."
msgctxt "model:ir.rule.group,name:rule_group_promotion_companies"
msgid "User in companies"
msgstr "Benutzer in Unternehmen"
msgctxt "model:ir.ui.menu,name:menu_promotion"
msgid "Promotions"
msgstr "Verkaufsaktionen"
msgctxt "model:sale.promotion,name:"
msgid "Sale Promotion"
msgstr "Verkaufsaktion"
msgctxt "model:sale.promotion-product.category,name:"
msgid "Sale Promotion - Product Category"
msgstr "Verkaufsaktion - Artikelkategorie"
msgctxt "model:sale.promotion-product.product,name:"
msgid "Sale Promotion - Product"
msgstr "Verkaufsaktion - Artikel"

View File

@@ -0,0 +1,123 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:sale.line,draft_unit_price:"
msgid "Draft Unit Price"
msgstr "Precio unitario borrador"
msgctxt "field:sale.line,promotion:"
msgid "Promotion"
msgstr "Promoción"
msgctxt "field:sale.promotion,amount:"
msgid "Amount"
msgstr "Importe"
msgctxt "field:sale.promotion,categories:"
msgid "Categories"
msgstr "Categorías"
msgctxt "field:sale.promotion,company:"
msgid "Company"
msgstr "Empresa"
msgctxt "field:sale.promotion,currency:"
msgid "Currency"
msgstr "Moneda"
msgctxt "field:sale.promotion,end_date:"
msgid "End Date"
msgstr "Fecha final"
msgctxt "field:sale.promotion,formula:"
msgid "Formula"
msgstr "Fórmula"
msgctxt "field:sale.promotion,name:"
msgid "Name"
msgstr "Nombre"
msgctxt "field:sale.promotion,price_list:"
msgid "Price List"
msgstr "Tarifa"
msgctxt "field:sale.promotion,products:"
msgid "Products"
msgstr "Productos"
msgctxt "field:sale.promotion,quantity:"
msgid "Quantity"
msgstr "Cantidad"
msgctxt "field:sale.promotion,start_date:"
msgid "Start Date"
msgstr "Fecha inicial"
msgctxt "field:sale.promotion,unit:"
msgid "Unit"
msgstr "Unidad"
msgctxt "field:sale.promotion,untaxed_amount:"
msgid "Untaxed Amount"
msgstr "Base imponible"
msgctxt "field:sale.promotion-product.category,category:"
msgid "Category"
msgstr "Categoría"
msgctxt "field:sale.promotion-product.category,promotion:"
msgid "Promotion"
msgstr "Promoción"
msgctxt "field:sale.promotion-product.product,product:"
msgid "Product"
msgstr "Producto"
msgctxt "field:sale.promotion-product.product,promotion:"
msgid "Promotion"
msgstr "Promoción"
msgctxt "help:sale.promotion,formula:"
msgid ""
"Python expression that will be evaluated with:\n"
"- unit_price: the original unit_price"
msgstr ""
"Expresión Python que será evaluada con:\n"
"- unit_price: el campo unit_price original"
msgctxt "model:ir.action,name:act_promotion_form"
msgid "Promotions"
msgstr "Promociones"
msgctxt "model:ir.action,name:act_promotion_relate"
msgid "Sale Promotions"
msgstr "Promociones de venta"
msgctxt "model:ir.message,text:msg_invalid_formula"
msgid ""
"Invalid formula \"%(formula)s\" in promotion \"%(promotion)s\" 'with "
"exception \"%(exception)s\"."
msgstr ""
"La fórmula \"%(formula)s\" de la promoción \"%(promotion)s\" no es valida "
"generando la excepción \"%(exception)s\"."
msgctxt "model:ir.rule.group,name:rule_group_promotion_companies"
msgid "User in companies"
msgstr "Usuario en las empresas"
msgctxt "model:ir.ui.menu,name:menu_promotion"
msgid "Promotions"
msgstr "Promociones"
msgctxt "model:sale.promotion,name:"
msgid "Sale Promotion"
msgstr "Promoción de venta"
msgctxt "model:sale.promotion-product.category,name:"
msgid "Sale Promotion - Product Category"
msgstr "Promoción de venta - Categoría de producto"
msgctxt "model:sale.promotion-product.product,name:"
msgid "Sale Promotion - Product"
msgstr "Promoción de venta - Producto"

View File

@@ -0,0 +1,124 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:sale.line,draft_unit_price:"
msgid "Draft Unit Price"
msgstr "Precio unitario borrador"
msgctxt "field:sale.line,promotion:"
msgid "Promotion"
msgstr ""
msgctxt "field:sale.promotion,amount:"
msgid "Amount"
msgstr ""
msgctxt "field:sale.promotion,categories:"
msgid "Categories"
msgstr ""
msgctxt "field:sale.promotion,company:"
msgid "Company"
msgstr ""
msgctxt "field:sale.promotion,currency:"
msgid "Currency"
msgstr ""
msgctxt "field:sale.promotion,end_date:"
msgid "End Date"
msgstr ""
msgctxt "field:sale.promotion,formula:"
msgid "Formula"
msgstr ""
msgctxt "field:sale.promotion,name:"
msgid "Name"
msgstr ""
msgctxt "field:sale.promotion,price_list:"
msgid "Price List"
msgstr "Lista de precios"
msgctxt "field:sale.promotion,products:"
msgid "Products"
msgstr ""
msgctxt "field:sale.promotion,quantity:"
msgid "Quantity"
msgstr ""
msgctxt "field:sale.promotion,start_date:"
msgid "Start Date"
msgstr ""
msgctxt "field:sale.promotion,unit:"
msgid "Unit"
msgstr ""
msgctxt "field:sale.promotion,untaxed_amount:"
msgid "Untaxed Amount"
msgstr ""
msgctxt "field:sale.promotion-product.category,category:"
msgid "Category"
msgstr ""
msgctxt "field:sale.promotion-product.category,promotion:"
msgid "Promotion"
msgstr ""
msgctxt "field:sale.promotion-product.product,product:"
msgid "Product"
msgstr ""
msgctxt "field:sale.promotion-product.product,promotion:"
msgid "Promotion"
msgstr ""
msgctxt "help:sale.promotion,formula:"
msgid ""
"Python expression that will be evaluated with:\n"
"- unit_price: the original unit_price"
msgstr ""
"Expresión Python que se evaluará con:\n"
"- unit_price: el precio unitario original"
msgctxt "model:ir.action,name:act_promotion_form"
msgid "Promotions"
msgstr ""
msgctxt "model:ir.action,name:act_promotion_relate"
msgid "Sale Promotions"
msgstr ""
#, fuzzy
msgctxt "model:ir.message,text:msg_invalid_formula"
msgid ""
"Invalid formula \"%(formula)s\" in promotion \"%(promotion)s\" 'with "
"exception \"%(exception)s\"."
msgstr ""
"Fórmula \"%(formula)s\" no válida en la promoción \"%(promotion)s\" con "
"excepción \"%(exception)s\"."
msgctxt "model:ir.rule.group,name:rule_group_promotion_companies"
msgid "User in companies"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_promotion"
msgid "Promotions"
msgstr ""
msgctxt "model:sale.promotion,name:"
msgid "Sale Promotion"
msgstr ""
msgctxt "model:sale.promotion-product.category,name:"
msgid "Sale Promotion - Product Category"
msgstr ""
msgctxt "model:sale.promotion-product.product,name:"
msgid "Sale Promotion - Product"
msgstr ""

View File

@@ -0,0 +1,120 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:sale.line,draft_unit_price:"
msgid "Draft Unit Price"
msgstr "Ühiku hinna mustand"
msgctxt "field:sale.line,promotion:"
msgid "Promotion"
msgstr "Soodustus"
msgctxt "field:sale.promotion,amount:"
msgid "Amount"
msgstr ""
msgctxt "field:sale.promotion,categories:"
msgid "Categories"
msgstr "Kategooriad"
msgctxt "field:sale.promotion,company:"
msgid "Company"
msgstr "Ettevõte"
msgctxt "field:sale.promotion,currency:"
msgid "Currency"
msgstr ""
msgctxt "field:sale.promotion,end_date:"
msgid "End Date"
msgstr "Lõppkuupäev"
msgctxt "field:sale.promotion,formula:"
msgid "Formula"
msgstr "Valem"
msgctxt "field:sale.promotion,name:"
msgid "Name"
msgstr "Nimi"
msgctxt "field:sale.promotion,price_list:"
msgid "Price List"
msgstr "Hinnakiri"
msgctxt "field:sale.promotion,products:"
msgid "Products"
msgstr "Tooted"
msgctxt "field:sale.promotion,quantity:"
msgid "Quantity"
msgstr "Kogus"
msgctxt "field:sale.promotion,start_date:"
msgid "Start Date"
msgstr "Alguskuupäev"
msgctxt "field:sale.promotion,unit:"
msgid "Unit"
msgstr "Ühik"
msgctxt "field:sale.promotion,untaxed_amount:"
msgid "Untaxed Amount"
msgstr ""
msgctxt "field:sale.promotion-product.category,category:"
msgid "Category"
msgstr "Kategooria"
msgctxt "field:sale.promotion-product.category,promotion:"
msgid "Promotion"
msgstr "Soodustus"
msgctxt "field:sale.promotion-product.product,product:"
msgid "Product"
msgstr "Toode"
msgctxt "field:sale.promotion-product.product,promotion:"
msgid "Promotion"
msgstr "Soodustus"
msgctxt "help:sale.promotion,formula:"
msgid ""
"Python expression that will be evaluated with:\n"
"- unit_price: the original unit_price"
msgstr ""
msgctxt "model:ir.action,name:act_promotion_form"
msgid "Promotions"
msgstr "Soodustused"
msgctxt "model:ir.action,name:act_promotion_relate"
msgid "Sale Promotions"
msgstr "Müügisoodustus"
msgctxt "model:ir.message,text:msg_invalid_formula"
msgid ""
"Invalid formula \"%(formula)s\" in promotion \"%(promotion)s\" 'with "
"exception \"%(exception)s\"."
msgstr ""
#, fuzzy
msgctxt "model:ir.rule.group,name:rule_group_promotion_companies"
msgid "User in companies"
msgstr "Kasutaja ettevõttes"
msgctxt "model:ir.ui.menu,name:menu_promotion"
msgid "Promotions"
msgstr "Soodustused"
msgctxt "model:sale.promotion,name:"
msgid "Sale Promotion"
msgstr "Müüg soodustus"
msgctxt "model:sale.promotion-product.category,name:"
msgid "Sale Promotion - Product Category"
msgstr "Müügisoodustus - toote kategooria"
msgctxt "model:sale.promotion-product.product,name:"
msgid "Sale Promotion - Product"
msgstr "Müügisoodustus - toode"

View File

@@ -0,0 +1,121 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:sale.line,draft_unit_price:"
msgid "Draft Unit Price"
msgstr "پیش نویس واحد قیمت"
msgctxt "field:sale.line,promotion:"
msgid "Promotion"
msgstr "تبلیغ و ترویج"
msgctxt "field:sale.promotion,amount:"
msgid "Amount"
msgstr ""
msgctxt "field:sale.promotion,categories:"
msgid "Categories"
msgstr "دسته بندی ها"
msgctxt "field:sale.promotion,company:"
msgid "Company"
msgstr "شرکت"
msgctxt "field:sale.promotion,currency:"
msgid "Currency"
msgstr ""
msgctxt "field:sale.promotion,end_date:"
msgid "End Date"
msgstr "تاریخ پایان"
msgctxt "field:sale.promotion,formula:"
msgid "Formula"
msgstr "فرمول"
msgctxt "field:sale.promotion,name:"
msgid "Name"
msgstr "نام"
msgctxt "field:sale.promotion,price_list:"
msgid "Price List"
msgstr "لیست قیمت"
msgctxt "field:sale.promotion,products:"
msgid "Products"
msgstr "محصولات"
msgctxt "field:sale.promotion,quantity:"
msgid "Quantity"
msgstr "مقدار/تعداد"
msgctxt "field:sale.promotion,start_date:"
msgid "Start Date"
msgstr "تاریخ شروع"
msgctxt "field:sale.promotion,unit:"
msgid "Unit"
msgstr "واحد"
msgctxt "field:sale.promotion,untaxed_amount:"
msgid "Untaxed Amount"
msgstr ""
msgctxt "field:sale.promotion-product.category,category:"
msgid "Category"
msgstr "دسته‌بندی‌"
msgctxt "field:sale.promotion-product.category,promotion:"
msgid "Promotion"
msgstr "تبلیغ و ترویج"
msgctxt "field:sale.promotion-product.product,product:"
msgid "Product"
msgstr "محصول"
msgctxt "field:sale.promotion-product.product,promotion:"
msgid "Promotion"
msgstr "تبلیغ و ترویج"
msgctxt "help:sale.promotion,formula:"
msgid ""
"Python expression that will be evaluated with:\n"
"- unit_price: the original unit_price"
msgstr ""
"عبارت پایتون که با آن ارزیابی می شود:\n"
"- واحد_قیمت: واحد_قیمت اصلی"
msgctxt "model:ir.action,name:act_promotion_form"
msgid "Promotions"
msgstr "ترویج ها و تبلیغات"
msgctxt "model:ir.action,name:act_promotion_relate"
msgid "Sale Promotions"
msgstr "ترویج ها و تبلیغات فروش"
msgctxt "model:ir.message,text:msg_invalid_formula"
msgid ""
"Invalid formula \"%(formula)s\" in promotion \"%(promotion)s\" 'with "
"exception \"%(exception)s\"."
msgstr "فرمول: \"%s\" در ترویج وتبلیع : \"%s\" با شرایط :\"%s\" نامعتبر میباشد."
msgctxt "model:ir.rule.group,name:rule_group_promotion_companies"
msgid "User in companies"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_promotion"
msgid "Promotions"
msgstr "ترویج ها و تبلیغات"
msgctxt "model:sale.promotion,name:"
msgid "Sale Promotion"
msgstr "تبلیغ و ترویج فروش"
msgctxt "model:sale.promotion-product.category,name:"
msgid "Sale Promotion - Product Category"
msgstr "دسته بندی محصولات - تبلیغ و ترویج فروش"
msgctxt "model:sale.promotion-product.product,name:"
msgid "Sale Promotion - Product"
msgstr "محصولات - تبلیغ و ترویج فروش"

View File

@@ -0,0 +1,123 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:sale.line,draft_unit_price:"
msgid "Draft Unit Price"
msgstr ""
#, fuzzy
msgctxt "field:sale.line,promotion:"
msgid "Promotion"
msgstr "Promotions"
msgctxt "field:sale.promotion,amount:"
msgid "Amount"
msgstr ""
msgctxt "field:sale.promotion,categories:"
msgid "Categories"
msgstr ""
msgctxt "field:sale.promotion,company:"
msgid "Company"
msgstr ""
msgctxt "field:sale.promotion,currency:"
msgid "Currency"
msgstr ""
msgctxt "field:sale.promotion,end_date:"
msgid "End Date"
msgstr ""
msgctxt "field:sale.promotion,formula:"
msgid "Formula"
msgstr ""
msgctxt "field:sale.promotion,name:"
msgid "Name"
msgstr ""
msgctxt "field:sale.promotion,price_list:"
msgid "Price List"
msgstr ""
msgctxt "field:sale.promotion,products:"
msgid "Products"
msgstr ""
msgctxt "field:sale.promotion,quantity:"
msgid "Quantity"
msgstr ""
msgctxt "field:sale.promotion,start_date:"
msgid "Start Date"
msgstr ""
msgctxt "field:sale.promotion,unit:"
msgid "Unit"
msgstr ""
msgctxt "field:sale.promotion,untaxed_amount:"
msgid "Untaxed Amount"
msgstr ""
msgctxt "field:sale.promotion-product.category,category:"
msgid "Category"
msgstr ""
#, fuzzy
msgctxt "field:sale.promotion-product.category,promotion:"
msgid "Promotion"
msgstr "Promotions"
msgctxt "field:sale.promotion-product.product,product:"
msgid "Product"
msgstr ""
#, fuzzy
msgctxt "field:sale.promotion-product.product,promotion:"
msgid "Promotion"
msgstr "Promotions"
msgctxt "help:sale.promotion,formula:"
msgid ""
"Python expression that will be evaluated with:\n"
"- unit_price: the original unit_price"
msgstr ""
msgctxt "model:ir.action,name:act_promotion_form"
msgid "Promotions"
msgstr "Promotions"
msgctxt "model:ir.action,name:act_promotion_relate"
msgid "Sale Promotions"
msgstr "Sale Promotions"
msgctxt "model:ir.message,text:msg_invalid_formula"
msgid ""
"Invalid formula \"%(formula)s\" in promotion \"%(promotion)s\" 'with "
"exception \"%(exception)s\"."
msgstr ""
msgctxt "model:ir.rule.group,name:rule_group_promotion_companies"
msgid "User in companies"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_promotion"
msgid "Promotions"
msgstr "Promotions"
#, fuzzy
msgctxt "model:sale.promotion,name:"
msgid "Sale Promotion"
msgstr "Sale Promotions"
msgctxt "model:sale.promotion-product.category,name:"
msgid "Sale Promotion - Product Category"
msgstr ""
msgctxt "model:sale.promotion-product.product,name:"
msgid "Sale Promotion - Product"
msgstr ""

View File

@@ -0,0 +1,123 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:sale.line,draft_unit_price:"
msgid "Draft Unit Price"
msgstr "Prix unitaire brouillon"
msgctxt "field:sale.line,promotion:"
msgid "Promotion"
msgstr "Promotion"
msgctxt "field:sale.promotion,amount:"
msgid "Amount"
msgstr "Montant"
msgctxt "field:sale.promotion,categories:"
msgid "Categories"
msgstr "Catégories"
msgctxt "field:sale.promotion,company:"
msgid "Company"
msgstr "Société"
msgctxt "field:sale.promotion,currency:"
msgid "Currency"
msgstr "Devise"
msgctxt "field:sale.promotion,end_date:"
msgid "End Date"
msgstr "Date de fin"
msgctxt "field:sale.promotion,formula:"
msgid "Formula"
msgstr "Formule"
msgctxt "field:sale.promotion,name:"
msgid "Name"
msgstr "Nom"
msgctxt "field:sale.promotion,price_list:"
msgid "Price List"
msgstr "Liste de prix"
msgctxt "field:sale.promotion,products:"
msgid "Products"
msgstr "Produits"
msgctxt "field:sale.promotion,quantity:"
msgid "Quantity"
msgstr "Quantité"
msgctxt "field:sale.promotion,start_date:"
msgid "Start Date"
msgstr "Date de début"
msgctxt "field:sale.promotion,unit:"
msgid "Unit"
msgstr "Unité"
msgctxt "field:sale.promotion,untaxed_amount:"
msgid "Untaxed Amount"
msgstr "Montant hors taxe"
msgctxt "field:sale.promotion-product.category,category:"
msgid "Category"
msgstr "Catégorie"
msgctxt "field:sale.promotion-product.category,promotion:"
msgid "Promotion"
msgstr "Promotion"
msgctxt "field:sale.promotion-product.product,product:"
msgid "Product"
msgstr "Produit"
msgctxt "field:sale.promotion-product.product,promotion:"
msgid "Promotion"
msgstr "Promotion"
msgctxt "help:sale.promotion,formula:"
msgid ""
"Python expression that will be evaluated with:\n"
"- unit_price: the original unit_price"
msgstr ""
"L'expression Python qui sera évaluée avec:\n"
"- unit_price: le prix unitaire original"
msgctxt "model:ir.action,name:act_promotion_form"
msgid "Promotions"
msgstr "Promotions"
msgctxt "model:ir.action,name:act_promotion_relate"
msgid "Sale Promotions"
msgstr "Promotions de vente"
msgctxt "model:ir.message,text:msg_invalid_formula"
msgid ""
"Invalid formula \"%(formula)s\" in promotion \"%(promotion)s\" 'with "
"exception \"%(exception)s\"."
msgstr ""
"Formule invalide « %(formula)s » sur la promotion « %(promotion)s » avec "
"l'exception « %(exception)s »."
msgctxt "model:ir.rule.group,name:rule_group_promotion_companies"
msgid "User in companies"
msgstr "Utilisateur dans les sociétés"
msgctxt "model:ir.ui.menu,name:menu_promotion"
msgid "Promotions"
msgstr "Promotions"
msgctxt "model:sale.promotion,name:"
msgid "Sale Promotion"
msgstr "Promotion de vente"
msgctxt "model:sale.promotion-product.category,name:"
msgid "Sale Promotion - Product Category"
msgstr "Promotion de vente - Catégorie de produit"
msgctxt "model:sale.promotion-product.product,name:"
msgid "Sale Promotion - Product"
msgstr "Promotion de vente - Produit"

View File

@@ -0,0 +1,134 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:sale.line,draft_unit_price:"
msgid "Draft Unit Price"
msgstr ""
#, fuzzy
msgctxt "field:sale.line,promotion:"
msgid "Promotion"
msgstr "Promotions"
msgctxt "field:sale.promotion,amount:"
msgid "Amount"
msgstr ""
msgctxt "field:sale.promotion,categories:"
msgid "Categories"
msgstr ""
#, fuzzy
msgctxt "field:sale.promotion,company:"
msgid "Company"
msgstr "Társaság"
msgctxt "field:sale.promotion,currency:"
msgid "Currency"
msgstr ""
msgctxt "field:sale.promotion,end_date:"
msgid "End Date"
msgstr ""
#, fuzzy
msgctxt "field:sale.promotion,formula:"
msgid "Formula"
msgstr "Űrlap"
#, fuzzy
msgctxt "field:sale.promotion,name:"
msgid "Name"
msgstr "Név"
#, fuzzy
msgctxt "field:sale.promotion,price_list:"
msgid "Price List"
msgstr "Árlista"
#, fuzzy
msgctxt "field:sale.promotion,products:"
msgid "Products"
msgstr "Termékek"
#, fuzzy
msgctxt "field:sale.promotion,quantity:"
msgid "Quantity"
msgstr "Mennyiség"
msgctxt "field:sale.promotion,start_date:"
msgid "Start Date"
msgstr ""
#, fuzzy
msgctxt "field:sale.promotion,unit:"
msgid "Unit"
msgstr "Egység"
msgctxt "field:sale.promotion,untaxed_amount:"
msgid "Untaxed Amount"
msgstr ""
msgctxt "field:sale.promotion-product.category,category:"
msgid "Category"
msgstr ""
#, fuzzy
msgctxt "field:sale.promotion-product.category,promotion:"
msgid "Promotion"
msgstr "Promotions"
#, fuzzy
msgctxt "field:sale.promotion-product.product,product:"
msgid "Product"
msgstr "Termék"
#, fuzzy
msgctxt "field:sale.promotion-product.product,promotion:"
msgid "Promotion"
msgstr "Promotions"
#, fuzzy
msgctxt "help:sale.promotion,formula:"
msgid ""
"Python expression that will be evaluated with:\n"
"- unit_price: the original unit_price"
msgstr ""
"Python kifejezés, mely :\n"
" unit_price: originaler unit_price, szerint van kiértékelve (ár/egység)"
msgctxt "model:ir.action,name:act_promotion_form"
msgid "Promotions"
msgstr "Promotions"
msgctxt "model:ir.action,name:act_promotion_relate"
msgid "Sale Promotions"
msgstr "Sale Promotions"
msgctxt "model:ir.message,text:msg_invalid_formula"
msgid ""
"Invalid formula \"%(formula)s\" in promotion \"%(promotion)s\" 'with "
"exception \"%(exception)s\"."
msgstr ""
msgctxt "model:ir.rule.group,name:rule_group_promotion_companies"
msgid "User in companies"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_promotion"
msgid "Promotions"
msgstr "Promotions"
#, fuzzy
msgctxt "model:sale.promotion,name:"
msgid "Sale Promotion"
msgstr "Sale Promotions"
msgctxt "model:sale.promotion-product.category,name:"
msgid "Sale Promotion - Product Category"
msgstr ""
msgctxt "model:sale.promotion-product.product,name:"
msgid "Sale Promotion - Product"
msgstr ""

View File

@@ -0,0 +1,120 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:sale.line,draft_unit_price:"
msgid "Draft Unit Price"
msgstr ""
msgctxt "field:sale.line,promotion:"
msgid "Promotion"
msgstr ""
msgctxt "field:sale.promotion,amount:"
msgid "Amount"
msgstr ""
msgctxt "field:sale.promotion,categories:"
msgid "Categories"
msgstr ""
msgctxt "field:sale.promotion,company:"
msgid "Company"
msgstr "Perusahaan"
msgctxt "field:sale.promotion,currency:"
msgid "Currency"
msgstr ""
msgctxt "field:sale.promotion,end_date:"
msgid "End Date"
msgstr "Tanggal Akhir"
msgctxt "field:sale.promotion,formula:"
msgid "Formula"
msgstr ""
msgctxt "field:sale.promotion,name:"
msgid "Name"
msgstr "Nama"
msgctxt "field:sale.promotion,price_list:"
msgid "Price List"
msgstr ""
msgctxt "field:sale.promotion,products:"
msgid "Products"
msgstr ""
msgctxt "field:sale.promotion,quantity:"
msgid "Quantity"
msgstr ""
msgctxt "field:sale.promotion,start_date:"
msgid "Start Date"
msgstr "Tanggal Awal"
msgctxt "field:sale.promotion,unit:"
msgid "Unit"
msgstr ""
msgctxt "field:sale.promotion,untaxed_amount:"
msgid "Untaxed Amount"
msgstr ""
msgctxt "field:sale.promotion-product.category,category:"
msgid "Category"
msgstr "Kategori"
msgctxt "field:sale.promotion-product.category,promotion:"
msgid "Promotion"
msgstr ""
msgctxt "field:sale.promotion-product.product,product:"
msgid "Product"
msgstr "Produk"
msgctxt "field:sale.promotion-product.product,promotion:"
msgid "Promotion"
msgstr ""
msgctxt "help:sale.promotion,formula:"
msgid ""
"Python expression that will be evaluated with:\n"
"- unit_price: the original unit_price"
msgstr ""
msgctxt "model:ir.action,name:act_promotion_form"
msgid "Promotions"
msgstr ""
msgctxt "model:ir.action,name:act_promotion_relate"
msgid "Sale Promotions"
msgstr ""
msgctxt "model:ir.message,text:msg_invalid_formula"
msgid ""
"Invalid formula \"%(formula)s\" in promotion \"%(promotion)s\" 'with "
"exception \"%(exception)s\"."
msgstr ""
#, fuzzy
msgctxt "model:ir.rule.group,name:rule_group_promotion_companies"
msgid "User in companies"
msgstr "Pengguna di dalam perusahaan"
msgctxt "model:ir.ui.menu,name:menu_promotion"
msgid "Promotions"
msgstr ""
msgctxt "model:sale.promotion,name:"
msgid "Sale Promotion"
msgstr ""
msgctxt "model:sale.promotion-product.category,name:"
msgid "Sale Promotion - Product Category"
msgstr ""
msgctxt "model:sale.promotion-product.product,name:"
msgid "Sale Promotion - Product"
msgstr ""

View File

@@ -0,0 +1,123 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:sale.line,draft_unit_price:"
msgid "Draft Unit Price"
msgstr "Bozza prezzo unitario"
msgctxt "field:sale.line,promotion:"
msgid "Promotion"
msgstr "Promozione"
msgctxt "field:sale.promotion,amount:"
msgid "Amount"
msgstr "Importo"
msgctxt "field:sale.promotion,categories:"
msgid "Categories"
msgstr "Categorie"
msgctxt "field:sale.promotion,company:"
msgid "Company"
msgstr "Azienda"
msgctxt "field:sale.promotion,currency:"
msgid "Currency"
msgstr "Valuta"
msgctxt "field:sale.promotion,end_date:"
msgid "End Date"
msgstr "Data finale"
msgctxt "field:sale.promotion,formula:"
msgid "Formula"
msgstr "Formula"
msgctxt "field:sale.promotion,name:"
msgid "Name"
msgstr "Nome"
msgctxt "field:sale.promotion,price_list:"
msgid "Price List"
msgstr "Listino"
msgctxt "field:sale.promotion,products:"
msgid "Products"
msgstr "Prodotti"
msgctxt "field:sale.promotion,quantity:"
msgid "Quantity"
msgstr "Quantità"
msgctxt "field:sale.promotion,start_date:"
msgid "Start Date"
msgstr "Data iniziale"
msgctxt "field:sale.promotion,unit:"
msgid "Unit"
msgstr "Unità"
msgctxt "field:sale.promotion,untaxed_amount:"
msgid "Untaxed Amount"
msgstr "Importo non tassato"
msgctxt "field:sale.promotion-product.category,category:"
msgid "Category"
msgstr "Categoria"
msgctxt "field:sale.promotion-product.category,promotion:"
msgid "Promotion"
msgstr "Promozione"
msgctxt "field:sale.promotion-product.product,product:"
msgid "Product"
msgstr "Prodotto"
msgctxt "field:sale.promotion-product.product,promotion:"
msgid "Promotion"
msgstr "Promozione"
msgctxt "help:sale.promotion,formula:"
msgid ""
"Python expression that will be evaluated with:\n"
"- unit_price: the original unit_price"
msgstr ""
"Espressione python che verrà valorizzata con:\n"
"- unit_price: l'unit_price originario"
msgctxt "model:ir.action,name:act_promotion_form"
msgid "Promotions"
msgstr "Promozioni"
msgctxt "model:ir.action,name:act_promotion_relate"
msgid "Sale Promotions"
msgstr "Promozione su vendite"
msgctxt "model:ir.message,text:msg_invalid_formula"
msgid ""
"Invalid formula \"%(formula)s\" in promotion \"%(promotion)s\" 'with "
"exception \"%(exception)s\"."
msgstr ""
"Formula \"%(formula)s\" invalida per la promozione \"%(promotion)s\" con "
"eccezione \"%(exception)s\"."
msgctxt "model:ir.rule.group,name:rule_group_promotion_companies"
msgid "User in companies"
msgstr "Utente in aziende"
msgctxt "model:ir.ui.menu,name:menu_promotion"
msgid "Promotions"
msgstr "Promozioni"
msgctxt "model:sale.promotion,name:"
msgid "Sale Promotion"
msgstr "Promozione su vendite"
msgctxt "model:sale.promotion-product.category,name:"
msgid "Sale Promotion - Product Category"
msgstr "Promozione vendita - Categoria di prodotto"
msgctxt "model:sale.promotion-product.product,name:"
msgid "Sale Promotion - Product"
msgstr "Promozione su vendita - prodotto"

View File

@@ -0,0 +1,132 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:sale.line,draft_unit_price:"
msgid "Draft Unit Price"
msgstr ""
#, fuzzy
msgctxt "field:sale.line,promotion:"
msgid "Promotion"
msgstr "Promotions"
msgctxt "field:sale.promotion,amount:"
msgid "Amount"
msgstr ""
msgctxt "field:sale.promotion,categories:"
msgid "Categories"
msgstr ""
#, fuzzy
msgctxt "field:sale.promotion,company:"
msgid "Company"
msgstr "ຫ້ອງການ/ສຳນັກງານ"
msgctxt "field:sale.promotion,currency:"
msgid "Currency"
msgstr ""
#, fuzzy
msgctxt "field:sale.promotion,end_date:"
msgid "End Date"
msgstr "ວັນທີສິ້ນສຸດ"
msgctxt "field:sale.promotion,formula:"
msgid "Formula"
msgstr ""
#, fuzzy
msgctxt "field:sale.promotion,name:"
msgid "Name"
msgstr "ຊື່"
#, fuzzy
msgctxt "field:sale.promotion,price_list:"
msgid "Price List"
msgstr "ລາຍການລາຄາ"
#, fuzzy
msgctxt "field:sale.promotion,products:"
msgid "Products"
msgstr "ຜະລິດຕະພັນ"
#, fuzzy
msgctxt "field:sale.promotion,quantity:"
msgid "Quantity"
msgstr "ຈຳນວນ"
#, fuzzy
msgctxt "field:sale.promotion,start_date:"
msgid "Start Date"
msgstr "ວັນທີເລີ່ມ"
#, fuzzy
msgctxt "field:sale.promotion,unit:"
msgid "Unit"
msgstr "ໜ່ວຍ"
msgctxt "field:sale.promotion,untaxed_amount:"
msgid "Untaxed Amount"
msgstr ""
msgctxt "field:sale.promotion-product.category,category:"
msgid "Category"
msgstr ""
#, fuzzy
msgctxt "field:sale.promotion-product.category,promotion:"
msgid "Promotion"
msgstr "Promotions"
#, fuzzy
msgctxt "field:sale.promotion-product.product,product:"
msgid "Product"
msgstr "ຜະລິດຕະພັນ"
#, fuzzy
msgctxt "field:sale.promotion-product.product,promotion:"
msgid "Promotion"
msgstr "Promotions"
msgctxt "help:sale.promotion,formula:"
msgid ""
"Python expression that will be evaluated with:\n"
"- unit_price: the original unit_price"
msgstr ""
msgctxt "model:ir.action,name:act_promotion_form"
msgid "Promotions"
msgstr "Promotions"
msgctxt "model:ir.action,name:act_promotion_relate"
msgid "Sale Promotions"
msgstr "Sale Promotions"
msgctxt "model:ir.message,text:msg_invalid_formula"
msgid ""
"Invalid formula \"%(formula)s\" in promotion \"%(promotion)s\" 'with "
"exception \"%(exception)s\"."
msgstr ""
msgctxt "model:ir.rule.group,name:rule_group_promotion_companies"
msgid "User in companies"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_promotion"
msgid "Promotions"
msgstr "Promotions"
#, fuzzy
msgctxt "model:sale.promotion,name:"
msgid "Sale Promotion"
msgstr "Sale Promotions"
msgctxt "model:sale.promotion-product.category,name:"
msgid "Sale Promotion - Product Category"
msgstr ""
msgctxt "model:sale.promotion-product.product,name:"
msgid "Sale Promotion - Product"
msgstr ""

View File

@@ -0,0 +1,124 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:sale.line,draft_unit_price:"
msgid "Draft Unit Price"
msgstr ""
#, fuzzy
msgctxt "field:sale.line,promotion:"
msgid "Promotion"
msgstr "Promotions"
msgctxt "field:sale.promotion,amount:"
msgid "Amount"
msgstr ""
msgctxt "field:sale.promotion,categories:"
msgid "Categories"
msgstr ""
msgctxt "field:sale.promotion,company:"
msgid "Company"
msgstr "Organizacija"
msgctxt "field:sale.promotion,currency:"
msgid "Currency"
msgstr ""
msgctxt "field:sale.promotion,end_date:"
msgid "End Date"
msgstr "Pabaigos data"
msgctxt "field:sale.promotion,formula:"
msgid "Formula"
msgstr ""
#, fuzzy
msgctxt "field:sale.promotion,name:"
msgid "Name"
msgstr "Namu"
msgctxt "field:sale.promotion,price_list:"
msgid "Price List"
msgstr ""
msgctxt "field:sale.promotion,products:"
msgid "Products"
msgstr ""
msgctxt "field:sale.promotion,quantity:"
msgid "Quantity"
msgstr ""
msgctxt "field:sale.promotion,start_date:"
msgid "Start Date"
msgstr "Pradžios data"
msgctxt "field:sale.promotion,unit:"
msgid "Unit"
msgstr ""
msgctxt "field:sale.promotion,untaxed_amount:"
msgid "Untaxed Amount"
msgstr ""
msgctxt "field:sale.promotion-product.category,category:"
msgid "Category"
msgstr ""
#, fuzzy
msgctxt "field:sale.promotion-product.category,promotion:"
msgid "Promotion"
msgstr "Promotions"
msgctxt "field:sale.promotion-product.product,product:"
msgid "Product"
msgstr ""
#, fuzzy
msgctxt "field:sale.promotion-product.product,promotion:"
msgid "Promotion"
msgstr "Promotions"
msgctxt "help:sale.promotion,formula:"
msgid ""
"Python expression that will be evaluated with:\n"
"- unit_price: the original unit_price"
msgstr ""
msgctxt "model:ir.action,name:act_promotion_form"
msgid "Promotions"
msgstr "Promotions"
msgctxt "model:ir.action,name:act_promotion_relate"
msgid "Sale Promotions"
msgstr "Sale Promotions"
msgctxt "model:ir.message,text:msg_invalid_formula"
msgid ""
"Invalid formula \"%(formula)s\" in promotion \"%(promotion)s\" 'with "
"exception \"%(exception)s\"."
msgstr ""
msgctxt "model:ir.rule.group,name:rule_group_promotion_companies"
msgid "User in companies"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_promotion"
msgid "Promotions"
msgstr "Promotions"
#, fuzzy
msgctxt "model:sale.promotion,name:"
msgid "Sale Promotion"
msgstr "Sale Promotions"
msgctxt "model:sale.promotion-product.category,name:"
msgid "Sale Promotion - Product Category"
msgstr ""
msgctxt "model:sale.promotion-product.product,name:"
msgid "Sale Promotion - Product"
msgstr ""

View File

@@ -0,0 +1,123 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:sale.line,draft_unit_price:"
msgid "Draft Unit Price"
msgstr "concept eenheids prijs"
msgctxt "field:sale.line,promotion:"
msgid "Promotion"
msgstr "Promoties"
msgctxt "field:sale.promotion,amount:"
msgid "Amount"
msgstr "Bedrag"
msgctxt "field:sale.promotion,categories:"
msgid "Categories"
msgstr "Categorieën"
msgctxt "field:sale.promotion,company:"
msgid "Company"
msgstr "Bedrijf"
msgctxt "field:sale.promotion,currency:"
msgid "Currency"
msgstr "Valuta"
msgctxt "field:sale.promotion,end_date:"
msgid "End Date"
msgstr "Eind datum"
msgctxt "field:sale.promotion,formula:"
msgid "Formula"
msgstr "Formule"
msgctxt "field:sale.promotion,name:"
msgid "Name"
msgstr "Naam"
msgctxt "field:sale.promotion,price_list:"
msgid "Price List"
msgstr "prijslijst"
msgctxt "field:sale.promotion,products:"
msgid "Products"
msgstr "Producten"
msgctxt "field:sale.promotion,quantity:"
msgid "Quantity"
msgstr "Hoeveelheid"
msgctxt "field:sale.promotion,start_date:"
msgid "Start Date"
msgstr "Start datum"
msgctxt "field:sale.promotion,unit:"
msgid "Unit"
msgstr "Eenheid"
msgctxt "field:sale.promotion,untaxed_amount:"
msgid "Untaxed Amount"
msgstr "Onbelast bedrag"
msgctxt "field:sale.promotion-product.category,category:"
msgid "Category"
msgstr "Categorie"
msgctxt "field:sale.promotion-product.category,promotion:"
msgid "Promotion"
msgstr "Promotie"
msgctxt "field:sale.promotion-product.product,product:"
msgid "Product"
msgstr "Product"
msgctxt "field:sale.promotion-product.product,promotion:"
msgid "Promotion"
msgstr "Promotie"
msgctxt "help:sale.promotion,formula:"
msgid ""
"Python expression that will be evaluated with:\n"
"- unit_price: the original unit_price"
msgstr ""
"Python-expressie die wordt geëvalueerd met:\n"
"- unit_price: de oorspronkelijke eenheidsprijs"
msgctxt "model:ir.action,name:act_promotion_form"
msgid "Promotions"
msgstr "Promoties"
msgctxt "model:ir.action,name:act_promotion_relate"
msgid "Sale Promotions"
msgstr "Verkoopspromoties"
msgctxt "model:ir.message,text:msg_invalid_formula"
msgid ""
"Invalid formula \"%(formula)s\" in promotion \"%(promotion)s\" 'with "
"exception \"%(exception)s\"."
msgstr ""
"Ongeldige formule \"%(formula)s\" in promotie \"%(promotion)s\" 'met "
"uitzondering \"%(exception)s\"."
msgctxt "model:ir.rule.group,name:rule_group_promotion_companies"
msgid "User in companies"
msgstr "Gebruiker in het bedrijf"
msgctxt "model:ir.ui.menu,name:menu_promotion"
msgid "Promotions"
msgstr "Promoties"
msgctxt "model:sale.promotion,name:"
msgid "Sale Promotion"
msgstr "Verkoopspromotie"
msgctxt "model:sale.promotion-product.category,name:"
msgid "Sale Promotion - Product Category"
msgstr "Verkooppromotie - Productcategorie"
msgctxt "model:sale.promotion-product.product,name:"
msgid "Sale Promotion - Product"
msgstr "Verkooppromotie - Product"

View File

@@ -0,0 +1,123 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:sale.line,draft_unit_price:"
msgid "Draft Unit Price"
msgstr ""
msgctxt "field:sale.line,promotion:"
msgid "Promotion"
msgstr "Promocja"
msgctxt "field:sale.promotion,amount:"
msgid "Amount"
msgstr ""
msgctxt "field:sale.promotion,categories:"
msgid "Categories"
msgstr ""
msgctxt "field:sale.promotion,company:"
msgid "Company"
msgstr "Firma"
msgctxt "field:sale.promotion,currency:"
msgid "Currency"
msgstr ""
msgctxt "field:sale.promotion,end_date:"
msgid "End Date"
msgstr "Data ukończenia"
msgctxt "field:sale.promotion,formula:"
msgid "Formula"
msgstr "Formuła"
msgctxt "field:sale.promotion,name:"
msgid "Name"
msgstr "Nazwa"
msgctxt "field:sale.promotion,price_list:"
msgid "Price List"
msgstr "Cennik"
msgctxt "field:sale.promotion,products:"
msgid "Products"
msgstr "Produkty"
msgctxt "field:sale.promotion,quantity:"
msgid "Quantity"
msgstr "Ilość"
msgctxt "field:sale.promotion,start_date:"
msgid "Start Date"
msgstr "Data rozpoczęcia"
msgctxt "field:sale.promotion,unit:"
msgid "Unit"
msgstr "Jednostka"
msgctxt "field:sale.promotion,untaxed_amount:"
msgid "Untaxed Amount"
msgstr ""
msgctxt "field:sale.promotion-product.category,category:"
msgid "Category"
msgstr ""
#, fuzzy
msgctxt "field:sale.promotion-product.category,promotion:"
msgid "Promotion"
msgstr "Promocja"
msgctxt "field:sale.promotion-product.product,product:"
msgid "Product"
msgstr "Produkt"
msgctxt "field:sale.promotion-product.product,promotion:"
msgid "Promotion"
msgstr "Promocja"
msgctxt "help:sale.promotion,formula:"
msgid ""
"Python expression that will be evaluated with:\n"
"- unit_price: the original unit_price"
msgstr ""
#, fuzzy
msgctxt "model:ir.action,name:act_promotion_form"
msgid "Promotions"
msgstr "Promotions"
#, fuzzy
msgctxt "model:ir.action,name:act_promotion_relate"
msgid "Sale Promotions"
msgstr "Sale Promotions"
msgctxt "model:ir.message,text:msg_invalid_formula"
msgid ""
"Invalid formula \"%(formula)s\" in promotion \"%(promotion)s\" 'with "
"exception \"%(exception)s\"."
msgstr ""
msgctxt "model:ir.rule.group,name:rule_group_promotion_companies"
msgid "User in companies"
msgstr ""
#, fuzzy
msgctxt "model:ir.ui.menu,name:menu_promotion"
msgid "Promotions"
msgstr "Promotions"
msgctxt "model:sale.promotion,name:"
msgid "Sale Promotion"
msgstr "Promocja sprzedaży"
msgctxt "model:sale.promotion-product.category,name:"
msgid "Sale Promotion - Product Category"
msgstr ""
msgctxt "model:sale.promotion-product.product,name:"
msgid "Sale Promotion - Product"
msgstr "Promocja sprzedaży - Produkt"

View File

@@ -0,0 +1,128 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:sale.line,draft_unit_price:"
msgid "Draft Unit Price"
msgstr "Rascunho de Preço Unitário"
msgctxt "field:sale.line,promotion:"
msgid "Promotion"
msgstr "Promoção"
msgctxt "field:sale.promotion,amount:"
msgid "Amount"
msgstr ""
msgctxt "field:sale.promotion,categories:"
msgid "Categories"
msgstr ""
msgctxt "field:sale.promotion,company:"
msgid "Company"
msgstr "Empresa"
msgctxt "field:sale.promotion,currency:"
msgid "Currency"
msgstr ""
msgctxt "field:sale.promotion,end_date:"
msgid "End Date"
msgstr "Data Final"
msgctxt "field:sale.promotion,formula:"
msgid "Formula"
msgstr "Fórmula"
msgctxt "field:sale.promotion,name:"
msgid "Name"
msgstr "Nome"
msgctxt "field:sale.promotion,price_list:"
msgid "Price List"
msgstr "Lista de Preços"
msgctxt "field:sale.promotion,products:"
msgid "Products"
msgstr "Produtos"
msgctxt "field:sale.promotion,quantity:"
msgid "Quantity"
msgstr "Quantidade"
msgctxt "field:sale.promotion,start_date:"
msgid "Start Date"
msgstr "Data Inicial"
msgctxt "field:sale.promotion,unit:"
msgid "Unit"
msgstr "Unidade"
msgctxt "field:sale.promotion,untaxed_amount:"
msgid "Untaxed Amount"
msgstr ""
msgctxt "field:sale.promotion-product.category,category:"
msgid "Category"
msgstr ""
#, fuzzy
msgctxt "field:sale.promotion-product.category,promotion:"
msgid "Promotion"
msgstr "Promoção"
msgctxt "field:sale.promotion-product.product,product:"
msgid "Product"
msgstr "Produto"
msgctxt "field:sale.promotion-product.product,promotion:"
msgid "Promotion"
msgstr "Promoção"
msgctxt "help:sale.promotion,formula:"
msgid ""
"Python expression that will be evaluated with:\n"
"- unit_price: the original unit_price"
msgstr ""
"Expressão Python que será avaliada com:\n"
"- unit_price: o preço unitário original"
#, fuzzy
msgctxt "model:ir.action,name:act_promotion_form"
msgid "Promotions"
msgstr "Promotions"
#, fuzzy
msgctxt "model:ir.action,name:act_promotion_relate"
msgid "Sale Promotions"
msgstr "Sale Promotions"
#, fuzzy
msgctxt "model:ir.message,text:msg_invalid_formula"
msgid ""
"Invalid formula \"%(formula)s\" in promotion \"%(promotion)s\" 'with "
"exception \"%(exception)s\"."
msgstr ""
"Fórmula inválida \"%(formula)s\" na promoção \"%(promotion)s\" com a exceção"
" \"%(exception)s\"."
msgctxt "model:ir.rule.group,name:rule_group_promotion_companies"
msgid "User in companies"
msgstr ""
#, fuzzy
msgctxt "model:ir.ui.menu,name:menu_promotion"
msgid "Promotions"
msgstr "Promotions"
msgctxt "model:sale.promotion,name:"
msgid "Sale Promotion"
msgstr "Promoção de Venda"
msgctxt "model:sale.promotion-product.category,name:"
msgid "Sale Promotion - Product Category"
msgstr ""
msgctxt "model:sale.promotion-product.product,name:"
msgid "Sale Promotion - Product"
msgstr "Promoção de Venda - Produto"

View File

@@ -0,0 +1,125 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
#, fuzzy
msgctxt "field:sale.line,draft_unit_price:"
msgid "Draft Unit Price"
msgstr "Ciornă Preț unitar"
msgctxt "field:sale.line,promotion:"
msgid "Promotion"
msgstr "Promoție"
msgctxt "field:sale.promotion,amount:"
msgid "Amount"
msgstr "Suma"
msgctxt "field:sale.promotion,categories:"
msgid "Categories"
msgstr "Categorii"
msgctxt "field:sale.promotion,company:"
msgid "Company"
msgstr "Companie"
msgctxt "field:sale.promotion,currency:"
msgid "Currency"
msgstr "Monedă"
msgctxt "field:sale.promotion,end_date:"
msgid "End Date"
msgstr "Data de sfârşit"
msgctxt "field:sale.promotion,formula:"
msgid "Formula"
msgstr "Formulă"
msgctxt "field:sale.promotion,name:"
msgid "Name"
msgstr "Nume"
msgctxt "field:sale.promotion,price_list:"
msgid "Price List"
msgstr "Listă de prețuri"
msgctxt "field:sale.promotion,products:"
msgid "Products"
msgstr "Produse"
msgctxt "field:sale.promotion,quantity:"
msgid "Quantity"
msgstr "Cantitate"
msgctxt "field:sale.promotion,start_date:"
msgid "Start Date"
msgstr "Data de Început"
msgctxt "field:sale.promotion,unit:"
msgid "Unit"
msgstr "Unitate"
msgctxt "field:sale.promotion,untaxed_amount:"
msgid "Untaxed Amount"
msgstr "Sumă neimpozată"
msgctxt "field:sale.promotion-product.category,category:"
msgid "Category"
msgstr "Categorie"
msgctxt "field:sale.promotion-product.category,promotion:"
msgid "Promotion"
msgstr "Promoție"
msgctxt "field:sale.promotion-product.product,product:"
msgid "Product"
msgstr "Produs"
msgctxt "field:sale.promotion-product.product,promotion:"
msgid "Promotion"
msgstr "Promoție"
#, fuzzy
msgctxt "help:sale.promotion,formula:"
msgid ""
"Python expression that will be evaluated with:\n"
"- unit_price: the original unit_price"
msgstr ""
"Expresie Python care va fi evaluată cu:\n"
"- unit_price: unit_price inițial"
msgctxt "model:ir.action,name:act_promotion_form"
msgid "Promotions"
msgstr "Promoții"
msgctxt "model:ir.action,name:act_promotion_relate"
msgid "Sale Promotions"
msgstr "Promoții de vânzare"
msgctxt "model:ir.message,text:msg_invalid_formula"
msgid ""
"Invalid formula \"%(formula)s\" in promotion \"%(promotion)s\" 'with "
"exception \"%(exception)s\"."
msgstr ""
"Formula \"%(formula)s\" invalidă în promoția \"%(promotion)s\" cu excepția "
"\"%(exception)s\"."
msgctxt "model:ir.rule.group,name:rule_group_promotion_companies"
msgid "User in companies"
msgstr "Utilizator în Companii"
msgctxt "model:ir.ui.menu,name:menu_promotion"
msgid "Promotions"
msgstr "Promoții"
msgctxt "model:sale.promotion,name:"
msgid "Sale Promotion"
msgstr "Promoție de vânzare"
msgctxt "model:sale.promotion-product.category,name:"
msgid "Sale Promotion - Product Category"
msgstr "Promoție de vânzare - Categorie de produse"
msgctxt "model:sale.promotion-product.product,name:"
msgid "Sale Promotion - Product"
msgstr "Promoție de vânzare - Produs"

View File

@@ -0,0 +1,131 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:sale.line,draft_unit_price:"
msgid "Draft Unit Price"
msgstr ""
#, fuzzy
msgctxt "field:sale.line,promotion:"
msgid "Promotion"
msgstr "Promotions"
msgctxt "field:sale.promotion,amount:"
msgid "Amount"
msgstr ""
msgctxt "field:sale.promotion,categories:"
msgid "Categories"
msgstr ""
#, fuzzy
msgctxt "field:sale.promotion,company:"
msgid "Company"
msgstr "Учет.орг."
msgctxt "field:sale.promotion,currency:"
msgid "Currency"
msgstr ""
#, fuzzy
msgctxt "field:sale.promotion,end_date:"
msgid "End Date"
msgstr "Дата окончания"
msgctxt "field:sale.promotion,formula:"
msgid "Formula"
msgstr ""
#, fuzzy
msgctxt "field:sale.promotion,name:"
msgid "Name"
msgstr "Правило оплаты"
msgctxt "field:sale.promotion,price_list:"
msgid "Price List"
msgstr ""
#, fuzzy
msgctxt "field:sale.promotion,products:"
msgid "Products"
msgstr "Продукция"
#, fuzzy
msgctxt "field:sale.promotion,quantity:"
msgid "Quantity"
msgstr "Кол-во"
#, fuzzy
msgctxt "field:sale.promotion,start_date:"
msgid "Start Date"
msgstr "Дата начала"
#, fuzzy
msgctxt "field:sale.promotion,unit:"
msgid "Unit"
msgstr "Штука"
msgctxt "field:sale.promotion,untaxed_amount:"
msgid "Untaxed Amount"
msgstr ""
msgctxt "field:sale.promotion-product.category,category:"
msgid "Category"
msgstr ""
#, fuzzy
msgctxt "field:sale.promotion-product.category,promotion:"
msgid "Promotion"
msgstr "Promotions"
#, fuzzy
msgctxt "field:sale.promotion-product.product,product:"
msgid "Product"
msgstr "Товарно материальные ценности (ТМЦ)"
#, fuzzy
msgctxt "field:sale.promotion-product.product,promotion:"
msgid "Promotion"
msgstr "Promotions"
msgctxt "help:sale.promotion,formula:"
msgid ""
"Python expression that will be evaluated with:\n"
"- unit_price: the original unit_price"
msgstr ""
msgctxt "model:ir.action,name:act_promotion_form"
msgid "Promotions"
msgstr "Promotions"
msgctxt "model:ir.action,name:act_promotion_relate"
msgid "Sale Promotions"
msgstr "Sale Promotions"
msgctxt "model:ir.message,text:msg_invalid_formula"
msgid ""
"Invalid formula \"%(formula)s\" in promotion \"%(promotion)s\" 'with "
"exception \"%(exception)s\"."
msgstr ""
msgctxt "model:ir.rule.group,name:rule_group_promotion_companies"
msgid "User in companies"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_promotion"
msgid "Promotions"
msgstr "Promotions"
#, fuzzy
msgctxt "model:sale.promotion,name:"
msgid "Sale Promotion"
msgstr "Sale Promotions"
msgctxt "model:sale.promotion-product.category,name:"
msgid "Sale Promotion - Product Category"
msgstr ""
msgctxt "model:sale.promotion-product.product,name:"
msgid "Sale Promotion - Product"
msgstr ""

View File

@@ -0,0 +1,128 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:sale.line,draft_unit_price:"
msgid "Draft Unit Price"
msgstr "Cena v pripravi"
msgctxt "field:sale.line,promotion:"
msgid "Promotion"
msgstr "Spodbuda"
msgctxt "field:sale.promotion,amount:"
msgid "Amount"
msgstr ""
msgctxt "field:sale.promotion,categories:"
msgid "Categories"
msgstr ""
msgctxt "field:sale.promotion,company:"
msgid "Company"
msgstr "Družba"
msgctxt "field:sale.promotion,currency:"
msgid "Currency"
msgstr ""
msgctxt "field:sale.promotion,end_date:"
msgid "End Date"
msgstr "Končni datum"
msgctxt "field:sale.promotion,formula:"
msgid "Formula"
msgstr "Formula"
msgctxt "field:sale.promotion,name:"
msgid "Name"
msgstr "Naziv"
msgctxt "field:sale.promotion,price_list:"
msgid "Price List"
msgstr "Cenik"
msgctxt "field:sale.promotion,products:"
msgid "Products"
msgstr "Izdelki"
msgctxt "field:sale.promotion,quantity:"
msgid "Quantity"
msgstr "Količina"
msgctxt "field:sale.promotion,start_date:"
msgid "Start Date"
msgstr "Začetni datum"
msgctxt "field:sale.promotion,unit:"
msgid "Unit"
msgstr "enota"
msgctxt "field:sale.promotion,untaxed_amount:"
msgid "Untaxed Amount"
msgstr ""
msgctxt "field:sale.promotion-product.category,category:"
msgid "Category"
msgstr ""
#, fuzzy
msgctxt "field:sale.promotion-product.category,promotion:"
msgid "Promotion"
msgstr "Spodbuda"
msgctxt "field:sale.promotion-product.product,product:"
msgid "Product"
msgstr "Izdelek"
msgctxt "field:sale.promotion-product.product,promotion:"
msgid "Promotion"
msgstr "Spodbuda"
msgctxt "help:sale.promotion,formula:"
msgid ""
"Python expression that will be evaluated with:\n"
"- unit_price: the original unit_price"
msgstr ""
"Pythonski izraz, preračunan z:\n"
"- unit_price: izvorna cena"
#, fuzzy
msgctxt "model:ir.action,name:act_promotion_form"
msgid "Promotions"
msgstr "Promotions"
#, fuzzy
msgctxt "model:ir.action,name:act_promotion_relate"
msgid "Sale Promotions"
msgstr "Sale Promotions"
#, fuzzy
msgctxt "model:ir.message,text:msg_invalid_formula"
msgid ""
"Invalid formula \"%(formula)s\" in promotion \"%(promotion)s\" 'with "
"exception \"%(exception)s\"."
msgstr ""
"Neveljavna formula \"%(formula)s\" v spodbude \"%(promotion)s\" z napako "
"\"%(exception)s\"."
msgctxt "model:ir.rule.group,name:rule_group_promotion_companies"
msgid "User in companies"
msgstr ""
#, fuzzy
msgctxt "model:ir.ui.menu,name:menu_promotion"
msgid "Promotions"
msgstr "Promotions"
msgctxt "model:sale.promotion,name:"
msgid "Sale Promotion"
msgstr "Spodbuda prodaje"
msgctxt "model:sale.promotion-product.category,name:"
msgid "Sale Promotion - Product Category"
msgstr ""
msgctxt "model:sale.promotion-product.product,name:"
msgid "Sale Promotion - Product"
msgstr "Spodbuda prodaje - Izdelek"

View File

@@ -0,0 +1,123 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:sale.line,draft_unit_price:"
msgid "Draft Unit Price"
msgstr ""
#, fuzzy
msgctxt "field:sale.line,promotion:"
msgid "Promotion"
msgstr "Promotions"
msgctxt "field:sale.promotion,amount:"
msgid "Amount"
msgstr ""
msgctxt "field:sale.promotion,categories:"
msgid "Categories"
msgstr ""
msgctxt "field:sale.promotion,company:"
msgid "Company"
msgstr ""
msgctxt "field:sale.promotion,currency:"
msgid "Currency"
msgstr ""
msgctxt "field:sale.promotion,end_date:"
msgid "End Date"
msgstr ""
msgctxt "field:sale.promotion,formula:"
msgid "Formula"
msgstr ""
msgctxt "field:sale.promotion,name:"
msgid "Name"
msgstr ""
msgctxt "field:sale.promotion,price_list:"
msgid "Price List"
msgstr ""
msgctxt "field:sale.promotion,products:"
msgid "Products"
msgstr ""
msgctxt "field:sale.promotion,quantity:"
msgid "Quantity"
msgstr ""
msgctxt "field:sale.promotion,start_date:"
msgid "Start Date"
msgstr ""
msgctxt "field:sale.promotion,unit:"
msgid "Unit"
msgstr ""
msgctxt "field:sale.promotion,untaxed_amount:"
msgid "Untaxed Amount"
msgstr ""
msgctxt "field:sale.promotion-product.category,category:"
msgid "Category"
msgstr ""
#, fuzzy
msgctxt "field:sale.promotion-product.category,promotion:"
msgid "Promotion"
msgstr "Promotions"
msgctxt "field:sale.promotion-product.product,product:"
msgid "Product"
msgstr ""
#, fuzzy
msgctxt "field:sale.promotion-product.product,promotion:"
msgid "Promotion"
msgstr "Promotions"
msgctxt "help:sale.promotion,formula:"
msgid ""
"Python expression that will be evaluated with:\n"
"- unit_price: the original unit_price"
msgstr ""
msgctxt "model:ir.action,name:act_promotion_form"
msgid "Promotions"
msgstr "Promotions"
msgctxt "model:ir.action,name:act_promotion_relate"
msgid "Sale Promotions"
msgstr "Sale Promotions"
msgctxt "model:ir.message,text:msg_invalid_formula"
msgid ""
"Invalid formula \"%(formula)s\" in promotion \"%(promotion)s\" 'with "
"exception \"%(exception)s\"."
msgstr ""
msgctxt "model:ir.rule.group,name:rule_group_promotion_companies"
msgid "User in companies"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_promotion"
msgid "Promotions"
msgstr "Promotions"
#, fuzzy
msgctxt "model:sale.promotion,name:"
msgid "Sale Promotion"
msgstr "Sale Promotions"
msgctxt "model:sale.promotion-product.category,name:"
msgid "Sale Promotion - Product Category"
msgstr ""
msgctxt "model:sale.promotion-product.product,name:"
msgid "Sale Promotion - Product"
msgstr ""

View File

@@ -0,0 +1,119 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:sale.line,draft_unit_price:"
msgid "Draft Unit Price"
msgstr ""
msgctxt "field:sale.line,promotion:"
msgid "Promotion"
msgstr ""
msgctxt "field:sale.promotion,amount:"
msgid "Amount"
msgstr ""
msgctxt "field:sale.promotion,categories:"
msgid "Categories"
msgstr ""
msgctxt "field:sale.promotion,company:"
msgid "Company"
msgstr ""
msgctxt "field:sale.promotion,currency:"
msgid "Currency"
msgstr ""
msgctxt "field:sale.promotion,end_date:"
msgid "End Date"
msgstr ""
msgctxt "field:sale.promotion,formula:"
msgid "Formula"
msgstr ""
msgctxt "field:sale.promotion,name:"
msgid "Name"
msgstr ""
msgctxt "field:sale.promotion,price_list:"
msgid "Price List"
msgstr ""
msgctxt "field:sale.promotion,products:"
msgid "Products"
msgstr ""
msgctxt "field:sale.promotion,quantity:"
msgid "Quantity"
msgstr ""
msgctxt "field:sale.promotion,start_date:"
msgid "Start Date"
msgstr ""
msgctxt "field:sale.promotion,unit:"
msgid "Unit"
msgstr ""
msgctxt "field:sale.promotion,untaxed_amount:"
msgid "Untaxed Amount"
msgstr ""
msgctxt "field:sale.promotion-product.category,category:"
msgid "Category"
msgstr ""
msgctxt "field:sale.promotion-product.category,promotion:"
msgid "Promotion"
msgstr ""
msgctxt "field:sale.promotion-product.product,product:"
msgid "Product"
msgstr ""
msgctxt "field:sale.promotion-product.product,promotion:"
msgid "Promotion"
msgstr ""
msgctxt "help:sale.promotion,formula:"
msgid ""
"Python expression that will be evaluated with:\n"
"- unit_price: the original unit_price"
msgstr ""
msgctxt "model:ir.action,name:act_promotion_form"
msgid "Promotions"
msgstr ""
msgctxt "model:ir.action,name:act_promotion_relate"
msgid "Sale Promotions"
msgstr ""
msgctxt "model:ir.message,text:msg_invalid_formula"
msgid ""
"Invalid formula \"%(formula)s\" in promotion \"%(promotion)s\" 'with "
"exception \"%(exception)s\"."
msgstr ""
msgctxt "model:ir.rule.group,name:rule_group_promotion_companies"
msgid "User in companies"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_promotion"
msgid "Promotions"
msgstr ""
msgctxt "model:sale.promotion,name:"
msgid "Sale Promotion"
msgstr ""
msgctxt "model:sale.promotion-product.category,name:"
msgid "Sale Promotion - Product Category"
msgstr ""
msgctxt "model:sale.promotion-product.product,name:"
msgid "Sale Promotion - Product"
msgstr ""

View File

@@ -0,0 +1,124 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:sale.line,draft_unit_price:"
msgid "Draft Unit Price"
msgstr ""
#, fuzzy
msgctxt "field:sale.line,promotion:"
msgid "Promotion"
msgstr "Promotions"
msgctxt "field:sale.promotion,amount:"
msgid "Amount"
msgstr ""
msgctxt "field:sale.promotion,categories:"
msgid "Categories"
msgstr ""
msgctxt "field:sale.promotion,company:"
msgid "Company"
msgstr ""
msgctxt "field:sale.promotion,currency:"
msgid "Currency"
msgstr ""
msgctxt "field:sale.promotion,end_date:"
msgid "End Date"
msgstr ""
msgctxt "field:sale.promotion,formula:"
msgid "Formula"
msgstr ""
#, fuzzy
msgctxt "field:sale.promotion,name:"
msgid "Name"
msgstr "纳木"
msgctxt "field:sale.promotion,price_list:"
msgid "Price List"
msgstr ""
msgctxt "field:sale.promotion,products:"
msgid "Products"
msgstr ""
msgctxt "field:sale.promotion,quantity:"
msgid "Quantity"
msgstr ""
msgctxt "field:sale.promotion,start_date:"
msgid "Start Date"
msgstr ""
msgctxt "field:sale.promotion,unit:"
msgid "Unit"
msgstr ""
msgctxt "field:sale.promotion,untaxed_amount:"
msgid "Untaxed Amount"
msgstr ""
msgctxt "field:sale.promotion-product.category,category:"
msgid "Category"
msgstr ""
#, fuzzy
msgctxt "field:sale.promotion-product.category,promotion:"
msgid "Promotion"
msgstr "Promotions"
msgctxt "field:sale.promotion-product.product,product:"
msgid "Product"
msgstr ""
#, fuzzy
msgctxt "field:sale.promotion-product.product,promotion:"
msgid "Promotion"
msgstr "Promotions"
msgctxt "help:sale.promotion,formula:"
msgid ""
"Python expression that will be evaluated with:\n"
"- unit_price: the original unit_price"
msgstr ""
msgctxt "model:ir.action,name:act_promotion_form"
msgid "Promotions"
msgstr "Promotions"
msgctxt "model:ir.action,name:act_promotion_relate"
msgid "Sale Promotions"
msgstr "Sale Promotions"
msgctxt "model:ir.message,text:msg_invalid_formula"
msgid ""
"Invalid formula \"%(formula)s\" in promotion \"%(promotion)s\" 'with "
"exception \"%(exception)s\"."
msgstr ""
msgctxt "model:ir.rule.group,name:rule_group_promotion_companies"
msgid "User in companies"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_promotion"
msgid "Promotions"
msgstr "Promotions"
#, fuzzy
msgctxt "model:sale.promotion,name:"
msgid "Sale Promotion"
msgstr "Sale Promotions"
msgctxt "model:sale.promotion-product.category,name:"
msgid "Sale Promotion - Product Category"
msgstr ""
msgctxt "model:sale.promotion-product.product,name:"
msgid "Sale Promotion - Product"
msgstr ""

View File

@@ -0,0 +1,10 @@
<?xml version="1.0"?>
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
this repository contains the full copyright notices and license terms. -->
<tryton>
<data grouped="1">
<record model="ir.message" id="msg_invalid_formula">
<field name="text">Invalid formula "%(formula)s" in promotion "%(promotion)s" 'with exception "%(exception)s".</field>
</record>
</data>
</tryton>

342
modules/sale_promotion/sale.py Executable file
View File

@@ -0,0 +1,342 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
import datetime
from decimal import Decimal
from simpleeval import simple_eval
from trytond.i18n import gettext
from trytond.model import (
DeactivableMixin, MatchMixin, ModelSQL, ModelView, Workflow, fields)
from trytond.modules.currency.fields import Monetary
from trytond.modules.product import price_digits, round_price
from trytond.modules.product_price_list import Null
from trytond.pool import Pool, PoolMeta
from trytond.pyson import Bool, Eval, If
from trytond.tools import decistmt
from trytond.transaction import Transaction
from .exceptions import FormulaError
class Sale(metaclass=PoolMeta):
__name__ = 'sale.sale'
@classmethod
@ModelView.button
@Workflow.transition('draft')
def draft(cls, sales):
super(Sale, cls).draft(sales)
# Reset to draft unit price
for sale in sales:
changed = False
for line in sale.lines:
if line.type != 'line':
continue
if line.draft_unit_price is not None:
line.unit_price = line.draft_unit_price
line.draft_unit_price = None
changed = True
if line.promotion:
line.promotion = None
changed = True
if changed:
sale.lines = sale.lines # Trigger changes
cls.save(sales)
@classmethod
@ModelView.button
@Workflow.transition('quotation')
def quote(cls, sales):
super(Sale, cls).quote(sales)
# Store draft unit price before changing it
for sale in sales:
for line in sale.lines:
if line.type != 'line':
continue
if line.draft_unit_price is None:
line.draft_unit_price = line.unit_price
sale.apply_promotion()
cls.save(sales)
def apply_promotion(self):
'Apply promotion'
pool = Pool()
Promotion = pool.get('sale.promotion')
promotions = Promotion.get_promotions(self)
for promotion in promotions:
promotion.apply(self)
class Line(metaclass=PoolMeta):
__name__ = 'sale.line'
draft_unit_price = fields.Numeric('Draft Unit Price',
digits=price_digits, readonly=True)
promotion = fields.Many2One('sale.promotion', 'Promotion',
ondelete='RESTRICT',
domain=[
('company', '=', Eval('_parent_sale', {}).get('company', -1)),
],
depends={'sale'})
class Promotion(
DeactivableMixin, ModelSQL, ModelView, MatchMixin):
'Sale Promotion'
__name__ = 'sale.promotion'
name = fields.Char('Name', translate=True, required=True)
company = fields.Many2One(
'company.company', "Company", required=True,
states={
'readonly': Eval('id', 0) > 0,
})
start_date = fields.Date('Start Date',
domain=['OR',
('start_date', '<=', If(~Eval('end_date', None),
datetime.date.max,
Eval('end_date', datetime.date.max))),
('start_date', '=', None),
])
end_date = fields.Date('End Date',
domain=['OR',
('end_date', '>=', If(~Eval('start_date', None),
datetime.date.min,
Eval('start_date', datetime.date.min))),
('end_date', '=', None),
])
price_list = fields.Many2One('product.price_list', 'Price List',
ondelete='CASCADE',
domain=[
('company', '=', Eval('company', -1)),
])
amount = Monetary("Amount", currency='currency', digits='currency')
currency = fields.Many2One(
'currency.currency', "Currency",
states={
'required': Bool(Eval('amount', 0)),
})
untaxed_amount = fields.Boolean(
"Untaxed Amount",
states={
'invisible': ~Eval('amount'),
})
quantity = fields.Float('Quantity', digits='unit')
unit = fields.Many2One('product.uom', 'Unit',
states={
'required': Bool(Eval('quantity', 0)),
})
products = fields.Many2Many(
'sale.promotion-product.product', 'promotion', 'product', "Products",
context={
'company': Eval('company', -1),
},
depends={'company'})
categories = fields.Many2Many(
'sale.promotion-product.category', 'promotion', 'category',
"Categories",
context={
'company': Eval('company', -1),
},
depends={'company'})
formula = fields.Char('Formula', required=True,
help=('Python expression that will be evaluated with:\n'
'- unit_price: the original unit_price'))
@staticmethod
def default_company():
return Transaction().context.get('company')
@classmethod
def default_untaxed_amount(cls):
return False
@classmethod
def validate_fields(cls, promotions, field_names):
super().validate_fields(promotions, field_names)
cls.check_formula(promotions, field_names)
@classmethod
def check_formula(cls, promotions, field_names=None):
if field_names and 'formula' not in field_names:
return
for promotion in promotions:
context = promotion.get_context_formula(None)
try:
unit_price = promotion.get_unit_price(**context)
if not isinstance(unit_price, Decimal):
raise ValueError('Not a Decimal')
except Exception as exception:
raise FormulaError(
gettext('sale_promotion.msg_invalid_formula',
formula=promotion.formula,
promotion=promotion.rec_name,
exception=exception)) from exception
@classmethod
def _promotions_domain(cls, sale):
pool = Pool()
Date = pool.get('ir.date')
with Transaction().set_context(company=sale.company.id):
sale_date = sale.sale_date or Date.today()
return [
['OR',
('start_date', '<=', sale_date),
('start_date', '=', None),
],
['OR',
('end_date', '=', None),
('end_date', '>=', sale_date),
],
['OR',
('price_list', '=', None),
('price_list', '=',
sale.price_list.id if sale.price_list else None),
],
('company', '=', sale.company.id),
]
@classmethod
def get_promotions(cls, sale, pattern=None):
'Yield promotions that apply to sale'
promotions = cls.search(cls._promotions_domain(sale))
if pattern is None:
pattern = {}
for promotion in promotions:
ppattern = pattern.copy()
ppattern.update(promotion.get_pattern(sale))
if promotion.match(ppattern):
yield promotion
def get_pattern(self, sale):
pool = Pool()
Currency = pool.get('currency.currency')
Uom = pool.get('product.uom')
Sale = pool.get('sale.sale')
pattern = {}
if self.currency:
amount = self.get_sale_amount(Sale(sale.id))
pattern['amount'] = Currency.compute(
sale.currency, amount, self.currency)
if self.unit:
quantity = 0
for line in sale.lines:
if line.type != 'line':
continue
if self.is_valid_sale_line(line):
quantity += Uom.compute_qty(line.unit, line.quantity,
self.unit)
pattern['quantity'] = quantity
return pattern
def match(self, pattern):
def sign(amount):
return Decimal(1).copy_sign(amount)
if 'quantity' in pattern:
pattern = pattern.copy()
if (self.quantity or 0) > pattern.pop('quantity'):
return False
if 'amount' in pattern:
pattern = pattern.copy()
amount = pattern.pop('amount')
if (sign(self.amount or 0) * sign(amount) >= 0
and abs(self.amount or 0) > abs(amount)):
return False
return super().match(pattern)
def get_sale_amount(self, sale):
if self.untaxed_amount:
return sale.untaxed_amount
else:
return sale.total_amount
def is_valid_sale_line(self, line):
def parents(categories):
for category in categories:
while category:
yield category
category = category.parent
if line.quantity <= 0 or line.unit_price <= 0:
return False
elif self.unit and line.unit.category != self.unit.category:
return False
elif self.products and line.product not in self.products:
return False
elif self.categories:
if not line.product:
return False
categories = set(parents(line.product.categories_all))
if not categories.intersection(self.categories):
return False
return True
def apply(self, sale):
applied = False
for line in sale.lines:
if line.type != 'line':
continue
if not self.is_valid_sale_line(line):
continue
context = self.get_context_formula(line)
new_price = self.get_unit_price(**context)
if new_price is not None:
if new_price < 0:
new_price = Decimal(0)
if line.unit_price >= new_price:
line.unit_price = round_price(new_price)
line.promotion = self
applied = True
if applied:
sale.lines = sale.lines # Trigger the change
def get_context_formula(self, sale_line):
pool = Pool()
Product = pool.get('product.product')
if sale_line:
with Transaction().set_context(
sale_line._get_context_sale_price()):
prices = Product.get_sale_price([sale_line.product])
unit_price = prices[sale_line.product.id]
else:
unit_price = Decimal(0)
return {
'names': {
'unit_price': unit_price if unit_price is not None else Null(),
},
}
def get_unit_price(self, **context):
'Return unit price (as Decimal)'
context.setdefault('functions', {})['Decimal'] = Decimal
unit_price = simple_eval(decistmt(self.formula), **context)
unit_price = max(unit_price, Decimal(0))
if isinstance(unit_price, Null):
unit_price = None
return unit_price
class Promotion_Product(ModelSQL):
'Sale Promotion - Product'
__name__ = 'sale.promotion-product.product'
promotion = fields.Many2One(
'sale.promotion', "Promotion", required=True, ondelete='CASCADE')
product = fields.Many2One('product.product', 'Product',
required=True, ondelete='CASCADE')
class Promotion_ProductCategory(ModelSQL):
"Sale Promotion - Product Category"
__name__ = 'sale.promotion-product.category'
promotion = fields.Many2One(
'sale.promotion', "Promotion", required=True, ondelete='CASCADE')
category = fields.Many2One(
'product.category', "Category",
required=True, ondelete='CASCADE')

84
modules/sale_promotion/sale.xml Executable file
View File

@@ -0,0 +1,84 @@
<?xml version="1.0"?>
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
this repository contains the full copyright notices and license terms. -->
<tryton>
<data>
<record model="ir.ui.view" id="promotion_view_form">
<field name="model">sale.promotion</field>
<field name="type">form</field>
<field name="name">promotion_form</field>
</record>
<record model="ir.ui.view" id="promotion_view_list">
<field name="model">sale.promotion</field>
<field name="type">tree</field>
<field name="name">promotion_list</field>
</record>
<record model="ir.action.act_window" id="act_promotion_form">
<field name="name">Promotions</field>
<field name="res_model">sale.promotion</field>
<field name="search_value"
eval="['OR', ('end_date', '>=', Date()), ('end_date', '=', None)]"
pyson="1"/>
</record>
<record model="ir.action.act_window.view" id="act_promotion_form_view1">
<field name="sequence" eval="10"/>
<field name="view" ref="promotion_view_list"/>
<field name="act_window" ref="act_promotion_form"/>
</record>
<record model="ir.action.act_window.view" id="act_promotion_form_view2">
<field name="sequence" eval="20"/>
<field name="view" ref="promotion_view_form"/>
<field name="act_window" ref="act_promotion_form"/>
</record>
<menuitem
parent="sale.menu_configuration"
action="act_promotion_form"
sequence="30"
id="menu_promotion"/>
<record model="ir.action.act_window" id="act_promotion_relate">
<field name="name">Sale Promotions</field>
<field name="res_model">sale.promotion</field>
<field name="domain"
eval="[If(Eval('active_ids', []) == [Eval('active_id')], ('price_list', '=', Eval('active_id')), ('price_list', 'in', Eval('active_ids')))]"
pyson="1"/>
<field name="search_value"
eval="['OR', ('end_date', '>=', Date()), ('end_date', '=', None)]"
pyson="1"/>
</record>
<record model="ir.action.keyword" id="act_promotion_relate_keyword1">
<field name="keyword">form_relate</field>
<field name="model">product.price_list,-1</field>
<field name="action" ref="act_promotion_relate"/>
</record>
<record model="ir.rule.group" id="rule_group_promotion_companies">
<field name="name">User in companies</field>
<field name="model">sale.promotion</field>
<field name="global_p" eval="True"/>
</record>
<record model="ir.rule" id="rule_promotion_companies">
<field name="domain"
eval="[('company', 'in', Eval('companies', []))]"
pyson="1"/>
<field name="rule_group" ref="rule_group_promotion_companies"/>
</record>
<record model="ir.model.access" id="access_promotion">
<field name="model">sale.promotion</field>
<field name="perm_read" eval="True"/>
<field name="perm_write" eval="False"/>
<field name="perm_create" eval="False"/>
<field name="perm_delete" eval="False"/>
</record>
<record model="ir.model.access" id="access_promotion_sale_admin">
<field name="model">sale.promotion</field>
<field name="group" ref="sale.group_sale_admin"/>
<field name="perm_read" eval="True"/>
<field name="perm_write" eval="True"/>
<field name="perm_create" eval="True"/>
<field name="perm_delete" eval="True"/>
</record>
</data>
</tryton>

View File

@@ -0,0 +1,2 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.

View File

@@ -0,0 +1,150 @@
=======================
Sale Promotion Scenario
=======================
Imports::
>>> import datetime
>>> from decimal import Decimal
>>> from proteus import Model
>>> from trytond.modules.account.tests.tools import create_chart, get_accounts
>>> from trytond.modules.account_invoice.tests.tools import create_payment_term
>>> from trytond.modules.company.tests.tools import create_company, get_company
>>> from trytond.tests.tools import activate_modules
Activate modules::
>>> config = activate_modules('sale_promotion')
Create company::
>>> _ = create_company()
>>> company = get_company()
Create chart of accounts::
>>> _ = create_chart(company)
>>> accounts = get_accounts(company)
>>> revenue = accounts['revenue']
Create customer::
>>> Party = Model.get('party.party')
>>> customer = Party(name='Customer')
>>> customer.save()
Create account category::
>>> ProductCategory = Model.get('product.category')
>>> account_category = ProductCategory(name="Account Category")
>>> account_category.accounting = True
>>> account_category.account_revenue = revenue
>>> account_category.save()
Create products::
>>> ProductUom = Model.get('product.uom')
>>> ProductTemplate = Model.get('product.template')
>>> Product = Model.get('product.product')
>>> Category = Model.get('product.category')
>>> category = Category(name="Root")
>>> category1 = category.childs.new(name="Child 1")
>>> category1b = category1.childs.new(name="Child 1b")
>>> category2 = category.childs.new(name="Child 2")
>>> category.save()
>>> category1, category2 = category.childs
>>> category1b, = category1.childs
>>> unit, = ProductUom.find([('name', '=', 'Unit')])
>>> template = ProductTemplate()
>>> template.name = 'Product'
>>> template.default_uom = unit
>>> template.type = 'goods'
>>> template.salable = True
>>> template.lead_time = datetime.timedelta(0)
>>> template.list_price = Decimal('20')
>>> template.account_category = account_category
>>> template.categories.append(Category(category1b.id))
>>> template.save()
>>> product1 = Product()
>>> product1.template = template
>>> product1.save()
>>> product2 = Product()
>>> product2.template = template
>>> product2.save()
>>> product3 = Product()
>>> product3.template = template
>>> product3.save()
>>> template4, = template.duplicate(default={'categories': [category2.id]})
>>> product4 = Product(template4.products[0].id)
Create payment term::
>>> payment_term = create_payment_term()
>>> payment_term.save()
Create Promotion::
>>> Promotion = Model.get('sale.promotion')
>>> promotion = Promotion(name='10% on 10 products 1 or 2')
>>> promotion.quantity = 10
>>> promotion.unit = unit
>>> promotion.products.extend([product1, product2, product4])
>>> promotion.categories.append(Category(category1.id))
>>> promotion.formula = '0.9 * unit_price'
>>> promotion.save()
Sale enough products for promotion::
>>> Sale = Model.get('sale.sale')
>>> sale = Sale()
>>> sale.party = customer
>>> sale.payment_term = payment_term
>>> sale_line = sale.lines.new()
>>> sale_line.product = product1
>>> sale_line.quantity = 5
>>> sale_line = sale.lines.new()
>>> sale_line.product = product2
>>> sale_line.quantity = 10
>>> sale_line = sale.lines.new()
>>> sale_line.product = product3
>>> sale_line.quantity = 5
>>> sale_line = sale.lines.new()
>>> sale_line.product = product4
>>> sale_line.quantity = 5
>>> sale.save()
>>> sale.untaxed_amount
Decimal('500.00')
>>> sale.click('quote')
>>> sale.untaxed_amount
Decimal('470.00')
Go back to draft reset the original price::
>>> sale.click('draft')
>>> sale.untaxed_amount
Decimal('500.00')
Sale not enough products for promotion::
>>> sale = Sale()
>>> sale.party = customer
>>> sale.payment_term = payment_term
>>> sale_line = sale.lines.new()
>>> sale_line.product = product1
>>> sale_line.quantity = 5
>>> sale_line = sale.lines.new()
>>> sale_line.product = product2
>>> sale_line.quantity = 3
>>> sale_line = sale.lines.new()
>>> sale_line.product = product3
>>> sale_line.quantity = 10
>>> sale.save()
>>> sale.untaxed_amount
Decimal('360.00')
>>> sale.click('quote')
>>> sale.untaxed_amount
Decimal('360.00')

View File

@@ -0,0 +1,92 @@
==============================
Sale Promotion Amount Scenario
==============================
Imports::
>>> from decimal import Decimal
>>> from proteus import Model
>>> from trytond.modules.company.tests.tools import create_company, get_company
>>> from trytond.tests.tools import activate_modules
Activate modules::
>>> config = activate_modules('sale_promotion')
Create company::
>>> _ = create_company()
>>> company = get_company()
Create customer::
>>> Party = Model.get('party.party')
>>> customer = Party(name='Customer')
>>> customer.save()
Create products::
>>> ProductUom = Model.get('product.uom')
>>> ProductTemplate = Model.get('product.template')
>>> Product = Model.get('product.product')
>>> unit, = ProductUom.find([('name', '=', 'Unit')])
>>> template = ProductTemplate()
>>> template.name = 'Product'
>>> template.default_uom = unit
>>> template.type = 'goods'
>>> template.salable = True
>>> template.list_price = Decimal('20')
>>> template.save()
>>> product1 = Product()
>>> product1.template = template
>>> product1.save()
>>> product2 = Product()
>>> product2.template = template
>>> product2.save()
Create Promotion::
>>> Promotion = Model.get('sale.promotion')
>>> promotion = Promotion(name='product 2 free')
>>> promotion.amount = Decimal('100')
>>> promotion.currency = company.currency
>>> promotion.products.extend([product2])
>>> promotion.formula = '0.0'
>>> promotion.save()
Sale enough for promotion::
>>> Sale = Model.get('sale.sale')
>>> sale = Sale()
>>> sale.party = customer
>>> sale_line = sale.lines.new()
>>> sale_line.product = product1
>>> sale_line.quantity = 4
>>> sale_line = sale.lines.new()
>>> sale_line.product = product2
>>> sale_line.quantity = 2
>>> sale.save()
>>> sale.total_amount
Decimal('120.00')
>>> sale.click('quote')
>>> sale.untaxed_amount
Decimal('80.00')
Sale not enough for promotion::
>>> sale = Sale()
>>> sale.party = customer
>>> sale_line = sale.lines.new()
>>> sale_line.product = product1
>>> sale_line.quantity = 2
>>> sale_line = sale.lines.new()
>>> sale_line.product = product2
>>> sale_line.quantity = 2
>>> sale.save()
>>> sale.total_amount
Decimal('80.00')
>>> sale.click('quote')
>>> sale.untaxed_amount
Decimal('80.00')

View File

@@ -0,0 +1,13 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
from trytond.modules.company.tests import CompanyTestMixin
from trytond.tests.test_tryton import ModuleTestCase
class SalePromotionTestCase(CompanyTestMixin, ModuleTestCase):
'Test Sale Promotion module'
module = 'sale_promotion'
del ModuleTestCase

View File

@@ -0,0 +1,8 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
from trytond.tests.test_tryton import load_doc_tests
def load_tests(*args, **kwargs):
return load_doc_tests(__name__, __file__, *args, **kwargs)

View File

@@ -0,0 +1,14 @@
[tryton]
version=7.2.1
depends:
company
currency
ir
product
product_price_list
res
sale
sale_price_list
xml:
sale.xml
message.xml

View File

@@ -0,0 +1,42 @@
<?xml version="1.0"?>
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
this repository contains the full copyright notices and license terms. -->
<form col="6">
<label name="name"/>
<field name="name"/>
<label name="company"/>
<field name="company"/>
<label name="active"/>
<field name="active"/>
<label name="start_date"/>
<field name="start_date"/>
<label name="end_date"/>
<field name="end_date"/>
<label name="price_list"/>
<field name="price_list"/>
<label name="formula"/>
<field name="formula" colspan="5"/>
<separator id="pattern" colspan="6"/>
<label name="amount"/>
<field name="amount" symbol=""/>
<label name="currency"/>
<field name="currency"/>
<group id="amount" col="-1" colspan="2">
<label name="untaxed_amount"/>
<field name="untaxed_amount" xexpand="0" width="25"/>
</group>
<label name="quantity"/>
<field name="quantity"/>
<label name="unit"/>
<field name="unit"/>
<newline/>
<group id="categories_products" col="-1" colspan="6" yexpand="1">
<field name="categories"/>
<field name="products" view_ids="product.product_view_tree_simple"/>
</group>
</form>

View File

@@ -0,0 +1,9 @@
<?xml version="1.0"?>
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
this repository contains the full copyright notices and license terms. -->
<tree>
<field name="company" expand="1" optional="1"/>
<field name="name" expand="2"/>
<field name="start_date"/>
<field name="end_date"/>
</tree>