mirror of
https://gitlab.com/hibou-io/hibou-odoo/suite.git
synced 2025-01-20 12:37:31 +02:00
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:
@@ -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
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -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':
|
||||||
|
|||||||
@@ -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 = []
|
||||||
|
|||||||
@@ -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,22 +37,25 @@ class StockDeliveryPlanner(models.TransientModel):
|
|||||||
pass
|
pass
|
||||||
|
|
||||||
for carrier in base_carriers:
|
for carrier in base_carriers:
|
||||||
rates = carrier.rate_shipment_multi(picking=planner.picking_id)
|
try:
|
||||||
for rate in filter(lambda r: not r.get('success'), rates):
|
rates = carrier.rate_shipment_multi(picking=planner.picking_id)
|
||||||
_logger.warning(rate.get('error_message'))
|
for rate in filter(lambda r: not r.get('success'), rates):
|
||||||
for rate in filter(lambda r: r.get('success'), rates):
|
_logger.warning(rate.get('error_message'))
|
||||||
rate = self.calculate_delivery_window(rate)
|
for rate in filter(lambda r: r.get('success'), rates):
|
||||||
# added late in API dev cycle
|
rate = self.calculate_delivery_window(rate)
|
||||||
package = rate.get('package') or self.env['stock.quant.package'].browse()
|
# added late in API dev cycle
|
||||||
planner.plan_option_ids |= planner.plan_option_ids.create({
|
package = rate.get('package') or self.env['stock.quant.package'].browse()
|
||||||
'plan_id': self.id,
|
planner.plan_option_ids |= planner.plan_option_ids.create({
|
||||||
'carrier_id': rate['carrier'].id,
|
'plan_id': self.id,
|
||||||
'package_id': package.id,
|
'carrier_id': rate['carrier'].id,
|
||||||
'price': rate['price'],
|
'package_id': package.id,
|
||||||
'date_planned': rate['date_planned'],
|
'price': rate['price'],
|
||||||
'requested_date': rate['date_delivered'],
|
'date_planned': rate['date_planned'],
|
||||||
'transit_days': rate['transit_days'],
|
'requested_date': rate.get('date_delivered', False),
|
||||||
})
|
'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
|
||||||
|
|||||||
Reference in New Issue
Block a user