forked from Mapan/odoo17e
67 lines
3.0 KiB
Python
67 lines
3.0 KiB
Python
# -*- coding: utf-8 -*-
|
|
from odoo import api, fields, models, _
|
|
|
|
new_rule_type = {
|
|
'sale': 'Synchronize Sales Order',
|
|
'purchase': 'Synchronize Purchase Order',
|
|
'sale_purchase': 'Synchronize Sales and Purchase Order',
|
|
}
|
|
|
|
class res_company(models.Model):
|
|
_inherit = 'res.company'
|
|
|
|
auto_validation = fields.Boolean(string="Automatic Validation")
|
|
rule_type = fields.Selection(selection_add=list(new_rule_type.items()), string="Rule",
|
|
help='Select the type to setup inter company rules in selected company.', default='not_synchronize')
|
|
warehouse_id = fields.Many2one("stock.warehouse", string="Warehouse",
|
|
help="Default value to set on Purchase(Sales) Orders that will be created based on Sale(Purchase) Orders made to this company")
|
|
copy_lots_delivery = fields.Boolean(string="Copy Lots on Delivery Validation")
|
|
|
|
def _intercompany_transaction_message_so_and_po(self, rule_type, auto_validation, warehouse_id):
|
|
generated_object = {
|
|
'sale': _('purchase order'),
|
|
'purchase': _('sales order'),
|
|
'sale_purchase': _('purchase/sales order'),
|
|
False: ''
|
|
}
|
|
event_type = {
|
|
'sale': _('sales order'),
|
|
'purchase': _('purchase order'),
|
|
'sale_purchase': _('sales/purchase order'),
|
|
False: ''
|
|
}
|
|
text = {
|
|
'validation': _('validated') if auto_validation else _('draft'),
|
|
'generated_object': generated_object[rule_type],
|
|
'warehouse': warehouse_id.sudo().display_name,
|
|
'event_type': event_type[rule_type],
|
|
'company': self.name,
|
|
}
|
|
if rule_type != 'sale':
|
|
return _(
|
|
'Generate a %(validation)s %(generated_object)s using '
|
|
'warehouse %(warehouse)s when a company confirms a '
|
|
'%(event_type)s for %(company)s.', **text)
|
|
else:
|
|
return _(
|
|
'Generate a %(validation)s %(generated_object)s when a '
|
|
'company confirms a %(event_type)s for %(company)s.', **text)
|
|
|
|
@api.depends('rule_type', 'auto_validation', 'warehouse_id', 'name')
|
|
def _compute_intercompany_transaction_message(self):
|
|
super(res_company, self)._compute_intercompany_transaction_message()
|
|
for record in self:
|
|
if record.rule_type in new_rule_type.keys():
|
|
record.intercompany_transaction_message = record._intercompany_transaction_message_so_and_po(record.rule_type, record.auto_validation, record.warehouse_id)
|
|
|
|
@api.onchange('rule_type')
|
|
def onchange_rule_type(self):
|
|
if self.rule_type not in new_rule_type.keys():
|
|
self.auto_validation = False
|
|
self.warehouse_id = False
|
|
self.copy_lots_delivery = False
|
|
else:
|
|
warehouse_id = self.env['stock.warehouse'].search([('company_id', '=', self._origin.id)], limit=1)
|
|
self.warehouse_id = warehouse_id
|
|
self.copy_lots_delivery = self.env.user.has_group('stock.group_production_lot')
|