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():
Pool.register(
sale.Sale,
sale.SaleLine,
sale.SaleLineDeleted,
module='sale_line_delete_log', type_='model')
Pool.register(
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.
from trytond.pool import Pool
from . import sale
__all__ = ['register']
def register():
Pool.register(
sale.Sale,
module='sale_line_delete_log', type_='model')
Pool.register(
module='sale_line_delete_log', type_='wizard')

View File

@ -161,9 +161,21 @@ Sale 5 products::
>>> sale.lines.append(sale_line)
>>> sale_line.product = product
>>> sale_line.quantity = 3.0
>>> sale.click('quote')
>>> sale.untaxed_amount, sale.tax_amount, sale.total_amount
(Decimal('50.00'), Decimal('5.00'), Decimal('55.00'))
>>> sale.click('confirm')
>>> sale.save()
>>> len(sale.lines)
3
>>> sale.untaxed_amount, sale.tax_amount, sale.total_amount
(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.model import fields
from trytond.pool import PoolMeta, Pool
from trytond.model import fields, ModelSQL
from trytond.pyson import Eval
from trytond.transaction import Transaction
class Sale(metaclass=PoolMeta):
__name__ = 'sale.sale'
delete_lines = fields.One2Many(
'sale.line',
'sale.line_deleted',
'sale',
"Delete lines",
states={
'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
>>> today = dt.date.today()
>>> from trytond.tests.tools import set_user
>>> from trytond.modules.sale_line_delete_log.sale import SaleLineDeleted
Activate modules::
@ -174,7 +175,10 @@ Delete a sale line::
>>> sale.save()
>>> len(sale.lines)
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
setup.py
./__init__.py
./sale_line_delete_log.py
./sale.py
./tryton.cfg
./tests/__init__.py
./tests/scenario_sale_line_delete_log.rst