[MOV] sale: move sale part from warning module

This commit is contained in:
Yannick Tivisse
2016-04-07 10:08:19 +02:00
parent d143314442
commit 91163236ca
4 changed files with 69 additions and 3 deletions
+8 -1
View File
@@ -2,6 +2,7 @@
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from openerp.osv import fields,osv
from openerp.addons.base.res.res_partner import WARNING_MESSAGE, WARNING_HELP
class res_partner(osv.osv):
_inherit = 'res.partner'
@@ -18,5 +19,11 @@ class res_partner(osv.osv):
_columns = {
'sale_order_count': fields.function(_sale_order_count, string='# of Sales Order', type='integer'),
'sale_order_ids': fields.one2many('sale.order','partner_id','Sales Order')
'sale_order_ids': fields.one2many('sale.order', 'partner_id', 'Sales Order'),
'sale_warn': fields.selection(WARNING_MESSAGE, 'Sales Order', help=WARNING_HELP, required=True),
'sale_warn_msg': fields.text('Message for Sales Order'),
}
_defaults = {
'sale_warn': 'no-message',
}
+8
View File
@@ -49,6 +49,14 @@
<field string="Sales" name="sale_order_count" widget="statinfo"/>
</button>
</div>
<page name="warnings" position="inside">
<group colspan="2" col="2">
<separator string="Warning on the Sales Order" colspan="4"/>
<field name="sale_warn" nolabel="1" />
<field name="sale_warn_msg" colspan="3" nolabel="1"
attrs="{'required':[('sale_warn','!=','no-message')],'readonly':[('sale_warn','=','no-message')]}"/>
</group>
</page>
</field>
</record>
+46 -1
View File
@@ -8,7 +8,7 @@ from openerp import api, fields, models, _
import openerp.addons.decimal_precision as dp
from openerp.exceptions import UserError
from openerp.tools import float_is_zero, float_compare, DEFAULT_SERVER_DATETIME_FORMAT
from openerp.addons.base.res.res_partner import WARNING_MESSAGE, WARNING_HELP
class res_company(models.Model):
_inherit = "res.company"
@@ -212,6 +212,36 @@ class SaleOrder(models.Model):
values['team_id'] = self.partner_id.team_id.id
self.update(values)
@api.onchange('partner_id')
def onchange_partner_id_warning(self):
if not self.partner_id:
return
warning = {}
title = False
message = False
partner = self.partner_id
# If partner has no warning, check its company
if partner.sale_warn == 'no-message' and partner.parent_id:
partner = partner.parent_id
if partner.sale_warn != 'no-message':
# Block if partner only has warning but parent company is blocked
if partner.sale_warn != 'block' and partner.parent_id and partner.parent_id.sale_warn == 'block':
partner = partner.parent_id
title = _("Warning for %s") % partner.name
message = partner.sale_warn_msg
warning = {
'title': title,
'message': message,
}
if partner.sale_warn == 'block':
self.update({'partner_id': False, 'partner_invoice_id': False, 'partner_shipping_id': False, 'pricelist_id': False})
return {'warning': warning}
if warning:
return {'warning': warning}
@api.model
def create(self, vals):
if vals.get('name', 'New') == 'New':
@@ -227,6 +257,7 @@ class SaleOrder(models.Model):
result = super(SaleOrder, self).create(vals)
return result
@api.multi
def _prepare_invoice(self):
"""
@@ -784,6 +815,18 @@ class SaleOrderLine(models.Model):
if self.order_id.pricelist_id and self.order_id.partner_id:
vals['price_unit'] = self.env['account.tax']._fix_tax_included_price(product.price, product.taxes_id, self.tax_id)
self.update(vals)
title = False
message = False
warning = {}
if product.sale_line_warn != 'no-message':
title = _("Warning for %s") % product.name
message = product.sale_line_warn_msg
warning['title'] = title
warning['message'] = message
if product.sale_line_warn == 'block':
self.product_id = False
return {'warning': warning}
return {'domain': domain}
@api.onchange('product_uom', 'product_uom_qty')
@@ -913,6 +956,8 @@ class ProductTemplate(models.Model):
"Timesheets on contract: Invoice based on the tracked hours on the related timesheet.\n"
"Create a task and track hours: Create a task on the sale order validation and track the work hours.",
default='manual')
sale_line_warn = fields.Selection(WARNING_MESSAGE, 'Sales Order Line', help=WARNING_HELP, required=True, default="no-message")
sale_line_warn_msg = fields.Text('Message for Sales Order Line')
@api.multi
@api.depends('product_variant_ids.sales_count')
+7 -1
View File
@@ -565,7 +565,6 @@
<field string="Sales" name="sales_count" widget="statinfo" />
</button>
</div>
</field>
</record>
@@ -581,6 +580,13 @@
<field string="Sales" name="sales_count" widget="statinfo" />
</button>
</div>
<group name="description" position="after">
<group string="Warning when Selling this Product" colspan="2">
<field name="sale_line_warn" nolabel="1"/>
<field name="sale_line_warn_msg" colspan="3" nolabel="1"
attrs="{'required':[('sale_line_warn','!=','no-message')],'readonly':[('sale_line_warn','=','no-message')]}"/>
</group>
</group>
</field>
</record>