Feat: Se crean las pruebas para la clase SaleLineDeleted

This commit is contained in:
Mongar28 2024-08-14 16:06:11 -05:00
parent 1eb41e1b92
commit cbd633e8b1
8 changed files with 79 additions and 10 deletions

View File

@ -9,6 +9,8 @@ __all__ = ['register']
def register(): def register():
Pool.register( Pool.register(
sale.Sale, sale.Sale,
sale.SaleLine,
sale.SaleLineDeleted,
module='sale_line_delete_log', type_='model') module='sale_line_delete_log', type_='model')
Pool.register( Pool.register(
module='sale_line_delete_log', type_='wizard') module='sale_line_delete_log', type_='wizard')

Binary file not shown.

View File

@ -2,12 +2,13 @@
# this repository contains the full copyright notices and license terms. # this repository contains the full copyright notices and license terms.
from trytond.pool import Pool from trytond.pool import Pool
from . import sale
__all__ = ['register'] __all__ = ['register']
def register(): def register():
Pool.register( Pool.register(
sale.Sale,
module='sale_line_delete_log', type_='model') module='sale_line_delete_log', type_='model')
Pool.register( Pool.register(
module='sale_line_delete_log', type_='wizard') module='sale_line_delete_log', type_='wizard')

View File

@ -161,9 +161,21 @@ Sale 5 products::
>>> sale.lines.append(sale_line) >>> sale.lines.append(sale_line)
>>> sale_line.product = product >>> sale_line.product = product
>>> sale_line.quantity = 3.0 >>> sale_line.quantity = 3.0
>>> sale.click('quote') >>> sale.save()
>>> sale.untaxed_amount, sale.tax_amount, sale.total_amount >>> len(sale.lines)
(Decimal('50.00'), Decimal('5.00'), Decimal('55.00')) 3
>>> sale.click('confirm')
>>> sale.untaxed_amount, sale.tax_amount, sale.total_amount >>> sale.untaxed_amount, sale.tax_amount, sale.total_amount
(Decimal('50.00'), Decimal('5.00'), Decimal('55.00')) (Decimal('50.00'), Decimal('5.00'), Decimal('55.00'))
Delete a sale line::
>>> sale.lines[0].delete()
>>> sale.save()
>>> len(sale.lines)
2
>>> sale.delete_lines

56
sale.py
View File

@ -1,16 +1,66 @@
from trytond.pool import PoolMeta from trytond.pool import PoolMeta, Pool
from trytond.model import fields from trytond.model import fields, ModelSQL
from trytond.pyson import Eval from trytond.pyson import Eval
from trytond.transaction import Transaction
class Sale(metaclass=PoolMeta): class Sale(metaclass=PoolMeta):
__name__ = 'sale.sale' __name__ = 'sale.sale'
delete_lines = fields.One2Many( delete_lines = fields.One2Many(
'sale.line', 'sale.line_deleted',
'sale', 'sale',
"Delete lines", "Delete lines",
states={ states={
'readonly': Eval('state') != 'draft' 'readonly': Eval('state') != 'draft'
} }
) )
class SaleLine(metaclass=PoolMeta):
__name__ = 'sale.line'
@classmethod
def delete(cls, lines):
pool = Pool()
SaleLineDeleted = pool.get('sale.line_deleted')
for line in lines:
SaleLineDeleted.create([{
'sale': line.sale,
'quantity': line.quantity,
'unit': line.unit,
'product': line.product,
'user': Transaction().user
}])
super(SaleLine, cls).delete(lines)
class SaleLineDeleted(ModelSQL):
'Register lines deleted in sale'
__name__ = 'sale.line_deleted'
sale = fields.Many2One(
'sale.sale', "Sale", ondelete='CASCADE', required=True
)
quantity = fields.Float(
"Quantity", digits='unit',
# states={
# 'invisible': Eval('type') != 'line',
# 'required': Eval('type') == 'line',
# 'readonly': Eval('sale_state') != 'draft',
# }
)
unit = fields.Many2One('product.uom', 'Unit', ondelete='RESTRICT',)
product = fields.Many2One('product.product', 'Product',
ondelete='RESTRICT',
)
sale_date = fields.Date('Sale Date',)
user = fields.Many2One(
'res.user',
'User'
)

View File

@ -15,6 +15,7 @@ Imports::
>>> import datetime as dt >>> import datetime as dt
>>> today = dt.date.today() >>> today = dt.date.today()
>>> from trytond.tests.tools import set_user >>> from trytond.tests.tools import set_user
>>> from trytond.modules.sale_line_delete_log.sale import SaleLineDeleted
Activate modules:: Activate modules::
@ -174,7 +175,10 @@ Delete a sale line::
>>> sale.save() >>> sale.save()
>>> len(sale.lines) >>> len(sale.lines)
2 2
>>> sale.delete_lines >>> sale.reload()
>>> sale.delete_lines[0]
proteus.Model.get('sale.line_deleted')(1)
>>> assert isinstance(sale.delete_lines[0], Model.get('sale.line_deleted')), "it's not instance SaleLineDeleted"

View File

@ -5,7 +5,7 @@ MANIFEST.in
README.rst README.rst
setup.py setup.py
./__init__.py ./__init__.py
./sale_line_delete_log.py ./sale.py
./tryton.cfg ./tryton.cfg
./tests/__init__.py ./tests/__init__.py
./tests/scenario_sale_line_delete_log.rst ./tests/scenario_sale_line_delete_log.rst