Ejemplo n.º 1
0
    def accept_price(self, cr, uid, omni, package, context=None):
        '''
        This method calls the Accept Price function of the wizard .
        :return: True
        '''
	package_obj = self.pool.get('stock.out.package')
	move_obj = self.pool.get('stock.move')

        # writing image to digest so that it can be used.
        shipment_accept = ShipmentAccept.shipment_accept_request_type(\
            package.digest)
	#Accept Transaction Reference
        shipment_accept_instance = self.get_ups_api(cr, uid, omni, 'accept', context)

        shipment_accept_instance.TransactionReference = E.TransactionReference(
            E.CustomerContext('12345')
        )
        #End Transaction Reference

        try:
            response = shipment_accept_instance.request(
                shipment_accept)
            if isinstance(response, tuple):
                request = response[0]
                response = response[1]

        except PyUPSException, error:
            raise osv.except_osv(('Error : '), ('%s' % error[0]))
Ejemplo n.º 2
0
    def accept_price(self, cr, uid, omni, package, context=None):
        '''
        This method calls the Accept Price function of the wizard .
        :return: True
        '''
        package_obj = self.pool.get('stock.out.package')
        move_obj = self.pool.get('stock.move')

        # writing image to digest so that it can be used.
        shipment_accept = ShipmentAccept.shipment_accept_request_type(\
            package.digest)
        #Accept Transaction Reference
        shipment_accept_instance = self.get_ups_api(cr, uid, omni, 'accept',
                                                    context)

        shipment_accept_instance.TransactionReference = E.TransactionReference(
            E.CustomerContext('12345'))
        #End Transaction Reference

        try:
            response = shipment_accept_instance.request(shipment_accept)
            if isinstance(response, tuple):
                request = response[0]
                response = response[1]

        except PyUPSException, error:
            raise osv.except_osv(('Error : '), ('%s' % error[0]))
Ejemplo n.º 3
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)
        result = self.shipment_accept_api.request(accept_request)
Ejemplo n.º 4
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)
        result = self.shipment_accept_api.request(accept_request)
Ejemplo n.º 5
0
    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 accept_price(self, cursor, user, ids, context=None):
        '''
        This method calls the Accept Price function of the wizard .
        :param cursor: Database Cursor
        :param user: ID of User
        :param ids: ID of Current record.
        :param context: Context(no direct use).
        :return: True
        '''
        packages_obj = self.pool.get('ups.shippingregister.package')
        for shipping_register_record in self.browse(cursor, user, ids, context):
            # writing image to digest so that it can be used.
            shipment_accept = ShipmentAccept.shipment_accept_request_type(\
                shipping_register_record.digest)
                
            shipment_accept_instance = self.get_ups_api(cursor, user, 
                'accept', context)
                
            try:
                #response = shipment_accept_instance.request(shipment_accept)
                response = shipment_accept_instance.request(shipment_accept)
            except Exception, error:
                raise osv.except_osv(('Error : '), ('%s' % error))

            packages = []
            for package in response.ShipmentResults.PackageResults:
                packages.append(package)
            # UPS does not give the information as to which package 
            # got which label, Here we are just assuming that they 
            # came in order to assign the label
            package_record_ids = [pkg.id for pkg in \
                shipping_register_record.package_det]
            assert len(package_record_ids) == len(packages)
            for package in packages:
                register_vals = {
                    'tracking_no': package.TrackingNumber.pyval,
                    'label_image': package.LabelImage.GraphicImage.pyval,
                    'state': 'accepted'
                }
                packages_obj.write(
                    cursor, user, package_record_ids[packages.index(package)],
                    register_vals, context)
            # changing state to accepted of shipping register record.
            self.write(cursor, user, shipping_register_record.id, 
                {'state': 'accepted'}, context)
Ejemplo n.º 7
0
    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
            )
Ejemplo n.º 8
0
    def accept_price(self, cursor, user, ids, context=None):
        '''
        This method calls the Accept Price function of the wizard .
        :param cursor: Database Cursor
        :param user: ID of User
        :param ids: ID of Current record.
        :param context: Context(no direct use).
        :return: True
        '''
        packages_obj = self.pool.get('ups.shippingregister.package')
        company_obj = self.pool.get('res.company')

        for shipping_register_record in self.browse(cursor, user, ids,
                                                    context):
            # writing image to digest so that it can be used.
            shipment_accept = ShipmentAccept.shipment_accept_request_type(\
                shipping_register_record.digest)

            shipment_accept_instance = self.get_ups_api(
                cursor, user, 'accept', context)

            try:
                response = shipment_accept_instance.request(shipment_accept)
                if isinstance(response, tuple):
                    request = response[0]
                    response = response[1]

            except PyUPSException, error:
                if company_obj.get_ups_save_xml(cursor, user, context):
                    # TODO: We need a better error exception here.
                    xml_messages = [(0, 0, {
                        'name': 'AcceptShipmentRequest',
                        'type': 'request',
                        'message': error[1]
                    }),
                                    (0, 0, {
                                        'name':
                                        'AcceptShipmentResponse',
                                        'type':
                                        'response',
                                        'message':
                                        etree.tostring(error[2],
                                                       pretty_print=True)
                                    })]

                    self.write(cursor, user, shipping_register_record.id,
                               {'xml_messages': xml_messages}, context)

                raise osv.except_osv(('Error : '), ('%s' % error[0]))

            packages = []
            for package in response.ShipmentResults.PackageResults:
                packages.append(package)
            # UPS does not give the information as to which package
            # got which label, Here we are just assuming that they
            # came in order to assign the label
            package_record_ids = [pkg.id for pkg in \
                shipping_register_record.package_det]
            assert len(package_record_ids) == len(packages)
            for package in packages:
                register_vals = {
                    'tracking_no': package.TrackingNumber.pyval,
                    'label_image': package.LabelImage.GraphicImage.pyval,
                    'state': 'accepted'
                }
                packages_obj.write(cursor, user,
                                   package_record_ids[packages.index(package)],
                                   register_vals, context)
            # changing state to accepted of shipping register record...
            if company_obj.get_ups_save_xml(cursor, user, context):
                xml_messages = [(0, 0, {
                    'name': 'AcceptShipmentRequest',
                    'type': 'request',
                    'message': request
                }),
                                (0, 0, {
                                    'name':
                                    'AcceptShipmentResponse',
                                    'type':
                                    'response',
                                    'message':
                                    etree.tostring(response, pretty_print=True)
                                })]
            else:
                xml_messages = []

            self.write(cursor, user, shipping_register_record.id, {
                'state': 'accepted',
                'xml_messages': xml_messages
            }, context)
    def accept_price(self, cursor, user, ids, context=None):
        '''
        This method calls the Accept Price function of the wizard .
        :param cursor: Database Cursor
        :param user: ID of User
        :param ids: ID of Current record.
        :param context: Context(no direct use).
        :return: True
        '''
        packages_obj = self.pool.get('ups.shippingregister.package')
        company_obj = self.pool.get('res.company')

        for shipping_register_record in self.browse(cursor, user, ids,
                                                    context):
            # writing image to digest so that it can be used.
            shipment_accept = ShipmentAccept.shipment_accept_request_type(\
                shipping_register_record.digest)

            shipment_accept_instance = self.get_ups_api(cursor, user,
                                                        'accept', context)

            try:
                response = shipment_accept_instance.request(
                    shipment_accept)
                if isinstance(response, tuple):
                    request = response[0]
                    response = response[1]

            except PyUPSException, error:
                if company_obj.get_ups_save_xml(cursor, user, context):
                    # TODO: We need a better error exception here.
                    xml_messages = [(0, 0, {'name': 'AcceptShipmentRequest',
                                            'type': 'request',
                                            'message': error[1]}),
                                    (0, 0, {'name': 'AcceptShipmentResponse',
                                            'type': 'response',
                                            'message': etree.tostring(
                                                error[2], pretty_print=True)})]

                    self.write(cursor, user, shipping_register_record.id,
                               {'xml_messages': xml_messages}, context)

                raise osv.except_osv(('Error : '), ('%s' % error[0]))

            packages = []
            for package in response.ShipmentResults.PackageResults:
                packages.append(package)
            # UPS does not give the information as to which package
            # got which label, Here we are just assuming that they
            # came in order to assign the label
            package_record_ids = [pkg.id for pkg in \
                shipping_register_record.package_det]
            assert len(package_record_ids) == len(packages)
            for package in packages:
                register_vals = {
                    'tracking_no': package.TrackingNumber.pyval,
                    'label_image': package.LabelImage.GraphicImage.pyval,
                    'state': 'accepted'
                }
                packages_obj.write(
                    cursor, user, package_record_ids[packages.index(package)],
                    register_vals, context)
            # changing state to accepted of shipping register record...
            if company_obj.get_ups_save_xml(cursor, user, context):
                xml_messages = [(0, 0, {'name': 'AcceptShipmentRequest',
                                        'type': 'request',
                                        'message': request}),
                                (0, 0, {'name': 'AcceptShipmentResponse',
                                        'type': 'response',
                                        'message': etree.tostring(
                                            response, pretty_print=True)})]
            else:
                xml_messages = []

            self.write(cursor, user, shipping_register_record.id,
                {'state': 'accepted',
                 'xml_messages': xml_messages}, context)
Ejemplo n.º 10
0
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)
        result = 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)
        result = 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)
        result = self.shipment_accept_api.request(accept_request)
Ejemplo n.º 11
0
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)
        result = 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)
        result = 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)
        result = self.shipment_accept_api.request(accept_request)