[IMP] delivery_stamps: add GlobalPost methods and APO/FPO

This commit is contained in:
Jared Kipe
2022-03-09 14:04:44 -08:00
parent bb6e5fa7f9
commit 6aceb350ed
3 changed files with 42 additions and 11 deletions

View File

@@ -3,7 +3,7 @@
{ {
'name': 'Stamps.com (USPS) Shipping', 'name': 'Stamps.com (USPS) Shipping',
'summary': 'Send your shippings through Stamps.com and track them online.', 'summary': 'Send your shippings through Stamps.com and track them online.',
'version': '15.0.1.0.0', 'version': '15.0.1.1.0',
'author': "Hibou Corp.", 'author': "Hibou Corp.",
'category': 'Warehouse', 'category': 'Warehouse',
'license': 'OPL-1', 'license': 'OPL-1',

View File

@@ -28,6 +28,21 @@ PATTERN_ID = r"{hex}{{8}}-{hex}{{4}}-{hex}{{4}}-{hex}{{4}}-{hex}{{12}}".format(
RE_TRANSACTION_ID = compile(PATTERN_ID) RE_TRANSACTION_ID = compile(PATTERN_ID)
# class LogPlugin(MessagePlugin):
# def __init__(self):
# self.logger = getLogger('stamps2')
# self.last_sent_raw = None
# self.last_received_raw = None
#
# def sending(self, context):
# self.last_sent_raw = str(context.envelope)
# self.logger.warning(self.last_sent_raw)
#
# def received(self, context):
# self.last_received_raw = str(context.reply)
# self.logger.warning(self.last_received_raw)
class AuthenticatorPlugin(MessagePlugin): class AuthenticatorPlugin(MessagePlugin):
"""Handle message authentication. """Handle message authentication.
@@ -90,6 +105,8 @@ class BaseService(object):
credentials.Username = configuration.username credentials.Username = configuration.username
credentials.Password = configuration.password credentials.Password = configuration.password
self.plugin = AuthenticatorPlugin(credentials, self.client) self.plugin = AuthenticatorPlugin(credentials, self.client)
# put in plugins=[] as well
# self.logplugin = LogPlugin()
self.client.set_options(plugins=[self.plugin], port=configuration.port) self.client.set_options(plugins=[self.plugin], port=configuration.port)
self.logger = getLogger("stamps") self.logger = getLogger("stamps")

View File

@@ -14,6 +14,12 @@ from .api.services import StampsService
_logger = getLogger(__name__) _logger = getLogger(__name__)
STAMPS_US_APO_FPO_STATE_CODES = (
'AE',
'AP',
'AA',
)
STAMPS_PACKAGE_TYPES = [ STAMPS_PACKAGE_TYPES = [
'Unknown', 'Unknown',
'Postcard', 'Postcard',
@@ -52,17 +58,23 @@ class StockPackageType(models.Model):
class ProviderStamps(models.Model): class ProviderStamps(models.Model):
_inherit = 'delivery.carrier' _inherit = 'delivery.carrier'
delivery_type = fields.Selection(selection_add=[('stamps', 'Stamps.com (USPS)')], delivery_type = fields.Selection(selection_add=[('stamps', 'Stamps.com')],
ondelete={'stamps': 'set default'}) ondelete={'stamps': 'set default'})
stamps_username = fields.Char(string='Stamps.com Username', groups='base.group_system') stamps_username = fields.Char(string='Stamps.com Username', groups='base.group_system')
stamps_password = fields.Char(string='Stamps.com Password', groups='base.group_system') stamps_password = fields.Char(string='Stamps.com Password', groups='base.group_system')
stamps_service_type = fields.Selection([('US-FC', 'First-Class'), stamps_service_type = fields.Selection([('US-FC', 'USPS First-Class'),
('US-FCI', 'First-Class International'), ('US-PM', 'USPS Priority'),
('US-PM', 'Priority'), ('US-XM', 'USPS Express'),
('US-PMI', 'Priority Mail International'), ('US-MM', 'USPS Media Mail'),
('US-EMI', ' Priority Mail Express International'), ('US-FCI', 'USPS First-Class International'),
('US-PMI', 'USPS Priority International'),
('US-EMI', 'USPS Express International'),
('SC-GPE', 'GlobalPost Economy'),
('SC-GPP', 'GlobalPost Standard'),
('SC-GPESS', 'GlobalPost SmartSaver Economy'),
('SC-GPPSS', 'GlobalPost SmartSaver Standard'),
], ],
required=True, string="Service Type", default="US-PM") required=True, string="Service Type", default="US-PM")
stamps_default_packaging_id = fields.Many2one('stock.package.type', string='Default Package Type') stamps_default_packaging_id = fields.Many2one('stock.package.type', string='Default Package Type')
@@ -79,7 +91,8 @@ class ProviderStamps(models.Model):
('AZpl', 'AZPL'), ('AZpl', 'AZPL'),
('BZpl', 'BZPL'), ('BZpl', 'BZPL'),
], ],
required=True, string="Image Type", default="Pdf") required=True, string="Image Type", default="Pdf",
help='Generally PDF or ZPL are the great options.')
stamps_addon_sc = fields.Boolean(string='Add Signature Confirmation') stamps_addon_sc = fields.Boolean(string='Add Signature Confirmation')
stamps_addon_dc = fields.Boolean(string='Add Delivery Confirmation') stamps_addon_dc = fields.Boolean(string='Add Delivery Confirmation')
stamps_addon_hp = fields.Boolean(string='Add Hidden Postage') stamps_addon_hp = fields.Boolean(string='Add Hidden Postage')
@@ -315,8 +328,9 @@ class ProviderStamps(models.Model):
return result return result
return result return result
def _stamps_needs_customs(self, from_partner, to_partner): def _stamps_needs_customs(self, from_partner, to_partner, picking=None):
return from_partner.country_id.code != to_partner.country_id.code return from_partner.country_id.code != to_partner.country_id.code or \
(to_partner.country_id.code == 'US' and to_partner.state_id.code in STAMPS_US_APO_FPO_STATE_CODES)
def stamps_send_shipping(self, pickings): def stamps_send_shipping(self, pickings):
res = [] res = []
@@ -331,7 +345,7 @@ class ProviderStamps(models.Model):
company, from_partner, to_partner = self._stamps_get_addresses_for_picking(picking) company, from_partner, to_partner = self._stamps_get_addresses_for_picking(picking)
customs = None customs = None
if self._stamps_needs_customs(from_partner, to_partner): if self._stamps_needs_customs(from_partner, to_partner, picking=picking):
customs = service.create_customs() customs = service.create_customs()
try: try: