def fetch_print_items_from_sap()

in backend-printing/helper/backend_print.py [0:0]


    def fetch_print_items_from_sap(self):
        """Get the print items from each SAP system.
        Create a json message for each print item.
        Move these messages to storage queue.
        """
        print_messages = []
        try:
            self._get_all_sap_configs()
            self.logger.info(f"[{self.log_tag}] Fetched sap config from key vault")
            for sap_system in self.sap_systems:
                sap_client = SAPPrintClient(sap_system)
                self.logger.info(
                    f"[{self.log_tag}] Fetching print items from SAP system {sap_system.sap_sid}"
                )
                if sap_system.sap_print_queues is not None:
                    for queue in sap_system.sap_print_queues:
                        print_items_from_queue = []

                        response = sap_client.get_print_items_from_queue(
                            queue_name=queue.queue_name
                        )
                        (
                            print_items_from_queue.extend(response)
                            if response is not None
                            else []
                        )
                        self.logger.info(
                            f"[{self.log_tag}] Fetched {len(print_items_from_queue)} items from the "
                            + f" SAP queue {queue} for {sap_system.sap_sid}"
                        )
                        for print_item in print_items_from_queue:
                            queue_item_params = json.loads(print_item["QItemParams"])
                            for document in json.loads(print_item["Documents"]):
                                print_messages.append(
                                    {
                                        "sap_sid": sap_system.sap_sid,
                                        "sap_environment": sap_system.sap_environment,
                                        "sap_print_queue_name": queue.queue_name,
                                        "print_item": {
                                            "document_blob": document["blob"],
                                            "document_name": document["document_name"],
                                            "document_file_size": document["filesize"],
                                            "printer_share_id": queue.print_share_id,
                                            "queue_item_id": print_item["QItemId"],
                                            "document_content_type": DOCUMENT_CONTENT_TYPE,
                                            "print_job_copies": queue_item_params[
                                                "print_job"
                                            ]["copies"],
                                        },
                                    }
                                )
            # send the print messages to the storage queue
            if print_messages:
                self._send_message_to_storage_queue(print_messages=print_messages)
                self.logger.info(
                    f"[{self.log_tag}] Sent {len(print_messages)} messages to the storage account"
                )
                self._update_print_messages_status(
                    print_messages=print_messages, status=PrintItemStatus.NEW.value
                )
                self.logger.info(
                    f"[{self.log_tag}] Updated {len(print_messages)} messages status in storage table to NEW"
                )
        except Exception as e:
            self.logger.error(
                f"[{self.log_tag}] Error occurred while fetching SAP config from the Key Vault: {e}"
            )
            return {
                "status": "error",
                "message": "Error occurred while fetching items.",
            }