def _get_shipment_confirm_xml(self): """ Return XML of shipment for shipment_confirm """ Company = Pool().get('company.company') UPSConfiguration = Pool().get('ups.configuration') ups_config = UPSConfiguration(1) if not self.ups_service_type: self.raise_user_error('ups_service_type_missing') payment_info_prepaid = \ ShipmentConfirm.payment_information_prepaid_type( AccountNumber=ups_config.shipper_no ) payment_info = ShipmentConfirm.payment_information_type( payment_info_prepaid) packages = self._get_ups_packages() shipment_service = ShipmentConfirm.shipment_service_option_type( SaturdayDelivery='1' if self.ups_saturday_delivery else 'None' ) description = ','.join([ move.product.name for move in self.outgoing_moves ]) shipment_args = [ self.warehouse.address.to_ups_shipper(), self.delivery_address.to_ups_to_address(), self.warehouse.address.to_ups_from_address(), ShipmentConfirm.service_type(Code=self.ups_service_type.code), payment_info, shipment_service, ] if ups_config.negotiated_rates: shipment_args.append( ShipmentConfirm.rate_information_type(negotiated=True) ) if self.warehouse.address.country.code == 'US' and \ self.delivery_address.country.code in ['PR', 'CA']: # Special case for US to PR or CA InvoiceLineTotal should be sent monetary_value = str(sum(map( lambda move: move.get_monetary_value_for_ups(), self.outgoing_moves ))) company_id = Transaction().context.get('company') if not company_id: self.raise_user_error("Company is not in context") company = Company(company_id) shipment_args.append(ShipmentConfirm.invoice_line_total_type( MonetaryValue=monetary_value, CurrencyCode=company.currency.code )) shipment_args.extend(packages) shipment_confirm = ShipmentConfirm.shipment_confirm_request_type( *shipment_args, Description=description[:35] ) return shipment_confirm
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_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 _get_shipment_confirm_xml(self): """ Return XML of shipment for shipment_confirm """ Company = Pool().get("company.company") carrier = self.carrier if not self.ups_service_type: self.raise_user_error("ups_service_type_missing") payment_info_prepaid = ShipmentConfirm.payment_information_prepaid_type(AccountNumber=carrier.ups_shipper_no) payment_info = ShipmentConfirm.payment_information_type(payment_info_prepaid) packages = self._get_ups_packages() shipment_service = ShipmentConfirm.shipment_service_option_type( SaturdayDelivery="1" if self.ups_saturday_delivery else "None" ) description = ",".join([move.product.name for move in self.outgoing_moves]) from_address = self._get_ship_from_address() shipment_args = [ from_address.to_ups_shipper(carrier=carrier), self.delivery_address.to_ups_to_address(), from_address.to_ups_from_address(), ShipmentConfirm.service_type(Code=self.ups_service_type.code), payment_info, shipment_service, ] if carrier.ups_negotiated_rates: shipment_args.append(ShipmentConfirm.rate_information_type(negotiated=True)) if from_address.country.code == "US" and self.delivery_address.country.code in ["PR", "CA"]: # Special case for US to PR or CA InvoiceLineTotal should be sent monetary_value = str(sum(map(lambda move: move.get_monetary_value_for_ups(), self.outgoing_moves))) company_id = Transaction().context.get("company") if not company_id: self.raise_user_error("Company is not in context") company = Company(company_id) shipment_args.append( ShipmentConfirm.invoice_line_total_type( MonetaryValue=monetary_value, CurrencyCode=company.currency.code ) ) shipment_args.extend(packages) shipment_confirm = ShipmentConfirm.shipment_confirm_request_type(*shipment_args, Description=description[:35]) return shipment_confirm