Fix: Add buttons with error

This commit is contained in:
cosmos 2025-02-09 14:38:39 -05:00
parent 394364de81
commit 317bf70813
4 changed files with 74 additions and 9 deletions

View File

@ -1,6 +1,6 @@
# 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 ModelView, ModelSQL, fields
from trytond.model import ModelView, ModelSQL, fields, Workflow
from trytond.pool import Pool
from trytond.transaction import Transaction
from trytond.modules.currency.fields import Monetary
@ -9,7 +9,7 @@ from decimal import Decimal
from datetime import date
class SaleOrder(ModelView, ModelSQL):
class SaleOrder (Workflow, ModelView, ModelSQL):
"Sale Order"
__name__ = 'sale.order'
@ -23,7 +23,7 @@ class SaleOrder(ModelView, ModelSQL):
[("on_site", "On Site"),
("at_home", "At Home")], 'Pickup Location'
)
order_adress = fields.Many2One(
order_address = fields.Many2One(
'party.address', 'Address'
)
order_mobile = fields.Function(
@ -42,6 +42,51 @@ class SaleOrder(ModelView, ModelSQL):
Monetary("Total", currency='currency', digits='currency'),
'on_change_with_total_order'
)
number = fields.Char(
"Number", readonly=True
)
state = fields.Selection([
('draft', 'Draft'),
('confirmed', 'Confirmed')], "State"
)
@classmethod
def __setup__(cls):
super(SaleOrder, cls).__setup__()
cls._buttons.update({
'confirm': {},
})
cls._transitions |= set((
('draft', 'confirmed'),
))
@classmethod
@ModelView.button
@Workflow.transition('confirmed')
def confirm(cls, orders):
for order in orders:
if order.number:
continue
else:
cls.set_code([order])
@classmethod
def set_code(cls, orders):
for order in orders:
order.number = cls.get_number()[0].get()
order.save()
@classmethod
def get_number(cls):
pool = Pool()
Sequence = pool.get('ir.sequence')
order_sequence = Sequence.search([(
'sequence_type', '=', "sale.order")])
return order_sequence
@staticmethod
def default_state():
return 'draft'
@staticmethod
def default_company():

View File

@ -39,6 +39,21 @@ this repository contains the full copyright notices and license terms. -->
<field name="view" ref="sale_order_view_form"/>
<field name="act_window" ref="act_sale_order"/>
</record>
<record model="ir.sequence.type" id="sequence_type_order">
<field name="name">Order</field>
</record>
<record model="ir.sequence" id="sequence_sale_order">
<field name="name">Sale Order Number Sequence</field>
<field name="sequence_type" ref="sequence_type_order"/>
<field name="prefix">SO</field>
<field name="padding">5</field>
</record>
<record model="ir.model.button" id="confirm_order_button">
<field name="name">confirm</field>
<field name="string">Confirm</field>
<field name="model" search="[('model', '=', 'sale_order.order')]"/>
</record>
<menuitem
name="Order"
action="act_sale_order"

View File

@ -34,7 +34,6 @@ Create order::
>>> order = SaleOrder()
>>> order.party = party
>>> order.pickup_location = "on_site"
>>> order.save()
>>> line1 = order.lines.new()
>>> line1.product = product
>>> line1.unit = unit
@ -43,6 +42,10 @@ Create order::
>>> line1.total_amount = Decimal('33600')
>>> order.total_order = Decimal('33600')
>>> order.save()
>>> order.state
'draft'
>>> order.click('confirm')
>>> order.state
'confirmed'
>>> order.number
'SO00001'

View File

@ -4,10 +4,12 @@ this repository contains the full copyright notices and license terms. -->
<form>
<label name="party"/>
<field name="party"/>
<label name="number"/>
<field name="number"/>
<label name="pickup_location"/>
<field name="pickup_location"/>
<label name="order_adress"/>
<field name="order_adress"/>
<label name="order_address"/>
<field name="order_address"/>
<label name="order_mobile"/>
<field name="order_mobile"/>
<label name="date"/>