def get_shipping_rates(delivery_note, add_shipping_overhead=False): """get packages Information from delivery note, create the xml request to fetch the ups rates""" try: # dn = frappe.get_doc("Delivery Note",delivery_note) if isinstance(delivery_note, DeliveryNote): dn = delivery_note else: dn = frappe.get_doc(json.loads(delivery_note)) if dn.dn_status in ["Draft", "Partialy Packed"]: frappe.throw("First create the packing slips") params = Helper.get_ups_api_params() rating_api = get_rating_service(params) request = get_ups_rating_request(dn, params) response = rating_api.request(request) shipping_rates = parse_xml_response_to_json(response) dn.ups_rates = json.dumps(shipping_rates) dn.dn_status = "UPS Rates Fetched" dn.save(ignore_permissions= True) if shipping_rates.get("03"): if add_shipping_overhead: add_shipping_charges(dn_name=dn.name, service_code="03") # return True return shipping_rates else: frappe.msgprint("UPS Ground rates are not available. Please select other services") return shipping_rates # return shipping_rates except PyUPSException, e: """ e is PyUPSException obj returns tuple as structured (message, request, response)""" 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 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_package_tracking_status(tracking_number=None): if not tracking_number: create_scheduler_log("Invalid Input", "get_package_tracking_status", "Invalid Tracking Number %s : tracking number can not\ be None"%(tracking_number), tracking_number) else: try: params = Helper.get_ups_api_params() tracking_api = get_tracking_service(params) tracking_request = TrackingRequest.tracking_request_type( E.TrackingNumber(tracking_number), ) response = tracking_api.request(tracking_request) return parse_xml_response_to_json(response, tracking_number) except PyUPSException, e: create_scheduler_log(e[0], "get_package_tracking_status", tracking_number, e)