brynq-sdk-bob 2.2.1__tar.gz → 2.3.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {brynq_sdk_bob-2.2.1 → brynq_sdk_bob-2.3.0}/PKG-INFO +1 -1
- {brynq_sdk_bob-2.2.1 → brynq_sdk_bob-2.3.0}/brynq_sdk_bob/schemas/timeoff.py +18 -0
- {brynq_sdk_bob-2.2.1 → brynq_sdk_bob-2.3.0}/brynq_sdk_bob/timeoff.py +33 -1
- {brynq_sdk_bob-2.2.1 → brynq_sdk_bob-2.3.0}/brynq_sdk_bob.egg-info/PKG-INFO +1 -1
- {brynq_sdk_bob-2.2.1 → brynq_sdk_bob-2.3.0}/setup.py +1 -1
- {brynq_sdk_bob-2.2.1 → brynq_sdk_bob-2.3.0}/brynq_sdk_bob/__init__.py +0 -0
- {brynq_sdk_bob-2.2.1 → brynq_sdk_bob-2.3.0}/brynq_sdk_bob/bank.py +0 -0
- {brynq_sdk_bob-2.2.1 → brynq_sdk_bob-2.3.0}/brynq_sdk_bob/company.py +0 -0
- {brynq_sdk_bob-2.2.1 → brynq_sdk_bob-2.3.0}/brynq_sdk_bob/custom_tables.py +0 -0
- {brynq_sdk_bob-2.2.1 → brynq_sdk_bob-2.3.0}/brynq_sdk_bob/documents.py +0 -0
- {brynq_sdk_bob-2.2.1 → brynq_sdk_bob-2.3.0}/brynq_sdk_bob/employment.py +0 -0
- {brynq_sdk_bob-2.2.1 → brynq_sdk_bob-2.3.0}/brynq_sdk_bob/named_lists.py +0 -0
- {brynq_sdk_bob-2.2.1 → brynq_sdk_bob-2.3.0}/brynq_sdk_bob/payments.py +0 -0
- {brynq_sdk_bob-2.2.1 → brynq_sdk_bob-2.3.0}/brynq_sdk_bob/people.py +0 -0
- {brynq_sdk_bob-2.2.1 → brynq_sdk_bob-2.3.0}/brynq_sdk_bob/salaries.py +0 -0
- {brynq_sdk_bob-2.2.1 → brynq_sdk_bob-2.3.0}/brynq_sdk_bob/schemas/__init__.py +0 -0
- {brynq_sdk_bob-2.2.1 → brynq_sdk_bob-2.3.0}/brynq_sdk_bob/schemas/bank.py +0 -0
- {brynq_sdk_bob-2.2.1 → brynq_sdk_bob-2.3.0}/brynq_sdk_bob/schemas/custom_tables.py +0 -0
- {brynq_sdk_bob-2.2.1 → brynq_sdk_bob-2.3.0}/brynq_sdk_bob/schemas/employment.py +0 -0
- {brynq_sdk_bob-2.2.1 → brynq_sdk_bob-2.3.0}/brynq_sdk_bob/schemas/named_lists.py +0 -0
- {brynq_sdk_bob-2.2.1 → brynq_sdk_bob-2.3.0}/brynq_sdk_bob/schemas/payments.py +0 -0
- {brynq_sdk_bob-2.2.1 → brynq_sdk_bob-2.3.0}/brynq_sdk_bob/schemas/people.py +0 -0
- {brynq_sdk_bob-2.2.1 → brynq_sdk_bob-2.3.0}/brynq_sdk_bob/schemas/salary.py +0 -0
- {brynq_sdk_bob-2.2.1 → brynq_sdk_bob-2.3.0}/brynq_sdk_bob/schemas/work.py +0 -0
- {brynq_sdk_bob-2.2.1 → brynq_sdk_bob-2.3.0}/brynq_sdk_bob/work.py +0 -0
- {brynq_sdk_bob-2.2.1 → brynq_sdk_bob-2.3.0}/brynq_sdk_bob.egg-info/SOURCES.txt +0 -0
- {brynq_sdk_bob-2.2.1 → brynq_sdk_bob-2.3.0}/brynq_sdk_bob.egg-info/dependency_links.txt +0 -0
- {brynq_sdk_bob-2.2.1 → brynq_sdk_bob-2.3.0}/brynq_sdk_bob.egg-info/not-zip-safe +0 -0
- {brynq_sdk_bob-2.2.1 → brynq_sdk_bob-2.3.0}/brynq_sdk_bob.egg-info/requires.txt +0 -0
- {brynq_sdk_bob-2.2.1 → brynq_sdk_bob-2.3.0}/brynq_sdk_bob.egg-info/top_level.txt +0 -0
- {brynq_sdk_bob-2.2.1 → brynq_sdk_bob-2.3.0}/setup.cfg +0 -0
|
@@ -27,3 +27,21 @@ class TimeOffSchema(BrynQPanderaDataFrameModel):
|
|
|
27
27
|
|
|
28
28
|
class Config:
|
|
29
29
|
coerce = True
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
class TimeOffBalanceSchema(BrynQPanderaDataFrameModel):
|
|
33
|
+
employee_id: Series[String] = pa.Field(coerce=True, description="Employee ID", alias="employeeId")
|
|
34
|
+
policy_type_name: Series[String] = pa.Field(coerce=True, description="Policy Type Name", alias="policyTypeName")
|
|
35
|
+
policy_type_display_name: Series[String] = pa.Field(coerce=True, description="Policy Type Display Name", alias="policyTypeDisplayName")
|
|
36
|
+
balance: Series[Float] = pa.Field(coerce=True, description="Current Balance", alias="balance")
|
|
37
|
+
used: Series[Float] = pa.Field(coerce=True, description="Used Balance", alias="used")
|
|
38
|
+
available: Series[Float] = pa.Field(coerce=True, description="Available Balance", alias="available")
|
|
39
|
+
approved_requests: Series[Float] = pa.Field(coerce=True, description="Approved Requests", alias="approvedRequests")
|
|
40
|
+
pending_requests: Series[Float] = pa.Field(coerce=True, description="Pending Requests", alias="pendingRequests")
|
|
41
|
+
as_of_date: Series[String] = pa.Field(coerce=True, description="As of Date", alias="asOfDate")
|
|
42
|
+
accrual_start_date: Series[String] = pa.Field(nullable=True, coerce=True, description="Accrual Start Date", alias="accrualStartDate")
|
|
43
|
+
expiry_date: Series[String] = pa.Field(nullable=True, coerce=True, description="Expiry Date", alias="expiryDate")
|
|
44
|
+
duration_unit: Series[String] = pa.Field(coerce=True, description="Duration Unit", alias="durationUnit")
|
|
45
|
+
|
|
46
|
+
class Config:
|
|
47
|
+
coerce = True
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
from datetime import datetime, timezone, timedelta
|
|
2
2
|
import pandas as pd
|
|
3
3
|
from brynq_sdk_functions import Functions
|
|
4
|
-
from .schemas.timeoff import TimeOffSchema
|
|
4
|
+
from .schemas.timeoff import TimeOffSchema, TimeOffBalanceSchema
|
|
5
5
|
import warnings
|
|
6
6
|
|
|
7
7
|
|
|
@@ -9,6 +9,7 @@ class TimeOff:
|
|
|
9
9
|
def __init__(self, bob):
|
|
10
10
|
self.bob = bob
|
|
11
11
|
self.schema = TimeOffSchema
|
|
12
|
+
self.balance_schema = TimeOffBalanceSchema
|
|
12
13
|
|
|
13
14
|
def get(self, since: datetime = None) -> tuple[pd.DataFrame, pd.DataFrame]:
|
|
14
15
|
"""
|
|
@@ -49,3 +50,34 @@ class TimeOff:
|
|
|
49
50
|
valid_timeoff, invalid_timeoff = Functions.validate_data(df=df, schema=self.schema, debug=True)
|
|
50
51
|
|
|
51
52
|
return valid_timeoff, invalid_timeoff
|
|
53
|
+
|
|
54
|
+
def get_balance(self, employee_id: str, policy_type: str = None, as_of_date: str = None) -> tuple[pd.DataFrame, pd.DataFrame]:
|
|
55
|
+
"""
|
|
56
|
+
Get time off balance for a specific employee
|
|
57
|
+
|
|
58
|
+
Args:
|
|
59
|
+
employee_id (str): The ID of the employee
|
|
60
|
+
policy_type (str, optional): The policy type to filter by. Defaults to None.
|
|
61
|
+
as_of_date (str, optional): The date to get balance as of (YYYY-MM-DD format). Defaults to None.
|
|
62
|
+
|
|
63
|
+
Returns:
|
|
64
|
+
tuple[pd.DataFrame, pd.DataFrame]: A tuple of (valid_balance, invalid_balance) as pandas DataFrames
|
|
65
|
+
"""
|
|
66
|
+
params = {}
|
|
67
|
+
if policy_type:
|
|
68
|
+
params['policyType'] = policy_type
|
|
69
|
+
if as_of_date:
|
|
70
|
+
params['asOfDate'] = as_of_date
|
|
71
|
+
|
|
72
|
+
resp = self.bob.session.get(
|
|
73
|
+
url=f"{self.bob.base_url}timeoff/employees/{employee_id}/balance",
|
|
74
|
+
params=params,
|
|
75
|
+
timeout=self.bob.timeout
|
|
76
|
+
)
|
|
77
|
+
resp.raise_for_status()
|
|
78
|
+
data = resp.json()
|
|
79
|
+
df = pd.DataFrame(data)
|
|
80
|
+
|
|
81
|
+
valid_balance, invalid_balance = Functions.validate_data(df=df, schema=self.balance_schema, debug=True)
|
|
82
|
+
|
|
83
|
+
return valid_balance, invalid_balance
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|