- fusion_claims: separated field service logic, updated controllers/views - fusion_tasks: updated task views and map integration - fusion_authorizer_portal: added page 11 signing, schedule booking, migrations - fusion_shipping: new standalone shipping module (Canada Post, FedEx, DHL, Purolator) - fusion_ltc_management: new standalone LTC management module
71 lines
2.2 KiB
Python
71 lines
2.2 KiB
Python
from odoo import models, fields
|
|
|
|
|
|
class SaleOrder(models.Model):
|
|
_inherit = 'sale.order'
|
|
|
|
fusion_service_code = fields.Char(
|
|
string='Service Code',
|
|
copy=False,
|
|
help='Carrier service code selected during shipping method selection',
|
|
)
|
|
# Per-package dimensions & service info (replaces single-dim fields).
|
|
fusion_package_ids = fields.One2many(
|
|
'fusion.order.package',
|
|
'sale_order_id',
|
|
string='Packages',
|
|
copy=False,
|
|
)
|
|
|
|
# Legacy single-package dimension fields (kept for backward
|
|
# compatibility with existing orders -- new orders populate the
|
|
# One2many above and fill these from the first package).
|
|
fusion_package_length = fields.Float(
|
|
string='Package Length', copy=False)
|
|
fusion_package_width = fields.Float(
|
|
string='Package Width', copy=False)
|
|
fusion_package_height = fields.Float(
|
|
string='Package Height', copy=False)
|
|
|
|
fusion_shipment_ids = fields.One2many(
|
|
'fusion.shipment',
|
|
'sale_order_id',
|
|
string='Shipments',
|
|
)
|
|
fusion_shipment_count = fields.Integer(
|
|
string='Shipments',
|
|
compute='_compute_fusion_shipment_count',
|
|
)
|
|
|
|
partner_ups_carrier_account = fields.Char(
|
|
related='partner_id.property_ups_carrier_account',
|
|
string="UPS Carrier Account",
|
|
readonly=False,
|
|
)
|
|
ups_bill_my_account = fields.Boolean(
|
|
related='carrier_id.ups_bill_my_account',
|
|
string="UPS Bill My Account",
|
|
)
|
|
|
|
def _compute_fusion_shipment_count(self):
|
|
for order in self:
|
|
order.fusion_shipment_count = len(
|
|
order.fusion_shipment_ids)
|
|
|
|
def action_view_fusion_shipments(self):
|
|
self.ensure_one()
|
|
shipments = self.env['fusion.shipment'].search(
|
|
[('sale_order_id', '=', self.id)]
|
|
)
|
|
action = {
|
|
'type': 'ir.actions.act_window',
|
|
'name': 'Shipments',
|
|
'res_model': 'fusion.shipment',
|
|
'view_mode': 'list,form',
|
|
'domain': [('sale_order_id', '=', self.id)],
|
|
}
|
|
if len(shipments) == 1:
|
|
action['view_mode'] = 'form'
|
|
action['res_id'] = shipments.id
|
|
return action
|