def test_0020_gb_gb(self): "GB to GB UPS Standard with 2 packages" ship_confirm_request = ShipmentConfirm.shipment_confirm_request_type( Helper.get_shipper(self.shipper_number, "GB"), Helper.get_ship_to("GB"), Helper.get_ship_from("GB"), # Package 1 Helper.get_package( "GB", weight='15.0', package_type_code='02' ), # Customer Supplied Package # Package 2 Helper.get_package( "GB", weight='15.0', package_type_code='02' ), # Customer Supplied Package Helper.get_payment_info(AccountNumber=self.shipper_number), ShipmentConfirm.service_type(Code='11'), # UPS Standard Description=__doc__[:50] ) response = self.shipment_confirm_api.request(ship_confirm_request) digest = self.shipment_confirm_api.extract_digest(response) # now accept the package accept_request = ShipmentAccept.shipment_accept_request_type(digest) self.shipment_accept_api.request(accept_request)
def get_shipping_labels(delivery_note): # get package information from delivery note # create xml request for ups shipping_package # parse the xml response and store the shipping labels and tracking_id # dn = frappe.get_doc("Delivery Note",delivery_note) try: dn = delivery_note params = Helper.get_ups_api_params() shipment_confirm_api = get_shipment_confirm_service(params) shipment_accept_api = get_shipment_accept_service(params) shipment_confirm_request = get_ups_shipment_confirm_request(dn, params) response = shipment_confirm_api.request(shipment_confirm_request) digest = shipment_confirm_api.extract_digest(response) shipment_accept_request = ShipmentAccept.shipment_accept_request_type( digest) response = shipment_accept_api.request(shipment_accept_request) shipping_info = parse_xml_response_to_json(response, dn) # save tracking no and labels to delivery note save_tracking_number_and_shipping_labels(dn, shipping_info) # reduce box items from stock ledger dn.boxes_stock_entry = create_boxes_stock_entry(dn) except PyUPSException, e: frappe.throw(e[0])
def get_shipping_labels(delivery_note): # get package information from delivery note # create xml request for ups shipping_package # parse the xml response and store the shipping labels and tracking_id # dn = frappe.get_doc("Delivery Note",delivery_note) try: dn = delivery_note params = Helper.get_ups_api_params() shipment_confirm_api = get_shipment_confirm_service(params) shipment_accept_api = get_shipment_accept_service(params) shipment_confirm_request = get_ups_shipment_confirm_request(dn, params) response = shipment_confirm_api.request(shipment_confirm_request) digest = shipment_confirm_api.extract_digest(response) shipment_accept_request = ShipmentAccept.shipment_accept_request_type(digest) response = shipment_accept_api.request(shipment_accept_request) shipping_info = parse_xml_response_to_json(response, dn) # save tracking no and labels to delivery note save_tracking_number_and_shipping_labels(dn, shipping_info) # reduce box items from stock ledger dn.boxes_stock_entry = create_boxes_stock_entry(dn) except PyUPSException, e: frappe.throw(e[0])
def test_0020_gb_gb(self): "GB to GB UPS Standard with 2 packages" ship_confirm_request = ShipmentConfirm.shipment_confirm_request_type( Helper.get_shipper(self.shipper_number, "GB"), Helper.get_ship_to("GB"), Helper.get_ship_from("GB"), # Package 1 Helper.get_package( "GB", weight='15.0', package_type_code='02'), # Customer Supplied Package # Package 2 Helper.get_package( "GB", weight='15.0', package_type_code='02'), # Customer Supplied Package Helper.get_payment_info(AccountNumber=self.shipper_number), ShipmentConfirm.service_type(Code='11'), # UPS Standard Description=__doc__[:50]) response = self.shipment_confirm_api.request(ship_confirm_request) digest = self.shipment_confirm_api.extract_digest(response) # now accept the package accept_request = ShipmentAccept.shipment_accept_request_type(digest) self.shipment_accept_api.request(accept_request)
def get_shipment_accept_service(params): return ShipmentAccept( params.get("ups_license"), params.get("ups_user_name"), params.get("ups_password"), params.get( "ups_mode" ), # sandbox for testing purpose set as True for production set it to False )
def setUp(self): """Initialise a ShipmentConfirm and ShipmentAccept class each. """ logging.disable(logging.DEBUG) self.shipper_number = os.environ['UPS_SHIPPER_NO'] self.shipment_confirm_api = ShipmentConfirm( os.environ['UPS_LICENSE_NO'], os.environ['UPS_USER_ID'], os.environ['UPS_PASSWORD'], True # Test must be performed in sandbox anyway ) self.shipment_accept_api = ShipmentAccept( os.environ['UPS_LICENSE_NO'], os.environ['UPS_USER_ID'], os.environ['UPS_PASSWORD'], True # Test must be performed in sandbox anyway )
def test_0030_gb_gb_saturday(self): "GB to GB UPS Standard with 2 packages and Saturday delivery" ship_confirm_request = ShipmentConfirm.shipment_confirm_request_type( Helper.get_shipper(self.shipper_number, "GB"), Helper.get_ship_to("GB"), Helper.get_ship_from("GB"), # Package 1 Helper.get_package("GB", weight="15.0", package_type_code="02"), # Customer Supplied Package # Package 2 Helper.get_package("GB", weight="15.0", package_type_code="02"), # Customer Supplied Package ShipmentConfirm.shipment_service_option_type(SaturdayDelivery="1"), Helper.get_payment_info(AccountNumber=self.shipper_number), ShipmentConfirm.service_type(Code="11"), # UPS Standard Description=__doc__[:50], ) response = self.shipment_confirm_api.request(ship_confirm_request) digest = self.shipment_confirm_api.extract_digest(response) # now accept the package accept_request = ShipmentAccept.shipment_accept_request_type(digest) self.shipment_accept_api.request(accept_request)
logger.debug(str(shipment_confirm)) logger.debug('--------END REQUEST--------') try: response = shipment_confirm_instance.request(shipment_confirm) except PyUPSException, e: self.raise_user_error(unicode(e[0])) # Logging. logger.debug('--------SHIPMENT CONFIRM RESPONSE--------') logger.debug(str(response)) logger.debug('--------END RESPONSE--------') digest = ShipmentConfirm.extract_digest(response) shipment_accept = ShipmentAccept.shipment_accept_request_type(digest) shipment_accept_instance = ups_config.api_instance(call="accept") # Logging. logger.debug( 'Making Shipment Accept Request for' 'Shipment ID: {0} and Carrier ID: {1}' .format(self.id, self.carrier.id) ) logger.debug('--------SHIPMENT ACCEPT REQUEST--------') logger.debug(str(shipment_confirm)) logger.debug('--------END REQUEST--------') try: response = shipment_accept_instance.request(shipment_accept)
'\n--------END REQUEST--------' % etree.tostring(shipment_confirm, pretty_print=True)) try: response = shipment_confirm_instance.request(shipment_confirm) # Logging. logger.debug('--------SHIPMENT CONFIRM RESPONSE--------\n%s' '\n--------END RESPONSE--------' % etree.tostring(response, pretty_print=True)) except PyUPSException, e: self.raise_user_error(unicode(e[0])) digest = ShipmentConfirm.extract_digest(response) shipment_accept = ShipmentAccept.shipment_accept_request_type(digest) shipment_accept_instance = carrier.ups_api_instance(call="accept") # Logging. logger.debug('Making Shipment Accept Request for' 'Shipment ID: {0} and Carrier ID: {1}'.format( self.id, self.carrier.id)) logger.debug('--------SHIPMENT ACCEPT REQUEST--------\n%s' '\n--------END REQUEST--------' % etree.tostring(shipment_accept, pretty_print=True)) try: response = shipment_accept_instance.request(shipment_accept) # Logging.
class TestShippingPackage(unittest.TestCase): """Test the :class:`ShipmentConfirm` and :class:`ShipmentAccept` classes for various cases originating from GB. """ @classmethod def setUpClass(self): """Check if the variables for initialising the test case is available in the environment""" assert 'UPS_LICENSE_NO' in os.environ, \ "UPS_LICENSE_NO not given. Hint:Use export UPS_LICENSE_NO=<number>" assert 'UPS_SHIPPER_NO' in os.environ, \ "UPS_SHIPPER_NO not given. Hint:Use export UPS_SHIPPER_NO=<number>" assert 'UPS_USER_ID' in os.environ, \ "UPS_USER_ID not given. Hint:Use export UPS_USER_ID=<user_id>" assert 'UPS_PASSWORD' in os.environ, \ "UPS_PASSWORD not given. Hint:Use export UPS_PASSWORD=<password>" def setUp(self): """Initialise a ShipmentConfirm and ShipmentAccept class each. """ logging.disable(logging.DEBUG) self.shipper_number = os.environ['UPS_SHIPPER_NO'] self.shipment_confirm_api = ShipmentConfirm( os.environ['UPS_LICENSE_NO'], os.environ['UPS_USER_ID'], os.environ['UPS_PASSWORD'], True # Test must be performed in sandbox anyway ) self.shipment_accept_api = ShipmentAccept( os.environ['UPS_LICENSE_NO'], os.environ['UPS_USER_ID'], os.environ['UPS_PASSWORD'], True # Test must be performed in sandbox anyway ) def test_0010_blow_up(self): """Send a stupid request which should blow up because its valid in the client but not in UPS server. Example: dont send packages""" with self.assertRaises(PyUPSException): ship_confirm_request = \ ShipmentConfirm.shipment_confirm_request_type( Helper.get_shipper(self.shipper_number, "GB"), Helper.get_ship_to("GB"), Helper.get_ship_from("GB"), Helper.get_payment_info(AccountNumber=self.shipper_number), ShipmentConfirm.service_type(Code='11'), # UPS Standard Description=__doc__[:50] ) self.shipment_confirm_api.request(ship_confirm_request) def test_0020_gb_gb(self): "GB to GB UPS Standard with 2 packages" ship_confirm_request = ShipmentConfirm.shipment_confirm_request_type( Helper.get_shipper(self.shipper_number, "GB"), Helper.get_ship_to("GB"), Helper.get_ship_from("GB"), # Package 1 Helper.get_package( "GB", weight='15.0', package_type_code='02' ), # Customer Supplied Package # Package 2 Helper.get_package( "GB", weight='15.0', package_type_code='02' ), # Customer Supplied Package Helper.get_payment_info(AccountNumber=self.shipper_number), ShipmentConfirm.service_type(Code='11'), # UPS Standard Description=__doc__[:50] ) response = self.shipment_confirm_api.request(ship_confirm_request) digest = self.shipment_confirm_api.extract_digest(response) # now accept the package accept_request = ShipmentAccept.shipment_accept_request_type(digest) self.shipment_accept_api.request(accept_request) @unittest.skipUnless(datetime.today().weekday() == 4, "since not a friday") def test_0030_gb_gb_saturday(self): "GB to GB UPS Standard with 2 packages and Saturday delivery" ship_confirm_request = ShipmentConfirm.shipment_confirm_request_type( Helper.get_shipper(self.shipper_number, "GB"), Helper.get_ship_to("GB"), Helper.get_ship_from("GB"), # Package 1 Helper.get_package( "GB", weight='15.0', package_type_code='02' ), # Customer Supplied Package # Package 2 Helper.get_package( "GB", weight='15.0', package_type_code='02' ), # Customer Supplied Package ShipmentConfirm.shipment_service_option_type(SaturdayDelivery="1"), Helper.get_payment_info(AccountNumber=self.shipper_number), ShipmentConfirm.service_type(Code='11'), # UPS Standard Description=__doc__[:50] ) response = self.shipment_confirm_api.request(ship_confirm_request) digest = self.shipment_confirm_api.extract_digest(response) # now accept the package accept_request = ShipmentAccept.shipment_accept_request_type(digest) self.shipment_accept_api.request(accept_request) def test_0040_gb_us(self): "GB to US UPS Standard with 2 packages" ship_confirm_request = ShipmentConfirm.shipment_confirm_request_type( Helper.get_shipper(self.shipper_number, "GB"), Helper.get_ship_to("US"), Helper.get_ship_from("GB"), # Package 1 Helper.get_package( "GB", weight='15.0', package_type_code='02' ), # Customer Supplied Package # Package 2 Helper.get_package( "GB", weight='15.0', package_type_code='02' ), # Customer Supplied Package Helper.get_payment_info(AccountNumber=self.shipper_number), ShipmentConfirm.service_type(Code='07'), # UPS Standard Description=__doc__[:50] ) response = self.shipment_confirm_api.request(ship_confirm_request) digest = self.shipment_confirm_api.extract_digest(response) # now accept the package accept_request = ShipmentAccept.shipment_accept_request_type(digest) self.shipment_accept_api.request(accept_request)
class TestShippingPackage(unittest.TestCase): """Test the :class:`ShipmentConfirm` and :class:`ShipmentAccept` classes for various cases originating from GB. """ @classmethod def setUpClass(self): """Check if the variables for initialising the test case is available in the environment""" assert 'UPS_LICENSE_NO' in os.environ, \ "UPS_LICENSE_NO not given. Hint:Use export UPS_LICENSE_NO=<number>" assert 'UPS_SHIPPER_NO' in os.environ, \ "UPS_SHIPPER_NO not given. Hint:Use export UPS_SHIPPER_NO=<number>" assert 'UPS_USER_ID' in os.environ, \ "UPS_USER_ID not given. Hint:Use export UPS_USER_ID=<user_id>" assert 'UPS_PASSWORD' in os.environ, \ "UPS_PASSWORD not given. Hint:Use export UPS_PASSWORD=<password>" def setUp(self): """Initialise a ShipmentConfirm and ShipmentAccept class each. """ logging.disable(logging.DEBUG) self.shipper_number = os.environ['UPS_SHIPPER_NO'] self.shipment_confirm_api = ShipmentConfirm( os.environ['UPS_LICENSE_NO'], os.environ['UPS_USER_ID'], os.environ['UPS_PASSWORD'], True # Test must be performed in sandbox anyway ) self.shipment_accept_api = ShipmentAccept( os.environ['UPS_LICENSE_NO'], os.environ['UPS_USER_ID'], os.environ['UPS_PASSWORD'], True # Test must be performed in sandbox anyway ) def test_0010_blow_up(self): """Send a stupid request which should blow up because its valid in the client but not in UPS server. Example: dont send packages""" with self.assertRaises(PyUPSException): ship_confirm_request = \ ShipmentConfirm.shipment_confirm_request_type( Helper.get_shipper(self.shipper_number, "GB"), Helper.get_ship_to("GB"), Helper.get_ship_from("GB"), Helper.get_payment_info(AccountNumber=self.shipper_number), ShipmentConfirm.service_type(Code='11'), # UPS Standard Description=__doc__[:50] ) self.shipment_confirm_api.request(ship_confirm_request) def test_0020_gb_gb(self): "GB to GB UPS Standard with 2 packages" ship_confirm_request = ShipmentConfirm.shipment_confirm_request_type( Helper.get_shipper(self.shipper_number, "GB"), Helper.get_ship_to("GB"), Helper.get_ship_from("GB"), # Package 1 Helper.get_package( "GB", weight='15.0', package_type_code='02'), # Customer Supplied Package # Package 2 Helper.get_package( "GB", weight='15.0', package_type_code='02'), # Customer Supplied Package Helper.get_payment_info(AccountNumber=self.shipper_number), ShipmentConfirm.service_type(Code='11'), # UPS Standard Description=__doc__[:50]) response = self.shipment_confirm_api.request(ship_confirm_request) digest = self.shipment_confirm_api.extract_digest(response) # now accept the package accept_request = ShipmentAccept.shipment_accept_request_type(digest) self.shipment_accept_api.request(accept_request) @unittest.skipUnless(datetime.today().weekday() == 4, "since not a friday") def test_0030_gb_gb_saturday(self): "GB to GB UPS Standard with 2 packages and Saturday delivery" ship_confirm_request = ShipmentConfirm.shipment_confirm_request_type( Helper.get_shipper(self.shipper_number, "GB"), Helper.get_ship_to("GB"), Helper.get_ship_from("GB"), # Package 1 Helper.get_package( "GB", weight='15.0', package_type_code='02'), # Customer Supplied Package # Package 2 Helper.get_package( "GB", weight='15.0', package_type_code='02'), # Customer Supplied Package ShipmentConfirm.shipment_service_option_type(SaturdayDelivery="1"), Helper.get_payment_info(AccountNumber=self.shipper_number), ShipmentConfirm.service_type(Code='11'), # UPS Standard Description=__doc__[:50]) response = self.shipment_confirm_api.request(ship_confirm_request) digest = self.shipment_confirm_api.extract_digest(response) # now accept the package accept_request = ShipmentAccept.shipment_accept_request_type(digest) self.shipment_accept_api.request(accept_request) def test_0040_gb_us(self): "GB to US UPS Standard with 2 packages" ship_confirm_request = ShipmentConfirm.shipment_confirm_request_type( Helper.get_shipper(self.shipper_number, "GB"), Helper.get_ship_to("US"), Helper.get_ship_from("GB"), # Package 1 Helper.get_package( "GB", weight='15.0', package_type_code='02'), # Customer Supplied Package # Package 2 Helper.get_package( "GB", weight='15.0', package_type_code='02'), # Customer Supplied Package Helper.get_payment_info(AccountNumber=self.shipper_number), ShipmentConfirm.service_type(Code='07'), # UPS Standard Description=__doc__[:50]) response = self.shipment_confirm_api.request(ship_confirm_request) digest = self.shipment_confirm_api.extract_digest(response) # now accept the package accept_request = ShipmentAccept.shipment_accept_request_type(digest) self.shipment_accept_api.request(accept_request)