1
0
forked from Mapan/odoo17e
odoo17e-kedaikipas58/addons/sale_purchase_inter_company_rules/models/res_company.py
2024-12-10 09:04:09 +07:00

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')