diff --git a/delivery_stamps/__manifest__.py b/delivery_stamps/__manifest__.py index 9ad2cfe9..bfd9649e 100644 --- a/delivery_stamps/__manifest__.py +++ b/delivery_stamps/__manifest__.py @@ -3,7 +3,7 @@ { 'name': 'Stamps.com (USPS) Shipping', '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.", 'category': 'Warehouse', 'license': 'OPL-1', diff --git a/delivery_stamps/models/api/services.py b/delivery_stamps/models/api/services.py index 27db3a2d..a53aaea9 100755 --- a/delivery_stamps/models/api/services.py +++ b/delivery_stamps/models/api/services.py @@ -28,6 +28,21 @@ PATTERN_ID = r"{hex}{{8}}-{hex}{{4}}-{hex}{{4}}-{hex}{{4}}-{hex}{{12}}".format( 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): """Handle message authentication. @@ -90,6 +105,8 @@ class BaseService(object): credentials.Username = configuration.username credentials.Password = configuration.password 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.logger = getLogger("stamps") diff --git a/delivery_stamps/models/delivery_stamps.py b/delivery_stamps/models/delivery_stamps.py index 1408a7db..cd721f6d 100644 --- a/delivery_stamps/models/delivery_stamps.py +++ b/delivery_stamps/models/delivery_stamps.py @@ -14,6 +14,12 @@ from .api.services import StampsService _logger = getLogger(__name__) +STAMPS_US_APO_FPO_STATE_CODES = ( + 'AE', + 'AP', + 'AA', +) + STAMPS_PACKAGE_TYPES = [ 'Unknown', 'Postcard', @@ -52,17 +58,23 @@ class StockPackageType(models.Model): class ProviderStamps(models.Model): _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'}) 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_service_type = fields.Selection([('US-FC', 'First-Class'), - ('US-FCI', 'First-Class International'), - ('US-PM', 'Priority'), - ('US-PMI', 'Priority Mail International'), - ('US-EMI', ' Priority Mail Express International'), + stamps_service_type = fields.Selection([('US-FC', 'USPS First-Class'), + ('US-PM', 'USPS Priority'), + ('US-XM', 'USPS Express'), + ('US-MM', 'USPS Media Mail'), + ('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") stamps_default_packaging_id = fields.Many2one('stock.package.type', string='Default Package Type') @@ -79,7 +91,8 @@ class ProviderStamps(models.Model): ('AZpl', 'AZPL'), ('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_dc = fields.Boolean(string='Add Delivery Confirmation') stamps_addon_hp = fields.Boolean(string='Add Hidden Postage') @@ -315,8 +328,9 @@ class ProviderStamps(models.Model): return result return result - def _stamps_needs_customs(self, from_partner, to_partner): - return from_partner.country_id.code != to_partner.country_id.code + def _stamps_needs_customs(self, from_partner, to_partner, picking=None): + 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): res = [] @@ -331,7 +345,7 @@ class ProviderStamps(models.Model): company, from_partner, to_partner = self._stamps_get_addresses_for_picking(picking) 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() try: