From e7e10eb31531d16cd239ea83367cd52a128c2cf3 Mon Sep 17 00:00:00 2001 From: Nico Melone Date: Wed, 16 Aug 2023 22:05:33 -0500 Subject: [PATCH] bare-bones report generation complete --- billing.log | 176 +++++++++++++++ hp-billing-report.ipynb | 483 +++++++++++++++++++++++++++++++++++++++- output.xlsx | Bin 0 -> 27201 bytes 3 files changed, 656 insertions(+), 3 deletions(-) create mode 100644 output.xlsx diff --git a/billing.log b/billing.log index e69de29..8ee2963 100644 --- a/billing.log +++ b/billing.log @@ -0,0 +1,176 @@ +2023-08-16 15:19:28,234 - billing_reports - INFO - test +2023-08-16 15:39:00,080 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 15:39:00,081 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 15:39:00,082 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 15:39:00,082 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 15:39:00,083 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 15:39:00,084 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 15:39:00,085 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 15:39:00,086 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 15:39:00,086 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 15:39:00,087 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 15:39:00,088 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 15:39:00,088 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 15:39:00,089 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 15:39:00,090 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 15:39:00,090 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 15:39:00,091 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 15:39:00,092 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 15:39:00,092 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 15:39:00,093 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 15:39:00,093 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 15:39:00,094 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 15:39:00,094 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 15:39:00,095 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 15:39:00,096 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 15:39:00,097 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 15:39:00,097 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 15:39:00,098 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 15:39:00,099 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 15:39:00,099 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 15:39:00,100 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 15:39:00,100 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 15:39:00,102 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 15:39:00,105 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 15:39:00,106 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 15:39:00,107 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 15:39:00,108 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 15:39:00,110 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 15:39:00,111 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 15:39:00,114 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 15:39:00,115 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 15:39:00,116 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 15:39:00,117 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 15:39:00,118 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 15:39:00,120 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 15:39:00,121 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 15:39:00,122 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 15:39:00,124 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 15:39:00,125 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 15:39:00,126 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 15:39:00,128 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 15:39:00,129 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 15:39:00,130 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 15:39:00,131 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 15:39:00,131 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 15:39:00,131 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 15:39:00,132 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 15:39:00,132 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 15:39:00,133 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 15:39:00,133 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 15:39:00,134 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 15:39:00,134 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 15:39:00,135 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 15:39:00,135 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 15:39:00,136 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 15:39:00,138 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 15:39:00,140 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 15:39:00,142 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 15:39:00,143 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 15:39:00,144 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 15:39:00,145 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 15:39:00,146 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 15:39:00,147 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 15:39:00,151 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 15:39:00,152 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 15:39:00,153 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 15:39:00,153 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 15:39:00,154 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 15:39:00,154 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 15:39:00,155 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 15:39:00,155 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 15:39:00,156 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 15:39:00,157 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 15:39:00,157 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 15:39:00,207 - billing_reports - INFO - Folder already in list: 31976 +2023-08-16 15:39:00,230 - billing_reports - INFO - Folder already in list: 31915 +2023-08-16 15:39:00,233 - billing_reports - INFO - Folder already in list: 32155 +2023-08-16 16:19:34,115 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 16:19:34,117 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 16:19:34,118 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 16:19:34,118 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 16:19:34,119 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 16:19:34,119 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 16:19:34,120 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 16:19:34,121 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 16:19:34,122 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 16:19:34,123 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 16:19:34,124 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 16:19:34,124 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 16:19:34,125 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 16:19:34,126 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 16:19:34,126 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 16:19:34,127 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 16:19:34,128 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 16:19:34,128 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 16:19:34,129 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 16:19:34,129 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 16:19:34,130 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 16:19:34,131 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 16:19:34,131 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 16:19:34,132 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 16:19:34,133 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 16:19:34,134 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 16:19:34,134 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 16:19:34,135 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 16:19:34,135 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 16:19:34,136 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 16:19:34,136 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 16:19:34,137 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 16:19:34,138 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 16:19:34,138 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 16:19:34,139 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 16:19:34,139 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 16:19:34,140 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 16:19:34,140 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 16:19:34,141 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 16:19:34,141 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 16:19:34,142 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 16:19:34,142 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 16:19:34,143 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 16:19:34,144 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 16:19:34,144 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 16:19:34,145 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 16:19:34,145 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 16:19:34,146 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 16:19:34,147 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 16:19:34,149 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 16:19:34,149 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 16:19:34,150 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 16:19:34,151 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 16:19:34,151 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 16:19:34,152 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 16:19:34,152 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 16:19:34,153 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 16:19:34,153 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 16:19:34,154 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 16:19:34,155 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 16:19:34,155 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 16:19:34,156 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 16:19:34,157 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 16:19:34,157 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 16:19:34,158 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 16:19:34,159 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 16:19:34,160 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 16:19:34,160 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 16:19:34,162 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 16:19:34,165 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 16:19:34,165 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 16:19:34,166 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 16:19:34,167 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 16:19:34,168 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 16:19:34,169 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 16:19:34,174 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 16:19:34,175 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 16:19:34,175 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 16:19:34,176 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 16:19:34,176 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 16:19:34,177 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 16:19:34,178 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 16:19:34,178 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 16:19:34,179 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 16:19:34,179 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 16:19:34,180 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment +2023-08-16 16:19:34,230 - billing_reports - INFO - Folder already in list: 31976 +2023-08-16 16:19:34,254 - billing_reports - INFO - Folder already in list: 31915 +2023-08-16 16:19:34,255 - billing_reports - INFO - Folder already in list: 32155 diff --git a/hp-billing-report.ipynb b/hp-billing-report.ipynb index a610084..277d8b4 100644 --- a/hp-billing-report.ipynb +++ b/hp-billing-report.ipynb @@ -2,15 +2,492 @@ "cells": [ { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "metadata": {}, "outputs": [], - "source": [] + "source": [ + "import lattice\n", + "import logging\n", + "import json\n", + "\n", + "logger = logging.getLogger('billing_reports')\n", + "logger.setLevel(logging.INFO)\n", + "\n", + "fh = logging.FileHandler('/Users/nico/Documents/Github/hp-billing-report/billing.log')\n", + "fh.setLevel(logging.INFO)\n", + "\n", + "ch = logging.StreamHandler()\n", + "ch.setLevel(logging.ERROR)\n", + "\n", + "formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')\n", + "fh.setFormatter(formatter)\n", + "ch.setFormatter(formatter)\n", + "\n", + "logger.addHandler(fh)\n", + "logger.addHandler(ch)" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "#Mistaway data collection\n", + "from datetime import datetime as dt\n", + "\n", + "json_file_output = False\n", + "console_output = False" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "nodes = lattice.getNodes()" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "# Find a value for a given key in a given dictionary\n", + "def _findItem(obj, key):\n", + " if key in obj: return obj[key] \n", + " for k, v in obj.items():\n", + " if isinstance(v,dict):\n", + " item = _findItem(v, key)\n", + " if item is not None:\n", + " return item" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "# recursively go through folders to build folder structure\n", + "def putFolder(folder, fs):\n", + " try:\n", + " if not folder[\"id\"] == folder[\"parentFolderId\"]:\n", + " parent = _findItem(fs, folder[\"parentFolderId\"])\n", + " parent[folder[\"id\"]] = folder\n", + " putFolder(parent,fs)\n", + " else:\n", + " fs[folder[\"id\"]] = folder\n", + " return fs\n", + " except Exception as e:\n", + " logger.error(f\"Exception in putFolder: {e}\")\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2023-08-16 16:19:34,115 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment\n", + "2023-08-16 16:19:34,117 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment\n", + "2023-08-16 16:19:34,118 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment\n", + "2023-08-16 16:19:34,118 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment\n", + "2023-08-16 16:19:34,119 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment\n", + "2023-08-16 16:19:34,119 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment\n", + "2023-08-16 16:19:34,120 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment\n", + "2023-08-16 16:19:34,121 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment\n", + "2023-08-16 16:19:34,122 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment\n", + "2023-08-16 16:19:34,123 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment\n", + "2023-08-16 16:19:34,124 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment\n", + "2023-08-16 16:19:34,124 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment\n", + "2023-08-16 16:19:34,125 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment\n", + "2023-08-16 16:19:34,126 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment\n", + "2023-08-16 16:19:34,126 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment\n", + "2023-08-16 16:19:34,127 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment\n", + "2023-08-16 16:19:34,128 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment\n", + "2023-08-16 16:19:34,128 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment\n", + "2023-08-16 16:19:34,129 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment\n", + "2023-08-16 16:19:34,129 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment\n", + "2023-08-16 16:19:34,130 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment\n", + "2023-08-16 16:19:34,131 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment\n", + "2023-08-16 16:19:34,131 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment\n", + "2023-08-16 16:19:34,132 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment\n", + "2023-08-16 16:19:34,133 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment\n", + "2023-08-16 16:19:34,134 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment\n", + "2023-08-16 16:19:34,134 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment\n", + "2023-08-16 16:19:34,135 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment\n", + "2023-08-16 16:19:34,135 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment\n", + "2023-08-16 16:19:34,136 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment\n", + "2023-08-16 16:19:34,136 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment\n", + "2023-08-16 16:19:34,137 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment\n", + "2023-08-16 16:19:34,138 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment\n", + "2023-08-16 16:19:34,138 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment\n", + "2023-08-16 16:19:34,139 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment\n", + "2023-08-16 16:19:34,139 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment\n", + "2023-08-16 16:19:34,140 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment\n", + "2023-08-16 16:19:34,140 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment\n", + "2023-08-16 16:19:34,141 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment\n", + "2023-08-16 16:19:34,141 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment\n", + "2023-08-16 16:19:34,142 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment\n", + "2023-08-16 16:19:34,142 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment\n", + "2023-08-16 16:19:34,143 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment\n", + "2023-08-16 16:19:34,144 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment\n", + "2023-08-16 16:19:34,144 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment\n", + "2023-08-16 16:19:34,145 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment\n", + "2023-08-16 16:19:34,145 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment\n", + "2023-08-16 16:19:34,146 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment\n", + "2023-08-16 16:19:34,147 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment\n", + "2023-08-16 16:19:34,149 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment\n", + "2023-08-16 16:19:34,149 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment\n", + "2023-08-16 16:19:34,150 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment\n", + "2023-08-16 16:19:34,151 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment\n", + "2023-08-16 16:19:34,151 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment\n", + "2023-08-16 16:19:34,152 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment\n", + "2023-08-16 16:19:34,152 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment\n", + "2023-08-16 16:19:34,153 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment\n", + "2023-08-16 16:19:34,153 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment\n", + "2023-08-16 16:19:34,154 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment\n", + "2023-08-16 16:19:34,155 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment\n", + "2023-08-16 16:19:34,155 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment\n", + "2023-08-16 16:19:34,156 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment\n", + "2023-08-16 16:19:34,157 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment\n", + "2023-08-16 16:19:34,157 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment\n", + "2023-08-16 16:19:34,158 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment\n", + "2023-08-16 16:19:34,159 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment\n", + "2023-08-16 16:19:34,160 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment\n", + "2023-08-16 16:19:34,160 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment\n", + "2023-08-16 16:19:34,162 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment\n", + "2023-08-16 16:19:34,165 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment\n", + "2023-08-16 16:19:34,165 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment\n", + "2023-08-16 16:19:34,166 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment\n", + "2023-08-16 16:19:34,167 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment\n", + "2023-08-16 16:19:34,168 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment\n", + "2023-08-16 16:19:34,169 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment\n", + "2023-08-16 16:19:34,174 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment\n", + "2023-08-16 16:19:34,175 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment\n", + "2023-08-16 16:19:34,175 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment\n", + "2023-08-16 16:19:34,176 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment\n", + "2023-08-16 16:19:34,176 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment\n", + "2023-08-16 16:19:34,177 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment\n", + "2023-08-16 16:19:34,178 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment\n", + "2023-08-16 16:19:34,178 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment\n", + "2023-08-16 16:19:34,179 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment\n", + "2023-08-16 16:19:34,179 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment\n", + "2023-08-16 16:19:34,180 - billing_reports - ERROR - Exception in putFolder: 'NoneType' object does not support item assignment\n" + ] + } + ], + "source": [ + "# Go through every folder and build a proper folder structure\n", + "# Output to JSON file\n", + "folders = lattice.getFolders()\n", + "foldermap = {}\n", + "#print(json.dumps(folders, indent=4))\n", + "for folder in folders:\n", + " logger.debug(folder)\n", + " putFolder(folder,foldermap)\n", + "if console_output:\n", + " print(json.dumps(foldermap, indent=4))\n", + "if json_file_output:\n", + " with open(\"./folderMap\" + str(dt.date(dt.now())) +\".json\", \"w\") as f:\n", + " json.dump(foldermap, f, indent=4)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "# Go through every node and collect unique device id (MAC)\n", + "# Output to JSON file\n", + "foldersTracker = []\n", + "vanityMap = {}\n", + "for node in nodes:\n", + " if not node[\"uniqueId\"][-6:] in [\":00:00\", \":00:30\"]:\n", + " if not node[\"folderId\"] in foldersTracker:\n", + " foldersTracker.append(node[\"folderId\"])\n", + " folder = _findItem(foldermap, node[\"folderId\"])\n", + " if folder:\n", + " deviceName = folder[\"name\"]\n", + " latitude = folder[\"location\"][\"lat\"]\n", + " longitude = folder[\"location\"][\"lng\"]\n", + " pfolder = _findItem(foldermap, folder[\"parentFolderId\"])\n", + " ppfolder = _findItem(foldermap, pfolder[\"parentFolderId\"])\n", + " customer = ppfolder[\"name\"]\n", + " vanityMap[node[\"uniqueId\"]] = {\"deviceName\": deviceName, \"customer\": customer, \"latitude\": latitude, \"longitude\": longitude}\n", + " else:\n", + " logger.info(\"Folder does not exist: \" + str(node[\"folderId\"]))\n", + " else:\n", + " logger.info(\"Folder already in list: \" + str(node[\"folderId\"]))\n", + "#print(vanityMap)\n", + "if json_file_output:\n", + " with open(\"./deviceMap\" + str(dt.date(dt.now())) +\".json\", \"w\") as f:\n", + " json.dump(vanityMap, f, indent=4)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'\\nData to be collected:\\n {\\n \"customer\":{\\n \"sales_order\": {\\n \"billable_item_1\": {\\n \"sales_price\": 75,\\n \"platform_cost\": 10,\\n \"platform\": \"thingsboard\", # \"thingsboard\", \"mistaway\"\\n \"cellular_cost\": 15,\\n \"billing_type\": \"stand-alone\" # \"stand-alone\", \"AP\", \"AP-bundled\", \"networked\", \"stand-alone-wifi\"\\n },\\n \"billable_item_2:{...},\\n ...\\n },\\n \"sales_order_2\":{...}\\n },\\n \"customer_2\":{...}\\n }\\n'" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\"\"\"\n", + "Data to be collected:\n", + " {\n", + " \"customer\":{\n", + " \"sales_order\": {\n", + " \"billable_item_1\": {\n", + " \"sales_price\": 75,\n", + " \"platform_cost\": 10,\n", + " \"platform\": \"thingsboard\", # \"thingsboard\", \"mistaway\"\n", + " \"cellular_cost\": 15,\n", + " \"billing_type\": \"stand-alone\" # \"stand-alone\", \"AP\", \"AP-bundled\", \"networked\", \"stand-alone-wifi\"\n", + " },\n", + " \"billable_item_2:{...},\n", + " ...\n", + " },\n", + " \"sales_order_2\":{...}\n", + " },\n", + " \"customer_2\":{...}\n", + " }\n", + "\"\"\"" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [], + "source": [ + "mistaway_data = {}\n", + "for key, value in vanityMap.items():\n", + " customer = value[\"customer\"]\n", + " device = value[\"deviceName\"]\n", + " if not device in [\"Melinda 252\"]:\n", + " if customer not in mistaway_data:\n", + " mistaway_data[customer] = {f\"HPSO-1\": {}}\n", + " mistaway_data[customer][\"HPSO-1\"][device] = {\n", + " \"Sales Price\": 75,\n", + " \"Platform Cost\": 10,\n", + " \"Platform\": \"Mistaway\", # \"thingsboard\", \"mistaway\"\n", + " \"Cellular Cost\": 15,\n", + " \"Billing Type\": \"Stand-Alone\" # \"stand-alone\", \"AP\", \"AP-bundled\", \"networked\", \"stand-alone-wifi\"\n", + " }\n", + " \n", + " \n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "#ThingsBoard data collection\n", + "from tb_rest_client.rest_client_ce import *\n", + "from tb_rest_client.rest import ApiException" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "# ThingsBoard REST API URL\n", + "url = \"https://hp.henrypump.cloud\"\n", + "# Default Tenant Administrator credentials\n", + "username = \"henry.pump.automation@gmail.com\"\n", + "password = \"Henry Pump @ 2022\"" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [], + "source": [ + "def getDevices(rest_client, customers, page=0, pageSize=500):\n", + " thingsboard_data = {}\n", + " for c in customers.data:\n", + " cname = c.name\n", + " cid = c.id.id\n", + " if cname != \"Test Company\":\n", + " if cname not in thingsboard_data:\n", + " thingsboard_data[cname] = {f\"HPSO-1\": {}}\n", + " devices = rest_client.get_customer_devices(customer_id=cid, page_size=pageSize, page=page)\n", + " for device in devices.data:\n", + " if '\"' in device.name:\n", + " deviceName = device.name.replace('\"', 'in')\n", + " else:\n", + " deviceName = device.name\n", + " thingsboard_data[cname][\"HPSO-1\"][deviceName] = {\n", + " \"Sales Price\": 75,\n", + " \"Platform Cost\": 0,\n", + " \"Platform\": \"ThingsBoard\", # \"thingsboard\", \"mistaway\"\n", + " \"Cellular Cost\": 15,\n", + " \"Billing Type\": \"Stand-Alone\" # \"stand-alone\", \"AP\", \"AP-bundled\", \"networked\", \"stand-alone-wifi\"\n", + " }\n", + " return thingsboard_data" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "def getThingsBoardData(url, username, password):\n", + " # Creating the REST client object with context manager to get auto token refresh\n", + " with RestClientCE(base_url=url) as rest_client:\n", + " try:\n", + " # Auth with credentials\n", + " rest_client.login(username=username, password=password)\n", + " # Get customers > get devices under a target customer > get keys for devices > get data for devices\n", + " customers = rest_client.get_customers(page_size=\"100\", page=\"0\")\n", + " thingsboard_data = getDevices(rest_client=rest_client, customers=customers)\n", + " return thingsboard_data\n", + " except ApiException as e:\n", + " logger.error(e)\n", + " return False" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [], + "source": [ + "thingsboard_data = getThingsBoardData(url, username,password)" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [], + "source": [ + "#Mixing data from Mistaway and ThingsBoard\n", + "excel_data = {}\n", + "excel_data.update(mistaway_data)\n", + "for customer in thingsboard_data.keys():\n", + " if customer in excel_data:\n", + " for so in thingsboard_data[customer].keys():\n", + " if so in excel_data[customer]:\n", + " excel_data[customer][so].update(thingsboard_data[customer][so])\n", + " else:\n", + " excel_data[customer].update(thingsboard_data[customer])\n", + " else:\n", + " excel_data[customer] = thingsboard_data[customer]\n" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'CrownQuest': {'HPSO-1': {'Nail Ranch 37 SR 2-3': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Wrage 21 SR 2-2': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Wrage 28 SR 2-2': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Free 40 WS 2-2': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Wilkinson 1 WS 1-9': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Wilkinson 1 WS 1-10B': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Wilkinson 39 WS 1-3': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Wilkinson 4 WS 1-10': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Horton 34 WS 10-5': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Rig Pump #3': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Rig Pump #4': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'CQ Wrage Ranch 32 SR 1-1': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'LimeQuest 5 WS 10-10': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Wilkinson Ranch 34 SR 2-2': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Nail Ranch 2 SR 3-3': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Nail Ranch 38 SR 2-3': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Nail Ranch 25 SR 2-1': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Nail Ranch 28 SR 3-3': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Nail Ranch 38 SR 1-3': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Nail Ranch 3 SR 3-2': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Nail Ranch 28 SR 2-2': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Nail Ranch 28 SR 1-1': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Guitar 22 SR 3-3': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Wilkinson Ranch 33 SR 2-2': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Wilkinson Ranch 35 SR 1-1': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Wilkinson Ranch 1 SR 2-2': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Limequest Transfer Lite': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'S. Wilkinson Transfer Lite': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Nail Ranch 2 SR 2-2': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Horton Transfer Lite': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'South Wilkinson Transfer #2': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Wilkinson Ranch 37 SR 2-1': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Wilkinson 39 WS 1-5': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Wilkinson 39 WS 1-4': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Wilkinson 39 WS 1-2': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Free 40 WS 1-2': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Wilkinson 39 WS 1-1': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Free 32 WS 2-7': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Free 32 WS 3-10C': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Free 40 WS 6-5': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Free 40 WS 1-4': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Free 40 WS 1-6': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Free 32 WS 3-10A': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Wilkinson 34 WS 9-10': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Wilkinson 33 WS 10-3A': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Wilkinson 33 WS 10-3B': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Wilkinson 33 WS 10-1B': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Wilkinson 33 WS 6-7': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Free 32 WS 3-10B': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'LimeQuest 5 WS 9-9': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'LimeQuest 5 WS 6-8': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'LimeQuest 5 WS 2-4': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'LimeQuest 5 WS 8-5': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'LimeQuest 5 WS 7-5': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'LimeQuest 5 WS 4-7': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Horton 23 WS 5-6': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Horton 23 WS 8-6': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Horton 23 WS 6-5': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Horton 23 WS 6-6': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Horton 34 WS 1-1': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Horton 34 WS 1-2': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Horton 23 WS 5-3': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Horton 23 WS 5-2': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Horton 23 WS 5-5': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Wilkinson 37 WS 1-9B': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Wilkinson 39 WS 2-2': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Wilkinson 37 WS 1-8': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Wilkinson 1 WS 9-4B': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'ToolBox South': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Rig Pump #8': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'LimeQuest 5 WS 7-9': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Horton 34 WS 1-4': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'LimeQuest 5 WS 3-5': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Free Transfer Pit': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Wilkinson 34 WS 5-10': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Wilkinson 33 WS 5-2': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Wilkinson 33 WS 6-3': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Wilkinson 37 WS 7-8': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Wilkinson 33 WS 4-1': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Wilkinson 37 WS 8-8': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Wilkinson 34 WS 1-8': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Wilkinson 39 WS 2-4': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Wilkinson 37 WS 10-9': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Wilkinson 33 WS 3-1': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Wilkinson 34 WS 2-10': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Wilkinson 37 WS 1-5': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Wilkinson 37 WS 3-5': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Wilkinson 37 WS 3-6': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Wilkinson 37 WS 5-7': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Wilkinson 34 WS 10-9': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Wilkinson 39 WS 1-10': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Wilkinson 37 WS 4-7': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Wilkinson 39 WS 2-8': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Wilkinson Ranch 39 SR 1-1': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Wilkinson 37 WS 1-7': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'LimeQuest 5 WS 8-9': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'LimeQuest 5 WS 1-4': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'LimeQuest 10 WS 3-6': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Wrage 33 SR 3-3': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'N. Wilkinson Transfer Lite': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Wilkinson 33 WS 10-4': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Wilkinson 34 WS 9-9': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Wilkinson 1 WS 2-10': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Wilkinson 33 ws 10-1A': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Wilkinson 37 WS 1-10': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Wilkinson 1 WS 1-10A': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Rig Pump #7': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Horton 34 WS 1-3': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Wilkinson 39 ws 3-8': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Wilkinson 34 WS 6-10': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Free 40 SR 2-1': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Wilkinson 33 WS 7-2': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Nail Ranch 12 SR 1-3': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Wilkinson 33 WS 6-2': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'LimeQuest 6 SR 1-1': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Wilkinson 39 WS 1-7': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Wilkinson 1 WS 2-9': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Wilkinson 34 WS 10-10': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Wilkinson 39 WS 2-10': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Free 40 WS 1-1': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Wilkinson 39 WS 1-6': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'ToolBox North': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Wilkinson 33 WS 10-2': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Nail Ranch 37 SR 3-2': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Wilkinson 37 WS 8-6': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Rig Pump #6': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Wilkinson 37 WS 5-5': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Rig Pump #10': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'LLL 6 SR 1-1': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Wilkinson 39 WS 1-9': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Wilkinson 39 WS 1-8': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Wilkinson 39 WS 2-6': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'LimeQuest 5 WS 10-9': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Rig Pump #11': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Rig Pump #12': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}}}, 'Summit Petroleum': {'HPSO-1': {'Bowling WW 4-1': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Banay WW 7-1': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Banay WW 5-1': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Bowling WW 37-1': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Banay WW 504': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Banay WW 18 #4': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Banay WW 18 #9': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Windham 108-1': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Windham 108-3': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Florence WW #2': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Florence WW #1': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Madelyn Kate #3 WW': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Jessica WW #3': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Windham 108-7': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Windham 108-6': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Windham 108-5': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Windham 107-1': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Windham 107-2': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Windham 108-8': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Windham 108-10': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Windham 108-2': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Windham 108-9': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Jessica WW #7': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Carmanita WW 12-2': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Carmanita WW 12-1': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Banay North Frac Pit': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Banay South Frac Pit': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Banay South Inlet': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Banay WW 18 #3': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Carmanita WW 12-3': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Banay WW 8-5': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Banay WW 8-2': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Banay WW 6-1': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Banay WW 18 #10': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Carmanita WW 12-4': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Banay WW 18 #1': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Caden WW #1': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Caden WW #2': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Caden WW #3': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Caden WW #4': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Lisa WW #1': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Madeline WW #2': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Caden WW #6': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Laurie Gwen WW #1': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Jessica WW #4': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Jessica WW #1': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Jessica WW #2': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Denali East Frac Pit': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Banay WW 8-4': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Jessica WW #5': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Map Rock Transfer Pump Monitor': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Banay North Pit Inlet #1': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Banay North Pit Outlet #1': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Yvonne Frac Pit': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Denali Frac Pit': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Cindy #1': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Cindy #3': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Cindy #2': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Lindsey #3': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Elizabeth 1': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Railway 12-3': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Railway 12-2': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Elizabeth B1': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Elizabeth B2': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Rhonda 1': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Sec 46 #1': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Cynthia 1': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Nancy #2': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Nancy #1': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Rhonda Pit': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Jitterbug 28-1': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Reagan #1': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Aurora 7': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Aurora 8': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Aurora 9': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Aurora 10': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Aurora 11': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Aurora 6': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'RebJean #2': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Terri #6': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'RobJane #2': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'RobJane #3': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'RebJean #1': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'RobJane #1': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Kelsey #2': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Stephanie 41 #2': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Kelsey #1': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Stephanie 41 #3': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'RobJane #4': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Terri #2': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Terri #1': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Terri #3': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Terri #4': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Mary 43 #3': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Mary 43 #5': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Mary 43 #2': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Mary 43 #1': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'KD #2': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'KD #4': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'KD #7': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'KD #5': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Bobbie #1': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Bobbie #2': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Elizabeth A1': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Patty #1': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Rhonda 2': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Terri Transfer Pump Monitor': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Trumann 1': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Trumann 3': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Trumann 4': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Trumann 5': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Trumann 2': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Patty #2': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Kate A1': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Kate A2': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Kate B1': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Tessa Lyn': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Patty #3': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Smith #1': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Smith #2': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Dorcus': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Monique #1': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Monique #2': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Monique #3': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Dawn #2': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Dawn #3': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Yvonne Transfer Pump 3': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Yvonne Transfer Pump 2': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Yvonne Transfer Pump 1': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Bobbie #3': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Kelsey Pit': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Banay WW 18 #5': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Banay WW 5-2': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Banay WW 8-3': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Banay WW 18 #7': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Banay WW 806 North': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Banay WW 806 South': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Banay WW 18 #8': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Denali East Inlet': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Lindsey #1': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Lindsey #2': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Denali East Transfer Pump Monitor': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Map Rock Transfer Pump Monitor #2': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Terri Frac Pit': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Dawn Frac Pit': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Barnett 19-2 WW': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Laney A #2': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Barnett 24-1': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Nancy Pit': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Banay WW 18 #2': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Banay WW 18 #6': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Banay WW 6-2': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Banay WW #7': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Banay WW 7-2': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Penny North': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Penny South': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Terri Pit Inlet': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Baylee Pit': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}}}, 'Keegan Faudree Water': {'HPSO-1': {'Faudree Frac Pit Pump #1': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Faudree Frac Pit Pump #2': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Faudree West Tank Transfer': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Faudree East Transfer': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}}}, 'Henry Resources': {'HPSO-1': {'Melinda 252': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Gwendolyn SWD Transfer Station': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Benners North': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Avery Central': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Lisa Central': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'RankinBaker SWD': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Wynn Central': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Sadie Central': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Benners Central': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Denise Central': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Emma Central': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Hollis Central': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Meredith Central': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'John J Bush Central': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Joshua Central': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Gwendolyn 23': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Noel Central': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Gwendolyn 24': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Gila S2': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Pearl Central': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Benedum Central': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}}}, 'Wishbone Water': {'HPSO-1': {'Wishbone Water #27 SR': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Wishbone Water Well #14 SR': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Wishbone/SM Booster Station': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}}}, 'Patriot Resources': {'HPSO-1': {'Transfer Addax Pit': {'Sales Price': 75, 'Platform Cost': 10, 'Platform': 'Mistaway', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}}}, 'Saulsbury Ventures': {'HPSO-1': {'Power Plant Transfer': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Triple 4in': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'InHand-Demo': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Dove Lease Checkmeter': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Single 12in': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}}}, 'Chuda Resources': {'HPSO-1': {'Chuda Flow Meter #1': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Chuda Flow Meter #4': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Chuda Flow Meter #2': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Chuda Flow Meter #3': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}}}, 'Faskens': {'HPSO-1': {'BV-602': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'BZ-201': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'AU-3401': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'BP Pond': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'BL-3201': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'BW-72': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'AW Battery': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'BZ-202': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'BN Pond': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'BE-71': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'CI-401': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'BJ-701': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'BI-31': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'BE-601': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'BP-201': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'AA-101': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'AV-701': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'FB-501': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'BQ-41': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'BX-101': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'BN-2202': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Fee BM Battery': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'BP Battery': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'BK-1701': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'BQ-301': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Valve Controller': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'BV-601': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'AW-901': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'CG-701': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'AS-11': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'BL-3401': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'BE-51': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'BW-041': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'CG-601': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'BM-1501': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'BX-901': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'CI-501': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'AT-101': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'BX-902': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'AW-3401': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'BN-301': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'BV Battery': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'S-601': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'CF Pond': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'BY-501': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'BK-801': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'CI-1301': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'BP-601': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'CF-1501': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'BV-101': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'BJ-101': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'AA Pond': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}}}, 'Amerus Safety Solutions': {'HPSO-1': {'Camera Trailer 107': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Camera Trailer 200': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Camera Trailer 129': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Camera Trailer 202': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Camera Trailer 206': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Camera Trailer 201': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Camera Trailer 102': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Camera Trailer 110': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Camera Trailer 203': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Camera Trailer 204': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Camera Trailer 116': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Camera Trailer 101': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Camera Trailer 127': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Camera Trailer 109': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Camera Trailer 128': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Camera Trailer 112': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Camera Trailer 114': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Camera Trailer 120': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Camera Trailer 119': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Camera Trailer 103': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Camera Trailer 100': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Camera Trailer 205': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Camera Trailer 105': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Camera Trailer 106': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Camera Trailer 126': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Camera Trailer 111': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Camera Trailer 115': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Camera Trailer 117': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Camera Trailer 122': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Camera Trailer 113': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Camera Trailer 104': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Camera Trailer 108': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Camera Trailer 123': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Camera Trailer 130': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}}}, 'Henry Petroleum': {'HPSO-1': {'Davis Check Meter': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Great Western Check Meter': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Francis Hill Check Meter': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Foundation Check Meter': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Wess Hill Check Meter': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Lively Check Meter': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Glasscock Check Meter': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Mann Check Meter': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}}}, 'Test Company': {'HPSO-1': {'HP Test Location 2': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'HP Test Location': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}}}, 'ConocoPhillips': {'HPSO-1': {'CRMWD': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Ratliff Well 42': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Ratliff Well A 35': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Ratliff Well 36': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Ratliff Well A 41': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Ratliff Well A 39': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Ratliff Well A 37': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Ratliff Well B 36': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Ratliff Well 45': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Ratliff Well A 34': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Ratliff Well A 43': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Ratliff Well A 46': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Ratliff Well 38': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Ratliff Well A 40': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Ratliff Well A 44': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Ratliff Prod Well 27': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Ratliff Well A 30': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Ratliff Well 29': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Ratliff Well 31': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Ratliff Well 28': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Pond A Gateway': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Headlee 3401 WS in3 Meter': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Purity-B': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'HP Inlet - 10in': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Ratliff Well A 33': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Ratliff Well A 32': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Tree Gateway': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'HP Outlet - 8in': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Parks Inlet #2 - 10in': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Yukon A': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Parks Inlet #1- 10in': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Pond A': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Purity-A': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Yukon B': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, '12in Flow Meter': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Parks Outlet - 6in': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Tree 22': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Tree 14': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Tree Pond': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Tree 17': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Tree 26': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Tree 13': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Tree 21': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Tree 20': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Tree 19': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Tree 25': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Tree 15': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Tree 16': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Tree 18': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}, 'Tree 23': {'Sales Price': 75, 'Platform Cost': 0, 'Platform': 'ThingsBoard', 'Cellular Cost': 15, 'Billing Type': 'Stand-Alone'}}}}\n" + ] + } + ], + "source": [ + "print(excel_data)" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [], + "source": [ + "#Build report from data" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [], + "source": [ + "import xlsxwriter\n", + "import pandas as pd\n", + "\n", + "# Create a new Excel writer object\n", + "with pd.ExcelWriter(\"output.xlsx\", engine=\"xlsxwriter\") as writer:\n", + "\n", + " # Loop through customers\n", + " for customer, orders in excel_data.items():\n", + " \n", + " rows = []\n", + "\n", + " # Loop through each sales order for the customer\n", + " for order, items in orders.items():\n", + " for item, details in items.items():\n", + " row = {\n", + " \"Sales Order\": order,\n", + " \"Location\": item\n", + " }\n", + " row.update(details)\n", + " rows.append(row)\n", + " \n", + " # Convert the data to a DataFrame\n", + " df = pd.DataFrame(rows)\n", + " \n", + " # Sort by sales order\n", + " df = df.sort_values(by=\"Sales Order\")\n", + " \n", + " # Write to a specific sheet in the Excel file\n", + " df.to_excel(writer, sheet_name=customer, index=False)\n", + "\n", + " for column in df:\n", + " column_length = max(df[column].astype(str).map(len).max(), len(column))\n", + " col_idx = df.columns.get_loc(column)\n", + " writer.sheets[customer].set_column(col_idx, col_idx, column_length)\n", + " " + ] } ], "metadata": { + "kernelspec": { + "display_name": "thingsboard", + "language": "python", + "name": "python3" + }, "language_info": { - "name": "python" + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.5" }, "orig_nbformat": 4 }, diff --git a/output.xlsx b/output.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..2285f6536c81326f0b42b7f22e90bc201d47a18e GIT binary patch literal 27201 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 a&s|qp9_cPL0tW}Wdj{Tlw1p;rz572M-Z_Q< literal 0 HcmV?d00001