Skip to content

Commit

Permalink
Added retire and reactivate funcs
Browse files Browse the repository at this point in the history
  • Loading branch information
JMaynor committed Aug 30, 2024
1 parent 60bc878 commit 2499172
Show file tree
Hide file tree
Showing 2 changed files with 129 additions and 0 deletions.
101 changes: 101 additions & 0 deletions ezoff/assets.py
Original file line number Diff line number Diff line change
Expand Up @@ -486,6 +486,107 @@ def checkout_asset(asset_id: int, user_id: int, checkout: dict) -> dict:
return response.json()


@Decorators.check_env_vars
def retire_asset(asset_id: int, retire: dict) -> dict:
"""
Retires an asset. Asset needs to be in an available state to retire.
https://ezo.io/ezofficeinventory/developers/#api-retire-asset
:param asset_id: The asset ID to retire
:param retire: A dictionary containing the retirement details. Must contain the keys fixed_asset[retire_reason_id] and fixed_asset[retired_on]
"""

# Required fields
if "fixed_asset[retire_reason_id]" not in retire:
raise ValueError("retire must have 'fixed_asset[retire_reason_id]' key")
if "fixed_asset[retired_on]" not in retire:
raise ValueError("retire must have 'fixed_asset[retired_on]' key")
# Also check that the date is in the correct format mm/dd/yyyy
try:
datetime.strptime(retire["fixed_asset[retired_on]"], "%m/%d/%Y")
except ValueError:
raise ValueError(
"retire['fixed_asset[retired_on]'] must be in the format mm/dd/yyyy"
)

# Remove any keys that are not valid
valid_keys = [
"fixed_asset[retire_reason_id]",
"fixed_asset[retired_on]",
"fixed_asset[salvage_value]",
]

retire = {k: v for k, v in retire.items() if k in valid_keys}

url = os.environ["EZO_BASE_URL"] + "assets/" + str(asset_id) + "/retire.api"

try:
response = requests.put(
url,
headers={"Authorization": "Bearer " + os.environ["EZO_TOKEN"]},
data=retire,
timeout=10,
)
except Exception as e:
print("Error, could not retire asset in EZOfficeInventory: ", e)
raise Exception("Error, could not retire asset in EZOfficeInventory: " + str(e))

if response.status_code != 200:
print(
f"Error {response.status_code}, could not retire asset in EZOfficeInventory: ",
response.content,
)
raise Exception(
f"Error {response.status_code}, could not retire asset in EZOfficeInventory: "
+ str(response.content)
)

return response.json()


@Decorators.check_env_vars
def reactivate_asset(asset_id: int, reactivate: dict) -> dict:
"""
Reactivates a retired asset.
https://ezo.io/ezofficeinventory/developers/#api-activate-asset
:param asset_id: The asset ID to reactivate
:param reactivate: A dictionary containing the reactivation details. Currently that's only the key fixed_asset[location_id]. Whether it's required or not varies depending on company settings.
"""

url = os.environ["EZO_BASE_URL"] + "assets/" + str(asset_id) + "/activate.api"

# Remove any keys that are not valid
valid_keys = ["fixed_asset[location_id]"]

reactivate = {k: v for k, v in reactivate.items() if k in valid_keys}

try:
response = requests.put(
url,
headers={"Authorization": "Bearer " + os.environ["EZO_TOKEN"]},
data=reactivate,
timeout=10,
)
except Exception as e:
print("Error, could not reactivate asset in EZOfficeInventory: ", e)
raise Exception(
"Error, could not reactivate asset in EZOfficeInventory: " + str(e)
)

if response.status_code != 200:
print(
f"Error {response.status_code}, could not reactivate asset in EZOfficeInventory: ",
response.content,
)
raise Exception(
f"Error {response.status_code}, could not reactivate asset in EZOfficeInventory: "
+ str(response.content)
)

return response.json()


@Decorators.check_env_vars
def get_asset_history(asset_id: int) -> list[dict]:
"""
Expand Down
28 changes: 28 additions & 0 deletions tests/test.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
import os
import sys
from datetime import datetime, timedelta
from pprint import pprint

from dotenv import load_dotenv

# Load env vars from a .env file
load_dotenv()

sys.path.insert(0, "")

from ezoff import *

res = ezoff.retire_asset(
14753,
{
"fixed_asset[retire_reason_id]": 250829,
"fixed_asset[retired_on]": "08/30/2024",
"fixed_asset[salvage_value]": 100.00,
},
)

pprint(res)

pass

res = ezoff.reactivate_asset(14753, {"fixed_asset[location_id]": 7})

0 comments on commit 2499172

Please sign in to comment.