se cambia el parametro sale en set_number

This commit is contained in:
sinergia 2023-10-12 00:13:54 -05:00
parent 5442a7cb0e
commit e5d77c2f89

90
sale.py
View File

@ -28,11 +28,11 @@ class Sale(metaclass=PoolMeta):
('preventive', 'Preventive'), ('preventive', 'Preventive'),
('corrective', 'Corrective') ('corrective', 'Corrective')
], "Maintenance Type", ], "Maintenance Type",
states={ states={
'invisible': Eval('sale_type') != "maintenance", 'invisible': Eval('sale_type') != "maintenance",
'required': Eval('sale_type') == "maintenance", 'required': Eval('sale_type') == "maintenance",
'readonly': Eval('state') != 'draft'}, 'readonly': Eval('state') != 'draft'},
depends=['sale_type']) depends=['sale_type'])
contract_ref = fields.Reference("Contract Base", selection='get_origin_contract', contract_ref = fields.Reference("Contract Base", selection='get_origin_contract',
domain={'optical_equipment.contract': [ domain={'optical_equipment.contract': [
@ -41,7 +41,7 @@ class Sale(metaclass=PoolMeta):
]}, ]},
states={'invisible': (Eval('sale_type') != 'maintenance')}, states={'invisible': (Eval('sale_type') != 'maintenance')},
search_context={ search_context={
'related_party': Eval('party'), 'related_party': Eval('party'),
},) },)
agended = fields.Boolean("Scheduling", states={ agended = fields.Boolean("Scheduling", states={
'invisible': (Eval('sale_type') != 'maintenance')}) 'invisible': (Eval('sale_type') != 'maintenance')})
@ -60,25 +60,25 @@ class Sale(metaclass=PoolMeta):
'invisible': (Eval('state').in_( 'invisible': (Eval('state').in_(
['cancelled', 'draft']))}, ['cancelled', 'draft']))},
'report': {}}) 'report': {}})
cls._transitions |= set(( cls._transitions |= set((
('draft', 'quotation'), ('draft', 'quotation'),
('quotation', 'confirmed'), ('quotation', 'confirmed'),
('confirmed', 'processing'), ('confirmed', 'processing'),
('confirmed', 'draft'), ('confirmed', 'draft'),
('processing', 'processing'), ('processing', 'processing'),
('processing', 'done'), ('processing', 'done'),
('done', 'processing'), ('done', 'processing'),
('draft', 'cancelled'), ('draft', 'cancelled'),
('quotation', 'cancelled'), ('quotation', 'cancelled'),
('quotation', 'draft'), ('quotation', 'draft'),
('cancelled', 'draft'), ('cancelled', 'draft'),
('processing', 'draft') ('processing', 'draft')
)) ))
@fields.depends('lines', 'sale_type', 'agended') @fields.depends('lines', 'sale_type', 'agended')
def on_chage_sale_type(self): def on_chage_sale_type(self):
self.lines= [] self.lines = []
if self.sale_type != "maintenance": if self.sale_type != "maintenance":
self.agended = False self.agended = False
elif self.sale_type == "maintenance": elif self.sale_type == "maintenance":
@ -87,7 +87,7 @@ class Sale(metaclass=PoolMeta):
@classmethod @classmethod
def default_agended(self): def default_agended(self):
return False return False
@classmethod @classmethod
def _get_origin_contract(cls): def _get_origin_contract(cls):
'Return list of Model names for origin Reference' 'Return list of Model names for origin Reference'
@ -96,12 +96,11 @@ class Sale(metaclass=PoolMeta):
return [Contract.__name__] return [Contract.__name__]
@classmethod @classmethod
def get_origin_contract(cls): def get_origin_contract(cls):
Model = Pool().get('ir.model') Model = Pool().get('ir.model')
get_name = Model.get_name get_name = Model.get_name
models = cls._get_origin_contract() models = cls._get_origin_contract()
return [(None, '')] + [(m, get_name(m)) for m in models] return [(None, '')] + [(m, get_name(m)) for m in models]
@ -112,7 +111,7 @@ class Sale(metaclass=PoolMeta):
'company': self.company, 'company': self.company,
'sale_type': self.sale_type, 'sale_type': self.sale_type,
'service_maintenance_initial': True if self.sale_type != 'equipments' else False, 'service_maintenance_initial': True if self.sale_type != 'equipments' else False,
} }
values.update(dict(key)) values.update(dict(key))
return Shipment(**values) return Shipment(**values)
@ -126,7 +125,7 @@ class Sale(metaclass=PoolMeta):
Config = pool.get('optical_equipment.configuration') Config = pool.get('optical_equipment.configuration')
config = Config(1) config = Config(1)
for sale in sales: for sale in sales:
if config.equipment_sequence != None: if config.equipment_sequence is not None:
if not sale.quote_number: if not sale.quote_number:
try: try:
sale.quote_number = config.sale_quote_number.get() sale.quote_number = config.sale_quote_number.get()
@ -135,7 +134,7 @@ class Sale(metaclass=PoolMeta):
raise UserError(str('Validation Error')) raise UserError(str('Validation Error'))
else: else:
raise UserError(gettext('optical_equipment.msg_not_sequence_quote')) raise UserError(gettext('optical_equipment.msg_not_sequence_quote'))
@classmethod @classmethod
def copy(cls, sales, default=None): def copy(cls, sales, default=None):
if default is None: if default is None:
@ -207,7 +206,7 @@ class Sale(metaclass=PoolMeta):
sale.state = "confirmed" sale.state = "confirmed"
sale.save() sale.save()
cls.set_number([sale]) cls.set_number(sales)
with Transaction().set_context( with Transaction().set_context(
queue_name='sale', queue_name='sale',
queue_scheduled_at=config.sale_process_after): queue_scheduled_at=config.sale_process_after):
@ -222,7 +221,6 @@ class SaleLine(metaclass=PoolMeta):
unit_digits = fields.Function(fields.Integer('Unit Digits'), unit_digits = fields.Function(fields.Integer('Unit Digits'),
'on_change_with_unit_digits') 'on_change_with_unit_digits')
@classmethod @classmethod
def __setup__(cls): def __setup__(cls):
super(SaleLine, cls).__setup__() super(SaleLine, cls).__setup__()
@ -231,20 +229,18 @@ class SaleLine(metaclass=PoolMeta):
[('type', '=', 'service'), [('type', '=', 'service'),
('maintenance_activity', '=', True)], [])) ('maintenance_activity', '=', True)], []))
cls.product.domain.append(If(Eval('_parent_sale.sale_type') == 'replaces', cls.product.domain.append(If(Eval('_parent_sale.sale_type') == 'replaces',
[('replacement', '=', True)], [])) [('replacement', '=', True)], []))
def on_change_with_unit_digits(self, name=None): def on_change_with_unit_digits(self, name=None):
if self.unit: if self.unit:
return self.unit.digits return self.unit.digits
return 2 return 2
@fields.depends('product', 'unit', 'quantity', 'sale', @fields.depends('product', 'unit', 'quantity', 'sale',
'_parent_sale.party', '_parent_sale.sale_type', methods=['_get_tax_rule_pattern', '_parent_sale.party', '_parent_sale.sale_type', methods=['_get_tax_rule_pattern',
'_get_context_sale_price','on_change_with_amount']) '_get_context_sale_price', 'on_change_with_amount'])
def on_change_product(self): def on_change_product(self):
Product = Pool().get('product.product') Product = Pool().get('product.product')
if not self.product: if not self.product:
self.product_equipment = False self.product_equipment = False
self.unit = None self.unit = None
@ -256,7 +252,7 @@ class SaleLine(metaclass=PoolMeta):
if self.sale.sale_type == 'equipments': if self.sale.sale_type == 'equipments':
self.quantity = 1 self.quantity = 1
if self.sale and self.sale.party: if self.sale and self.sale.party:
self.product_equipment = False self.product_equipment = False
party = self.sale.party party = self.sale.party
@ -285,7 +281,7 @@ class SaleLine(metaclass=PoolMeta):
with Transaction().set_context(self._get_context_sale_price()): with Transaction().set_context(self._get_context_sale_price()):
self.unit_price = Product.get_sale_price([self.product], self.unit_price = Product.get_sale_price([self.product],
self.quantity or 0)[self.product.id] self.quantity or 0)[self.product.id]
if self.unit_price: if self.unit_price:
self.unit_price = self.unit_price.quantize( self.unit_price = self.unit_price.quantize(
@ -317,9 +313,8 @@ class SaleLine(metaclass=PoolMeta):
if (shipment_type == 'out') != (self.quantity >= 0): if (shipment_type == 'out') != (self.quantity >= 0):
return return
quantity = (self._get_move_quantity(shipment_type) quantity = (self._get_move_quantity(shipment_type)
- self._get_shipped_quantity(shipment_type)) - self._get_shipped_quantity(shipment_type))
quantity = self.unit.round(quantity) quantity = self.unit.round(quantity)
@ -329,8 +324,8 @@ class SaleLine(metaclass=PoolMeta):
if not self.sale.party.customer_location: if not self.sale.party.customer_location:
raise PartyLocationError( raise PartyLocationError(
gettext('sale.msg_sale_customer_location_required', gettext('sale.msg_sale_customer_location_required',
sale=self.sale.rec_name, sale=self.sale.rec_name,
party=self.sale.party.rec_name)) party=self.sale.party.rec_name))
move = Move() move = Move()
move.quantity = quantity move.quantity = quantity
@ -344,36 +339,37 @@ class SaleLine(metaclass=PoolMeta):
if move.on_change_with_unit_price_required(): if move.on_change_with_unit_price_required():
move.unit_price = self.unit_price move.unit_price = self.unit_price
move.currency = self.sale.currency move.currency = self.sale.currency
move.planned_date = self.planned_shipping_date move.planned_date = self.planned_shipping_date
move.invoice_lines = self._get_move_invoice_lines(shipment_type) move.invoice_lines = self._get_move_invoice_lines(shipment_type)
move.origin = self move.origin = self
return move return move
class SaleDate(ModelView): class SaleDate(ModelView):
'Confirmacíon Fecha de Venta' 'Confirmacíon Fecha de Venta'
__name__ = 'optical_equipment.confirm_sale_date.form' __name__ = 'optical_equipment.confirm_sale_date.form'
sale_date = fields.Date("Fecha Venta", required=True) sale_date = fields.Date("Fecha Venta", required=True)
class ConfirmSaleDate(Wizard): class ConfirmSaleDate(Wizard):
'Confirmacíon Fecha de Venta' 'Confirmacíon Fecha de Venta'
__name__ = 'optical_equipment.confirm_sale_date' __name__ = 'optical_equipment.confirm_sale_date'
start = StateView('optical_equipment.confirm_sale_date.form', start = StateView('optical_equipment.confirm_sale_date.form',
'optical_equipment.confirm_sale_date_view_form',[ 'optical_equipment.confirm_sale_date_view_form', [
Button('Confirmar', 'confirm_date', 'tryton-ok', default=True), Button('Confirmar', 'confirm_date', 'tryton-ok', default=True),
]) ])
confirm_date = StateAction('sale.act_sale_form') confirm_date = StateAction('sale.act_sale_form')
def default_start(self, fields): def default_start(self, fields):
if self.record: if self.record:
return {'sale_date': self.record.sale_date} return {'sale_date': self.record.sale_date}
def do_confirm_date(self, action): def do_confirm_date(self, action):
self.record.sale_date = self.start.sale_date self.record.sale_date = self.start.sale_date
self.record.state = 'processing' self.record.state = 'processing'
self.record.save() self.record.save()