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.
Files changed (43) hide show
  1. {brynq_sdk_nmbrs-2.0.0 → brynq_sdk_nmbrs-2.0.1}/PKG-INFO +1 -1
  2. {brynq_sdk_nmbrs-2.0.0 → brynq_sdk_nmbrs-2.0.1}/brynq_sdk_nmbrs/companies.py +4 -2
  3. {brynq_sdk_nmbrs-2.0.0 → brynq_sdk_nmbrs-2.0.1}/brynq_sdk_nmbrs/debtors.py +8 -8
  4. {brynq_sdk_nmbrs-2.0.0 → brynq_sdk_nmbrs-2.0.1}/brynq_sdk_nmbrs/department.py +3 -2
  5. {brynq_sdk_nmbrs-2.0.0 → brynq_sdk_nmbrs-2.0.1}/brynq_sdk_nmbrs/employees.py +2 -2
  6. {brynq_sdk_nmbrs-2.0.0 → brynq_sdk_nmbrs-2.0.1}/brynq_sdk_nmbrs/function.py +6 -4
  7. {brynq_sdk_nmbrs-2.0.0 → brynq_sdk_nmbrs-2.0.1}/brynq_sdk_nmbrs/hours.py +1 -1
  8. {brynq_sdk_nmbrs-2.0.0 → brynq_sdk_nmbrs-2.0.1}/brynq_sdk_nmbrs/salary_tables.py +20 -15
  9. {brynq_sdk_nmbrs-2.0.0 → brynq_sdk_nmbrs-2.0.1}/brynq_sdk_nmbrs/schedules.py +3 -3
  10. {brynq_sdk_nmbrs-2.0.0 → brynq_sdk_nmbrs-2.0.1}/brynq_sdk_nmbrs/schemas/__init__.py +2 -2
  11. {brynq_sdk_nmbrs-2.0.0 → brynq_sdk_nmbrs-2.0.1}/brynq_sdk_nmbrs/schemas/address.py +9 -9
  12. {brynq_sdk_nmbrs-2.0.0 → brynq_sdk_nmbrs-2.0.1}/brynq_sdk_nmbrs/schemas/bank.py +1 -1
  13. {brynq_sdk_nmbrs-2.0.0 → brynq_sdk_nmbrs-2.0.1}/brynq_sdk_nmbrs/schemas/contracts.py +6 -6
  14. {brynq_sdk_nmbrs-2.0.0 → brynq_sdk_nmbrs-2.0.1}/brynq_sdk_nmbrs/schemas/costcenter.py +10 -10
  15. {brynq_sdk_nmbrs-2.0.0 → brynq_sdk_nmbrs-2.0.1}/brynq_sdk_nmbrs/schemas/costunit.py +1 -1
  16. brynq_sdk_nmbrs-2.0.1/brynq_sdk_nmbrs/schemas/debtor.py +16 -0
  17. {brynq_sdk_nmbrs-2.0.0 → brynq_sdk_nmbrs-2.0.1}/brynq_sdk_nmbrs/schemas/department.py +13 -3
  18. {brynq_sdk_nmbrs-2.0.0 → brynq_sdk_nmbrs-2.0.1}/brynq_sdk_nmbrs/schemas/employees.py +45 -45
  19. {brynq_sdk_nmbrs-2.0.0 → brynq_sdk_nmbrs-2.0.1}/brynq_sdk_nmbrs/schemas/function.py +9 -3
  20. {brynq_sdk_nmbrs-2.0.0 → brynq_sdk_nmbrs-2.0.1}/brynq_sdk_nmbrs/schemas/salary.py +24 -2
  21. {brynq_sdk_nmbrs-2.0.0 → brynq_sdk_nmbrs-2.0.1}/brynq_sdk_nmbrs/schemas/schedules.py +25 -16
  22. {brynq_sdk_nmbrs-2.0.0 → brynq_sdk_nmbrs-2.0.1}/brynq_sdk_nmbrs.egg-info/PKG-INFO +1 -1
  23. {brynq_sdk_nmbrs-2.0.0 → brynq_sdk_nmbrs-2.0.1}/brynq_sdk_nmbrs.egg-info/SOURCES.txt +1 -0
  24. {brynq_sdk_nmbrs-2.0.0 → brynq_sdk_nmbrs-2.0.1}/setup.py +1 -1
  25. {brynq_sdk_nmbrs-2.0.0 → brynq_sdk_nmbrs-2.0.1}/brynq_sdk_nmbrs/__init__.py +0 -0
  26. {brynq_sdk_nmbrs-2.0.0 → brynq_sdk_nmbrs-2.0.1}/brynq_sdk_nmbrs/address.py +0 -0
  27. {brynq_sdk_nmbrs-2.0.0 → brynq_sdk_nmbrs-2.0.1}/brynq_sdk_nmbrs/bank.py +0 -0
  28. {brynq_sdk_nmbrs-2.0.0 → brynq_sdk_nmbrs-2.0.1}/brynq_sdk_nmbrs/children.py +0 -0
  29. {brynq_sdk_nmbrs-2.0.0 → brynq_sdk_nmbrs-2.0.1}/brynq_sdk_nmbrs/contract.py +0 -0
  30. {brynq_sdk_nmbrs-2.0.0 → brynq_sdk_nmbrs-2.0.1}/brynq_sdk_nmbrs/costcenter.py +0 -0
  31. {brynq_sdk_nmbrs-2.0.0 → brynq_sdk_nmbrs-2.0.1}/brynq_sdk_nmbrs/costunit.py +0 -0
  32. {brynq_sdk_nmbrs-2.0.0 → brynq_sdk_nmbrs-2.0.1}/brynq_sdk_nmbrs/document.py +0 -0
  33. {brynq_sdk_nmbrs-2.0.0 → brynq_sdk_nmbrs-2.0.1}/brynq_sdk_nmbrs/employment.py +0 -0
  34. {brynq_sdk_nmbrs-2.0.0 → brynq_sdk_nmbrs-2.0.1}/brynq_sdk_nmbrs/salaries.py +0 -0
  35. {brynq_sdk_nmbrs-2.0.0 → brynq_sdk_nmbrs-2.0.1}/brynq_sdk_nmbrs/schemas/employment.py +0 -0
  36. {brynq_sdk_nmbrs-2.0.0 → brynq_sdk_nmbrs-2.0.1}/brynq_sdk_nmbrs/schemas/hours.py +0 -0
  37. {brynq_sdk_nmbrs-2.0.0 → brynq_sdk_nmbrs-2.0.1}/brynq_sdk_nmbrs/schemas/wagecomponents.py +0 -0
  38. {brynq_sdk_nmbrs-2.0.0 → brynq_sdk_nmbrs-2.0.1}/brynq_sdk_nmbrs/wagecomponents.py +0 -0
  39. {brynq_sdk_nmbrs-2.0.0 → brynq_sdk_nmbrs-2.0.1}/brynq_sdk_nmbrs.egg-info/dependency_links.txt +0 -0
  40. {brynq_sdk_nmbrs-2.0.0 → brynq_sdk_nmbrs-2.0.1}/brynq_sdk_nmbrs.egg-info/not-zip-safe +0 -0
  41. {brynq_sdk_nmbrs-2.0.0 → brynq_sdk_nmbrs-2.0.1}/brynq_sdk_nmbrs.egg-info/requires.txt +0 -0
  42. {brynq_sdk_nmbrs-2.0.0 → brynq_sdk_nmbrs-2.0.1}/brynq_sdk_nmbrs.egg-info/top_level.txt +0 -0
  43. {brynq_sdk_nmbrs-2.0.0 → brynq_sdk_nmbrs-2.0.1}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 1.0
2
2
  Name: brynq_sdk_nmbrs
3
- Version: 2.0.0
3
+ Version: 2.0.1
4
4
  Summary: Nmbrs wrapper from BrynQ
5
5
  Home-page: UNKNOWN
6
6
  Author: BrynQ
@@ -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 .costcenter import Costcenter
4
- from .costunit import Costunit
3
+ from brynq_sdk_functions import Functions
5
4
  from .department import Departments
6
- from .hours import Hours
7
- from .bank import Bank
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 = Functions(nmbrs)
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
- return df
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=DepartmentGet, debug=True)
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['company_id'] = company_id
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.dict(exclude_none=True)
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 FunctionGet, FunctionCreate, FunctionUpdate, FunctionDelete
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=FunctionGet, debug=True)
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 df
117
+ return valid_functions, invalid_functions
@@ -46,7 +46,7 @@ class VariableHours:
46
46
 
47
47
  df = pd.DataFrame(data)
48
48
 
49
- df['employee_id'] = employee_id # Add employee_id for tracking
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['company_id'] = company['number']
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 salary_tables
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['company_id'] = company['number']
106
+ salary_scale_temp['companyId'] = company['number']
104
107
  salary_scales = pd.concat([salary_scales, salary_scale_temp])
105
-
106
- # No validation schema for now, but could be added later
107
- return salary_scales
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['company_id'] = company['number']
185
+ salary_steps_temp['companyId'] = company['number']
182
186
  salary_steps = pd.concat([salary_steps, salary_steps_temp])
183
-
184
- # No validation schema for now, but could be added later
185
- return salary_steps
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 "weekly_hours" in data:
71
+ if "hours_per_week" in data:
72
72
  # Handle NaN values
73
- if not isinstance(data["weekly_hours"], float) or not math.isnan(data["weekly_hours"]):
74
- schedule_data["hoursPerWeek"] = data["weekly_hours"]
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 DepartmentGet, DepartmentCreate, DepartmentUpdate, DepartmentDelete
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
- 'DepartmentGet', 'DepartmentCreate', 'DepartmentUpdate', 'DepartmentDelete',
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="periodYear")
31
- period_period: Series[pd.Int64Dtype] = pa.Field(coerce=True, nullable=True, description="Period", alias="periodPeriod")
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
- i_b_a_n: Series[String] = pa.Field(coerce=True, nullable=True, description="IBAN", alias="iban")
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
- hours_per_week: Series[Float] = pa.Field(coerce=True, nullable=True, description="Contract Hours per Week", alias="hoursPerWeek")
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
- start_date: datetime = Field(..., example="2021-01-01T09:29:18Z", description="Start Date Contract", alias="startDate")
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
- end_date: Optional[datetime] = Field(None, example="2021-08-24T14:15:22Z", description="End Date Contract", alias="endDate")
42
- indefinite: bool = Field(..., example=True, description="Indefinite Contract", alias="indefinite")
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
- hours_per_week: Optional[float] = Field(None, ge=0, le=168, example=40, description="Contract Hours per Week", alias="hoursPerWeek")
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
- hours_per_week: Optional[float] = Field(None, ge=0, le=168, example=20, description="Contract Hours per Week", alias="hoursPerWeek")
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(pa.DataFrameModel):
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="costCentersCostCenterId")
18
- cost_centers_code: Series[String] = pa.Field(coerce=True, description="Cost Centers Code", alias="costCentersCode")
19
- cost_centers_description: Series[String] = pa.Field(coerce=True, description="Cost Centers Description", alias="costCentersDescription")
20
- cost_units_cost_unit_id: Series[String] = pa.Field(coerce=True, description="Cost Unit ID", alias="costUnitsCostUnitId")
21
- cost_units_code: Series[String] = pa.Field(coerce=True, description="Cost Unit Code", alias="costUnitsCode")
22
- cost_units_description: Series[String] = pa.Field(coerce=True, description="Cost Unit Description", alias="costUnitsDescription")
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="periodYear")
26
- period_period: Series[int] = pa.Field(coerce=True, description="Period", alias="periodPeriod")
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(pa.DataFrameModel):
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(pa.DataFrameModel):
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 DepartmentGet(BrynQPanderaDataFrameModel):
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="periodPeriod")
20
- period_year: Series[pd.Int64Dtype] = pa.Field(coerce=True, description="Year", alias="periodYear")
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
- birth_info_birth_country_code_i_s_o: Series[String] = pa.Field(coerce=True, nullable=True, description="Birth Country Code ISO", alias="birthCountryCodeISO")
26
- birth_info_nationality_code_i_s_o: Series[String] = pa.Field(coerce=True, nullable=True, description="Nationality Code ISO", alias="nationalityCodeISO")
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="periodYear")
38
- period_period: Series[pd.Int64Dtype] = pa.Field(coerce=True, description="Period", alias="periodPeriod")
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
- employee_number: Optional[int] = Field(None, ge=1, example=98072, description="Employee Number", alias="employeeNumber")
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 FunctionGet(BrynQPanderaDataFrameModel):
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="periodPeriod")
22
- period_year: Series[pd.Int64Dtype] = pa.Field(coerce=True, description="Year", alias="periodYear")
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
- value: Optional[float] = Field(None, ge=0, example=3480.95, description="Value", alias="value")
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(pa.DataFrameModel):
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="week1HoursMonday")
19
- week1_hours_tuesday: Series[Float] = pa.Field(coerce=True, description="Week 1 Hours Tuesday", alias="week1HoursTuesday")
20
- week1_hours_wednesday: Series[Float] = pa.Field(coerce=True, description="Week 1 Hours Wednesday", alias="week1HoursWednesday")
21
- week1_hours_thursday: Series[Float] = pa.Field(coerce=True, description="Week 1 Hours Thursday", alias="week1HoursThursday")
22
- week1_hours_friday: Series[Float] = pa.Field(coerce=True, description="Week 1 Hours Friday", alias="week1HoursFriday")
23
- week1_hours_saturday: Series[Float] = pa.Field(coerce=True, description="Week 1 Hours Saturday", alias="week1HoursSaturday")
24
- week1_hours_sunday: Series[Float] = pa.Field(coerce=True, description="Week 1 Hours Sunday", alias="week1HoursSunday")
25
- week2_hours_monday: Series[Float] = pa.Field(coerce=True, description="Week 2 Hours Monday", alias="week2HoursMonday")
26
- week2_hours_tuesday: Series[Float] = pa.Field(coerce=True, description="Week 2 Hours Tuesday", alias="week2HoursTuesday")
27
- week2_hours_wednesday: Series[Float] = pa.Field(coerce=True, description="Week 2 Hours Wednesday", alias="week2HoursWednesday")
28
- week2_hours_thursday: Series[Float] = pa.Field(coerce=True, description="Week 2 Hours Thursday", alias="week2HoursThursday")
29
- week2_hours_friday: Series[Float] = pa.Field(coerce=True, description="Week 2 Hours Friday", alias="week2HoursFriday")
30
- week2_hours_saturday: Series[Float] = pa.Field(coerce=True, description="Week 2 Hours Saturday", alias="week2HoursSaturday")
31
- week2_hours_sunday: Series[Float] = pa.Field(coerce=True, description="Week 2 Hours Sunday", alias="week2HoursSunday")
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
- start_date: datetime = Field(..., description="Start date of the schedule", example="2021-01-01T09:29:18Z", alias="startDate")
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")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 1.0
2
2
  Name: brynq-sdk-nmbrs
3
- Version: 2.0.0
3
+ Version: 2.0.1
4
4
  Summary: Nmbrs wrapper from BrynQ
5
5
  Home-page: UNKNOWN
6
6
  Author: BrynQ
@@ -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
@@ -2,7 +2,7 @@ from setuptools import setup, find_namespace_packages
2
2
 
3
3
  setup(
4
4
  name='brynq_sdk_nmbrs',
5
- version='2.0.0',
5
+ version='2.0.1',
6
6
  description='Nmbrs wrapper from BrynQ',
7
7
  long_description='Nmbrs wrapper from BrynQ',
8
8
  author='BrynQ',