Example #1
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)
    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)
Example #3
0
    def do_shipping_request(self, cr, uid, omni, package, context=None):
        """
	This method calls the UPS API, sends the ShipmentConfirm Request
	to the API and gets the total cost of shipment and tracking number.

        """

	package_obj = self.pool.get('stock.out.package')
        currency_obj = self.pool.get('res.currency')
        uom_obj = self.pool.get('product.uom')
	picking_obj = self.pool.get('stock.picking')
        ups_message_obj = self.pool.get('ups.message')
	omni_obj = self.pool.get('omniship')
        ups_shipper = omni_obj.get_ups_shipper(cr, uid, omni, context)

        payment_info_prepaid = \
            ShipmentConfirm.payment_information_prepaid_type(
                AccountNumber=ups_shipper)
        payment_info = ShipmentConfirm.payment_information_type(
            payment_info_prepaid)


        (shipper, ship_to, ship_from) = self._add_addresses(cr, uid, omni,
            package, context)

	if not package.picking.carrier_id.service:
	    raise osv.except_osv(_('Error!'),_("Delivery method has no service: %s")% package.picking.carrier_id.name)

	if not package.picking.carrier_id.service.service_code:
	    raise osv.except_osv(_('Error!'),_("The Carrier %s is not a valid UPS Shipping Method")% package.picking.carrier_id.service.name)

        service = ShipmentConfirm.service_type(
            Code=package.picking.carrier_id.service.service_code)

	#TODO Fix weight
	weight = package.weight or 1.00

	#TODO Review reference
        (packages, shipment_service) = self._add_packages(cr, uid,
            omni, package, weight, context)
        ship_confirm = ShipmentConfirm.shipment_confirm_request_type(
            shipper, ship_to, ship_from, service, payment_info,
            shipment_service, *packages,
            Description='None')

        shipment_confirm_instance = self.get_ups_api(cr, uid, omni, 'confirm', context)
	#Try to get transaction reference to work
	shipment_confirm_instance.TransactionReference = E.TransactionReference(
	    E.CustomerContext('test')
	)
	#End Transaction Reference
        try:
            response = shipment_confirm_instance.request(
                ship_confirm)
            if isinstance(response, tuple):
                request = response[0]
                response = response[1]

        except PyUPSException, error:
            raise osv.except_osv(('Error : '), ('%s' % error[0]))
Example #4
0
 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_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)
Example #6
0
    def do_shipping_request(self, cr, uid, omni, package, context=None):
        """
	This method calls the UPS API, sends the ShipmentConfirm Request
	to the API and gets the total cost of shipment and tracking number.

        """

        package_obj = self.pool.get('stock.out.package')
        currency_obj = self.pool.get('res.currency')
        uom_obj = self.pool.get('product.uom')
        picking_obj = self.pool.get('stock.picking')
        ups_message_obj = self.pool.get('ups.message')
        omni_obj = self.pool.get('omniship')
        ups_shipper = omni_obj.get_ups_shipper(cr, uid, omni, context)

        payment_info_prepaid = \
            ShipmentConfirm.payment_information_prepaid_type(
                AccountNumber=ups_shipper)
        payment_info = ShipmentConfirm.payment_information_type(
            payment_info_prepaid)

        (shipper, ship_to,
         ship_from) = self._add_addresses(cr, uid, omni, package, context)

        if not package.picking.carrier_id.service:
            raise osv.except_osv(
                _('Error!'),
                _("Delivery method has no service: %s") %
                package.picking.carrier_id.name)

        if not package.picking.carrier_id.service.service_code:
            raise osv.except_osv(
                _('Error!'),
                _("The Carrier %s is not a valid UPS Shipping Method") %
                package.picking.carrier_id.service.name)

        service = ShipmentConfirm.service_type(
            Code=package.picking.carrier_id.service.service_code)

        #TODO Fix weight
        weight = package.weight or 1.00

        #TODO Review reference
        (packages,
         shipment_service) = self._add_packages(cr, uid, omni, package, weight,
                                                context)
        ship_confirm = ShipmentConfirm.shipment_confirm_request_type(
            shipper,
            ship_to,
            ship_from,
            service,
            payment_info,
            shipment_service,
            *packages,
            Description='None')

        shipment_confirm_instance = self.get_ups_api(cr, uid, omni, 'confirm',
                                                     context)
        #Try to get transaction reference to work
        shipment_confirm_instance.TransactionReference = E.TransactionReference(
            E.CustomerContext('test'))
        #End Transaction Reference
        try:
            response = shipment_confirm_instance.request(ship_confirm)
            if isinstance(response, tuple):
                request = response[0]
                response = response[1]

        except PyUPSException, error:
            raise osv.except_osv(('Error : '), ('%s' % error[0]))
Example #7
0
    def do_shipping_request(self, cursor, user, ids, context=None):
        """
        This method calls the UPS API, sends the ShipmentConfirm Request
        to the API and gets the total cost of shipment and tracking number.

        :param cursor: Database Cursor
        :param user: ID of User
        :param context: Context directly uses active id.
        """
        currency_obj = self.pool.get('res.currency')
        uom_obj = self.pool.get('product.uom')
        packages_obj = self.pool.get('ups.shippingregister.package')
        company_obj = self.pool.get('res.company')
        ups_shipper = company_obj.get_ups_shipper(cursor, user, context)
        ups_message_obj = self.pool.get('ups.message')

        payment_info_prepaid = \
            ShipmentConfirm.payment_information_prepaid_type(
                AccountNumber=ups_shipper)
        payment_info = ShipmentConfirm.payment_information_type(
            payment_info_prepaid)

        for shipment_record in self.browse(cursor, user, ids, context):
            (shipper, ship_to,
             ship_from) = self._add_addresses(cursor, user, shipment_record.id,
                                              context)
            service = ShipmentConfirm.service_type(
                Code=shipment_record.service_type.code)

            (packages,
             shipment_service) = self._add_packages(cursor, user,
                                                    shipment_record.id,
                                                    context)
            ship_confirm = ShipmentConfirm.shipment_confirm_request_type(
                shipper,
                ship_to,
                ship_from,
                service,
                payment_info,
                shipment_service,
                *packages,
                Description=shipment_record.description or 'None')

            shipment_confirm_instance = self.get_ups_api(
                cursor, user, 'confirm', context)

            try:
                response = shipment_confirm_instance.request(ship_confirm)
                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': 'ConfirmShipmentRequest',
                        'type': 'request',
                        'message': error[1]
                    }),
                                    (0, 0, {
                                        'name':
                                        'ConfirmShipmentResponse',
                                        'type':
                                        'response',
                                        'message':
                                        etree.tostring(error[2],
                                                       pretty_print=True)
                                    })]

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

                raise osv.except_osv(('Error : '), ('%s' % error[0]))
            # Now store values in the register

            currency_id = currency_obj.search(cursor, user,
                [('symbol', '=', \
                    response.ShipmentCharges.TotalCharges.CurrencyCode)])
            uom_id = uom_obj.search(cursor, user, [
                ('name', '=', \
                    response.BillingWeight.UnitOfMeasurement.Code.pyval)])

            before = ShipmentConfirm.extract_digest(response)

            if company_obj.get_ups_save_xml(cursor, user, context):
                xml_messages = [(0, 0, {
                    'name': 'ConfirmShipmentRequest',
                    'type': 'request',
                    'message': request
                }),
                                (0, 0, {
                                    'name':
                                    'ConfirmShipmentResponse',
                                    'type':
                                    'response',
                                    'message':
                                    etree.tostring(response, pretty_print=True)
                                })]
            else:
                xml_messages = []

            self.write(cursor, user, shipment_record.id,
                {
                    'name': response.ShipmentIdentificationNumber,
                    'billed_weight': response.BillingWeight.Weight,
                    'billed_weight_uom': uom_id and uom_id[0] or False,
                    'total_amount': response.ShipmentCharges.\
                        TotalCharges.MonetaryValue,
                    'total_amount_currency': currency_id and \
                                                currency_id[0] or False,
                    'digest': ShipmentConfirm.extract_digest(response),
                    'xml_messages': xml_messages,
                    'state': 'confirmed'
                    }, context)

            after = self.browse(cursor, user, shipment_record.id).digest

            packages_obj.write(cursor, user,
                               [pkg.id for pkg in shipment_record.package_det],
                               {'state': 'confirmed'}, context)
    def do_shipping_request(self, cursor, user, ids, context=None):
        """
        This method calls the UPS API, sends the ShipmentConfirm Request
        to the API and gets the total cost of shipment and tracking number.
        
        :param cursor: Database Cursor
        :param user: ID of User
        :param context: Context directly uses active id.
        """
        currency_obj = self.pool.get('res.currency')
        uom_obj = self.pool.get('product.uom')
        packages_obj = self.pool.get('ups.shippingregister.package')
        company_obj = self.pool.get('res.company')
        ups_shipper = company_obj.get_ups_shipper(cursor, user, context)
        
        payment_info_prepaid = ShipmentConfirm.payment_information_prepaid_type(
            AccountNumber=ups_shipper)
        payment_info = ShipmentConfirm.payment_information_type(
            payment_info_prepaid)

        for shipment_record in self.browse(cursor, user, ids, context):
            (shipper, ship_to, ship_from) = self._add_addresses(cursor, user, 
                shipment_record.id, context)
            service = ShipmentConfirm.service_type(
                Code=shipment_record.service_type.code)
            
            (packages, shipment_service) = self._add_packages(cursor, user, 
                shipment_record.id, context)
            ship_confirm = ShipmentConfirm.shipment_confirm_request_type(
                shipper, ship_to, ship_from, service, payment_info, 
                shipment_service, *packages, 
                Description=shipment_record.description or 'None')
                
            shipment_confirm_instance = self.get_ups_api(cursor, user, 
                'confirm', context)
                
            try:
                response = shipment_confirm_instance.request(ship_confirm)
            except Exception, error:
                raise osv.except_osv(('Error : '), ('%s' % error))
            # Now store values in the register
                
            currency_id = currency_obj.search(cursor, user,
                [('symbol', '=', \
                    response.ShipmentCharges.TotalCharges.CurrencyCode)])
            uom_id = uom_obj.search(cursor, user, [
                ('name', '=', \
                    response.BillingWeight.UnitOfMeasurement.Code.pyval)])
                    
            before = ShipmentConfirm.extract_digest(response)
            
            self.write(cursor, user, shipment_record.id,
                {
                    'name': response.ShipmentIdentificationNumber,
                    'billed_weight': response.BillingWeight.Weight,
                    'billed_weight_uom': uom_id and uom_id[0] or False,
                    'total_amount': response.ShipmentCharges.\
                        TotalCharges.MonetaryValue,
                    'total_amount_currency': currency_id and \
                                                currency_id[0] or False,
                    'digest': ShipmentConfirm.extract_digest(response),
                    'state': 'confirmed'
                    }, context)
            
            after = self.browse(cursor, user, shipment_record.id).digest
            
            packages_obj.write(cursor, user,
                [pkg.id for pkg in shipment_record.package_det],
                {'state': 'confirmed'}, context)