brynq-sdk-nmbrs 2.0.0__tar.gz → 2.0.1__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_nmbrs-2.0.0 → brynq_sdk_nmbrs-2.0.1}/PKG-INFO +1 -1
- {brynq_sdk_nmbrs-2.0.0 → brynq_sdk_nmbrs-2.0.1}/brynq_sdk_nmbrs/companies.py +4 -2
- {brynq_sdk_nmbrs-2.0.0 → brynq_sdk_nmbrs-2.0.1}/brynq_sdk_nmbrs/debtors.py +8 -8
- {brynq_sdk_nmbrs-2.0.0 → brynq_sdk_nmbrs-2.0.1}/brynq_sdk_nmbrs/department.py +3 -2
- {brynq_sdk_nmbrs-2.0.0 → brynq_sdk_nmbrs-2.0.1}/brynq_sdk_nmbrs/employees.py +2 -2
- {brynq_sdk_nmbrs-2.0.0 → brynq_sdk_nmbrs-2.0.1}/brynq_sdk_nmbrs/function.py +6 -4
- {brynq_sdk_nmbrs-2.0.0 → brynq_sdk_nmbrs-2.0.1}/brynq_sdk_nmbrs/hours.py +1 -1
- {brynq_sdk_nmbrs-2.0.0 → brynq_sdk_nmbrs-2.0.1}/brynq_sdk_nmbrs/salary_tables.py +20 -15
- {brynq_sdk_nmbrs-2.0.0 → brynq_sdk_nmbrs-2.0.1}/brynq_sdk_nmbrs/schedules.py +3 -3
- {brynq_sdk_nmbrs-2.0.0 → brynq_sdk_nmbrs-2.0.1}/brynq_sdk_nmbrs/schemas/__init__.py +2 -2
- {brynq_sdk_nmbrs-2.0.0 → brynq_sdk_nmbrs-2.0.1}/brynq_sdk_nmbrs/schemas/address.py +9 -9
- {brynq_sdk_nmbrs-2.0.0 → brynq_sdk_nmbrs-2.0.1}/brynq_sdk_nmbrs/schemas/bank.py +1 -1
- {brynq_sdk_nmbrs-2.0.0 → brynq_sdk_nmbrs-2.0.1}/brynq_sdk_nmbrs/schemas/contracts.py +6 -6
- {brynq_sdk_nmbrs-2.0.0 → brynq_sdk_nmbrs-2.0.1}/brynq_sdk_nmbrs/schemas/costcenter.py +10 -10
- {brynq_sdk_nmbrs-2.0.0 → brynq_sdk_nmbrs-2.0.1}/brynq_sdk_nmbrs/schemas/costunit.py +1 -1
- brynq_sdk_nmbrs-2.0.1/brynq_sdk_nmbrs/schemas/debtor.py +16 -0
- {brynq_sdk_nmbrs-2.0.0 → brynq_sdk_nmbrs-2.0.1}/brynq_sdk_nmbrs/schemas/department.py +13 -3
- {brynq_sdk_nmbrs-2.0.0 → brynq_sdk_nmbrs-2.0.1}/brynq_sdk_nmbrs/schemas/employees.py +45 -45
- {brynq_sdk_nmbrs-2.0.0 → brynq_sdk_nmbrs-2.0.1}/brynq_sdk_nmbrs/schemas/function.py +9 -3
- {brynq_sdk_nmbrs-2.0.0 → brynq_sdk_nmbrs-2.0.1}/brynq_sdk_nmbrs/schemas/salary.py +24 -2
- {brynq_sdk_nmbrs-2.0.0 → brynq_sdk_nmbrs-2.0.1}/brynq_sdk_nmbrs/schemas/schedules.py +25 -16
- {brynq_sdk_nmbrs-2.0.0 → brynq_sdk_nmbrs-2.0.1}/brynq_sdk_nmbrs.egg-info/PKG-INFO +1 -1
- {brynq_sdk_nmbrs-2.0.0 → brynq_sdk_nmbrs-2.0.1}/brynq_sdk_nmbrs.egg-info/SOURCES.txt +1 -0
- {brynq_sdk_nmbrs-2.0.0 → brynq_sdk_nmbrs-2.0.1}/setup.py +1 -1
- {brynq_sdk_nmbrs-2.0.0 → brynq_sdk_nmbrs-2.0.1}/brynq_sdk_nmbrs/__init__.py +0 -0
- {brynq_sdk_nmbrs-2.0.0 → brynq_sdk_nmbrs-2.0.1}/brynq_sdk_nmbrs/address.py +0 -0
- {brynq_sdk_nmbrs-2.0.0 → brynq_sdk_nmbrs-2.0.1}/brynq_sdk_nmbrs/bank.py +0 -0
- {brynq_sdk_nmbrs-2.0.0 → brynq_sdk_nmbrs-2.0.1}/brynq_sdk_nmbrs/children.py +0 -0
- {brynq_sdk_nmbrs-2.0.0 → brynq_sdk_nmbrs-2.0.1}/brynq_sdk_nmbrs/contract.py +0 -0
- {brynq_sdk_nmbrs-2.0.0 → brynq_sdk_nmbrs-2.0.1}/brynq_sdk_nmbrs/costcenter.py +0 -0
- {brynq_sdk_nmbrs-2.0.0 → brynq_sdk_nmbrs-2.0.1}/brynq_sdk_nmbrs/costunit.py +0 -0
- {brynq_sdk_nmbrs-2.0.0 → brynq_sdk_nmbrs-2.0.1}/brynq_sdk_nmbrs/document.py +0 -0
- {brynq_sdk_nmbrs-2.0.0 → brynq_sdk_nmbrs-2.0.1}/brynq_sdk_nmbrs/employment.py +0 -0
- {brynq_sdk_nmbrs-2.0.0 → brynq_sdk_nmbrs-2.0.1}/brynq_sdk_nmbrs/salaries.py +0 -0
- {brynq_sdk_nmbrs-2.0.0 → brynq_sdk_nmbrs-2.0.1}/brynq_sdk_nmbrs/schemas/employment.py +0 -0
- {brynq_sdk_nmbrs-2.0.0 → brynq_sdk_nmbrs-2.0.1}/brynq_sdk_nmbrs/schemas/hours.py +0 -0
- {brynq_sdk_nmbrs-2.0.0 → brynq_sdk_nmbrs-2.0.1}/brynq_sdk_nmbrs/schemas/wagecomponents.py +0 -0
- {brynq_sdk_nmbrs-2.0.0 → brynq_sdk_nmbrs-2.0.1}/brynq_sdk_nmbrs/wagecomponents.py +0 -0
- {brynq_sdk_nmbrs-2.0.0 → brynq_sdk_nmbrs-2.0.1}/brynq_sdk_nmbrs.egg-info/dependency_links.txt +0 -0
- {brynq_sdk_nmbrs-2.0.0 → brynq_sdk_nmbrs-2.0.1}/brynq_sdk_nmbrs.egg-info/not-zip-safe +0 -0
- {brynq_sdk_nmbrs-2.0.0 → brynq_sdk_nmbrs-2.0.1}/brynq_sdk_nmbrs.egg-info/requires.txt +0 -0
- {brynq_sdk_nmbrs-2.0.0 → brynq_sdk_nmbrs-2.0.1}/brynq_sdk_nmbrs.egg-info/top_level.txt +0 -0
- {brynq_sdk_nmbrs-2.0.0 → brynq_sdk_nmbrs-2.0.1}/setup.cfg +0 -0
|
@@ -49,10 +49,12 @@ class Companies:
|
|
|
49
49
|
if response:
|
|
50
50
|
# Convert Zeep objects to Python dictionaries
|
|
51
51
|
serialized_response = serialize_object(response)
|
|
52
|
-
|
|
52
|
+
|
|
53
|
+
# TODO: add validation here
|
|
53
54
|
# Convert to DataFrame
|
|
54
55
|
df = pd.DataFrame(serialized_response)
|
|
55
|
-
|
|
56
|
+
df = self.nmbrs._rename_camel_columns_to_snake_case(df)
|
|
57
|
+
|
|
56
58
|
return df
|
|
57
59
|
else:
|
|
58
60
|
return pd.DataFrame()
|
|
@@ -1,25 +1,25 @@
|
|
|
1
1
|
import pandas as pd
|
|
2
2
|
import requests
|
|
3
|
-
from
|
|
4
|
-
from .costunit import Costunit
|
|
3
|
+
from brynq_sdk_functions import Functions
|
|
5
4
|
from .department import Departments
|
|
6
|
-
from .
|
|
7
|
-
from .
|
|
8
|
-
from .function import Functions
|
|
5
|
+
from .function import Functions as NmbrsFunctions
|
|
6
|
+
from .schemas.debtor import DebtorsGet
|
|
9
7
|
|
|
10
8
|
|
|
11
9
|
class Debtors:
|
|
12
10
|
def __init__(self, nmbrs):
|
|
13
11
|
self.nmbrs = nmbrs
|
|
14
12
|
self.departments = Departments(nmbrs)
|
|
15
|
-
self.functions =
|
|
13
|
+
self.functions = NmbrsFunctions(nmbrs)
|
|
16
14
|
|
|
17
15
|
|
|
18
|
-
def get(self) -> pd.DataFrame:
|
|
16
|
+
def get(self) -> (pd.DataFrame, pd.DataFrame):
|
|
19
17
|
request = requests.Request(method='GET',
|
|
20
18
|
url=f"{self.nmbrs.base_url}debtors")
|
|
21
19
|
data = self.nmbrs.get_paginated_result(request)
|
|
22
20
|
|
|
23
21
|
df = pd.DataFrame(data)
|
|
24
22
|
|
|
25
|
-
|
|
23
|
+
valid_debtors, invalid_debtors = Functions.validate_data(df=df, schema=DebtorsGet, debug=True)
|
|
24
|
+
|
|
25
|
+
return valid_debtors, invalid_debtors
|
|
@@ -2,7 +2,7 @@ import math
|
|
|
2
2
|
import pandas as pd
|
|
3
3
|
import requests
|
|
4
4
|
from typing import Dict, Any
|
|
5
|
-
from .schemas.department import DepartmentCreate, DepartmentUpdate, DepartmentDelete, Period, DepartmentGet
|
|
5
|
+
from .schemas.department import DepartmentCreate, DepartmentUpdate, DepartmentDelete, Period, EmployeeDepartmentGet, DepartmentGet
|
|
6
6
|
from brynq_sdk_functions import Functions
|
|
7
7
|
|
|
8
8
|
|
|
@@ -17,7 +17,7 @@ class EmployeeDepartment:
|
|
|
17
17
|
for company in self.nmbrs.company_ids:
|
|
18
18
|
departments = pd.concat([departments, self._get(company, created_from, employee_id)])
|
|
19
19
|
|
|
20
|
-
valid_departments, invalid_departments = Functions.validate_data(df=departments, schema=
|
|
20
|
+
valid_departments, invalid_departments = Functions.validate_data(df=departments, schema=EmployeeDepartmentGet, debug=True)
|
|
21
21
|
|
|
22
22
|
return valid_departments, invalid_departments
|
|
23
23
|
|
|
@@ -114,5 +114,6 @@ class Departments:
|
|
|
114
114
|
|
|
115
115
|
data = self.nmbrs.get_paginated_result(request)
|
|
116
116
|
df = pd.DataFrame(data)
|
|
117
|
+
valid_departments, invalid_departments = Functions.validate_data(df=df, schema=DepartmentGet, debug=True)
|
|
117
118
|
|
|
118
119
|
return df
|
|
@@ -67,7 +67,7 @@ class Employees:
|
|
|
67
67
|
record_path='info',
|
|
68
68
|
meta=['employeeId']
|
|
69
69
|
)
|
|
70
|
-
df['
|
|
70
|
+
df['companyId'] = company_id
|
|
71
71
|
|
|
72
72
|
df['createdAt'] = pd.to_datetime(df['createdAt'])
|
|
73
73
|
df = df.loc[df.groupby('employeeId')['createdAt'].idxmax()]
|
|
@@ -108,7 +108,7 @@ class Employees:
|
|
|
108
108
|
return employee_model
|
|
109
109
|
|
|
110
110
|
# Convert validated model to dict for API payload
|
|
111
|
-
payload = employee_model.
|
|
111
|
+
payload = employee_model.model_dump(exclude_none=True, by_alias=True)
|
|
112
112
|
|
|
113
113
|
# Send request
|
|
114
114
|
resp = self.nmbrs.session.post(
|
|
@@ -3,7 +3,7 @@ import requests
|
|
|
3
3
|
from brynq_sdk_functions import Functions as BrynQFunctions
|
|
4
4
|
import math
|
|
5
5
|
from typing import Dict, Any
|
|
6
|
-
from .schemas.function import
|
|
6
|
+
from .schemas.function import EmployeeFunctionGet, FunctionCreate, FunctionUpdate, FunctionDelete, FunctionGet
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
class EmployeeFunction:
|
|
@@ -16,7 +16,7 @@ class EmployeeFunction:
|
|
|
16
16
|
for company in self.nmbrs.company_ids:
|
|
17
17
|
functions = pd.concat([functions, self._get(company, created_from)])
|
|
18
18
|
|
|
19
|
-
valid_functions, invalid_functions = BrynQFunctions.validate_data(df=functions, schema=
|
|
19
|
+
valid_functions, invalid_functions = BrynQFunctions.validate_data(df=functions, schema=EmployeeFunctionGet, debug=True)
|
|
20
20
|
|
|
21
21
|
return valid_functions, invalid_functions
|
|
22
22
|
|
|
@@ -102,14 +102,16 @@ class Functions:
|
|
|
102
102
|
def __init__(self, nmbrs):
|
|
103
103
|
self.nmbrs = nmbrs
|
|
104
104
|
|
|
105
|
-
def get(self, debtor_id: str) -> pd.DataFrame:
|
|
105
|
+
def get(self, debtor_id: str) -> (pd.DataFrame, pd.DataFrame):
|
|
106
106
|
try:
|
|
107
107
|
request = requests.Request(method='GET',
|
|
108
108
|
url=f"{self.nmbrs.base_url}debtors/{debtor_id}/functions")
|
|
109
109
|
|
|
110
110
|
data = self.nmbrs.get_paginated_result(request)
|
|
111
111
|
df = pd.DataFrame(data)
|
|
112
|
+
valid_functions, invalid_functions = BrynQFunctions.validate_data(df=df, schema=FunctionGet, debug=True)
|
|
113
|
+
|
|
112
114
|
except requests.HTTPError as e:
|
|
113
115
|
df = pd.DataFrame()
|
|
114
116
|
|
|
115
|
-
return
|
|
117
|
+
return valid_functions, invalid_functions
|
|
@@ -46,7 +46,7 @@ class VariableHours:
|
|
|
46
46
|
|
|
47
47
|
df = pd.DataFrame(data)
|
|
48
48
|
|
|
49
|
-
df['
|
|
49
|
+
df['employeeId'] = employee_id # Add employee_id for tracking
|
|
50
50
|
|
|
51
51
|
# Validate data using the schema
|
|
52
52
|
valid_hours, invalid_hours = Functions.validate_data(df=df, schema=VariableHoursGet, debug=True)
|
|
@@ -5,7 +5,8 @@ from zeep.ns import WSDL, SOAP_ENV_11
|
|
|
5
5
|
from zeep.xsd import ComplexType, Element, String
|
|
6
6
|
from zeep.helpers import serialize_object
|
|
7
7
|
# import logging
|
|
8
|
-
|
|
8
|
+
from brynq_sdk_functions import Functions
|
|
9
|
+
from .schemas.salary import SalaryTableGet, SalaryScalesGet, SalaryStepsGet
|
|
9
10
|
|
|
10
11
|
|
|
11
12
|
class SalaryTables:
|
|
@@ -13,7 +14,7 @@ class SalaryTables:
|
|
|
13
14
|
self.nmbrs = nmbrs
|
|
14
15
|
self.soap_client = nmbrs.soap_client
|
|
15
16
|
|
|
16
|
-
def get(self, period: int, year: int) -> pd.DataFrame:
|
|
17
|
+
def get(self, period: int, year: int) -> (pd.DataFrame, pd.DataFrame):
|
|
17
18
|
"""
|
|
18
19
|
Get salary tables for all companies for a specific period and year.
|
|
19
20
|
|
|
@@ -28,11 +29,13 @@ class SalaryTables:
|
|
|
28
29
|
for company in self.nmbrs.soap_company_ids.to_dict(orient='records'):
|
|
29
30
|
salary_table_temp = self._get(company['i_d'], period, year)
|
|
30
31
|
if not salary_table_temp.empty:
|
|
31
|
-
salary_table_temp['
|
|
32
|
+
salary_table_temp['companyId'] = company['number']
|
|
32
33
|
salary_tables = pd.concat([salary_tables, salary_table_temp])
|
|
33
|
-
|
|
34
|
+
|
|
35
|
+
valid_salary_tables, invalid_salary_tables = Functions.validate_data(df=salary_tables, schema=SalaryTableGet, debug=True)
|
|
36
|
+
|
|
34
37
|
# No validation schema for now, but could be added later
|
|
35
|
-
return
|
|
38
|
+
return valid_salary_tables, invalid_salary_tables
|
|
36
39
|
|
|
37
40
|
def _get(self, company_id: int, period: int, year: int) -> pd.DataFrame:
|
|
38
41
|
"""
|
|
@@ -85,7 +88,7 @@ class SalaryScales:
|
|
|
85
88
|
self.nmbrs = nmbrs
|
|
86
89
|
self.soap_client = nmbrs.soap_client
|
|
87
90
|
|
|
88
|
-
def get(self, period: int, year: int) -> pd.DataFrame:
|
|
91
|
+
def get(self, period: int, year: int) -> (pd.DataFrame, pd.DataFrame):
|
|
89
92
|
"""
|
|
90
93
|
Get salary scales for all companies for a specific period and year.
|
|
91
94
|
|
|
@@ -100,11 +103,12 @@ class SalaryScales:
|
|
|
100
103
|
for company in self.nmbrs.soap_company_ids.to_dict(orient='records'):
|
|
101
104
|
salary_scale_temp = self._get(company['i_d'], period, year)
|
|
102
105
|
if not salary_scale_temp.empty:
|
|
103
|
-
salary_scale_temp['
|
|
106
|
+
salary_scale_temp['companyId'] = company['number']
|
|
104
107
|
salary_scales = pd.concat([salary_scales, salary_scale_temp])
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
+
|
|
109
|
+
valid_salary_scales, invalid_salary_scales = Functions.validate_data(df=salary_scales, schema=SalaryScalesGet, debug=True)
|
|
110
|
+
|
|
111
|
+
return valid_salary_scales, invalid_salary_scales
|
|
108
112
|
|
|
109
113
|
def _get(self, company_id: int, period: int, year: int) -> pd.DataFrame:
|
|
110
114
|
"""
|
|
@@ -157,7 +161,7 @@ class SalarySteps:
|
|
|
157
161
|
self.nmbrs = nmbrs
|
|
158
162
|
self.soap_client = nmbrs.soap_client
|
|
159
163
|
|
|
160
|
-
def get(self, period: int, year: int, scale: dict) -> pd.DataFrame:
|
|
164
|
+
def get(self, period: int, year: int, scale: dict) -> (pd.DataFrame, pd.DataFrame):
|
|
161
165
|
"""
|
|
162
166
|
Get salary steps for all companies for a specific period, year and scale.
|
|
163
167
|
|
|
@@ -178,11 +182,12 @@ class SalarySteps:
|
|
|
178
182
|
for company in self.nmbrs.soap_company_ids.to_dict(orient='records'):
|
|
179
183
|
salary_steps_temp = self._get(company['i_d'], period, year, scale)
|
|
180
184
|
if not salary_steps_temp.empty:
|
|
181
|
-
salary_steps_temp['
|
|
185
|
+
salary_steps_temp['companyId'] = company['number']
|
|
182
186
|
salary_steps = pd.concat([salary_steps, salary_steps_temp])
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
187
|
+
|
|
188
|
+
valid_salary_steps, invalid_salary_steps = Functions.validate_data(df=salary_steps, schema=SalaryStepsGet, debug=True)
|
|
189
|
+
|
|
190
|
+
return valid_salary_steps, invalid_salary_steps
|
|
186
191
|
|
|
187
192
|
def _get(self, company_id: int, period: int, year: int, scale: dict) -> pd.DataFrame:
|
|
188
193
|
"""
|
|
@@ -68,10 +68,10 @@ class Schedule:
|
|
|
68
68
|
schedule_data["startDate"] = data["start_date_schedule"]
|
|
69
69
|
|
|
70
70
|
# Optional field
|
|
71
|
-
if "
|
|
71
|
+
if "hours_per_week" in data:
|
|
72
72
|
# Handle NaN values
|
|
73
|
-
if not isinstance(data["
|
|
74
|
-
schedule_data["hoursPerWeek"] = data["
|
|
73
|
+
if not isinstance(data["hours_per_week"], float) or not math.isnan(data["hours_per_week"]):
|
|
74
|
+
schedule_data["hoursPerWeek"] = data["hours_per_week"]
|
|
75
75
|
|
|
76
76
|
# Create week1 and week2 data
|
|
77
77
|
week1_data = {}
|
|
@@ -5,7 +5,7 @@ DATEFORMAT = '%Y%m%d'
|
|
|
5
5
|
from .address import AddressGet, AddressCreate, AddressUpdate, AddressDelete
|
|
6
6
|
from .bank import BankGet, BankCreate, BankUpdate, BankDelete
|
|
7
7
|
from .contracts import ContractGet, ContractCreate, ContractUpdate, ContractDelete
|
|
8
|
-
from .department import
|
|
8
|
+
from .department import EmployeeDepartmentGet, DepartmentCreate, DepartmentUpdate, DepartmentDelete, DepartmentGet
|
|
9
9
|
from .employees import EmployeeGet, EmployeeCreate, EmployeeUpdate, EmployeeDelete
|
|
10
10
|
from .employment import EmploymentGet, EmploymentCreate, EmploymentUpdate, EmploymentDelete
|
|
11
11
|
from .function import FunctionGet, FunctionCreate, FunctionUpdate, FunctionDelete
|
|
@@ -19,7 +19,7 @@ __all__ = [
|
|
|
19
19
|
'AddressGet', 'AddressCreate', 'AddressUpdate', 'AddressDelete',
|
|
20
20
|
'BankGet', 'BankCreate', 'BankUpdate', 'BankDelete',
|
|
21
21
|
'ContractGet', 'ContractCreate', 'ContractUpdate', 'ContractDelete',
|
|
22
|
-
'
|
|
22
|
+
'EmployeeDepartmentGet', 'DepartmentCreate', 'DepartmentUpdate', 'DepartmentDelete', 'DepartmentGet',
|
|
23
23
|
'EmployeeGet', 'EmployeeCreate', 'EmployeeUpdate', 'EmployeeDelete',
|
|
24
24
|
'EmploymentGet', 'EmploymentCreate', 'EmploymentUpdate', 'EmploymentDelete',
|
|
25
25
|
'FunctionGet', 'FunctionCreate', 'FunctionUpdate', 'FunctionDelete',
|
|
@@ -27,8 +27,8 @@ class AddressGet(BrynQPanderaDataFrameModel):
|
|
|
27
27
|
city: Series[String] = pa.Field(coerce=True, description="City", alias="city")
|
|
28
28
|
state_province: Series[String] = pa.Field(coerce=True, nullable=True, description="State or Province", alias="stateProvince")
|
|
29
29
|
country_i_s_o_code: Series[String] = pa.Field(coerce=True, nullable=True, description="Country ISO code", alias="countryISOCode")
|
|
30
|
-
period_year: Series[pd.Int64Dtype] = pa.Field(coerce=True, nullable=True, description="Year", alias="
|
|
31
|
-
period_period: Series[pd.Int64Dtype] = pa.Field(coerce=True, nullable=True, description="Period", alias="
|
|
30
|
+
period_year: Series[pd.Int64Dtype] = pa.Field(coerce=True, nullable=True, description="Year", alias="period.year")
|
|
31
|
+
period_period: Series[pd.Int64Dtype] = pa.Field(coerce=True, nullable=True, description="Period", alias="period.period")
|
|
32
32
|
|
|
33
33
|
class _Annotation:
|
|
34
34
|
primary_key = "address_id"
|
|
@@ -64,11 +64,11 @@ class AddressCreate(BaseModel):
|
|
|
64
64
|
city: str = Field(..., min_length=1, max_length=100, example="Amsterdam", description="City", alias="city")
|
|
65
65
|
state_province: Optional[str] = Field(None, max_length=100, example="Noord-Holland", description="State or Province", alias="stateProvince")
|
|
66
66
|
country_iso_code: Annotated[
|
|
67
|
-
str,
|
|
67
|
+
str,
|
|
68
68
|
StringConstraints(
|
|
69
|
-
pattern=r'^[A-Za-z]+$',
|
|
69
|
+
pattern=r'^[A-Za-z]+$',
|
|
70
70
|
strip_whitespace=True,
|
|
71
|
-
min_length=2,
|
|
71
|
+
min_length=2,
|
|
72
72
|
max_length=3
|
|
73
73
|
)
|
|
74
74
|
] = Field(..., example="NL", description="Country ISO Code", alias="countryISOCode")
|
|
@@ -91,15 +91,15 @@ class AddressUpdate(BaseModel):
|
|
|
91
91
|
city: str = Field(..., min_length=1, max_length=100, example="Amsterdam", description="City", alias="city")
|
|
92
92
|
state_province: Optional[str] = Field(None, max_length=100, example="Noord-Holland", description="State or Province", alias="stateProvince")
|
|
93
93
|
country_iso_code: Annotated[
|
|
94
|
-
str,
|
|
94
|
+
str,
|
|
95
95
|
StringConstraints(
|
|
96
|
-
pattern=r'^[A-Za-z]+$',
|
|
96
|
+
pattern=r'^[A-Za-z]+$',
|
|
97
97
|
strip_whitespace=True,
|
|
98
|
-
min_length=2,
|
|
98
|
+
min_length=2,
|
|
99
99
|
max_length=3
|
|
100
100
|
)
|
|
101
101
|
] = Field(..., example="NL")
|
|
102
102
|
period_details: Period
|
|
103
103
|
|
|
104
104
|
class AddressDelete(BaseModel):
|
|
105
|
-
address_id: str = Field(..., description="Address ID", example="cc3449f5-9941-4209-be36-187a16267394", alias="addressId")
|
|
105
|
+
address_id: str = Field(..., description="Address ID", example="cc3449f5-9941-4209-be36-187a16267394", alias="addressId")
|
|
@@ -28,7 +28,7 @@ class BankGet(BrynQPanderaDataFrameModel):
|
|
|
28
28
|
bank_account_id: Series[String] = pa.Field(coerce=True, nullable=True, description="Bank Account ID", alias="bankAccountId")
|
|
29
29
|
number: Series[String] = pa.Field(coerce=True, nullable=True, description="Bank Account Number", alias="number")
|
|
30
30
|
description: Series[String] = pa.Field(coerce=True, nullable=True, description="Bank Account Description", alias="description")
|
|
31
|
-
|
|
31
|
+
iban: Series[String] = pa.Field(coerce=True, nullable=True, description="IBAN", alias="IBAN")
|
|
32
32
|
city: Series[String] = pa.Field(coerce=True, nullable=True, description="City Bank", alias="city")
|
|
33
33
|
name: Series[String] = pa.Field(coerce=True, nullable=True, description="Name Bank", alias="name")
|
|
34
34
|
bank_account_type: Series[String] = pa.Field(
|
|
@@ -19,7 +19,7 @@ class ContractGet(BrynQPanderaDataFrameModel):
|
|
|
19
19
|
end_date: Series[DateTime] = pa.Field(coerce=True, nullable=True, description="End Date Contract", alias="endDate")
|
|
20
20
|
indefinite: Series[Bool] = pa.Field(coerce=True, description="Indefinite Contract", alias="indefinite")
|
|
21
21
|
written_contract: Series[Bool] = pa.Field(coerce=True, description="Written Contract", alias="writtenContract")
|
|
22
|
-
|
|
22
|
+
weekly_hours: Series[Float] = pa.Field(coerce=True, nullable=True, description="Contract Hours per Week", alias="hoursPerWeek")
|
|
23
23
|
created_at: Series[DateTime] = pa.Field(coerce=True, description="Contract Created At", alias="createdAt")
|
|
24
24
|
|
|
25
25
|
class _Annotation:
|
|
@@ -36,12 +36,12 @@ class ContractGet(BrynQPanderaDataFrameModel):
|
|
|
36
36
|
# Upload Schemas
|
|
37
37
|
# ---------------------------
|
|
38
38
|
class ContractCreate(BaseModel):
|
|
39
|
-
|
|
39
|
+
start_date_contract: datetime = Field(..., example="2021-01-01T09:29:18Z", description="Start Date Contract", alias="startDate")
|
|
40
40
|
trial_period: Optional[datetime] = Field(None, example="2021-02-01T00:00:00Z", description="Trial Period Contract", alias="trialPeriod")
|
|
41
|
-
|
|
42
|
-
|
|
41
|
+
end_date_contract: Optional[datetime] = Field(None, example="2021-08-24T14:15:22Z", description="End Date Contract", alias="endDate")
|
|
42
|
+
indefinite_contract: bool = Field(..., example=True, description="Indefinite Contract", alias="indefinite")
|
|
43
43
|
written_contract: Optional[bool] = Field(None, example=True, description="Written Contract", alias="writtenContract")
|
|
44
|
-
|
|
44
|
+
weekly_hours: Optional[float] = Field(None, ge=0, le=168, example=40, description="Contract Hours per Week", alias="hoursPerWeek")
|
|
45
45
|
|
|
46
46
|
class ContractUpdate(BaseModel):
|
|
47
47
|
contract_id: str = Field(..., example="e35e343b-55a3-4e44-bc4b-f41c3b93bcf5", description="Contract ID", alias="contractId")
|
|
@@ -49,7 +49,7 @@ class ContractUpdate(BaseModel):
|
|
|
49
49
|
end_date: Optional[datetime] = Field(None, example="2021-12-31T00:00:00Z", description="End Date Contract", alias="endDate")
|
|
50
50
|
indefinite: bool = Field(..., example=True, description="Indefinite Contract", alias="indefinite")
|
|
51
51
|
written_contract: Optional[bool] = Field(None, example=True, description="Written Contract", alias="writtenContract")
|
|
52
|
-
|
|
52
|
+
weekly_hours: Optional[float] = Field(None, ge=0, le=168, example=20, description="Contract Hours per Week", alias="hoursPerWeek")
|
|
53
53
|
|
|
54
54
|
class Config:
|
|
55
55
|
primary_key = "contractId"
|
|
@@ -11,19 +11,19 @@ from datetime import datetime
|
|
|
11
11
|
# ---------------------------
|
|
12
12
|
# Get Schemas
|
|
13
13
|
# ---------------------------
|
|
14
|
-
class EmployeeCostcenterGet(
|
|
14
|
+
class EmployeeCostcenterGet(BrynQPanderaDataFrameModel):
|
|
15
15
|
employee_id: Series[String] = pa.Field(coerce=True, description="Employee ID", alias="employeeId")
|
|
16
16
|
employee_cost_center_id: Series[String] = pa.Field(coerce=True, description="Employee Cost Center ID", alias="employeeCostCenterId")
|
|
17
|
-
cost_centers_cost_center_id: Series[String] = pa.Field(coerce=True, description="Cost Center ID", alias="
|
|
18
|
-
cost_centers_code: Series[String] = pa.Field(coerce=True, description="Cost Centers Code", alias="
|
|
19
|
-
cost_centers_description: Series[String] = pa.Field(coerce=True, description="Cost Centers Description", alias="
|
|
20
|
-
cost_units_cost_unit_id: Series[String] = pa.Field(coerce=True, description="Cost Unit ID", alias="
|
|
21
|
-
cost_units_code: Series[String] = pa.Field(coerce=True, description="Cost Unit Code", alias="
|
|
22
|
-
cost_units_description: Series[String] = pa.Field(coerce=True, description="Cost Unit Description", alias="
|
|
17
|
+
cost_centers_cost_center_id: Series[String] = pa.Field(coerce=True, description="Cost Center ID", alias="costCenters.costCenterId")
|
|
18
|
+
cost_centers_code: Series[String] = pa.Field(coerce=True, description="Cost Centers Code", alias="costCenters.code")
|
|
19
|
+
cost_centers_description: Series[String] = pa.Field(coerce=True, description="Cost Centers Description", alias="costCenters.description")
|
|
20
|
+
cost_units_cost_unit_id: Series[String] = pa.Field(coerce=True, description="Cost Unit ID", alias="costUnits.costUnitId")
|
|
21
|
+
cost_units_code: Series[String] = pa.Field(coerce=True, description="Cost Unit Code", alias="costUnits.code")
|
|
22
|
+
cost_units_description: Series[String] = pa.Field(coerce=True, description="Cost Unit Description", alias="costUnits.description")
|
|
23
23
|
percentage: Series[Float] = pa.Field(coerce=True, description="Percentage", alias="percentage")
|
|
24
24
|
default: Series[Bool] = pa.Field(coerce=True, description="Default", alias="default")
|
|
25
|
-
period_year: Series[int] = pa.Field(coerce=True, description="Year", alias="
|
|
26
|
-
period_period: Series[int] = pa.Field(coerce=True, description="Period", alias="
|
|
25
|
+
period_year: Series[int] = pa.Field(coerce=True, description="Year", alias="period.year")
|
|
26
|
+
period_period: Series[int] = pa.Field(coerce=True, description="Period", alias="period.period")
|
|
27
27
|
created_at: Series[DateTime] = pa.Field(coerce=True, description="Created At", alias="createdAt")
|
|
28
28
|
|
|
29
29
|
class _Annotation:
|
|
@@ -36,7 +36,7 @@ class EmployeeCostcenterGet(pa.DataFrameModel):
|
|
|
36
36
|
}
|
|
37
37
|
}
|
|
38
38
|
|
|
39
|
-
class CostcenterGet(
|
|
39
|
+
class CostcenterGet(BrynQPanderaDataFrameModel):
|
|
40
40
|
cost_center_id: Series[String] = pa.Field(coerce=True, description="Cost Center ID", alias="costCenterId")
|
|
41
41
|
code: Series[String] = pa.Field(coerce=True, description="Code", alias="code")
|
|
42
42
|
description: Series[String] = pa.Field(coerce=True, description="Description", alias="description")
|
|
@@ -11,7 +11,7 @@ from datetime import datetime
|
|
|
11
11
|
# ---------------------------
|
|
12
12
|
# Get Schemas
|
|
13
13
|
# ---------------------------
|
|
14
|
-
class CostunitGet(
|
|
14
|
+
class CostunitGet(BrynQPanderaDataFrameModel):
|
|
15
15
|
cost_unit_id: Series[String] = pa.Field(coerce=True, description="Cost Unit ID", alias="costUnitId")
|
|
16
16
|
code: Series[String] = pa.Field(coerce=True, description="Cost Unit Code", alias="code")
|
|
17
17
|
description: Series[String] = pa.Field(coerce=True, description="Cost Unit Description", alias="description")
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import pandas as pd
|
|
2
|
+
import pandera as pa
|
|
3
|
+
from pandera import Bool
|
|
4
|
+
from pandera.typing import Series, String, Float, DateTime
|
|
5
|
+
import pandera.extensions as extensions
|
|
6
|
+
from brynq_sdk_functions import BrynQPanderaDataFrameModel
|
|
7
|
+
from typing import Optional, Annotated
|
|
8
|
+
from pydantic import BaseModel, Field, StringConstraints
|
|
9
|
+
|
|
10
|
+
# ---------------------------
|
|
11
|
+
# Get Schemas
|
|
12
|
+
# ---------------------------
|
|
13
|
+
class DebtorsGet(BrynQPanderaDataFrameModel):
|
|
14
|
+
debtor_id: Series[String] = pa.Field(coerce=True, description="Debtor ID", alias="debtorId")
|
|
15
|
+
number: Series[String] = pa.Field(coerce=True, description="Debtor number", alias="number")
|
|
16
|
+
name: Series[Bool] = pa.Field(coerce=True, description="Debtor name", alias="name")
|
|
@@ -10,14 +10,14 @@ from pydantic import BaseModel, Field
|
|
|
10
10
|
# ---------------------------
|
|
11
11
|
# Get Schemas
|
|
12
12
|
# ---------------------------
|
|
13
|
-
class
|
|
13
|
+
class EmployeeDepartmentGet(BrynQPanderaDataFrameModel):
|
|
14
14
|
employee_id: Series[String] = pa.Field(coerce=True, description="Employee ID", alias="employeeId")
|
|
15
15
|
department_id: Series[String] = pa.Field(coerce=True, description="Department ID", alias="departmentId")
|
|
16
16
|
code: Series[String] = pa.Field(coerce=True, description="Department Code", alias="code")
|
|
17
17
|
description: Series[String] = pa.Field(coerce=True, description="Department Description", alias="description")
|
|
18
18
|
created_at: Series[DateTime] = pa.Field(coerce=True, description="Created At", alias="createdAt")
|
|
19
|
-
period_period: Series[pd.Int64Dtype] = pa.Field(coerce=True, description="Period", alias="
|
|
20
|
-
period_year: Series[pd.Int64Dtype] = pa.Field(coerce=True, description="Year", alias="
|
|
19
|
+
period_period: Series[pd.Int64Dtype] = pa.Field(coerce=True, description="Period", alias="period.period")
|
|
20
|
+
period_year: Series[pd.Int64Dtype] = pa.Field(coerce=True, description="Year", alias="period.year")
|
|
21
21
|
|
|
22
22
|
class _Annotation:
|
|
23
23
|
primary_key = "department_id"
|
|
@@ -36,6 +36,16 @@ class Period(BaseModel):
|
|
|
36
36
|
year: int = Field(..., ge=1900, le=2100, example=2021, description="Year", alias="year")
|
|
37
37
|
period: int = Field(..., ge=1, le=53, example=4, description="Period", alias="period")
|
|
38
38
|
|
|
39
|
+
class DepartmentGet(BrynQPanderaDataFrameModel):
|
|
40
|
+
department_id: Series[String] = pa.Field(coerce=True, description="Department ID", alias="departmentId")
|
|
41
|
+
code: Series[String] = pa.Field(coerce=True, description="Department Code", alias="code")
|
|
42
|
+
description: Series[String] = pa.Field(coerce=True, description="Department Description", alias="description")
|
|
43
|
+
created_at: Series[DateTime] = pa.Field(coerce=True, description="Created At", alias="createdAt")
|
|
44
|
+
manager_id: Series[String] = pa.Field(coerce=True, description="Manager ID", alias="managers.managerId")
|
|
45
|
+
first_name: Optional[Series[String]] = pa.Field(nullable=True, coerce=True, description="Departmentmanager firstname", alias="managers.firstName")
|
|
46
|
+
last_name: Optional[Series[String]] = pa.Field(nullable=True, coerce=True, description="Departmentmanager lastname", alias="managers.lastName")
|
|
47
|
+
email: Optional[Series[String]] = pa.Field(nullable=True, coerce=True, description="Departmentmanager email", alias="managers.email")
|
|
48
|
+
|
|
39
49
|
class DepartmentCreate(BaseModel):
|
|
40
50
|
code: int = Field(..., ge=1, example=2, description="Department Code", alias="code")
|
|
41
51
|
description: str = Field(..., min_length=1, max_length=200, example="Sales", description="Department Description", alias="description")
|
|
@@ -13,30 +13,30 @@ from pydantic import BaseModel, Field, StringConstraints
|
|
|
13
13
|
class EmployeeGet(BrynQPanderaDataFrameModel):
|
|
14
14
|
employee_id: Series[String] = pa.Field(coerce=True, description="Employee ID", alias="employeeId")
|
|
15
15
|
personal_info_id: Series[String] = pa.Field(coerce=True, description="Personal Info ID", alias="personalInfoId")
|
|
16
|
-
created_at: Series[DateTime] = pa.Field(coerce=True, description="Employee Created At", alias="createdAt")
|
|
17
|
-
basic_info_employee_number: Series[pd.Int64Dtype] = pa.Field(coerce=True, description="Employee Number", alias="employeeNumber")
|
|
18
|
-
basic_info_first_name: Series[String] = pa.Field(coerce=True, nullable=True, description="First Name", alias="firstName")
|
|
19
|
-
basic_info_first_name_in_full: Series[String] = pa.Field(coerce=True, nullable=True, description="First Name In Full", alias="firstNameInFull")
|
|
20
|
-
basic_info_prefix: Series[String] = pa.Field(coerce=True, nullable=True, description="Prefix", alias="prefix")
|
|
21
|
-
basic_info_initials: Series[String] = pa.Field(coerce=True, nullable=True, description="Initials", alias="initials")
|
|
22
|
-
basic_info_last_name: Series[String] = pa.Field(coerce=True, description="Last Name", alias="lastName")
|
|
23
|
-
basic_info_employee_type: Series[String] = pa.Field(coerce=True, description="Employee Type", alias="employeeType")
|
|
24
|
-
birth_info_birth_date: Series[DateTime] = pa.Field(coerce=True, description="Birth Date", alias="birthDate")
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
birth_info_gender: Series[String] = pa.Field(coerce=True, nullable=True, description="Gender", alias="gender")
|
|
28
|
-
contact_info_private_email: Series[String] = pa.Field(coerce=True, nullable=True, description="Private Email", alias="privateEmail")
|
|
29
|
-
contact_info_business_email: Series[String] = pa.Field(coerce=True, nullable=True, description="Business Email", alias="businessEmail")
|
|
30
|
-
contact_info_business_phone: Series[String] = pa.Field(coerce=True, nullable=True, description="Business Phone", alias="businessPhone")
|
|
31
|
-
contact_info_business_mobile_phone: Series[String] = pa.Field(coerce=True, nullable=True, description="Business Mobile Phone", alias="businessMobilePhone")
|
|
32
|
-
contact_info_private_phone: Series[String] = pa.Field(coerce=True, nullable=True, description="Private Phone", alias="privatePhone")
|
|
33
|
-
contact_info_private_mobile_phone: Series[String] = pa.Field(coerce=True, nullable=True, description="Private Mobile Phone", alias="privateMobilePhone")
|
|
34
|
-
contact_info_other_phone: Series[String] = pa.Field(coerce=True, nullable=True, description="Other Phone", alias="otherPhone")
|
|
35
|
-
partner_info_partner_prefix: Series[String] = pa.Field(coerce=True, nullable=True, description="Partner Prefix", alias="partnerPrefix")
|
|
36
|
-
partner_info_partner_name: Series[String] = pa.Field(coerce=True, nullable=True, description="Partner Name", alias="partnerName")
|
|
37
|
-
period_year: Series[pd.Int64Dtype] = pa.Field(coerce=True, description="Year", alias="
|
|
38
|
-
period_period: Series[pd.Int64Dtype] = pa.Field(coerce=True, description="Period", alias="
|
|
39
|
-
birth_info_birth_country: Series[String] = pa.Field(coerce=True, nullable=True, description="Birth Country", alias="birthCountry")
|
|
16
|
+
created_at: Series[DateTime] = pa.Field(coerce=True, description="Employee Created At", alias="createdAt", nullable=True)
|
|
17
|
+
basic_info_employee_number: Series[pd.Int64Dtype] = pa.Field(coerce=True, description="Employee Number", alias="basicInfo.employeeNumber")
|
|
18
|
+
basic_info_first_name: Series[String] = pa.Field(coerce=True, nullable=True, description="First Name", alias="basicInfo.firstName")
|
|
19
|
+
basic_info_first_name_in_full: Series[String] = pa.Field(coerce=True, nullable=True, description="First Name In Full", alias="basicInfo.firstNameInFull")
|
|
20
|
+
basic_info_prefix: Series[String] = pa.Field(coerce=True, nullable=True, description="Prefix", alias="basicInfo.prefix")
|
|
21
|
+
basic_info_initials: Series[String] = pa.Field(coerce=True, nullable=True, description="Initials", alias="basicInfo.initials")
|
|
22
|
+
basic_info_last_name: Series[String] = pa.Field(coerce=True, description="Last Name", alias="basicInfo.lastName")
|
|
23
|
+
basic_info_employee_type: Series[String] = pa.Field(coerce=True, description="Employee Type", alias="basicInfo.employeeType")
|
|
24
|
+
birth_info_birth_date: Series[DateTime] = pa.Field(coerce=True, description="Birth Date", alias="birthInfo.birthDate")
|
|
25
|
+
birth_info_birth_country_code_iso: Series[String] = pa.Field(coerce=True, nullable=True, description="Birth Country Code ISO", alias="birthInfo.birthCountry.codeISO")
|
|
26
|
+
birth_info_nationality_code_iso: Series[String] = pa.Field(coerce=True, nullable=True, description="Nationality Code ISO", alias="birthInfo.nationality.codeISO")
|
|
27
|
+
birth_info_gender: Series[String] = pa.Field(coerce=True, nullable=True, description="Gender", alias="birthInfo.gender")
|
|
28
|
+
contact_info_private_email: Series[String] = pa.Field(coerce=True, nullable=True, description="Private Email", alias="contactInfo.privateEmail")
|
|
29
|
+
contact_info_business_email: Series[String] = pa.Field(coerce=True, nullable=True, description="Business Email", alias="contactInfo.businessEmail")
|
|
30
|
+
contact_info_business_phone: Series[String] = pa.Field(coerce=True, nullable=True, description="Business Phone", alias="contactInfo.businessPhone")
|
|
31
|
+
contact_info_business_mobile_phone: Series[String] = pa.Field(coerce=True, nullable=True, description="Business Mobile Phone", alias="contactInfo.businessMobilePhone")
|
|
32
|
+
contact_info_private_phone: Series[String] = pa.Field(coerce=True, nullable=True, description="Private Phone", alias="contactInfo.privatePhone")
|
|
33
|
+
contact_info_private_mobile_phone: Series[String] = pa.Field(coerce=True, nullable=True, description="Private Mobile Phone", alias="contactInfo.privateMobilePhone")
|
|
34
|
+
contact_info_other_phone: Series[String] = pa.Field(coerce=True, nullable=True, description="Other Phone", alias="contactInfo.otherPhone")
|
|
35
|
+
partner_info_partner_prefix: Series[String] = pa.Field(coerce=True, nullable=True, description="Partner Prefix", alias="partnerInfo.partnerPrefix")
|
|
36
|
+
partner_info_partner_name: Series[String] = pa.Field(coerce=True, nullable=True, description="Partner Name", alias="partnerInfo.partnerName")
|
|
37
|
+
period_year: Series[pd.Int64Dtype] = pa.Field(coerce=True, description="Year", alias="period.year")
|
|
38
|
+
period_period: Series[pd.Int64Dtype] = pa.Field(coerce=True, description="Period", alias="period.period")
|
|
39
|
+
birth_info_birth_country: Series[String] = pa.Field(coerce=True, nullable=True, description="Birth Country", alias="birthInfo.birthCountry")
|
|
40
40
|
company_id: Series[String] = pa.Field(coerce=True, description="Company ID", alias="companyId")
|
|
41
41
|
|
|
42
42
|
class _Annotation:
|
|
@@ -46,14 +46,14 @@ class EmployeeGet(BrynQPanderaDataFrameModel):
|
|
|
46
46
|
# Upload Schemas
|
|
47
47
|
# ---------------------------
|
|
48
48
|
class BasicInfo(BaseModel):
|
|
49
|
-
|
|
49
|
+
employee_id: Optional[int] = Field(None, ge=1, example=98072, description="Employee Number", alias="employeeNumber")
|
|
50
50
|
first_name: Optional[str] = Field(None, max_length=50, example="John", description="First Name", alias="firstName")
|
|
51
51
|
first_name_in_full: Optional[str] = Field(None, max_length=100, example="John in Full", description="First Name In Full", alias="firstNameInFull")
|
|
52
52
|
prefix: Optional[str] = Field(None, max_length=50, example="van der", description="Prefix", alias="prefix")
|
|
53
53
|
initials: Optional[str] = Field(None, max_length=50, example="J.D.", description="Initials", alias="initials")
|
|
54
54
|
last_name: str = Field(..., max_length=100, example="Doe", description="Last Name", alias="lastName")
|
|
55
55
|
employee_type: Annotated[
|
|
56
|
-
str,
|
|
56
|
+
str,
|
|
57
57
|
StringConstraints(
|
|
58
58
|
pattern=r'^(applicant|newHire|payroll|formerPayroll|external|formerExternal|rejectedApplicant)$',
|
|
59
59
|
strip_whitespace=True
|
|
@@ -63,26 +63,26 @@ class BasicInfo(BaseModel):
|
|
|
63
63
|
class BirthInfo(BaseModel):
|
|
64
64
|
birth_date: Optional[str] = Field(None, example="1980-02-27", description="Birth Date", alias="birthDate")
|
|
65
65
|
birth_country_code_iso: Optional[Annotated[
|
|
66
|
-
str,
|
|
66
|
+
str,
|
|
67
67
|
StringConstraints(
|
|
68
68
|
pattern=r'^[A-Za-z]+$',
|
|
69
69
|
strip_whitespace=True,
|
|
70
|
-
min_length=2,
|
|
70
|
+
min_length=2,
|
|
71
71
|
max_length=3
|
|
72
72
|
)
|
|
73
73
|
]] = Field(None, example="NL", description="Birth Country Code ISO", alias="birthCountryCodeISO")
|
|
74
74
|
nationality_code_iso: Optional[Annotated[
|
|
75
|
-
str,
|
|
75
|
+
str,
|
|
76
76
|
StringConstraints(
|
|
77
77
|
pattern=r'^[A-Za-z]+$',
|
|
78
78
|
strip_whitespace=True,
|
|
79
|
-
min_length=2,
|
|
79
|
+
min_length=2,
|
|
80
80
|
max_length=3
|
|
81
81
|
)
|
|
82
82
|
]] = Field(None, example="PT", description="Nationality Code ISO", alias="nationalityCodeISO")
|
|
83
83
|
deceased_on: Optional[str] = Field(None, example="1980-02-27", description="Deceased On", alias="deceasedOn")
|
|
84
84
|
gender: Optional[Annotated[
|
|
85
|
-
str,
|
|
85
|
+
str,
|
|
86
86
|
StringConstraints(
|
|
87
87
|
pattern=r'^(unspecified|male|female|unknown)$',
|
|
88
88
|
strip_whitespace=True
|
|
@@ -112,27 +112,27 @@ class AdditionalEmployeeInfo(BaseModel):
|
|
|
112
112
|
default_employee_template: Optional[str] = Field(None, description="Default Employee Template", alias="defaultEmployeeTemplate")
|
|
113
113
|
|
|
114
114
|
class CreateEmployeePersonalInfo(BaseModel):
|
|
115
|
-
basic_info: BasicInfo
|
|
116
|
-
birth_info: BirthInfo
|
|
117
|
-
contact_info: ContactInfo
|
|
118
|
-
partner_info: PartnerInfo
|
|
119
|
-
period: Period
|
|
115
|
+
basic_info: BasicInfo = Field(..., alias="basicInfo")
|
|
116
|
+
birth_info: BirthInfo = Field(..., alias="birthInfo")
|
|
117
|
+
contact_info: ContactInfo = Field(..., alias="contactInfo")
|
|
118
|
+
partner_info: PartnerInfo = Field(..., alias="partnerInfo")
|
|
119
|
+
period: Period = Field(..., alias="period")
|
|
120
120
|
created_at: Optional[str] = Field(None, example="2021-07-01T10:15:08Z", description="Created At", alias="createdAt")
|
|
121
121
|
|
|
122
122
|
class EmployeeCreate(BaseModel):
|
|
123
|
-
personal_info: CreateEmployeePersonalInfo
|
|
124
|
-
additional_employee_info: AdditionalEmployeeInfo
|
|
123
|
+
personal_info: CreateEmployeePersonalInfo = Field(..., alias="personalInfo")
|
|
124
|
+
additional_employee_info: AdditionalEmployeeInfo = Field(..., alias="additionalEmployeeInfo")
|
|
125
125
|
|
|
126
126
|
class UpdateEmployeePersonalInfo(BaseModel):
|
|
127
|
-
basic_info: Optional[BasicInfo] = None
|
|
128
|
-
birth_info: Optional[BirthInfo] = None
|
|
129
|
-
contact_info: Optional[ContactInfo] = None
|
|
130
|
-
partner_info: Optional[PartnerInfo] = None
|
|
131
|
-
period: Period
|
|
127
|
+
basic_info: Optional[BasicInfo] = Field(None, alias="basicInfo")
|
|
128
|
+
birth_info: Optional[BirthInfo] = Field(None, alias="birthInfo")
|
|
129
|
+
contact_info: Optional[ContactInfo] = Field(None, alias="contactInfo")
|
|
130
|
+
partner_info: Optional[PartnerInfo] = Field(None, alias="partnerInfo")
|
|
131
|
+
period: Period = Field(..., alias="period")
|
|
132
132
|
|
|
133
133
|
class EmployeeUpdate(BaseModel):
|
|
134
134
|
employee_id: str = Field(..., example="d30ec597-bd29-453e-9613-7786297eedcc", description="Employee ID", alias="employeeId")
|
|
135
|
-
personal_info: UpdateEmployeePersonalInfo
|
|
135
|
+
personal_info: UpdateEmployeePersonalInfo = Field(..., alias="personalInfo")
|
|
136
136
|
|
|
137
137
|
class EmployeeDelete(BaseModel):
|
|
138
|
-
employee_id: str = Field(..., example="3054d4cf-b449-489d-8d2e-5dd30e5ab994", description="Employee ID", alias="employeeId")
|
|
138
|
+
employee_id: str = Field(..., example="3054d4cf-b449-489d-8d2e-5dd30e5ab994", description="Employee ID", alias="employeeId")
|
|
@@ -12,14 +12,14 @@ from pydantic import BaseModel, Field
|
|
|
12
12
|
# ---------------------------
|
|
13
13
|
# Get Schemas
|
|
14
14
|
# ---------------------------
|
|
15
|
-
class
|
|
15
|
+
class EmployeeFunctionGet(BrynQPanderaDataFrameModel):
|
|
16
16
|
employee_id: Series[pa.String] = pa.Field(coerce=True, description="Employee ID", alias="employeeId")
|
|
17
17
|
function_id: Series[pa.String] = pa.Field(coerce=True, description="Function ID", alias="functionId")
|
|
18
18
|
code: Series[pd.Int64Dtype] = pa.Field(coerce=True, description="Function Code", alias="code")
|
|
19
19
|
description: Series[pa.String] = pa.Field(coerce=True, description="Function Description", alias="description")
|
|
20
20
|
created_at: Series[datetime] = pa.Field(coerce=True, description="Function Created At", alias="createdAt")
|
|
21
|
-
period_period: Series[pd.Int64Dtype] = pa.Field(coerce=True, description="Period", alias="
|
|
22
|
-
period_year: Series[pd.Int64Dtype] = pa.Field(coerce=True, description="Year", alias="
|
|
21
|
+
period_period: Series[pd.Int64Dtype] = pa.Field(coerce=True, description="Period", alias="period.period")
|
|
22
|
+
period_year: Series[pd.Int64Dtype] = pa.Field(coerce=True, description="Year", alias="period.year")
|
|
23
23
|
|
|
24
24
|
class _Annotation:
|
|
25
25
|
primary_key = "function_id"
|
|
@@ -38,6 +38,12 @@ class Period(BaseModel):
|
|
|
38
38
|
year: int = Field(..., ge=1900, le=2100, example=2021, description="Year", alias="year")
|
|
39
39
|
period: int = Field(..., ge=1, le=53, example=4, description="Period", alias="period")
|
|
40
40
|
|
|
41
|
+
class FunctionGet(BrynQPanderaDataFrameModel):
|
|
42
|
+
function_id: Series[pa.String] = pa.Field(coerce=True, description="Function ID", alias="functionId")
|
|
43
|
+
code: Series[pd.Int64Dtype] = pa.Field(coerce=True, description="Function Code", alias="code")
|
|
44
|
+
description: Series[pa.String] = pa.Field(coerce=True, description="Function Description", alias="description")
|
|
45
|
+
created_at: Series[datetime] = pa.Field(coerce=True, description="Function Created At", alias="createdAt")
|
|
46
|
+
|
|
41
47
|
class FunctionCreate(BaseModel):
|
|
42
48
|
code: int = Field(..., ge=1, example=1, description="Function Code", alias="code")
|
|
43
49
|
description: str = Field(..., max_length=200, example="Sales Lead", description="Function Description", alias="description")
|
|
@@ -57,7 +57,7 @@ class SalaryCreate(BaseModel):
|
|
|
57
57
|
strip_whitespace=True
|
|
58
58
|
)
|
|
59
59
|
]] = Field(None, example="grossFulltimeSalary", description="Salary Type", alias="type")
|
|
60
|
-
|
|
60
|
+
salary_amount: Optional[float] = Field(None, ge=0, example=3480.95, description="Value", alias="value")
|
|
61
61
|
salary_table_id: Optional[str] = Field(None, example="e17a06f1-ae4c-4098-92a6-87976ea7dc9a", description="Salary Table ID", alias="salaryTableId")
|
|
62
62
|
scale_id: Optional[str] = Field(None, example="d5f761c0-20e7-490b-b756-644739fa6120", description="Scale ID", alias="scaleId")
|
|
63
63
|
step_id: Optional[str] = Field(None, example="c9c6feef-cd69-4773-8602-f70fa3b561e4", description="Step ID", alias="stepId")
|
|
@@ -74,4 +74,26 @@ class SalaryUpdate(BaseModel):
|
|
|
74
74
|
value: Optional[float] = Field(None, ge=0, example=4000.5, description="Value", alias="value")
|
|
75
75
|
|
|
76
76
|
class SalaryDelete(BaseModel):
|
|
77
|
-
salary_id: str = Field(..., example="77985371-e121-489e-8ec8-c0b1b03963ce", description="Salary ID", alias="salaryId")
|
|
77
|
+
salary_id: str = Field(..., example="77985371-e121-489e-8ec8-c0b1b03963ce", description="Salary ID", alias="salaryId")
|
|
78
|
+
|
|
79
|
+
class SalaryTableGet(BrynQPanderaDataFrameModel):
|
|
80
|
+
code: Series[String] = pa.Field(coerce=True, description="Salary Code", alias="Code")
|
|
81
|
+
description: Series[String] = pa.Field(coerce=True, description="Salary Description", alias="Description")
|
|
82
|
+
guid_salary_table: Series[String] = pa.Field(coerce=True, description="GUID Salary table", alias="GuidSalaryTable")
|
|
83
|
+
company_id: Series[String] = pa.Field(coerce=True, description="Company ID", alias="companyId")
|
|
84
|
+
|
|
85
|
+
class SalaryScalesGet(BrynQPanderaDataFrameModel):
|
|
86
|
+
scale: Series[String] = pa.Field(coerce=True, description="Salary Scale", alias="Scale")
|
|
87
|
+
description: Series[String] = pa.Field(coerce=True, description="Salary Scale Description", alias="SchaalDescription")
|
|
88
|
+
scale_value: Series[String] = pa.Field(coerce=True, description="Salary Scale Value", alias="ScaleValue")
|
|
89
|
+
scale_percentage_max: Series[String] = pa.Field(coerce=True, description="Salary Scale Max Percentage", alias="ScalePercentageMax")
|
|
90
|
+
scale_percentage_min: Series[String] = pa.Field(coerce=True, description="Salary Scale Min Percentage", alias="ScalePercentageMin")
|
|
91
|
+
guid_salary_table_scale: Series[String] = pa.Field(coerce=True, description="GUID Salary table scale", alias="GuidSalaryTableScale")
|
|
92
|
+
company_id: Series[String] = pa.Field(coerce=True, description="Company ID", alias="companyId")
|
|
93
|
+
|
|
94
|
+
class SalaryStepsGet(BrynQPanderaDataFrameModel):
|
|
95
|
+
step: Series[String] = pa.Field(coerce=True, description="Salary Step", alias="Step")
|
|
96
|
+
step_description: Series[String] = pa.Field(coerce=True, description="Salary Step Description", alias="StepDescription")
|
|
97
|
+
step_value: Series[String] = pa.Field(coerce=True, description="Salary Step Value", alias="StepValue")
|
|
98
|
+
guid_salary_table_step: Series[String] = pa.Field(coerce=True, description="GUID Salary Step table", alias="GuidSalaryTableStep")
|
|
99
|
+
company_id: Series[String] = pa.Field(coerce=True, description="Company ID", alias="companyId")
|
|
@@ -11,28 +11,37 @@ from pydantic import BaseModel, Field
|
|
|
11
11
|
# ---------------------------
|
|
12
12
|
# Get Schemas
|
|
13
13
|
# ---------------------------
|
|
14
|
-
class ScheduleGet(
|
|
14
|
+
class ScheduleGet(BrynQPanderaDataFrameModel):
|
|
15
15
|
schedule_id: Series[String] = pa.Field(coerce=True, description="Schedule ID", alias="scheduleId")
|
|
16
16
|
start_date: Series[datetime] = pa.Field(coerce=True, description="Start Date", alias="startDate")
|
|
17
17
|
parttime_percentage: Series[Float] = pa.Field(coerce=True, description="Part-Time Percentage", alias="parttimePercentage")
|
|
18
|
-
week1_hours_monday: Series[Float] = pa.Field(coerce=True, description="Week 1 Hours Monday", alias="
|
|
19
|
-
week1_hours_tuesday: Series[Float] = pa.Field(coerce=True, description="Week 1 Hours Tuesday", alias="
|
|
20
|
-
week1_hours_wednesday: Series[Float] = pa.Field(coerce=True, description="Week 1 Hours Wednesday", alias="
|
|
21
|
-
week1_hours_thursday: Series[Float] = pa.Field(coerce=True, description="Week 1 Hours Thursday", alias="
|
|
22
|
-
week1_hours_friday: Series[Float] = pa.Field(coerce=True, description="Week 1 Hours Friday", alias="
|
|
23
|
-
week1_hours_saturday: Series[Float] = pa.Field(coerce=True, description="Week 1 Hours Saturday", alias="
|
|
24
|
-
week1_hours_sunday: Series[Float] = pa.Field(coerce=True, description="Week 1 Hours Sunday", alias="
|
|
25
|
-
week2_hours_monday: Series[Float] = pa.Field(coerce=True, description="Week 2 Hours Monday", alias="
|
|
26
|
-
week2_hours_tuesday: Series[Float] = pa.Field(coerce=True, description="Week 2 Hours Tuesday", alias="
|
|
27
|
-
week2_hours_wednesday: Series[Float] = pa.Field(coerce=True, description="Week 2 Hours Wednesday", alias="
|
|
28
|
-
week2_hours_thursday: Series[Float] = pa.Field(coerce=True, description="Week 2 Hours Thursday", alias="
|
|
29
|
-
week2_hours_friday: Series[Float] = pa.Field(coerce=True, description="Week 2 Hours Friday", alias="
|
|
30
|
-
week2_hours_saturday: Series[Float] = pa.Field(coerce=True, description="Week 2 Hours Saturday", alias="
|
|
31
|
-
week2_hours_sunday: Series[Float] = pa.Field(coerce=True, description="Week 2 Hours Sunday", alias="
|
|
18
|
+
week1_hours_monday: Series[Float] = pa.Field(coerce=True, description="Week 1 Hours Monday", alias="week1.hoursMonday")
|
|
19
|
+
week1_hours_tuesday: Series[Float] = pa.Field(coerce=True, description="Week 1 Hours Tuesday", alias="week1.hoursTuesday")
|
|
20
|
+
week1_hours_wednesday: Series[Float] = pa.Field(coerce=True, description="Week 1 Hours Wednesday", alias="week1.hoursWednesday")
|
|
21
|
+
week1_hours_thursday: Series[Float] = pa.Field(coerce=True, description="Week 1 Hours Thursday", alias="week1.hoursThursday")
|
|
22
|
+
week1_hours_friday: Series[Float] = pa.Field(coerce=True, description="Week 1 Hours Friday", alias="week1.hoursFriday")
|
|
23
|
+
week1_hours_saturday: Series[Float] = pa.Field(coerce=True, description="Week 1 Hours Saturday", alias="week1.hoursSaturday")
|
|
24
|
+
week1_hours_sunday: Series[Float] = pa.Field(coerce=True, description="Week 1 Hours Sunday", alias="week1.hoursSunday")
|
|
25
|
+
week2_hours_monday: Series[Float] = pa.Field(coerce=True, description="Week 2 Hours Monday", alias="week2.hoursMonday")
|
|
26
|
+
week2_hours_tuesday: Series[Float] = pa.Field(coerce=True, description="Week 2 Hours Tuesday", alias="week2.hoursTuesday")
|
|
27
|
+
week2_hours_wednesday: Series[Float] = pa.Field(coerce=True, description="Week 2 Hours Wednesday", alias="week2.hoursWednesday")
|
|
28
|
+
week2_hours_thursday: Series[Float] = pa.Field(coerce=True, description="Week 2 Hours Thursday", alias="week2.hoursThursday")
|
|
29
|
+
week2_hours_friday: Series[Float] = pa.Field(coerce=True, description="Week 2 Hours Friday", alias="week2.hoursFriday")
|
|
30
|
+
week2_hours_saturday: Series[Float] = pa.Field(coerce=True, description="Week 2 Hours Saturday", alias="week2.hoursSaturday")
|
|
31
|
+
week2_hours_sunday: Series[Float] = pa.Field(coerce=True, description="Week 2 Hours Sunday", alias="week2.hoursSunday")
|
|
32
32
|
created_at: Series[datetime] = pa.Field(coerce=True, description="Created At", alias="createdAt")
|
|
33
|
+
employee_id: Series[String] = pa.Field(coerce=True, description="Employee ID", alias="employeeId")
|
|
33
34
|
|
|
34
35
|
class _Annotation:
|
|
35
36
|
primary_key = "schedule_id"
|
|
37
|
+
foreign_keys = {
|
|
38
|
+
"employee_id": {
|
|
39
|
+
"parent_schema": "EmployeeSchema",
|
|
40
|
+
"parent_column": "employee_id",
|
|
41
|
+
"cardinality": "N:1"
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
36
45
|
|
|
37
46
|
# ---------------------------
|
|
38
47
|
# Upload Schemas
|
|
@@ -51,7 +60,7 @@ class ScheduleCreate(BaseModel):
|
|
|
51
60
|
"""
|
|
52
61
|
Pydantic model for creating a new schedule
|
|
53
62
|
"""
|
|
54
|
-
|
|
63
|
+
start_date_schedule: datetime = Field(..., description="Start date of the schedule", example="2021-01-01T09:29:18Z", alias="startDate")
|
|
55
64
|
hours_per_week: Optional[float] = Field(None, description="Hours per week", example=40, alias="hoursPerWeek")
|
|
56
65
|
week1: ScheduleHours = Field(..., description="Week 1 schedule hours", alias="week1")
|
|
57
66
|
week2: ScheduleHours = Field(..., description="Week 2 schedule hours", alias="week2")
|
|
@@ -30,6 +30,7 @@ brynq_sdk_nmbrs/schemas/bank.py
|
|
|
30
30
|
brynq_sdk_nmbrs/schemas/contracts.py
|
|
31
31
|
brynq_sdk_nmbrs/schemas/costcenter.py
|
|
32
32
|
brynq_sdk_nmbrs/schemas/costunit.py
|
|
33
|
+
brynq_sdk_nmbrs/schemas/debtor.py
|
|
33
34
|
brynq_sdk_nmbrs/schemas/department.py
|
|
34
35
|
brynq_sdk_nmbrs/schemas/employees.py
|
|
35
36
|
brynq_sdk_nmbrs/schemas/employment.py
|
|
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
|
{brynq_sdk_nmbrs-2.0.0 → brynq_sdk_nmbrs-2.0.1}/brynq_sdk_nmbrs.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|