def schedule_pickup_service (self, credentials, from_address_doc, \ from_country_doc, transporter_doc): from_state_doc = frappe.get_doc("State", from_address_doc.state_rigpl) from fedex.services.pickup_service import FedexCreatePickupRequest customer_transaction_id = self.name # Optional transaction_id pickup_service = FedexCreatePickupRequest(credentials) pickup_service.OriginDetail.PickupLocation.Contact.PersonName = \ from_address_doc.address_title[0:35] pickup_service.OriginDetail.PickupLocation.Contact.EMailAddress = from_address_doc.email_id pickup_service.OriginDetail.PickupLocation.Contact.CompanyName = from_address_doc.address_title[0:35] pickup_service.OriginDetail.PickupLocation.Contact.PhoneNumber = from_address_doc.phone[0:15] pickup_service.OriginDetail.PickupLocation.Address.StateOrProvinceCode = from_state_doc.state_code pickup_service.OriginDetail.PickupLocation.Address.PostalCode = from_address_doc.pincode[0:10] pickup_service.OriginDetail.PickupLocation.Address.CountryCode = from_country_doc.code pickup_service.OriginDetail.PickupLocation.Address.StreetLines = [from_address_doc.address_line1[0:35],\ str(from_address_doc.address_line2)[0:35]] pickup_service.OriginDetail.PickupLocation.Address.City = from_address_doc.city[0:20] pickup_service.OriginDetail.PickupLocation.Address.Residential = True if from_address_doc.is_residential \ else False pickup_service.OriginDetail.PackageLocation = 'NONE' pickup_service.OriginDetail.ReadyTimestamp = get_datetime(self.ready_time).replace(microsecond=0).isoformat() pickup_service.OriginDetail.CompanyCloseTime = self.last_time if self.last_time else '20:00:00' pickup_service.CarrierCode = 'FDXE' pickup_service.PackageCount = self.no_of_packages package_weight = pickup_service.create_wsdl_object_of_type('Weight') package_weight.Units = 'KG' package_weight.Value = '1' pickup_service.TotalWeight = package_weight # DOMESTIC or INTERNATIONAL if transporter_doc.is_export_only == 1 or transporter_doc.is_imports_only == 1: dom_type = 'INTERNATIONAL' elif transporter_doc.is_domestic_only == 1: dom_type = 'DOMESTIC' else: frappe.throw("Error Transporter should be either DOMESTIC or INTERNATIONAL") pickup_service.CountryRelationship = dom_type #frappe.msgprint(str(sobject_to_json(pickup_service))) pickup_service.send_request() if pickup_service.response.HighestSeverity not in ["SUCCESS", "NOTE", "WARNING"]: self.show_notification(pickup_service) #frappe.throw(_('Pickup service scheduling failed.')) frappe.msgprint(str(pickup_service.response.HighestSeverity)) frappe.msgprint(str(pickup_service.response.PickupConfirmationNumber)) frappe.msgprint(str(pickup_service.response.Location)) return { "response": pickup_service.response.HighestSeverity, "pickup_id": pickup_service.response.PickupConfirmationNumber, "location_no": pickup_service.response.Location }
def schedule_pickup(self, request_data): shipper_details, closing_time = self.get_company_data( request_data, "closing_time") pickup_service = FedexCreatePickupRequest(self.config_obj) pickup_service.OriginDetail.PickupLocation.Contact.PersonName = shipper_details.get( "address_title") pickup_service.OriginDetail.PickupLocation.Contact.EMailAddress = shipper_details.get( "email_id") pickup_service.OriginDetail.PickupLocation.Contact.CompanyName = shipper_details.get( "company") pickup_service.OriginDetail.PickupLocation.Contact.PhoneNumber = shipper_details.get( "phone") pickup_service.OriginDetail.PickupLocation.Address.StateOrProvinceCode = shipper_details.get( "state_code") pickup_service.OriginDetail.PickupLocation.Address.PostalCode = shipper_details.get( "pincode") pickup_service.OriginDetail.PickupLocation.Address.CountryCode = shipper_details.get( "country_code") pickup_service.OriginDetail.PickupLocation.Address.StreetLines = [shipper_details.get("address_line1"),\ shipper_details.get("address_line2")] pickup_service.OriginDetail.PickupLocation.Address.City = shipper_details.get( "city") pickup_service.OriginDetail.PickupLocation.Address.Residential = True if shipper_details.get("is_residential_address") \ else False pickup_service.OriginDetail.PackageLocation = 'NONE' pickup_service.OriginDetail.ReadyTimestamp = get_datetime( request_data.get("ready_time")).replace(microsecond=0).isoformat() pickup_service.OriginDetail.CompanyCloseTime = closing_time if closing_time else '20:00:00' pickup_service.CarrierCode = 'FDXE' pickup_service.PackageCount = request_data.get("package_count") package_weight = pickup_service.create_wsdl_object_of_type('Weight') package_weight.Units = FedexController.uom_mapper.get( request_data.get("uom")) package_weight.Value = request_data.get("gross_weight") pickup_service.TotalWeight = package_weight pickup_service.send_request() if pickup_service.response.HighestSeverity not in [ "SUCCESS", "NOTE", "WARNING" ]: self.show_notification(pickup_service) frappe.throw(_('Pickup service scheduling failed.')) return { "response": pickup_service.response.HighestSeverity, "pickup_id": pickup_service.response.PickupConfirmationNumber, "location_no": pickup_service.response.Location }
def test_pickup_request(self): pickup_service = FedexCreatePickupRequest(self.config_obj) pickup_service.OriginDetail.PickupLocation.Contact.PersonName = 'Sender Name' pickup_service.OriginDetail.PickupLocation.Contact.EMailAddress = '*****@*****.**' pickup_service.OriginDetail.PickupLocation.Contact.CompanyName = 'Acme Inc.' pickup_service.OriginDetail.PickupLocation.Contact.PhoneNumber = '9012638716' pickup_service.OriginDetail.PickupLocation.Address.StateOrProvinceCode = 'SC' pickup_service.OriginDetail.PickupLocation.Address.PostalCode = '29631' pickup_service.OriginDetail.PickupLocation.Address.CountryCode = 'US' pickup_service.OriginDetail.PickupLocation.Address.StreetLines = [ '155 Old Greenville Hwy', 'Suite 103' ] pickup_service.OriginDetail.PickupLocation.Address.City = 'Clemson' # pickup_service.OriginDetail.PickupLocation.Address.UrbanizationCode = '' # For Puerto Rico only pickup_service.OriginDetail.PickupLocation.Address.Residential = False # FRONT, NONE, REAR, SIDE # pickup_service.OriginDetail.PackageLocation = 'NONE' # APARTMENT, BUILDING, DEPARTMENT, FLOOR, ROOM, SUITE # pickup_service.OriginDetail.BuildingPart = 'SUITE' # Identifies the date and time the package will be ready for pickup by FedEx. pickup_service.OriginDetail.ReadyTimestamp = datetime.datetime.now( ).replace(microsecond=0).isoformat() # Identifies the latest time at which the driver can gain access to pick up the package(s) pickup_service.OriginDetail.CompanyCloseTime = '23:00:00' pickup_service.CarrierCode = 'FDXE' pickup_service.TotalWeight.Units = 'LB' pickup_service.TotalWeight.Value = '1' pickup_service.PackageCount = '1' # pickup_service.OversizePackageCount = '1' # pickup_service.CommodityDescription = '' # DOMESTIC or INTERNATIONAL # pickup_service.CountryRelationship = 'DOMESTIC' # See PickupServiceCategoryType # pickup_service.PickupServiceCategory = 'FEDEX_DISTANCE_DEFERRED' pickup_service.send_request() assert pickup_service.response.HighestSeverity == 'SUCCESS', pickup_service.response.Notifications[ 0].Message
def test_rate(self): pickup_service = FedexCreatePickupRequest(CONFIG_OBJ) pickup_service.OriginDetail.PickupLocation.Contact.PersonName = 'Sender Name' pickup_service.OriginDetail.PickupLocation.Contact.EMailAddress = '*****@*****.**' pickup_service.OriginDetail.PickupLocation.Contact.CompanyName = 'Acme Inc.' pickup_service.OriginDetail.PickupLocation.Contact.PhoneNumber = '9012638716' pickup_service.OriginDetail.PickupLocation.Address.StateOrProvinceCode = 'SC' pickup_service.OriginDetail.PickupLocation.Address.PostalCode = '29631' pickup_service.OriginDetail.PickupLocation.Address.CountryCode = 'US' pickup_service.OriginDetail.PickupLocation.Address.StreetLines = ['155 Old Greenville Hwy', 'Suite 103'] pickup_service.OriginDetail.PickupLocation.Address.City = 'Clemson' # pickup_service.OriginDetail.PickupLocation.Address.UrbanizationCode = '' # For Puerto Rico only pickup_service.OriginDetail.PickupLocation.Address.Residential = False # FRONT, NONE, REAR, SIDE # pickup_service.OriginDetail.PackageLocation = 'NONE' # APARTMENT, BUILDING, DEPARTMENT, FLOOR, ROOM, SUITE # pickup_service.OriginDetail.BuildingPart = 'SUITE' # Identifies the date and time the package will be ready for pickup by FedEx. pickup_service.OriginDetail.ReadyTimestamp = datetime.datetime.now().replace(microsecond=0).isoformat() # Identifies the latest time at which the driver can gain access to pick up the package(s) pickup_service.OriginDetail.CompanyCloseTime = '23:00:00' pickup_service.CarrierCode = 'FDXE' pickup_service.TotalWeight.Units = 'LB' pickup_service.TotalWeight.Value = '1' pickup_service.PackageCount = '1' # pickup_service.OversizePackageCount = '1' # pickup_service.CommodityDescription = '' # DOMESTIC or INTERNATIONAL # pickup_service.CountryRelationship = 'DOMESTIC' # See PickupServiceCategoryType # pickup_service.PickupServiceCategory = 'FEDEX_DISTANCE_DEFERRED' pickup_service.send_request() assert pickup_service.response.HighestSeverity == 'SUCCESS', pickup_service.response.Notifications[0].Message
# pickup_service.OriginDetail.PickupLocation.Address.UrbanizationCode = '' # For Puerto Rico only pickup_service.OriginDetail.PickupLocation.Address.Residential = False # FRONT, NONE, REAR, SIDE # pickup_service.OriginDetail.PackageLocation = 'NONE' # APARTMENT, BUILDING, DEPARTMENT, FLOOR, ROOM, SUITE # pickup_service.OriginDetail.BuildingPart = 'SUITE' # Identifies the date and time the package will be ready for pickup by FedEx. pickup_service.OriginDetail.ReadyTimestamp = datetime.datetime.now().replace(microsecond=0).isoformat() # Identifies the latest time at which the driver can gain access to pick up the package(s) pickup_service.OriginDetail.CompanyCloseTime = '23:00:00' pickup_service.CarrierCode = 'FDXE' pickup_service.TotalWeight.Units = 'LB' pickup_service.TotalWeight.Value = '1' pickup_service.PackageCount = '1' # pickup_service.OversizePackageCount = '1' # pickup_service.CommodityDescription = '' # DOMESTIC or INTERNATIONAL # pickup_service.CountryRelationship = 'DOMESTIC' # See PickupServiceCategoryType # pickup_service.PickupServiceCategory = 'FEDEX_DISTANCE_DEFERRED' pickup_service.send_request()
# pickup_service.OriginDetail.PickupLocation.Address.UrbanizationCode = '' # For Puerto Rico only pickup_service.OriginDetail.PickupLocation.Address.Residential = False # FRONT, NONE, REAR, SIDE # pickup_service.OriginDetail.PackageLocation = 'NONE' # APARTMENT, BUILDING, DEPARTMENT, FLOOR, ROOM, SUITE # pickup_service.OriginDetail.BuildingPart = 'SUITE' # Identifies the date and time the package will be ready for pickup by FedEx. pickup_service.OriginDetail.ReadyTimestamp = pickup_date.isoformat() # Identifies the latest time at which the driver can gain access to pick up the package(s) pickup_service.OriginDetail.CompanyCloseTime = '23:00:00' pickup_service.CarrierCode = 'FDXE' pickup_service.TotalWeight.Units = 'LB' pickup_service.TotalWeight.Value = '1' pickup_service.PackageCount = '1' # pickup_service.OversizePackageCount = '1' # pickup_service.CommodityDescription = '' # DOMESTIC or INTERNATIONAL # pickup_service.CountryRelationship = 'DOMESTIC' # See PickupServiceCategoryType # pickup_service.PickupServiceCategory = 'FEDEX_DISTANCE_DEFERRED' pickup_service.send_request()
def schedule_pickup_service (self, credentials, from_address_doc, \ from_country_doc, transporter_doc): from_state_doc = frappe.get_doc("State", from_address_doc.state_rigpl) from fedex.services.pickup_service import FedexCreatePickupRequest customer_transaction_id = self.name # Optional transaction_id pickup_service = FedexCreatePickupRequest(credentials) pickup_service.OriginDetail.PickupLocation.Contact.PersonName = \ from_address_doc.address_title[0:35] pickup_service.OriginDetail.PickupLocation.Contact.EMailAddress = from_address_doc.email_id pickup_service.OriginDetail.PickupLocation.Contact.CompanyName = from_address_doc.address_title[ 0:35] pickup_service.OriginDetail.PickupLocation.Contact.PhoneNumber = from_address_doc.phone[ 0:15] pickup_service.OriginDetail.PickupLocation.Address.StateOrProvinceCode = from_state_doc.state_code pickup_service.OriginDetail.PickupLocation.Address.PostalCode = from_address_doc.pincode[ 0:10] pickup_service.OriginDetail.PickupLocation.Address.CountryCode = from_country_doc.code pickup_service.OriginDetail.PickupLocation.Address.StreetLines = [from_address_doc.address_line1[0:35],\ str(from_address_doc.address_line2)[0:35]] pickup_service.OriginDetail.PickupLocation.Address.City = from_address_doc.city[ 0:20] pickup_service.OriginDetail.PickupLocation.Address.Residential = True if from_address_doc.is_residential \ else False pickup_service.OriginDetail.PackageLocation = 'NONE' pickup_service.OriginDetail.ReadyTimestamp = get_datetime( self.ready_time).replace(microsecond=0).isoformat() pickup_service.OriginDetail.CompanyCloseTime = self.last_time if self.last_time else '20:00:00' pickup_service.CarrierCode = 'FDXE' pickup_service.PackageCount = self.no_of_packages package_weight = pickup_service.create_wsdl_object_of_type('Weight') package_weight.Units = 'KG' package_weight.Value = '1' pickup_service.TotalWeight = package_weight # DOMESTIC or INTERNATIONAL if transporter_doc.is_export_only == 1 or transporter_doc.is_imports_only == 1: dom_type = 'INTERNATIONAL' elif transporter_doc.is_domestic_only == 1: dom_type = 'DOMESTIC' else: frappe.throw( "Error Transporter should be either DOMESTIC or INTERNATIONAL") pickup_service.CountryRelationship = dom_type #frappe.msgprint(str(sobject_to_json(pickup_service))) pickup_service.send_request() if pickup_service.response.HighestSeverity not in [ "SUCCESS", "NOTE", "WARNING" ]: self.show_notification(pickup_service) #frappe.throw(_('Pickup service scheduling failed.')) frappe.msgprint(str(pickup_service.response.HighestSeverity)) frappe.msgprint( str(pickup_service.response.PickupConfirmationNumber)) frappe.msgprint(str(pickup_service.response.Location)) return { "response": pickup_service.response.HighestSeverity, "pickup_id": pickup_service.response.PickupConfirmationNumber, "location_no": pickup_service.response.Location }