Merge branch 'imp/11.0/delivery_hibou__sig_req' into '11.0-test'

imp/11.0/delivery_hibou__sig_req into 11.0-test

See merge request hibou-io/hibou-odoo/suite!1304
This commit is contained in:
Hibou Bot
2022-01-19 18:29:24 +00:00
4 changed files with 38 additions and 23 deletions

View File

@@ -311,7 +311,8 @@ class DeliveryFedex(models.Model):
# package_length=packaging.length, # package_length=packaging.length,
sequence_number=sequence, sequence_number=sequence,
ref=('%s-%d' % (order_name, sequence)), ref=('%s-%d' % (order_name, sequence)),
insurance=superself.get_insurance_value(picking=picking, package=package) insurance=superself.get_insurance_value(picking=picking, package=package),
signature_required=superself.get_signature_required(picking=picking, package=package)
) )
srm.set_master_package(net_weight, package_count, master_tracking_id=master_tracking_id) srm.set_master_package(net_weight, package_count, master_tracking_id=master_tracking_id)
request = srm.process_shipment() request = srm.process_shipment()
@@ -385,7 +386,8 @@ class DeliveryFedex(models.Model):
# package_width=packaging.width, # package_width=packaging.width,
# package_length=packaging.length, # package_length=packaging.length,
ref=order_name, ref=order_name,
insurance=superself.get_insurance_value(picking=picking, package=picking_packages[:1]) insurance=superself.get_insurance_value(picking=picking, package=picking_packages[:1]),
signature_required=superself.get_signature_required(picking=picking, package=picking_packages[:1])
) )
srm.set_master_package(net_weight, 1) srm.set_master_package(net_weight, 1)
@@ -475,6 +477,7 @@ class DeliveryFedex(models.Model):
meter_number = superself._get_fedex_meter_number(order=order, picking=picking) meter_number = superself._get_fedex_meter_number(order=order, picking=picking)
order_name = superself.get_order_name(order=order, picking=picking) order_name = superself.get_order_name(order=order, picking=picking)
insurance_value = superself.get_insurance_value(order=order, picking=picking, package=package) insurance_value = superself.get_insurance_value(order=order, picking=picking, package=package)
signature_required = superself.get_signature_required(order=order, picking=picking, package=package)
residential = self._get_fedex_recipient_is_residential(recipient) residential = self._get_fedex_recipient_is_residential(recipient)
date_planned = fields.Datetime.now() date_planned = fields.Datetime.now()
if self.env.context.get('date_planned'): if self.env.context.get('date_planned'):
@@ -558,7 +561,8 @@ class DeliveryFedex(models.Model):
# package_length=packaging.length, # package_length=packaging.length,
sequence_number=1, sequence_number=1,
ref=('%s-%d' % (order_name, 1)), ref=('%s-%d' % (order_name, 1)),
insurance=insurance_value insurance=insurance_value,
signature_required=signature_required
) )
else: else:
# deliver all together... # deliver all together...
@@ -576,7 +580,8 @@ class DeliveryFedex(models.Model):
# po_number=po_number, # po_number=po_number,
# dept_number=dept_number, # dept_number=dept_number,
ref=('%s-%d' % (order_name, 1)), ref=('%s-%d' % (order_name, 1)),
insurance=insurance_value insurance=insurance_value,
signature_required=signature_required
) )

View File

@@ -81,7 +81,7 @@ class FedexRequest(fedex_request.FedexRequest):
self.RequestedShipment.Recipient.Contact = Contact self.RequestedShipment.Recipient.Contact = Contact
self.RequestedShipment.Recipient.Address = Address self.RequestedShipment.Recipient.Address = Address
def add_package(self, weight_value, sequence_number=False, mode='shipping', ref=False, insurance=False): def add_package(self, weight_value, sequence_number=False, mode='shipping', ref=False, insurance=False, signature_required=False):
""" """
Adds ref type of object to include. Adds ref type of object to include.
:param weight_value: default :param weight_value: default
@@ -89,6 +89,7 @@ class FedexRequest(fedex_request.FedexRequest):
:param mode: default :param mode: default
:param ref: NEW add CUSTOMER_REFERENCE object :param ref: NEW add CUSTOMER_REFERENCE object
:param insurance: NEW add Insurance amount :param insurance: NEW add Insurance amount
:param signature_required: NEW add signature required
:return: :return:
""" """
package = self.client.factory.create('RequestedPackageLineItem') package = self.client.factory.create('RequestedPackageLineItem')
@@ -109,6 +110,12 @@ class FedexRequest(fedex_request.FedexRequest):
insured.Currency = 'USD' insured.Currency = 'USD'
package.InsuredValue = insured package.InsuredValue = insured
special_service = self.client.factory.create("PackageSpecialServicesRequested")
signature_detail = self.client.factory.create("SignatureOptionDetail")
signature_detail.OptionType = 'DIRECT' if signature_required else 'NO_SIGNATURE_REQUIRED'
special_service.SignatureOptionDetail = signature_detail
package.SpecialServicesRequested = special_service
package.PhysicalPackaging = 'BOX' package.PhysicalPackaging = 'BOX'
package.Weight = package_weight package.Weight = package_weight
if mode == 'rating': if mode == 'rating':

View File

@@ -669,7 +669,7 @@ class SaleOrderMakePlan(models.TransientModel):
_logger.info('generate_shipping_options:: base_option: ' + str(base_option) + ' order_fake: ' + str(order_fake) + ' carriers: ' + str(carriers)) _logger.info('generate_shipping_options:: base_option: ' + str(base_option) + ' order_fake: ' + str(order_fake) + ' carriers: ' + str(carriers))
if not carriers: if not carriers:
return base_option return [base_option]
if not base_option.get('sub_options'): if not base_option.get('sub_options'):
options = [] options = []

View File

@@ -1,7 +1,7 @@
# Part of Hibou Suite Professional. See LICENSE_PROFESSIONAL file for full copyright and licensing details. # Part of Hibou Suite Professional. See LICENSE_PROFESSIONAL file for full copyright and licensing details.
from odoo import api, fields, models, _ from odoo import api, fields, models, _
from odoo.tools import safe_eval from odoo.exceptions import UserError, ValidationError
import logging import logging
_logger = logging.getLogger(__name__) _logger = logging.getLogger(__name__)
@@ -37,6 +37,7 @@ class StockDeliveryPlanner(models.TransientModel):
pass pass
for carrier in base_carriers: for carrier in base_carriers:
try:
rates = carrier.rate_shipment_multi(picking=planner.picking_id) rates = carrier.rate_shipment_multi(picking=planner.picking_id)
for rate in filter(lambda r: not r.get('success'), rates): for rate in filter(lambda r: not r.get('success'), rates):
_logger.warning(rate.get('error_message')) _logger.warning(rate.get('error_message'))
@@ -50,9 +51,11 @@ class StockDeliveryPlanner(models.TransientModel):
'package_id': package.id, 'package_id': package.id,
'price': rate['price'], 'price': rate['price'],
'date_planned': rate['date_planned'], 'date_planned': rate['date_planned'],
'requested_date': rate['date_delivered'], 'requested_date': rate.get('date_delivered', False),
'transit_days': rate['transit_days'], 'transit_days': rate.get('transit_days', 0),
}) })
except (UserError, ValidationError) as e:
_logger.warning('Exception during delivery planning. %s' % str(e))
return planner return planner
@api.model @api.model