first commit

This commit is contained in:
root
2026-03-14 09:42:12 +00:00
commit 0adbd20c2c
10991 changed files with 1646955 additions and 0 deletions

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,95 @@
# 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 import fields
from trytond.pool import Pool, PoolMeta
from trytond.report import Report
from trytond.tools import cached_property
class Invoice(metaclass=PoolMeta):
__name__ = 'account.invoice'
def get_sale_rentals(self, name):
pool = Pool()
RentalProgress = pool.get('sale.rental.progress')
rentals = set(super().get_sale_rentals(name))
for line in self.lines:
if isinstance(line.origin, RentalProgress):
rentals.add(line.origin.rental.id)
return list(rentals)
@classmethod
def search_sale_rentals(cls, name, clause):
domain = super().search_sale_rentals(name, clause)
operator = clause[1]
if operator.startswith('!') or operator.startswith('not '):
bool_op = 'AND'
else:
bool_op = 'OR'
return [bool_op,
domain,
('lines.origin.rental' + clause[0][len(name):],
*clause[1:3], 'sale.rental.progress', *clause[3:]),
]
class InvoiceLine(metaclass=PoolMeta):
__name__ = 'account.invoice.line'
@fields.depends('product', 'origin')
def on_change_product(self):
pool = Pool()
RentalProgress = pool.get('sale.rental.progress')
super().on_change_product()
if self.product and isinstance(self.origin, RentalProgress):
# Prevent warning from Invoice._check_taxes
if self.origin.lines:
self.taxes = self.origin.lines[0].taxes
else:
self.taxes = []
@cached_property
def product_name(self):
pool = Pool()
RentalLine = pool.get('sale.rental.line')
RentalProgress = pool.get('sale.rental.progress')
Lang = pool.get('ir.lang')
lang = Lang.get()
name = super().product_name
if isinstance(self.origin, RentalProgress):
converter = RentalLine.duration.converter
duration = Report.format_timedelta(
self.origin.duration, converter=converter, lang=lang)
start = lang.strftime(self.origin.start)
end = lang.strftime(self.origin.end)
name = f'[{start} -- {end}] {duration} × {name}'
return name
@property
def origin_name(self):
pool = Pool()
RentalProgress = pool.get('sale.rental.progress')
name = super().origin_name
if isinstance(self.origin, RentalProgress):
name = self.origin.rental.rec_name
return name
@classmethod
def _get_origin(cls):
models = super()._get_origin()
models.append('sale.rental.progress')
return models
class InvoiceLine_Asset(metaclass=PoolMeta):
__name__ = 'account.invoice.line'
@fields.depends('origin')
def on_change_with_is_assets_depreciable(self, name=None):
pool = Pool()
RentalProgress = pool.get('sale.rental.progress')
depreciable = super().on_change_with_is_assets_depreciable(name=name)
if depreciable and isinstance(self.origin, RentalProgress):
depreciable = False
return depreciable

View File

@@ -0,0 +1,87 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:sale.rental.add_progress.start,date:"
msgid "Date"
msgstr ""
msgctxt "field:sale.rental.line,progresses:"
msgid "Progresses"
msgstr ""
msgctxt "field:sale.rental.line-sale.rental.progress,line:"
msgid "Rental Line"
msgstr ""
msgctxt "field:sale.rental.line-sale.rental.progress,progress:"
msgid "Progress"
msgstr ""
msgctxt "field:sale.rental.progress,date:"
msgid "Date"
msgstr ""
msgctxt "field:sale.rental.progress,duration:"
msgid "Duration"
msgstr ""
msgctxt "field:sale.rental.progress,invoice_lines:"
msgid "Invoice Lines"
msgstr ""
msgctxt "field:sale.rental.progress,line:"
msgid "Line"
msgstr ""
msgctxt "field:sale.rental.progress,lines:"
msgid "Lines"
msgstr ""
msgctxt "field:sale.rental.progress,previous:"
msgid "Previous"
msgstr ""
msgctxt "field:sale.rental.progress,rental:"
msgid "Rental"
msgstr ""
msgctxt "model:ir.action,name:wizard_sale_rental_add_progress"
msgid "Add Rental Progress"
msgstr ""
msgctxt "model:ir.message,text:msg_sale_rental_progress_line_previous"
msgid "A rental progress date can not have both a line and a previous."
msgstr ""
msgctxt "model:ir.message,text:msg_sale_rental_progress_line_unique"
msgid "A rental line can start only one progress date chain."
msgstr ""
msgctxt "model:ir.message,text:msg_sale_rental_progress_previous_unique"
msgid "A rental progress date can be parent only once."
msgstr ""
msgctxt "model:ir.model.button,string:sale_rental_add_progress_button"
msgid "Add Progress"
msgstr ""
msgctxt "model:sale.rental.add_progress.start,string:"
msgid "Sale Rental Add Progress Start"
msgstr ""
msgctxt "model:sale.rental.line-sale.rental.progress,string:"
msgid "Sale Rental Line - Sale Rental Progress"
msgstr ""
msgctxt "model:sale.rental.progress,string:"
msgid "Sale Rental Progress"
msgstr ""
msgctxt "wizard_button:sale.rental.add_progress,start,add:"
msgid "Add"
msgstr ""
msgctxt "wizard_button:sale.rental.add_progress,start,end:"
msgid "Cancel"
msgstr ""

View File

@@ -0,0 +1,91 @@
#
#, fuzzy
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:sale.rental.add_progress.start,date:"
msgid "Date"
msgstr "Data"
msgctxt "field:sale.rental.line,progresses:"
msgid "Progresses"
msgstr "Progressos"
msgctxt "field:sale.rental.line-sale.rental.progress,line:"
msgid "Rental Line"
msgstr "Linia de lloguer"
msgctxt "field:sale.rental.line-sale.rental.progress,progress:"
msgid "Progress"
msgstr "Progrés"
msgctxt "field:sale.rental.progress,date:"
msgid "Date"
msgstr "Data"
msgctxt "field:sale.rental.progress,duration:"
msgid "Duration"
msgstr "Duració"
msgctxt "field:sale.rental.progress,invoice_lines:"
msgid "Invoice Lines"
msgstr "Línies de factura"
msgctxt "field:sale.rental.progress,line:"
msgid "Line"
msgstr "Línia"
msgctxt "field:sale.rental.progress,lines:"
msgid "Lines"
msgstr "Línies"
msgctxt "field:sale.rental.progress,previous:"
msgid "Previous"
msgstr "Anterior"
msgctxt "field:sale.rental.progress,rental:"
msgid "Rental"
msgstr "Lloguer"
msgctxt "model:ir.action,name:wizard_sale_rental_add_progress"
msgid "Add Rental Progress"
msgstr "Afegir progrès del lloguer"
msgctxt "model:ir.message,text:msg_sale_rental_progress_line_previous"
msgid "A rental progress date can not have both a line and a previous."
msgstr ""
"Una data del progres d'alquiler no pot tenir a la vegada una línia i un "
"anterior."
msgctxt "model:ir.message,text:msg_sale_rental_progress_line_unique"
msgid "A rental line can start only one progress date chain."
msgstr ""
"Una línia de lloguer només pot començar una cadena de progrès per data."
msgctxt "model:ir.message,text:msg_sale_rental_progress_previous_unique"
msgid "A rental progress date can be parent only once."
msgstr "Una data de progrès de lloguer només pot ser pare una vegada."
msgctxt "model:ir.model.button,string:sale_rental_add_progress_button"
msgid "Add Progress"
msgstr "Afegir progrès"
msgctxt "model:sale.rental.add_progress.start,string:"
msgid "Sale Rental Add Progress Start"
msgstr "Inici afegir progrès lloguer"
msgctxt "model:sale.rental.line-sale.rental.progress,string:"
msgid "Sale Rental Line - Sale Rental Progress"
msgstr "Línia de lloguer - Progrès de lloguer"
msgctxt "model:sale.rental.progress,string:"
msgid "Sale Rental Progress"
msgstr "Progres del lloguer"
msgctxt "wizard_button:sale.rental.add_progress,start,add:"
msgid "Add"
msgstr "Afegeix"
msgctxt "wizard_button:sale.rental.add_progress,start,end:"
msgid "Cancel"
msgstr "Cancel·la"

View File

@@ -0,0 +1,87 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:sale.rental.add_progress.start,date:"
msgid "Date"
msgstr ""
msgctxt "field:sale.rental.line,progresses:"
msgid "Progresses"
msgstr ""
msgctxt "field:sale.rental.line-sale.rental.progress,line:"
msgid "Rental Line"
msgstr ""
msgctxt "field:sale.rental.line-sale.rental.progress,progress:"
msgid "Progress"
msgstr ""
msgctxt "field:sale.rental.progress,date:"
msgid "Date"
msgstr ""
msgctxt "field:sale.rental.progress,duration:"
msgid "Duration"
msgstr ""
msgctxt "field:sale.rental.progress,invoice_lines:"
msgid "Invoice Lines"
msgstr ""
msgctxt "field:sale.rental.progress,line:"
msgid "Line"
msgstr ""
msgctxt "field:sale.rental.progress,lines:"
msgid "Lines"
msgstr ""
msgctxt "field:sale.rental.progress,previous:"
msgid "Previous"
msgstr ""
msgctxt "field:sale.rental.progress,rental:"
msgid "Rental"
msgstr ""
msgctxt "model:ir.action,name:wizard_sale_rental_add_progress"
msgid "Add Rental Progress"
msgstr ""
msgctxt "model:ir.message,text:msg_sale_rental_progress_line_previous"
msgid "A rental progress date can not have both a line and a previous."
msgstr ""
msgctxt "model:ir.message,text:msg_sale_rental_progress_line_unique"
msgid "A rental line can start only one progress date chain."
msgstr ""
msgctxt "model:ir.message,text:msg_sale_rental_progress_previous_unique"
msgid "A rental progress date can be parent only once."
msgstr ""
msgctxt "model:ir.model.button,string:sale_rental_add_progress_button"
msgid "Add Progress"
msgstr ""
msgctxt "model:sale.rental.add_progress.start,string:"
msgid "Sale Rental Add Progress Start"
msgstr ""
msgctxt "model:sale.rental.line-sale.rental.progress,string:"
msgid "Sale Rental Line - Sale Rental Progress"
msgstr ""
msgctxt "model:sale.rental.progress,string:"
msgid "Sale Rental Progress"
msgstr ""
msgctxt "wizard_button:sale.rental.add_progress,start,add:"
msgid "Add"
msgstr ""
msgctxt "wizard_button:sale.rental.add_progress,start,end:"
msgid "Cancel"
msgstr ""

View File

@@ -0,0 +1,93 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:sale.rental.add_progress.start,date:"
msgid "Date"
msgstr "Datum"
msgctxt "field:sale.rental.line,progresses:"
msgid "Progresses"
msgstr "Abrechnungszeiträume"
msgctxt "field:sale.rental.line-sale.rental.progress,line:"
msgid "Rental Line"
msgstr "Vermietungsposition"
msgctxt "field:sale.rental.line-sale.rental.progress,progress:"
msgid "Progress"
msgstr "Abrechnungszeitraum"
msgctxt "field:sale.rental.progress,date:"
msgid "Date"
msgstr "Datum"
msgctxt "field:sale.rental.progress,duration:"
msgid "Duration"
msgstr "Dauer"
msgctxt "field:sale.rental.progress,invoice_lines:"
msgid "Invoice Lines"
msgstr "Rechnungspositionen"
msgctxt "field:sale.rental.progress,line:"
msgid "Line"
msgstr "Position"
msgctxt "field:sale.rental.progress,lines:"
msgid "Lines"
msgstr "Positionen"
msgctxt "field:sale.rental.progress,previous:"
msgid "Previous"
msgstr "Vorgänger"
msgctxt "field:sale.rental.progress,rental:"
msgid "Rental"
msgstr "Vermietung"
msgctxt "model:ir.action,name:wizard_sale_rental_add_progress"
msgid "Add Rental Progress"
msgstr "Abrechnungszeitraum hinzufügen"
msgctxt "model:ir.message,text:msg_sale_rental_progress_line_previous"
msgid "A rental progress date can not have both a line and a previous."
msgstr ""
"Ein Vermietungsabrechnungszeitraum kann nicht gleichzeitig über eine "
"Position und einen Vorgänger verfügen."
msgctxt "model:ir.message,text:msg_sale_rental_progress_line_unique"
msgid "A rental line can start only one progress date chain."
msgstr ""
"Eine Vermietungsposition kann nur eine einzige Abrechnungszeitraumsfolge "
"starten."
msgctxt "model:ir.message,text:msg_sale_rental_progress_previous_unique"
msgid "A rental progress date can be parent only once."
msgstr ""
"Ein Vermietungsabrechnungszeitraum kann nur einmal als übergeordneter "
"Abrechnungszeitraum verwendet werden."
msgctxt "model:ir.model.button,string:sale_rental_add_progress_button"
msgid "Add Progress"
msgstr "Abrechnungszeitraum hinzufügen"
msgctxt "model:sale.rental.add_progress.start,string:"
msgid "Sale Rental Add Progress Start"
msgstr "Verkauf Vermietung Abrechnungszeitraum Hinzufügen Start"
msgctxt "model:sale.rental.line-sale.rental.progress,string:"
msgid "Sale Rental Line - Sale Rental Progress"
msgstr "Verkauf Vermietungsposition - Verkauf Vermietung Abrechnungszeitraum"
msgctxt "model:sale.rental.progress,string:"
msgid "Sale Rental Progress"
msgstr "Verkauf Vermietung Abrechnungszeitraum"
msgctxt "wizard_button:sale.rental.add_progress,start,add:"
msgid "Add"
msgstr "Hinzufügen"
msgctxt "wizard_button:sale.rental.add_progress,start,end:"
msgid "Cancel"
msgstr "Abbrechen"

View File

@@ -0,0 +1,90 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:sale.rental.add_progress.start,date:"
msgid "Date"
msgstr "Fecha"
msgctxt "field:sale.rental.line,progresses:"
msgid "Progresses"
msgstr "Progresos"
msgctxt "field:sale.rental.line-sale.rental.progress,line:"
msgid "Rental Line"
msgstr "Línea de alquiler"
msgctxt "field:sale.rental.line-sale.rental.progress,progress:"
msgid "Progress"
msgstr "Progreso"
msgctxt "field:sale.rental.progress,date:"
msgid "Date"
msgstr "Fecha"
msgctxt "field:sale.rental.progress,duration:"
msgid "Duration"
msgstr "Duración"
msgctxt "field:sale.rental.progress,invoice_lines:"
msgid "Invoice Lines"
msgstr "Líneas de factura"
msgctxt "field:sale.rental.progress,line:"
msgid "Line"
msgstr "Línea"
msgctxt "field:sale.rental.progress,lines:"
msgid "Lines"
msgstr "Líneas"
msgctxt "field:sale.rental.progress,previous:"
msgid "Previous"
msgstr "Anterior"
msgctxt "field:sale.rental.progress,rental:"
msgid "Rental"
msgstr "Alquiler"
msgctxt "model:ir.action,name:wizard_sale_rental_add_progress"
msgid "Add Rental Progress"
msgstr "Añadir progreso del alquiler"
msgctxt "model:ir.message,text:msg_sale_rental_progress_line_previous"
msgid "A rental progress date can not have both a line and a previous."
msgstr ""
"Una fecha del progreso del alquiler no puede tener a la vez una línea y un "
"anterior."
msgctxt "model:ir.message,text:msg_sale_rental_progress_line_unique"
msgid "A rental line can start only one progress date chain."
msgstr ""
"Una linea de alquiler solo puede empezar una cadena de progreso por fecha."
msgctxt "model:ir.message,text:msg_sale_rental_progress_previous_unique"
msgid "A rental progress date can be parent only once."
msgstr "Una fecha de progreso del alquiler solo puede ser padre una vez."
msgctxt "model:ir.model.button,string:sale_rental_add_progress_button"
msgid "Add Progress"
msgstr "Añadir progreso"
msgctxt "model:sale.rental.add_progress.start,string:"
msgid "Sale Rental Add Progress Start"
msgstr "Inicio añadir progreso de alquiler"
msgctxt "model:sale.rental.line-sale.rental.progress,string:"
msgid "Sale Rental Line - Sale Rental Progress"
msgstr "Línea de alquiler - Progreso de alquiler"
msgctxt "model:sale.rental.progress,string:"
msgid "Sale Rental Progress"
msgstr "Progreso de alquiler"
msgctxt "wizard_button:sale.rental.add_progress,start,add:"
msgid "Add"
msgstr "Añadir"
msgctxt "wizard_button:sale.rental.add_progress,start,end:"
msgid "Cancel"
msgstr "Cancelar"

View File

@@ -0,0 +1,87 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:sale.rental.add_progress.start,date:"
msgid "Date"
msgstr ""
msgctxt "field:sale.rental.line,progresses:"
msgid "Progresses"
msgstr ""
msgctxt "field:sale.rental.line-sale.rental.progress,line:"
msgid "Rental Line"
msgstr ""
msgctxt "field:sale.rental.line-sale.rental.progress,progress:"
msgid "Progress"
msgstr ""
msgctxt "field:sale.rental.progress,date:"
msgid "Date"
msgstr ""
msgctxt "field:sale.rental.progress,duration:"
msgid "Duration"
msgstr ""
msgctxt "field:sale.rental.progress,invoice_lines:"
msgid "Invoice Lines"
msgstr ""
msgctxt "field:sale.rental.progress,line:"
msgid "Line"
msgstr ""
msgctxt "field:sale.rental.progress,lines:"
msgid "Lines"
msgstr ""
msgctxt "field:sale.rental.progress,previous:"
msgid "Previous"
msgstr ""
msgctxt "field:sale.rental.progress,rental:"
msgid "Rental"
msgstr ""
msgctxt "model:ir.action,name:wizard_sale_rental_add_progress"
msgid "Add Rental Progress"
msgstr ""
msgctxt "model:ir.message,text:msg_sale_rental_progress_line_previous"
msgid "A rental progress date can not have both a line and a previous."
msgstr ""
msgctxt "model:ir.message,text:msg_sale_rental_progress_line_unique"
msgid "A rental line can start only one progress date chain."
msgstr ""
msgctxt "model:ir.message,text:msg_sale_rental_progress_previous_unique"
msgid "A rental progress date can be parent only once."
msgstr ""
msgctxt "model:ir.model.button,string:sale_rental_add_progress_button"
msgid "Add Progress"
msgstr ""
msgctxt "model:sale.rental.add_progress.start,string:"
msgid "Sale Rental Add Progress Start"
msgstr ""
msgctxt "model:sale.rental.line-sale.rental.progress,string:"
msgid "Sale Rental Line - Sale Rental Progress"
msgstr ""
msgctxt "model:sale.rental.progress,string:"
msgid "Sale Rental Progress"
msgstr ""
msgctxt "wizard_button:sale.rental.add_progress,start,add:"
msgid "Add"
msgstr ""
msgctxt "wizard_button:sale.rental.add_progress,start,end:"
msgid "Cancel"
msgstr ""

View File

@@ -0,0 +1,87 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:sale.rental.add_progress.start,date:"
msgid "Date"
msgstr ""
msgctxt "field:sale.rental.line,progresses:"
msgid "Progresses"
msgstr ""
msgctxt "field:sale.rental.line-sale.rental.progress,line:"
msgid "Rental Line"
msgstr ""
msgctxt "field:sale.rental.line-sale.rental.progress,progress:"
msgid "Progress"
msgstr ""
msgctxt "field:sale.rental.progress,date:"
msgid "Date"
msgstr ""
msgctxt "field:sale.rental.progress,duration:"
msgid "Duration"
msgstr ""
msgctxt "field:sale.rental.progress,invoice_lines:"
msgid "Invoice Lines"
msgstr ""
msgctxt "field:sale.rental.progress,line:"
msgid "Line"
msgstr ""
msgctxt "field:sale.rental.progress,lines:"
msgid "Lines"
msgstr ""
msgctxt "field:sale.rental.progress,previous:"
msgid "Previous"
msgstr ""
msgctxt "field:sale.rental.progress,rental:"
msgid "Rental"
msgstr ""
msgctxt "model:ir.action,name:wizard_sale_rental_add_progress"
msgid "Add Rental Progress"
msgstr ""
msgctxt "model:ir.message,text:msg_sale_rental_progress_line_previous"
msgid "A rental progress date can not have both a line and a previous."
msgstr ""
msgctxt "model:ir.message,text:msg_sale_rental_progress_line_unique"
msgid "A rental line can start only one progress date chain."
msgstr ""
msgctxt "model:ir.message,text:msg_sale_rental_progress_previous_unique"
msgid "A rental progress date can be parent only once."
msgstr ""
msgctxt "model:ir.model.button,string:sale_rental_add_progress_button"
msgid "Add Progress"
msgstr ""
msgctxt "model:sale.rental.add_progress.start,string:"
msgid "Sale Rental Add Progress Start"
msgstr ""
msgctxt "model:sale.rental.line-sale.rental.progress,string:"
msgid "Sale Rental Line - Sale Rental Progress"
msgstr ""
msgctxt "model:sale.rental.progress,string:"
msgid "Sale Rental Progress"
msgstr ""
msgctxt "wizard_button:sale.rental.add_progress,start,add:"
msgid "Add"
msgstr ""
msgctxt "wizard_button:sale.rental.add_progress,start,end:"
msgid "Cancel"
msgstr ""

View File

@@ -0,0 +1,87 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:sale.rental.add_progress.start,date:"
msgid "Date"
msgstr ""
msgctxt "field:sale.rental.line,progresses:"
msgid "Progresses"
msgstr ""
msgctxt "field:sale.rental.line-sale.rental.progress,line:"
msgid "Rental Line"
msgstr ""
msgctxt "field:sale.rental.line-sale.rental.progress,progress:"
msgid "Progress"
msgstr ""
msgctxt "field:sale.rental.progress,date:"
msgid "Date"
msgstr ""
msgctxt "field:sale.rental.progress,duration:"
msgid "Duration"
msgstr ""
msgctxt "field:sale.rental.progress,invoice_lines:"
msgid "Invoice Lines"
msgstr ""
msgctxt "field:sale.rental.progress,line:"
msgid "Line"
msgstr ""
msgctxt "field:sale.rental.progress,lines:"
msgid "Lines"
msgstr ""
msgctxt "field:sale.rental.progress,previous:"
msgid "Previous"
msgstr ""
msgctxt "field:sale.rental.progress,rental:"
msgid "Rental"
msgstr ""
msgctxt "model:ir.action,name:wizard_sale_rental_add_progress"
msgid "Add Rental Progress"
msgstr ""
msgctxt "model:ir.message,text:msg_sale_rental_progress_line_previous"
msgid "A rental progress date can not have both a line and a previous."
msgstr ""
msgctxt "model:ir.message,text:msg_sale_rental_progress_line_unique"
msgid "A rental line can start only one progress date chain."
msgstr ""
msgctxt "model:ir.message,text:msg_sale_rental_progress_previous_unique"
msgid "A rental progress date can be parent only once."
msgstr ""
msgctxt "model:ir.model.button,string:sale_rental_add_progress_button"
msgid "Add Progress"
msgstr ""
msgctxt "model:sale.rental.add_progress.start,string:"
msgid "Sale Rental Add Progress Start"
msgstr ""
msgctxt "model:sale.rental.line-sale.rental.progress,string:"
msgid "Sale Rental Line - Sale Rental Progress"
msgstr ""
msgctxt "model:sale.rental.progress,string:"
msgid "Sale Rental Progress"
msgstr ""
msgctxt "wizard_button:sale.rental.add_progress,start,add:"
msgid "Add"
msgstr ""
msgctxt "wizard_button:sale.rental.add_progress,start,end:"
msgid "Cancel"
msgstr ""

View File

@@ -0,0 +1,87 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:sale.rental.add_progress.start,date:"
msgid "Date"
msgstr ""
msgctxt "field:sale.rental.line,progresses:"
msgid "Progresses"
msgstr ""
msgctxt "field:sale.rental.line-sale.rental.progress,line:"
msgid "Rental Line"
msgstr ""
msgctxt "field:sale.rental.line-sale.rental.progress,progress:"
msgid "Progress"
msgstr ""
msgctxt "field:sale.rental.progress,date:"
msgid "Date"
msgstr ""
msgctxt "field:sale.rental.progress,duration:"
msgid "Duration"
msgstr ""
msgctxt "field:sale.rental.progress,invoice_lines:"
msgid "Invoice Lines"
msgstr ""
msgctxt "field:sale.rental.progress,line:"
msgid "Line"
msgstr ""
msgctxt "field:sale.rental.progress,lines:"
msgid "Lines"
msgstr ""
msgctxt "field:sale.rental.progress,previous:"
msgid "Previous"
msgstr ""
msgctxt "field:sale.rental.progress,rental:"
msgid "Rental"
msgstr ""
msgctxt "model:ir.action,name:wizard_sale_rental_add_progress"
msgid "Add Rental Progress"
msgstr ""
msgctxt "model:ir.message,text:msg_sale_rental_progress_line_previous"
msgid "A rental progress date can not have both a line and a previous."
msgstr ""
msgctxt "model:ir.message,text:msg_sale_rental_progress_line_unique"
msgid "A rental line can start only one progress date chain."
msgstr ""
msgctxt "model:ir.message,text:msg_sale_rental_progress_previous_unique"
msgid "A rental progress date can be parent only once."
msgstr ""
msgctxt "model:ir.model.button,string:sale_rental_add_progress_button"
msgid "Add Progress"
msgstr ""
msgctxt "model:sale.rental.add_progress.start,string:"
msgid "Sale Rental Add Progress Start"
msgstr ""
msgctxt "model:sale.rental.line-sale.rental.progress,string:"
msgid "Sale Rental Line - Sale Rental Progress"
msgstr ""
msgctxt "model:sale.rental.progress,string:"
msgid "Sale Rental Progress"
msgstr ""
msgctxt "wizard_button:sale.rental.add_progress,start,add:"
msgid "Add"
msgstr ""
msgctxt "wizard_button:sale.rental.add_progress,start,end:"
msgid "Cancel"
msgstr ""

View File

@@ -0,0 +1,93 @@
#
#, fuzzy
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:sale.rental.add_progress.start,date:"
msgid "Date"
msgstr "Date"
msgctxt "field:sale.rental.line,progresses:"
msgid "Progresses"
msgstr "Progrès"
msgctxt "field:sale.rental.line-sale.rental.progress,line:"
msgid "Rental Line"
msgstr "Ligne de location"
msgctxt "field:sale.rental.line-sale.rental.progress,progress:"
msgid "Progress"
msgstr "Progression"
msgctxt "field:sale.rental.progress,date:"
msgid "Date"
msgstr "Date"
msgctxt "field:sale.rental.progress,duration:"
msgid "Duration"
msgstr "Durée"
msgctxt "field:sale.rental.progress,invoice_lines:"
msgid "Invoice Lines"
msgstr "Lignes de facture"
msgctxt "field:sale.rental.progress,line:"
msgid "Line"
msgstr "Ligne"
msgctxt "field:sale.rental.progress,lines:"
msgid "Lines"
msgstr "Lignes"
msgctxt "field:sale.rental.progress,previous:"
msgid "Previous"
msgstr "Précédente"
msgctxt "field:sale.rental.progress,rental:"
msgid "Rental"
msgstr "Location"
msgctxt "model:ir.action,name:wizard_sale_rental_add_progress"
msgid "Add Rental Progress"
msgstr "Ajouter un avancement de la location"
msgctxt "model:ir.message,text:msg_sale_rental_progress_line_previous"
msgid "A rental progress date can not have both a line and a previous."
msgstr ""
"Une date d'avancement de location ne peut pas comporter à la fois une ligne "
"et une précédente."
msgctxt "model:ir.message,text:msg_sale_rental_progress_line_unique"
msgid "A rental line can start only one progress date chain."
msgstr ""
"Une ligne de location ne peut démarrer qu'une seule chaîne de dates de "
"progression."
msgctxt "model:ir.message,text:msg_sale_rental_progress_previous_unique"
msgid "A rental progress date can be parent only once."
msgstr ""
"Une date d'avancement de location ne peut être parente qu'une seule fois."
msgctxt "model:ir.model.button,string:sale_rental_add_progress_button"
msgid "Add Progress"
msgstr "Ajouter une progression"
msgctxt "model:sale.rental.add_progress.start,string:"
msgid "Sale Rental Add Progress Start"
msgstr "Vente Location Ajouter un progression Démarrer"
msgctxt "model:sale.rental.line-sale.rental.progress,string:"
msgid "Sale Rental Line - Sale Rental Progress"
msgstr "Ligne de location - Avancement de location"
msgctxt "model:sale.rental.progress,string:"
msgid "Sale Rental Progress"
msgstr "Progression de location"
msgctxt "wizard_button:sale.rental.add_progress,start,add:"
msgid "Add"
msgstr "Ajouter"
msgctxt "wizard_button:sale.rental.add_progress,start,end:"
msgid "Cancel"
msgstr "Annuler"

View File

@@ -0,0 +1,87 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:sale.rental.add_progress.start,date:"
msgid "Date"
msgstr ""
msgctxt "field:sale.rental.line,progresses:"
msgid "Progresses"
msgstr ""
msgctxt "field:sale.rental.line-sale.rental.progress,line:"
msgid "Rental Line"
msgstr ""
msgctxt "field:sale.rental.line-sale.rental.progress,progress:"
msgid "Progress"
msgstr ""
msgctxt "field:sale.rental.progress,date:"
msgid "Date"
msgstr ""
msgctxt "field:sale.rental.progress,duration:"
msgid "Duration"
msgstr ""
msgctxt "field:sale.rental.progress,invoice_lines:"
msgid "Invoice Lines"
msgstr ""
msgctxt "field:sale.rental.progress,line:"
msgid "Line"
msgstr ""
msgctxt "field:sale.rental.progress,lines:"
msgid "Lines"
msgstr ""
msgctxt "field:sale.rental.progress,previous:"
msgid "Previous"
msgstr ""
msgctxt "field:sale.rental.progress,rental:"
msgid "Rental"
msgstr ""
msgctxt "model:ir.action,name:wizard_sale_rental_add_progress"
msgid "Add Rental Progress"
msgstr ""
msgctxt "model:ir.message,text:msg_sale_rental_progress_line_previous"
msgid "A rental progress date can not have both a line and a previous."
msgstr ""
msgctxt "model:ir.message,text:msg_sale_rental_progress_line_unique"
msgid "A rental line can start only one progress date chain."
msgstr ""
msgctxt "model:ir.message,text:msg_sale_rental_progress_previous_unique"
msgid "A rental progress date can be parent only once."
msgstr ""
msgctxt "model:ir.model.button,string:sale_rental_add_progress_button"
msgid "Add Progress"
msgstr ""
msgctxt "model:sale.rental.add_progress.start,string:"
msgid "Sale Rental Add Progress Start"
msgstr ""
msgctxt "model:sale.rental.line-sale.rental.progress,string:"
msgid "Sale Rental Line - Sale Rental Progress"
msgstr ""
msgctxt "model:sale.rental.progress,string:"
msgid "Sale Rental Progress"
msgstr ""
msgctxt "wizard_button:sale.rental.add_progress,start,add:"
msgid "Add"
msgstr ""
msgctxt "wizard_button:sale.rental.add_progress,start,end:"
msgid "Cancel"
msgstr ""

View File

@@ -0,0 +1,87 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:sale.rental.add_progress.start,date:"
msgid "Date"
msgstr ""
msgctxt "field:sale.rental.line,progresses:"
msgid "Progresses"
msgstr ""
msgctxt "field:sale.rental.line-sale.rental.progress,line:"
msgid "Rental Line"
msgstr ""
msgctxt "field:sale.rental.line-sale.rental.progress,progress:"
msgid "Progress"
msgstr ""
msgctxt "field:sale.rental.progress,date:"
msgid "Date"
msgstr ""
msgctxt "field:sale.rental.progress,duration:"
msgid "Duration"
msgstr ""
msgctxt "field:sale.rental.progress,invoice_lines:"
msgid "Invoice Lines"
msgstr ""
msgctxt "field:sale.rental.progress,line:"
msgid "Line"
msgstr ""
msgctxt "field:sale.rental.progress,lines:"
msgid "Lines"
msgstr ""
msgctxt "field:sale.rental.progress,previous:"
msgid "Previous"
msgstr ""
msgctxt "field:sale.rental.progress,rental:"
msgid "Rental"
msgstr ""
msgctxt "model:ir.action,name:wizard_sale_rental_add_progress"
msgid "Add Rental Progress"
msgstr ""
msgctxt "model:ir.message,text:msg_sale_rental_progress_line_previous"
msgid "A rental progress date can not have both a line and a previous."
msgstr ""
msgctxt "model:ir.message,text:msg_sale_rental_progress_line_unique"
msgid "A rental line can start only one progress date chain."
msgstr ""
msgctxt "model:ir.message,text:msg_sale_rental_progress_previous_unique"
msgid "A rental progress date can be parent only once."
msgstr ""
msgctxt "model:ir.model.button,string:sale_rental_add_progress_button"
msgid "Add Progress"
msgstr ""
msgctxt "model:sale.rental.add_progress.start,string:"
msgid "Sale Rental Add Progress Start"
msgstr ""
msgctxt "model:sale.rental.line-sale.rental.progress,string:"
msgid "Sale Rental Line - Sale Rental Progress"
msgstr ""
msgctxt "model:sale.rental.progress,string:"
msgid "Sale Rental Progress"
msgstr ""
msgctxt "wizard_button:sale.rental.add_progress,start,add:"
msgid "Add"
msgstr ""
msgctxt "wizard_button:sale.rental.add_progress,start,end:"
msgid "Cancel"
msgstr ""

View File

@@ -0,0 +1,87 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:sale.rental.add_progress.start,date:"
msgid "Date"
msgstr ""
msgctxt "field:sale.rental.line,progresses:"
msgid "Progresses"
msgstr ""
msgctxt "field:sale.rental.line-sale.rental.progress,line:"
msgid "Rental Line"
msgstr ""
msgctxt "field:sale.rental.line-sale.rental.progress,progress:"
msgid "Progress"
msgstr ""
msgctxt "field:sale.rental.progress,date:"
msgid "Date"
msgstr ""
msgctxt "field:sale.rental.progress,duration:"
msgid "Duration"
msgstr ""
msgctxt "field:sale.rental.progress,invoice_lines:"
msgid "Invoice Lines"
msgstr ""
msgctxt "field:sale.rental.progress,line:"
msgid "Line"
msgstr ""
msgctxt "field:sale.rental.progress,lines:"
msgid "Lines"
msgstr ""
msgctxt "field:sale.rental.progress,previous:"
msgid "Previous"
msgstr ""
msgctxt "field:sale.rental.progress,rental:"
msgid "Rental"
msgstr ""
msgctxt "model:ir.action,name:wizard_sale_rental_add_progress"
msgid "Add Rental Progress"
msgstr ""
msgctxt "model:ir.message,text:msg_sale_rental_progress_line_previous"
msgid "A rental progress date can not have both a line and a previous."
msgstr ""
msgctxt "model:ir.message,text:msg_sale_rental_progress_line_unique"
msgid "A rental line can start only one progress date chain."
msgstr ""
msgctxt "model:ir.message,text:msg_sale_rental_progress_previous_unique"
msgid "A rental progress date can be parent only once."
msgstr ""
msgctxt "model:ir.model.button,string:sale_rental_add_progress_button"
msgid "Add Progress"
msgstr ""
msgctxt "model:sale.rental.add_progress.start,string:"
msgid "Sale Rental Add Progress Start"
msgstr ""
msgctxt "model:sale.rental.line-sale.rental.progress,string:"
msgid "Sale Rental Line - Sale Rental Progress"
msgstr ""
msgctxt "model:sale.rental.progress,string:"
msgid "Sale Rental Progress"
msgstr ""
msgctxt "wizard_button:sale.rental.add_progress,start,add:"
msgid "Add"
msgstr ""
msgctxt "wizard_button:sale.rental.add_progress,start,end:"
msgid "Cancel"
msgstr ""

View File

@@ -0,0 +1,87 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:sale.rental.add_progress.start,date:"
msgid "Date"
msgstr ""
msgctxt "field:sale.rental.line,progresses:"
msgid "Progresses"
msgstr ""
msgctxt "field:sale.rental.line-sale.rental.progress,line:"
msgid "Rental Line"
msgstr ""
msgctxt "field:sale.rental.line-sale.rental.progress,progress:"
msgid "Progress"
msgstr ""
msgctxt "field:sale.rental.progress,date:"
msgid "Date"
msgstr ""
msgctxt "field:sale.rental.progress,duration:"
msgid "Duration"
msgstr ""
msgctxt "field:sale.rental.progress,invoice_lines:"
msgid "Invoice Lines"
msgstr ""
msgctxt "field:sale.rental.progress,line:"
msgid "Line"
msgstr ""
msgctxt "field:sale.rental.progress,lines:"
msgid "Lines"
msgstr ""
msgctxt "field:sale.rental.progress,previous:"
msgid "Previous"
msgstr ""
msgctxt "field:sale.rental.progress,rental:"
msgid "Rental"
msgstr ""
msgctxt "model:ir.action,name:wizard_sale_rental_add_progress"
msgid "Add Rental Progress"
msgstr ""
msgctxt "model:ir.message,text:msg_sale_rental_progress_line_previous"
msgid "A rental progress date can not have both a line and a previous."
msgstr ""
msgctxt "model:ir.message,text:msg_sale_rental_progress_line_unique"
msgid "A rental line can start only one progress date chain."
msgstr ""
msgctxt "model:ir.message,text:msg_sale_rental_progress_previous_unique"
msgid "A rental progress date can be parent only once."
msgstr ""
msgctxt "model:ir.model.button,string:sale_rental_add_progress_button"
msgid "Add Progress"
msgstr ""
msgctxt "model:sale.rental.add_progress.start,string:"
msgid "Sale Rental Add Progress Start"
msgstr ""
msgctxt "model:sale.rental.line-sale.rental.progress,string:"
msgid "Sale Rental Line - Sale Rental Progress"
msgstr ""
msgctxt "model:sale.rental.progress,string:"
msgid "Sale Rental Progress"
msgstr ""
msgctxt "wizard_button:sale.rental.add_progress,start,add:"
msgid "Add"
msgstr ""
msgctxt "wizard_button:sale.rental.add_progress,start,end:"
msgid "Cancel"
msgstr ""

View File

@@ -0,0 +1,87 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:sale.rental.add_progress.start,date:"
msgid "Date"
msgstr ""
msgctxt "field:sale.rental.line,progresses:"
msgid "Progresses"
msgstr ""
msgctxt "field:sale.rental.line-sale.rental.progress,line:"
msgid "Rental Line"
msgstr ""
msgctxt "field:sale.rental.line-sale.rental.progress,progress:"
msgid "Progress"
msgstr ""
msgctxt "field:sale.rental.progress,date:"
msgid "Date"
msgstr ""
msgctxt "field:sale.rental.progress,duration:"
msgid "Duration"
msgstr ""
msgctxt "field:sale.rental.progress,invoice_lines:"
msgid "Invoice Lines"
msgstr ""
msgctxt "field:sale.rental.progress,line:"
msgid "Line"
msgstr ""
msgctxt "field:sale.rental.progress,lines:"
msgid "Lines"
msgstr ""
msgctxt "field:sale.rental.progress,previous:"
msgid "Previous"
msgstr ""
msgctxt "field:sale.rental.progress,rental:"
msgid "Rental"
msgstr ""
msgctxt "model:ir.action,name:wizard_sale_rental_add_progress"
msgid "Add Rental Progress"
msgstr ""
msgctxt "model:ir.message,text:msg_sale_rental_progress_line_previous"
msgid "A rental progress date can not have both a line and a previous."
msgstr ""
msgctxt "model:ir.message,text:msg_sale_rental_progress_line_unique"
msgid "A rental line can start only one progress date chain."
msgstr ""
msgctxt "model:ir.message,text:msg_sale_rental_progress_previous_unique"
msgid "A rental progress date can be parent only once."
msgstr ""
msgctxt "model:ir.model.button,string:sale_rental_add_progress_button"
msgid "Add Progress"
msgstr ""
msgctxt "model:sale.rental.add_progress.start,string:"
msgid "Sale Rental Add Progress Start"
msgstr ""
msgctxt "model:sale.rental.line-sale.rental.progress,string:"
msgid "Sale Rental Line - Sale Rental Progress"
msgstr ""
msgctxt "model:sale.rental.progress,string:"
msgid "Sale Rental Progress"
msgstr ""
msgctxt "wizard_button:sale.rental.add_progress,start,add:"
msgid "Add"
msgstr ""
msgctxt "wizard_button:sale.rental.add_progress,start,end:"
msgid "Cancel"
msgstr ""

View File

@@ -0,0 +1,92 @@
#
#, fuzzy
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:sale.rental.add_progress.start,date:"
msgid "Date"
msgstr "Datum"
msgctxt "field:sale.rental.line,progresses:"
msgid "Progresses"
msgstr "Voortgangen"
msgctxt "field:sale.rental.line-sale.rental.progress,line:"
msgid "Rental Line"
msgstr "Verhuur regel"
msgctxt "field:sale.rental.line-sale.rental.progress,progress:"
msgid "Progress"
msgstr "Voortgang"
msgctxt "field:sale.rental.progress,date:"
msgid "Date"
msgstr "Datum"
msgctxt "field:sale.rental.progress,duration:"
msgid "Duration"
msgstr "Duur"
msgctxt "field:sale.rental.progress,invoice_lines:"
msgid "Invoice Lines"
msgstr "Factuur regels"
msgctxt "field:sale.rental.progress,line:"
msgid "Line"
msgstr "Regel"
msgctxt "field:sale.rental.progress,lines:"
msgid "Lines"
msgstr "Regels"
msgctxt "field:sale.rental.progress,previous:"
msgid "Previous"
msgstr "Vorige"
msgctxt "field:sale.rental.progress,rental:"
msgid "Rental"
msgstr "Verhuur"
msgctxt "model:ir.action,name:wizard_sale_rental_add_progress"
msgid "Add Rental Progress"
msgstr "Voeg huur voortgang toe"
msgctxt "model:ir.message,text:msg_sale_rental_progress_line_previous"
msgid "A rental progress date can not have both a line and a previous."
msgstr ""
"Een datum voor de huur voortgang mag niet beide een regel als een vorige "
"hebben."
msgctxt "model:ir.message,text:msg_sale_rental_progress_line_unique"
msgid "A rental line can start only one progress date chain."
msgstr "Een verhuur regel kan slechts één voortgangsdatumketen starten."
msgctxt "model:ir.message,text:msg_sale_rental_progress_previous_unique"
msgid "A rental progress date can be parent only once."
msgstr ""
"Een datum voor de voortgang van een verhuur kan slechts één keer door de "
"ouder worden opgegeven."
msgctxt "model:ir.model.button,string:sale_rental_add_progress_button"
msgid "Add Progress"
msgstr "Voortgang toevoegen"
msgctxt "model:sale.rental.add_progress.start,string:"
msgid "Sale Rental Add Progress Start"
msgstr "Verkoop verhuur voortgang toevoegen start"
msgctxt "model:sale.rental.line-sale.rental.progress,string:"
msgid "Sale Rental Line - Sale Rental Progress"
msgstr "Verkoop verhuur regel - Verkoop verhuur voortgang"
msgctxt "model:sale.rental.progress,string:"
msgid "Sale Rental Progress"
msgstr "Verkoop verhuur voortgang"
msgctxt "wizard_button:sale.rental.add_progress,start,add:"
msgid "Add"
msgstr "Toevoegen"
msgctxt "wizard_button:sale.rental.add_progress,start,end:"
msgid "Cancel"
msgstr "Annuleer"

View File

@@ -0,0 +1,87 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:sale.rental.add_progress.start,date:"
msgid "Date"
msgstr ""
msgctxt "field:sale.rental.line,progresses:"
msgid "Progresses"
msgstr ""
msgctxt "field:sale.rental.line-sale.rental.progress,line:"
msgid "Rental Line"
msgstr ""
msgctxt "field:sale.rental.line-sale.rental.progress,progress:"
msgid "Progress"
msgstr ""
msgctxt "field:sale.rental.progress,date:"
msgid "Date"
msgstr ""
msgctxt "field:sale.rental.progress,duration:"
msgid "Duration"
msgstr ""
msgctxt "field:sale.rental.progress,invoice_lines:"
msgid "Invoice Lines"
msgstr ""
msgctxt "field:sale.rental.progress,line:"
msgid "Line"
msgstr ""
msgctxt "field:sale.rental.progress,lines:"
msgid "Lines"
msgstr ""
msgctxt "field:sale.rental.progress,previous:"
msgid "Previous"
msgstr ""
msgctxt "field:sale.rental.progress,rental:"
msgid "Rental"
msgstr ""
msgctxt "model:ir.action,name:wizard_sale_rental_add_progress"
msgid "Add Rental Progress"
msgstr ""
msgctxt "model:ir.message,text:msg_sale_rental_progress_line_previous"
msgid "A rental progress date can not have both a line and a previous."
msgstr ""
msgctxt "model:ir.message,text:msg_sale_rental_progress_line_unique"
msgid "A rental line can start only one progress date chain."
msgstr ""
msgctxt "model:ir.message,text:msg_sale_rental_progress_previous_unique"
msgid "A rental progress date can be parent only once."
msgstr ""
msgctxt "model:ir.model.button,string:sale_rental_add_progress_button"
msgid "Add Progress"
msgstr ""
msgctxt "model:sale.rental.add_progress.start,string:"
msgid "Sale Rental Add Progress Start"
msgstr ""
msgctxt "model:sale.rental.line-sale.rental.progress,string:"
msgid "Sale Rental Line - Sale Rental Progress"
msgstr ""
msgctxt "model:sale.rental.progress,string:"
msgid "Sale Rental Progress"
msgstr ""
msgctxt "wizard_button:sale.rental.add_progress,start,add:"
msgid "Add"
msgstr ""
msgctxt "wizard_button:sale.rental.add_progress,start,end:"
msgid "Cancel"
msgstr ""

View File

@@ -0,0 +1,87 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:sale.rental.add_progress.start,date:"
msgid "Date"
msgstr ""
msgctxt "field:sale.rental.line,progresses:"
msgid "Progresses"
msgstr ""
msgctxt "field:sale.rental.line-sale.rental.progress,line:"
msgid "Rental Line"
msgstr ""
msgctxt "field:sale.rental.line-sale.rental.progress,progress:"
msgid "Progress"
msgstr ""
msgctxt "field:sale.rental.progress,date:"
msgid "Date"
msgstr ""
msgctxt "field:sale.rental.progress,duration:"
msgid "Duration"
msgstr ""
msgctxt "field:sale.rental.progress,invoice_lines:"
msgid "Invoice Lines"
msgstr ""
msgctxt "field:sale.rental.progress,line:"
msgid "Line"
msgstr ""
msgctxt "field:sale.rental.progress,lines:"
msgid "Lines"
msgstr ""
msgctxt "field:sale.rental.progress,previous:"
msgid "Previous"
msgstr ""
msgctxt "field:sale.rental.progress,rental:"
msgid "Rental"
msgstr ""
msgctxt "model:ir.action,name:wizard_sale_rental_add_progress"
msgid "Add Rental Progress"
msgstr ""
msgctxt "model:ir.message,text:msg_sale_rental_progress_line_previous"
msgid "A rental progress date can not have both a line and a previous."
msgstr ""
msgctxt "model:ir.message,text:msg_sale_rental_progress_line_unique"
msgid "A rental line can start only one progress date chain."
msgstr ""
msgctxt "model:ir.message,text:msg_sale_rental_progress_previous_unique"
msgid "A rental progress date can be parent only once."
msgstr ""
msgctxt "model:ir.model.button,string:sale_rental_add_progress_button"
msgid "Add Progress"
msgstr ""
msgctxt "model:sale.rental.add_progress.start,string:"
msgid "Sale Rental Add Progress Start"
msgstr ""
msgctxt "model:sale.rental.line-sale.rental.progress,string:"
msgid "Sale Rental Line - Sale Rental Progress"
msgstr ""
msgctxt "model:sale.rental.progress,string:"
msgid "Sale Rental Progress"
msgstr ""
msgctxt "wizard_button:sale.rental.add_progress,start,add:"
msgid "Add"
msgstr ""
msgctxt "wizard_button:sale.rental.add_progress,start,end:"
msgid "Cancel"
msgstr ""

View File

@@ -0,0 +1,87 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:sale.rental.add_progress.start,date:"
msgid "Date"
msgstr ""
msgctxt "field:sale.rental.line,progresses:"
msgid "Progresses"
msgstr ""
msgctxt "field:sale.rental.line-sale.rental.progress,line:"
msgid "Rental Line"
msgstr ""
msgctxt "field:sale.rental.line-sale.rental.progress,progress:"
msgid "Progress"
msgstr ""
msgctxt "field:sale.rental.progress,date:"
msgid "Date"
msgstr ""
msgctxt "field:sale.rental.progress,duration:"
msgid "Duration"
msgstr ""
msgctxt "field:sale.rental.progress,invoice_lines:"
msgid "Invoice Lines"
msgstr ""
msgctxt "field:sale.rental.progress,line:"
msgid "Line"
msgstr ""
msgctxt "field:sale.rental.progress,lines:"
msgid "Lines"
msgstr ""
msgctxt "field:sale.rental.progress,previous:"
msgid "Previous"
msgstr ""
msgctxt "field:sale.rental.progress,rental:"
msgid "Rental"
msgstr ""
msgctxt "model:ir.action,name:wizard_sale_rental_add_progress"
msgid "Add Rental Progress"
msgstr ""
msgctxt "model:ir.message,text:msg_sale_rental_progress_line_previous"
msgid "A rental progress date can not have both a line and a previous."
msgstr ""
msgctxt "model:ir.message,text:msg_sale_rental_progress_line_unique"
msgid "A rental line can start only one progress date chain."
msgstr ""
msgctxt "model:ir.message,text:msg_sale_rental_progress_previous_unique"
msgid "A rental progress date can be parent only once."
msgstr ""
msgctxt "model:ir.model.button,string:sale_rental_add_progress_button"
msgid "Add Progress"
msgstr ""
msgctxt "model:sale.rental.add_progress.start,string:"
msgid "Sale Rental Add Progress Start"
msgstr ""
msgctxt "model:sale.rental.line-sale.rental.progress,string:"
msgid "Sale Rental Line - Sale Rental Progress"
msgstr ""
msgctxt "model:sale.rental.progress,string:"
msgid "Sale Rental Progress"
msgstr ""
msgctxt "wizard_button:sale.rental.add_progress,start,add:"
msgid "Add"
msgstr ""
msgctxt "wizard_button:sale.rental.add_progress,start,end:"
msgid "Cancel"
msgstr ""

View File

@@ -0,0 +1,87 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:sale.rental.add_progress.start,date:"
msgid "Date"
msgstr ""
msgctxt "field:sale.rental.line,progresses:"
msgid "Progresses"
msgstr ""
msgctxt "field:sale.rental.line-sale.rental.progress,line:"
msgid "Rental Line"
msgstr ""
msgctxt "field:sale.rental.line-sale.rental.progress,progress:"
msgid "Progress"
msgstr ""
msgctxt "field:sale.rental.progress,date:"
msgid "Date"
msgstr ""
msgctxt "field:sale.rental.progress,duration:"
msgid "Duration"
msgstr ""
msgctxt "field:sale.rental.progress,invoice_lines:"
msgid "Invoice Lines"
msgstr ""
msgctxt "field:sale.rental.progress,line:"
msgid "Line"
msgstr ""
msgctxt "field:sale.rental.progress,lines:"
msgid "Lines"
msgstr ""
msgctxt "field:sale.rental.progress,previous:"
msgid "Previous"
msgstr ""
msgctxt "field:sale.rental.progress,rental:"
msgid "Rental"
msgstr ""
msgctxt "model:ir.action,name:wizard_sale_rental_add_progress"
msgid "Add Rental Progress"
msgstr ""
msgctxt "model:ir.message,text:msg_sale_rental_progress_line_previous"
msgid "A rental progress date can not have both a line and a previous."
msgstr ""
msgctxt "model:ir.message,text:msg_sale_rental_progress_line_unique"
msgid "A rental line can start only one progress date chain."
msgstr ""
msgctxt "model:ir.message,text:msg_sale_rental_progress_previous_unique"
msgid "A rental progress date can be parent only once."
msgstr ""
msgctxt "model:ir.model.button,string:sale_rental_add_progress_button"
msgid "Add Progress"
msgstr ""
msgctxt "model:sale.rental.add_progress.start,string:"
msgid "Sale Rental Add Progress Start"
msgstr ""
msgctxt "model:sale.rental.line-sale.rental.progress,string:"
msgid "Sale Rental Line - Sale Rental Progress"
msgstr ""
msgctxt "model:sale.rental.progress,string:"
msgid "Sale Rental Progress"
msgstr ""
msgctxt "wizard_button:sale.rental.add_progress,start,add:"
msgid "Add"
msgstr ""
msgctxt "wizard_button:sale.rental.add_progress,start,end:"
msgid "Cancel"
msgstr ""

View File

@@ -0,0 +1,87 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:sale.rental.add_progress.start,date:"
msgid "Date"
msgstr ""
msgctxt "field:sale.rental.line,progresses:"
msgid "Progresses"
msgstr ""
msgctxt "field:sale.rental.line-sale.rental.progress,line:"
msgid "Rental Line"
msgstr ""
msgctxt "field:sale.rental.line-sale.rental.progress,progress:"
msgid "Progress"
msgstr ""
msgctxt "field:sale.rental.progress,date:"
msgid "Date"
msgstr ""
msgctxt "field:sale.rental.progress,duration:"
msgid "Duration"
msgstr ""
msgctxt "field:sale.rental.progress,invoice_lines:"
msgid "Invoice Lines"
msgstr ""
msgctxt "field:sale.rental.progress,line:"
msgid "Line"
msgstr ""
msgctxt "field:sale.rental.progress,lines:"
msgid "Lines"
msgstr ""
msgctxt "field:sale.rental.progress,previous:"
msgid "Previous"
msgstr ""
msgctxt "field:sale.rental.progress,rental:"
msgid "Rental"
msgstr ""
msgctxt "model:ir.action,name:wizard_sale_rental_add_progress"
msgid "Add Rental Progress"
msgstr ""
msgctxt "model:ir.message,text:msg_sale_rental_progress_line_previous"
msgid "A rental progress date can not have both a line and a previous."
msgstr ""
msgctxt "model:ir.message,text:msg_sale_rental_progress_line_unique"
msgid "A rental line can start only one progress date chain."
msgstr ""
msgctxt "model:ir.message,text:msg_sale_rental_progress_previous_unique"
msgid "A rental progress date can be parent only once."
msgstr ""
msgctxt "model:ir.model.button,string:sale_rental_add_progress_button"
msgid "Add Progress"
msgstr ""
msgctxt "model:sale.rental.add_progress.start,string:"
msgid "Sale Rental Add Progress Start"
msgstr ""
msgctxt "model:sale.rental.line-sale.rental.progress,string:"
msgid "Sale Rental Line - Sale Rental Progress"
msgstr ""
msgctxt "model:sale.rental.progress,string:"
msgid "Sale Rental Progress"
msgstr ""
msgctxt "wizard_button:sale.rental.add_progress,start,add:"
msgid "Add"
msgstr ""
msgctxt "wizard_button:sale.rental.add_progress,start,end:"
msgid "Cancel"
msgstr ""

View File

@@ -0,0 +1,87 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:sale.rental.add_progress.start,date:"
msgid "Date"
msgstr ""
msgctxt "field:sale.rental.line,progresses:"
msgid "Progresses"
msgstr ""
msgctxt "field:sale.rental.line-sale.rental.progress,line:"
msgid "Rental Line"
msgstr ""
msgctxt "field:sale.rental.line-sale.rental.progress,progress:"
msgid "Progress"
msgstr ""
msgctxt "field:sale.rental.progress,date:"
msgid "Date"
msgstr ""
msgctxt "field:sale.rental.progress,duration:"
msgid "Duration"
msgstr ""
msgctxt "field:sale.rental.progress,invoice_lines:"
msgid "Invoice Lines"
msgstr ""
msgctxt "field:sale.rental.progress,line:"
msgid "Line"
msgstr ""
msgctxt "field:sale.rental.progress,lines:"
msgid "Lines"
msgstr ""
msgctxt "field:sale.rental.progress,previous:"
msgid "Previous"
msgstr ""
msgctxt "field:sale.rental.progress,rental:"
msgid "Rental"
msgstr ""
msgctxt "model:ir.action,name:wizard_sale_rental_add_progress"
msgid "Add Rental Progress"
msgstr ""
msgctxt "model:ir.message,text:msg_sale_rental_progress_line_previous"
msgid "A rental progress date can not have both a line and a previous."
msgstr ""
msgctxt "model:ir.message,text:msg_sale_rental_progress_line_unique"
msgid "A rental line can start only one progress date chain."
msgstr ""
msgctxt "model:ir.message,text:msg_sale_rental_progress_previous_unique"
msgid "A rental progress date can be parent only once."
msgstr ""
msgctxt "model:ir.model.button,string:sale_rental_add_progress_button"
msgid "Add Progress"
msgstr ""
msgctxt "model:sale.rental.add_progress.start,string:"
msgid "Sale Rental Add Progress Start"
msgstr ""
msgctxt "model:sale.rental.line-sale.rental.progress,string:"
msgid "Sale Rental Line - Sale Rental Progress"
msgstr ""
msgctxt "model:sale.rental.progress,string:"
msgid "Sale Rental Progress"
msgstr ""
msgctxt "wizard_button:sale.rental.add_progress,start,add:"
msgid "Add"
msgstr ""
msgctxt "wizard_button:sale.rental.add_progress,start,end:"
msgid "Cancel"
msgstr ""

View File

@@ -0,0 +1,87 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:sale.rental.add_progress.start,date:"
msgid "Date"
msgstr ""
msgctxt "field:sale.rental.line,progresses:"
msgid "Progresses"
msgstr ""
msgctxt "field:sale.rental.line-sale.rental.progress,line:"
msgid "Rental Line"
msgstr ""
msgctxt "field:sale.rental.line-sale.rental.progress,progress:"
msgid "Progress"
msgstr ""
msgctxt "field:sale.rental.progress,date:"
msgid "Date"
msgstr ""
msgctxt "field:sale.rental.progress,duration:"
msgid "Duration"
msgstr ""
msgctxt "field:sale.rental.progress,invoice_lines:"
msgid "Invoice Lines"
msgstr ""
msgctxt "field:sale.rental.progress,line:"
msgid "Line"
msgstr ""
msgctxt "field:sale.rental.progress,lines:"
msgid "Lines"
msgstr ""
msgctxt "field:sale.rental.progress,previous:"
msgid "Previous"
msgstr ""
msgctxt "field:sale.rental.progress,rental:"
msgid "Rental"
msgstr ""
msgctxt "model:ir.action,name:wizard_sale_rental_add_progress"
msgid "Add Rental Progress"
msgstr ""
msgctxt "model:ir.message,text:msg_sale_rental_progress_line_previous"
msgid "A rental progress date can not have both a line and a previous."
msgstr ""
msgctxt "model:ir.message,text:msg_sale_rental_progress_line_unique"
msgid "A rental line can start only one progress date chain."
msgstr ""
msgctxt "model:ir.message,text:msg_sale_rental_progress_previous_unique"
msgid "A rental progress date can be parent only once."
msgstr ""
msgctxt "model:ir.model.button,string:sale_rental_add_progress_button"
msgid "Add Progress"
msgstr ""
msgctxt "model:sale.rental.add_progress.start,string:"
msgid "Sale Rental Add Progress Start"
msgstr ""
msgctxt "model:sale.rental.line-sale.rental.progress,string:"
msgid "Sale Rental Line - Sale Rental Progress"
msgstr ""
msgctxt "model:sale.rental.progress,string:"
msgid "Sale Rental Progress"
msgstr ""
msgctxt "wizard_button:sale.rental.add_progress,start,add:"
msgid "Add"
msgstr ""
msgctxt "wizard_button:sale.rental.add_progress,start,end:"
msgid "Cancel"
msgstr ""

View File

@@ -0,0 +1,87 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:sale.rental.add_progress.start,date:"
msgid "Date"
msgstr ""
msgctxt "field:sale.rental.line,progresses:"
msgid "Progresses"
msgstr ""
msgctxt "field:sale.rental.line-sale.rental.progress,line:"
msgid "Rental Line"
msgstr ""
msgctxt "field:sale.rental.line-sale.rental.progress,progress:"
msgid "Progress"
msgstr ""
msgctxt "field:sale.rental.progress,date:"
msgid "Date"
msgstr ""
msgctxt "field:sale.rental.progress,duration:"
msgid "Duration"
msgstr ""
msgctxt "field:sale.rental.progress,invoice_lines:"
msgid "Invoice Lines"
msgstr ""
msgctxt "field:sale.rental.progress,line:"
msgid "Line"
msgstr ""
msgctxt "field:sale.rental.progress,lines:"
msgid "Lines"
msgstr ""
msgctxt "field:sale.rental.progress,previous:"
msgid "Previous"
msgstr ""
msgctxt "field:sale.rental.progress,rental:"
msgid "Rental"
msgstr ""
msgctxt "model:ir.action,name:wizard_sale_rental_add_progress"
msgid "Add Rental Progress"
msgstr ""
msgctxt "model:ir.message,text:msg_sale_rental_progress_line_previous"
msgid "A rental progress date can not have both a line and a previous."
msgstr ""
msgctxt "model:ir.message,text:msg_sale_rental_progress_line_unique"
msgid "A rental line can start only one progress date chain."
msgstr ""
msgctxt "model:ir.message,text:msg_sale_rental_progress_previous_unique"
msgid "A rental progress date can be parent only once."
msgstr ""
msgctxt "model:ir.model.button,string:sale_rental_add_progress_button"
msgid "Add Progress"
msgstr ""
msgctxt "model:sale.rental.add_progress.start,string:"
msgid "Sale Rental Add Progress Start"
msgstr ""
msgctxt "model:sale.rental.line-sale.rental.progress,string:"
msgid "Sale Rental Line - Sale Rental Progress"
msgstr ""
msgctxt "model:sale.rental.progress,string:"
msgid "Sale Rental Progress"
msgstr ""
msgctxt "wizard_button:sale.rental.add_progress,start,add:"
msgid "Add"
msgstr ""
msgctxt "wizard_button:sale.rental.add_progress,start,end:"
msgid "Cancel"
msgstr ""

View File

@@ -0,0 +1,16 @@
<?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_sale_rental_progress_line_unique">
<field name="text">A rental line can start only one progress date chain.</field>
</record>
<record model="ir.message" id="msg_sale_rental_progress_previous_unique">
<field name="text">A rental progress date can be parent only once.</field>
</record>
<record model="ir.message" id="msg_sale_rental_progress_line_previous">
<field name="text">A rental progress date can not have both a line and a previous.</field>
</record>
</data>
</tryton>

View File

@@ -0,0 +1,276 @@
# 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 as dt
from decimal import Decimal
from sql import Null
from trytond.model import Check, ModelSQL, ModelView, Unique, fields
from trytond.modules.product import round_price
from trytond.modules.sale_rental import to_datetime
from trytond.pool import Pool, PoolMeta
from trytond.pyson import Eval
from trytond.report import Report
from trytond.transaction import Transaction
from trytond.wizard import Button, StateTransition, StateView, Wizard
class Rental(metaclass=PoolMeta):
__name__ = 'sale.rental'
@classmethod
def __setup__(cls):
super().__setup__()
cls._buttons.update({
'add_progress': {
'invisible': (
Eval('state').in_(['draft', 'quote'])
| ~Eval('has_returnable_lines')),
'icon': 'tryton-date',
'depends': ['state', 'has_returnable_lines'],
},
})
@classmethod
@ModelView.button_action(
'sale_rental_progress_invoice.wizard_sale_rental_add_progress')
def add_progress(cls, rentals):
pass
class RentalProgress(ModelSQL, ModelView):
__name__ = 'sale.rental.progress'
rental = fields.Many2One(
'sale.rental', "Rental",
required=True, ondelete='CASCADE', readonly=True)
date = fields.Date("Date", required=True, readonly=True)
line = fields.Many2One(
'sale.rental.line', "Line", readonly=True,
domain=[
('rental', '=', Eval('rental', -1)),
('id', 'in', Eval('lines', [])),
],
states={
'required': ~Eval('previous'),
'invisible': ~Eval('line'),
})
previous = fields.Many2One(
'sale.rental.progress', "Previous", readonly=True,
domain=[
('rental', '=', Eval('rental', -1)),
('date', '<', Eval('date', None)),
('lines', 'in', Eval('lines', [])),
],
states={
'required': ~Eval('line'),
'invisible': ~Eval('previous'),
})
lines = fields.Many2Many(
'sale.rental.line-sale.rental.progress',
'progress', 'line', "Lines", readonly=True,
domain=[
('rental', '=', Eval('rental', -1)),
])
duration = fields.Function(
fields.TimeDelta(
"Duration",
states={
'invisible': ~Eval('duration'),
}),
'on_change_with_duration')
invoice_lines = fields.One2Many(
'account.invoice.line', 'origin', "Invoice Lines", readonly=True)
@classmethod
def __setup__(cls):
super().__setup__()
cls.__access__.add('rental')
cls._order.insert(0, ('date', 'ASC'))
t = cls.__table__()
cls._sql_constraints = [
('line_unique', Unique(t, t.line),
'sale_rental_progress_invoice.'
'msg_sale_rental_progress_line_unique'),
('previous_unique', Unique(t, t.previous),
'sale_rental_progress_invoice.'
'msg_sale_rental_progress_previous_unique'),
('line_previous',
Check(t, (t.line == Null) | (t.previous == Null)),
'sale_rental_progress_invoice.'
'msg_sale_rental_progress_line_previous'),
]
@property
@fields.depends('line', 'previous')
def start(self):
if self.line:
return self.line.start
elif self.previous:
return self.previous.date
@property
@fields.depends('date')
def end(self):
return self.date
@fields.depends('rental', methods=['start', 'end'])
def on_change_with_duration(self, name=None):
if self.rental:
start = to_datetime(self.start, company=self.rental.company)
end = to_datetime(self.end, company=self.rental.company)
if start and end:
return end - start
def get_rec_name(self, name):
pool = Pool()
Lang = pool.get('ir.lang')
lang = Lang.get()
converter = self.__class__.duration.converter
duration = Report.format_timedelta(
self.duration, converter=converter, lang=lang)
rental = self.rental.rec_name
return f'{duration} @ {rental}'
def get_invoice_lines(self, line):
pool = Pool()
InvoiceLine = pool.get('account.invoice.line')
assert line in self.lines
if self.invoice_lines:
return []
tmp_line = line.__class__(
line.id, duration=self.duration, progresses=[])
duration_unit = tmp_line.duration_unit
invoice_line = InvoiceLine(invoice_type='out', type='line')
invoice_line.currency = self.rental.currency
invoice_line.company = self.rental.company
invoice_line.origin = self
invoice_line.quantity = line.quantity
invoice_line.unit = line.unit
invoice_line.product = line.product
invoice_line.unit_price = round_price(
line.unit_price * Decimal(duration_unit))
invoice_line.taxes = line.taxes
invoice_line.account = line.product.account_rental_used
return [invoice_line]
class RentalLine(metaclass=PoolMeta):
__name__ = 'sale.rental.line'
progresses = fields.Many2Many(
'sale.rental.line-sale.rental.progress',
'line', 'progress', "Progresses",
domain=[
('rental', '=', Eval('rental', -1)),
],
order=[
('progress.date', 'ASC'),
('id', None),
],
states={
'readonly': True, # to be copied on split
'invisible': ~Eval('progresses'),
})
@property
def to_invoice(self):
to_invoice = super().to_invoice
return (
to_invoice
or any(not p.invoice_lines for p in self.progresses))
@property
def start_invoice(self):
start = super().start_invoice
if self.progresses:
start = self.progresses[-1].end
return start
@property
def duration_invoice(self):
duration = super().duration_invoice
if self.progresses:
for progress in self.progresses:
if p_duration := progress.duration:
duration -= p_duration
return duration
def get_invoice_lines(self):
invoice_lines = super().get_invoice_lines()
for progress in self.progresses:
invoice_lines.extend(progress.get_invoice_lines(self))
return invoice_lines
def get_progress(self, date):
pool = Pool()
Progress = pool.get('sale.rental.progress')
actual_start = (
to_datetime(self.actual_start, company=self.company)
or dt.datetime.max)
actual_end = (
to_datetime(self.actual_end, company=self.company)
or dt.datetime.max)
datetime = to_datetime(date, company=self.company)
if actual_start < datetime < actual_end:
progress = Progress(rental=self.rental, lines=[self])
progress.date = date
if self.progresses:
progress.previous = self.progresses[-1]
else:
progress.line = self
return progress
@classmethod
def copy(cls, lines, default=None):
default = default.copy() if default is not None else {}
if not Transaction().context.get('_sale_rental_line_split'):
default.setdefault('progresses', None)
return super().copy(lines, default=default)
class RentalLine_Progress(ModelSQL):
__name__ = 'sale.rental.line-sale.rental.progress'
line = fields.Many2One(
'sale.rental.line', "Rental Line", required=True, ondelete='CASCADE')
progress = fields.Many2One(
'sale.rental.progress', "Progress", required=True, ondelete='CASCADE')
class RentalAddProgress(Wizard):
__name__ = 'sale.rental.add_progress'
start = StateView(
'sale.rental.add_progress.start',
'sale_rental_progress_invoice.'
'sale_rental_add_progress_start_view_form', [
Button("Cancel", 'end', 'tryton-cancel'),
Button("Add", 'add', 'tryton-ok', default=True),
])
add = StateTransition()
def transition_add(self):
pool = Pool()
Progress = pool.get('sale.rental.progress')
date = self.start.date
progresses = []
for rental in self.records:
for line in rental.lines:
if progress := line.get_progress(date):
progresses.append(progress)
Progress.save(progresses)
return 'end'
class RentalAddProgressStart(ModelView):
__name__ = 'sale.rental.add_progress.start'
date = fields.Date("Date", required=True)

View File

@@ -0,0 +1,48 @@
<?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="sale_rental_view_form">
<field name="model">sale.rental</field>
<field name="inherit" ref="sale_rental.sale_rental_view_form"/>
<field name="name">sale_rental_form</field>
</record>
<record model="ir.model.button" id="sale_rental_add_progress_button">
<field name="model">sale.rental</field>
<field name="name">add_progress</field>
<field name="string">Add Progress</field>
</record>
<record model="ir.ui.view" id="sale_rental_progress_view_form">
<field name="model">sale.rental.progress</field>
<field name="type">form</field>
<field name="name">sale_rental_progress_form</field>
</record>
<record model="ir.ui.view" id="sale_rental_progress_view_list">
<field name="model">sale.rental.progress</field>
<field name="type">tree</field>
<field name="name">sale_rental_progress_list</field>
</record>
<record model="ir.ui.view" id="sale_rental_line_view_form">
<field name="model">sale.rental.line</field>
<field name="inherit" ref="sale_rental.sale_rental_line_view_form"/>
<field name="name">sale_rental_line_form</field>
</record>
<record model="ir.action.wizard" id="wizard_sale_rental_add_progress">
<field name="name">Add Rental Progress</field>
<field name="wiz_name">sale.rental.add_progress</field>
<field name="model">sale.rental</field>
</record>
<record model="ir.ui.view" id="sale_rental_add_progress_start_view_form">
<field name="model">sale.rental.add_progress.start</field>
<field name="type">form</field>
<field name="name">sale_rental_add_progress_start_form</field>
</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,161 @@
=====================================
Sale Rental Progress Invoice Scenario
=====================================
Imports::
>>> import datetime as dt
>>> from decimal import Decimal
>>> from proteus import Model
>>> from trytond.modules.account.tests.tools import create_chart, get_accounts
>>> from trytond.modules.company.tests.tools import create_company
>>> from trytond.tests.tools import activate_modules, assertEqual
>>> today = dt.date.today() - dt.timedelta(days=30)
>>> now = dt.datetime.combine(today, dt.time(8))
Activate modules::
>>> config = activate_modules(
... 'sale_rental_progress_invoice', create_company, create_chart)
>>> Invoice = Model.get('account.invoice')
>>> Party = Model.get('party.party')
>>> ProductCategory = Model.get('product.category')
>>> ProductTemplate = Model.get('product.template')
>>> ProductUom = Model.get('product.uom')
>>> Rental = Model.get('sale.rental')
Get accounts::
>>> accounts = get_accounts()
Create account category::
>>> account_category = ProductCategory(name="Account")
>>> account_category.accounting = True
>>> account_category.account_rental = accounts['revenue']
>>> account_category.save()
Create a rentable asset::
>>> unit, = ProductUom.find([('name', '=', "Unit")])
>>> day, = ProductUom.find([('name', '=', "Day")])
>>> hour, = ProductUom.find([('name', '=', "Hour")])
>>> template = ProductTemplate()
>>> template.name = "Machine"
>>> template.type = 'assets'
>>> template.default_uom = unit
>>> template.account_category = account_category
>>> template.rentable = True
>>> template.rental_per_day = True
>>> template.rental_unit = day
>>> rental_price = template.rental_prices.new()
>>> rental_price.duration = dt.timedelta(days=1)
>>> rental_price.price = Decimal('50.0000')
>>> template.save()
>>> asset, = template.products
Create customer::
>>> customer = Party(name="Customer")
>>> customer.save()
Rent the asset::
>>> rental = Rental(party=customer)
>>> line = rental.lines.new()
>>> line.product = asset
>>> line.quantity = 4
>>> line.planned_start_day = today
>>> line.planned_end_day = today + dt.timedelta(days=30)
>>> rental.click('quote')
>>> rental.click('confirm')
>>> rental.state
'confirmed'
>>> rental.total_amount
Decimal('6000.00')
Pickup::
>>> pickup = rental.click('pickup')
>>> pickup.form.start = now
>>> line, = pickup.form.lines
>>> line.quantity_picked = 2
>>> pickup.execute('pickup')
Add progress::
>>> add_progress = rental.click('add_progress')
>>> add_progress.form.date = today + dt.timedelta(days=10)
>>> add_progress.execute('add')
Invoice progress::
>>> rental.has_lines_to_invoice
True
>>> rental.click('invoice')
>>> rental.has_lines_to_invoice
False
>>> invoice, = Invoice.find([])
>>> invoice_line, = invoice.lines
>>> assertEqual(invoice_line.origin.duration, dt.timedelta(days=10))
>>> invoice.total_amount
Decimal('1000.00')
Partially return::
>>> return_ = rental.click('return_')
>>> return_.form.end = now + dt.timedelta(days=15)
>>> line, = return_.form.lines
>>> line.quantity_returned = 1
>>> return_.execute('return_')
>>> len(rental.lines)
3
Add progress::
>>> add_progress = rental.click('add_progress')
>>> add_progress.form.date = today + dt.timedelta(days=20)
>>> add_progress.execute('add')
Invoice progress::
>>> rental.click('invoice')
>>> invoice, = Invoice.find([('id', '!=', invoice.id)])
>>> len(invoice.lines)
2
>>> assertEqual(
... {l.origin.duration for l in invoice.lines},
... {dt.timedelta(days=15), dt.timedelta(days=10)})
>>> invoice.total_amount
Decimal('750.00')
Remove pending line::
>>> rental.click('draft')
>>> draft_line, = [l for l in rental.lines if l.rental_state == 'draft']
>>> rental.lines.remove(draft_line)
>>> rental.click('quote')
>>> rental.click('confirm')
>>> rental.state
'picked up'
Return remaining::
>>> return_ = rental.click('return_')
>>> line, = return_.form.lines
>>> line.quantity_returned = 1
>>> return_.execute('return_')
>>> invoices = Invoice.find([])
>>> len(invoices)
3
>>> sum(i.total_amount for i in invoices)
Decimal('2250.00')

View File

@@ -0,0 +1,12 @@
# 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 ModuleTestCase
class SaleRentalProgressInvoiceTestCase(ModuleTestCase):
"Test Sale Rental Progress Invoice module"
module = 'sale_rental_progress_invoice'
extras = ['account_asset']
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,27 @@
[tryton]
version=7.8.0
depends:
account_invoice
ir
sale_rental
extras_depend:
account_asset
xml:
sale.xml
message.xml
[register]
model:
sale.Rental
sale.RentalProgress
sale.RentalLine
sale.RentalLine_Progress
sale.RentalAddProgressStart
account.Invoice
account.InvoiceLine
wizard:
sale.RentalAddProgress
[register account_asset]
model:
account.InvoiceLine_Asset

View File

@@ -0,0 +1,7 @@
<?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="2">
<label name="date"/>
<field name="date"/>
</form>

View File

@@ -0,0 +1,8 @@
<?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. -->
<data>
<xpath expr="//button[@name='pickup']" position="after">
<button name="add_progress"/>
</xpath>
</data>

View File

@@ -0,0 +1,12 @@
<?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. -->
<data>
<xpath expr="//page[@name='invoice_lines']" position="before">
<page name="progresses" col="2">
<label name="actual_start"/>
<field name="actual_start"/>
<field name="progresses" colspan="2"/>
</page>
</xpath>
</data>

View File

@@ -0,0 +1,19 @@
<?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="2">
<label name="line"/>
<field name="line"/>
<label name="previous"/>
<field name="previous"/>
<label name="date"/>
<field name="date"/>
<label name="duration"/>
<field name="duration"/>
<field name="lines" colspan="2"/>
<field name="invoice_lines" colspan="2"/>
</form>

View File

@@ -0,0 +1,7 @@
<?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="date"/>
<field name="duration"/>
</tree>