brynq-sdk-zenegy 1.3.3__py3-none-any.whl
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_zenegy/__init__.py +23 -0
- brynq_sdk_zenegy/absence.py +100 -0
- brynq_sdk_zenegy/companies.py +43 -0
- brynq_sdk_zenegy/cost_center.py +80 -0
- brynq_sdk_zenegy/departments.py +77 -0
- brynq_sdk_zenegy/employee_documents.py +40 -0
- brynq_sdk_zenegy/employees.py +301 -0
- brynq_sdk_zenegy/global_value_sets.py +260 -0
- brynq_sdk_zenegy/global_values.py +265 -0
- brynq_sdk_zenegy/paychecks.py +119 -0
- brynq_sdk_zenegy/payroll.py +117 -0
- brynq_sdk_zenegy/payslips.py +43 -0
- brynq_sdk_zenegy/pensions.py +118 -0
- brynq_sdk_zenegy/schemas/__init__.py +30 -0
- brynq_sdk_zenegy/schemas/absences.py +393 -0
- brynq_sdk_zenegy/schemas/companies.py +42 -0
- brynq_sdk_zenegy/schemas/company_cost_centers.py +48 -0
- brynq_sdk_zenegy/schemas/company_departments.py +147 -0
- brynq_sdk_zenegy/schemas/employee_documents.py +30 -0
- brynq_sdk_zenegy/schemas/employee_pay_checks.py +169 -0
- brynq_sdk_zenegy/schemas/employee_pensions.py +140 -0
- brynq_sdk_zenegy/schemas/employees.py +2372 -0
- brynq_sdk_zenegy/schemas/global_value_sets.py +185 -0
- brynq_sdk_zenegy/schemas/global_values.py +433 -0
- brynq_sdk_zenegy/schemas/payrolls.py +134 -0
- brynq_sdk_zenegy/schemas/payslips.py +32 -0
- brynq_sdk_zenegy/schemas/supplements_and_deductions_rates.py +189 -0
- brynq_sdk_zenegy/supplements_and_deductions_rates.py +71 -0
- brynq_sdk_zenegy/zenegy.py +221 -0
- brynq_sdk_zenegy-1.3.3.dist-info/METADATA +16 -0
- brynq_sdk_zenegy-1.3.3.dist-info/RECORD +33 -0
- brynq_sdk_zenegy-1.3.3.dist-info/WHEEL +5 -0
- brynq_sdk_zenegy-1.3.3.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,393 @@
|
|
|
1
|
+
# Generated schemas for tag: Absence
|
|
2
|
+
|
|
3
|
+
from datetime import datetime
|
|
4
|
+
from pydantic import BaseModel, Field
|
|
5
|
+
from typing import Dict, List, Optional, Any
|
|
6
|
+
from uuid import UUID
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class Department(BaseModel):
|
|
10
|
+
"""Schema for department information."""
|
|
11
|
+
name: Optional[str] = Field(default=None)
|
|
12
|
+
number: Optional[str] = Field(default=None)
|
|
13
|
+
has_work_schema: Optional[bool] = Field(alias="hasWorkSchema", default=None)
|
|
14
|
+
id: Optional[int] = Field(default=None)
|
|
15
|
+
uid: Optional[UUID] = Field(example="00000000-0000-0000-0000-000000000000", default=None)
|
|
16
|
+
|
|
17
|
+
class Config:
|
|
18
|
+
populate_by_name = True
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
class Center(BaseModel):
|
|
22
|
+
"""Schema for cost center or profit center information."""
|
|
23
|
+
id: Optional[int] = Field(default=None)
|
|
24
|
+
uid: Optional[UUID] = Field(example="00000000-0000-0000-0000-000000000000", default=None)
|
|
25
|
+
name: Optional[str] = Field(default=None)
|
|
26
|
+
number: Optional[str] = Field(default=None)
|
|
27
|
+
type: Optional[str] = Field(default=None)
|
|
28
|
+
|
|
29
|
+
class Config:
|
|
30
|
+
populate_by_name = True
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
class Employee(BaseModel):
|
|
34
|
+
"""Schema for employee information."""
|
|
35
|
+
title: Optional[str] = Field(default=None)
|
|
36
|
+
is_active: Optional[bool] = Field(alias="isActive", default=None)
|
|
37
|
+
is_resigned: Optional[bool] = Field(alias="isResigned", default=None)
|
|
38
|
+
cpr: Optional[str] = Field(default=None)
|
|
39
|
+
salary_type: Optional[int] = Field(alias="salaryType", default=None)
|
|
40
|
+
contact_phone: Optional[str] = Field(alias="contactPhone", default=None)
|
|
41
|
+
contact_email: Optional[str] = Field(alias="contactEmail", default=None)
|
|
42
|
+
department: Optional[Department] = Field(default=None)
|
|
43
|
+
cost_center: Optional[Center] = Field(alias="costCenter", default=None)
|
|
44
|
+
profit_center: Optional[Center] = Field(alias="profitCenter", default=None)
|
|
45
|
+
car_registration_number: Optional[str] = Field(alias="carRegistrationNumber", default=None)
|
|
46
|
+
type: Optional[int] = Field(default=None)
|
|
47
|
+
salary_payout_period: Optional[int] = Field(alias="salaryPayoutPeriod", default=None)
|
|
48
|
+
revenue_type: Optional[int] = Field(alias="revenueType", default=None)
|
|
49
|
+
income_type: Optional[int] = Field(alias="incomeType", default=None)
|
|
50
|
+
holiday_pay_receiver_type: Optional[int] = Field(alias="holidayPayReceiverType", default=None)
|
|
51
|
+
extra_holiday_entitlement_rule: Optional[str] = Field(alias="extraHolidayEntitlementRule", default=None)
|
|
52
|
+
name: Optional[str] = Field(default=None)
|
|
53
|
+
employee_number: Optional[str] = Field(alias="employeeNumber", default=None)
|
|
54
|
+
extra_employee_number: Optional[str] = Field(alias="extraEmployeeNumber", default=None)
|
|
55
|
+
id: Optional[int] = Field(default=None)
|
|
56
|
+
uid: Optional[UUID] = Field(example="00000000-0000-0000-0000-000000000000", default=None)
|
|
57
|
+
|
|
58
|
+
class Config:
|
|
59
|
+
populate_by_name = True
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
class CompanyAbsenceType(BaseModel):
|
|
63
|
+
"""Schema for company absence type information."""
|
|
64
|
+
name: Optional[str] = Field(default=None)
|
|
65
|
+
number: Optional[str] = Field(default=None)
|
|
66
|
+
absence_type_name: Optional[str] = Field(alias="absenceTypeName", default=None)
|
|
67
|
+
absence_type: Optional[int] = Field(alias="absenceType", default=None)
|
|
68
|
+
is_custom_absence_type: Optional[bool] = Field(alias="isCustomAbsenceType", default=None)
|
|
69
|
+
search_name: Optional[str] = Field(alias="searchName", default=None)
|
|
70
|
+
id: Optional[int] = Field(default=None)
|
|
71
|
+
uid: Optional[UUID] = Field(example="00000000-0000-0000-0000-000000000000", default=None)
|
|
72
|
+
|
|
73
|
+
class Config:
|
|
74
|
+
populate_by_name = True
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
class AbsenceData(BaseModel):
|
|
78
|
+
"""Schema for absence data items."""
|
|
79
|
+
employee: Optional[Employee] = Field(default=None)
|
|
80
|
+
from_date: Optional[datetime] = Field(alias="fromDate", default=None)
|
|
81
|
+
to_date: Optional[datetime] = Field(alias="toDate", default=None)
|
|
82
|
+
note: Optional[str] = Field(default=None)
|
|
83
|
+
absence_type: Optional[int] = Field(alias="absenceType", default=None)
|
|
84
|
+
status: Optional[int] = Field(default=None)
|
|
85
|
+
days: Optional[float] = Field(default=None)
|
|
86
|
+
project_id: Optional[str] = Field(alias="projectId", default=None)
|
|
87
|
+
attachment_count: Optional[int] = Field(alias="attachmentCount", default=None)
|
|
88
|
+
absence_type_name: Optional[str] = Field(alias="absenceTypeName", default=None)
|
|
89
|
+
company_absence_type: Optional[CompanyAbsenceType] = Field(alias="companyAbsenceType", default=None)
|
|
90
|
+
employee_payroll_fk: Optional[int] = Field(alias="employeePayrollFk", default=None)
|
|
91
|
+
id: Optional[int] = Field(default=None)
|
|
92
|
+
uid: Optional[UUID] = Field(example="00000000-0000-0000-0000-000000000000", default=None)
|
|
93
|
+
|
|
94
|
+
class Config:
|
|
95
|
+
populate_by_name = True
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
class GetAbsenceDaysPerCompanyResponse(BaseModel):
|
|
99
|
+
"""
|
|
100
|
+
Schema for getting absence days per company response.
|
|
101
|
+
|
|
102
|
+
"""
|
|
103
|
+
total_records: Optional[int] = Field(alias="totalRecords", default=None)
|
|
104
|
+
total_display_records: Optional[int] = Field(alias="totalDisplayRecords", default=None)
|
|
105
|
+
data: Optional[List[AbsenceData]] = Field(default=None)
|
|
106
|
+
|
|
107
|
+
class Config:
|
|
108
|
+
populate_by_name = True
|
|
109
|
+
|
|
110
|
+
class CreateAbsenceRequest(BaseModel):
|
|
111
|
+
"""
|
|
112
|
+
Schema for creating absence request.
|
|
113
|
+
"""
|
|
114
|
+
uid: Optional[UUID] = Field(
|
|
115
|
+
default=None,
|
|
116
|
+
description="Absence UID (server-assigned on creation)",
|
|
117
|
+
example="00000000-0000-0000-0000-000000000000",
|
|
118
|
+
)
|
|
119
|
+
employee_uid: UUID = Field(
|
|
120
|
+
alias="employeeUid",
|
|
121
|
+
description="UID of the employee for whom the absence is created",
|
|
122
|
+
example="00000000-0000-0000-0000-000000000000",
|
|
123
|
+
)
|
|
124
|
+
from_date: datetime = Field(
|
|
125
|
+
alias="fromDate",
|
|
126
|
+
description="Absence start date/time (ISO 8601)",
|
|
127
|
+
example="2024-01-10T00:00:00Z",
|
|
128
|
+
)
|
|
129
|
+
to_date: datetime = Field(
|
|
130
|
+
alias="toDate",
|
|
131
|
+
description="Absence end date/time (ISO 8601)",
|
|
132
|
+
example="2024-01-12T23:59:59Z",
|
|
133
|
+
)
|
|
134
|
+
absence_type: int = Field(
|
|
135
|
+
alias="absenceType",
|
|
136
|
+
description="Absence type code",
|
|
137
|
+
example=1,
|
|
138
|
+
)
|
|
139
|
+
company_absence_type_uid: Optional[UUID] = Field(
|
|
140
|
+
alias="companyAbsenceTypeUid", default=None,
|
|
141
|
+
description="Company absence type UID",
|
|
142
|
+
example="00000000-0000-0000-0000-000000000000",
|
|
143
|
+
)
|
|
144
|
+
note: Optional[str] = Field(
|
|
145
|
+
default=None,
|
|
146
|
+
description="Optional note for the absence",
|
|
147
|
+
example="Sick leave",
|
|
148
|
+
)
|
|
149
|
+
days: Optional[float] = Field(
|
|
150
|
+
default=None,
|
|
151
|
+
description="Total number of absence days",
|
|
152
|
+
example=2.0,
|
|
153
|
+
)
|
|
154
|
+
project_id: Optional[str] = Field(
|
|
155
|
+
alias="projectId", default=None,
|
|
156
|
+
description="Related project identifier (if any)",
|
|
157
|
+
example="PRJ-1001",
|
|
158
|
+
)
|
|
159
|
+
status: Optional[int] = Field(
|
|
160
|
+
default=None,
|
|
161
|
+
description="Absence status code",
|
|
162
|
+
example=0,
|
|
163
|
+
)
|
|
164
|
+
attachment_uids: Optional[List[UUID]] = Field(
|
|
165
|
+
alias="attachmentUids", default=None,
|
|
166
|
+
description="List of attachment UIDs",
|
|
167
|
+
example=["00000000-0000-0000-0000-000000000000"],
|
|
168
|
+
)
|
|
169
|
+
|
|
170
|
+
class Config:
|
|
171
|
+
populate_by_name = True
|
|
172
|
+
|
|
173
|
+
class GetAbsenceAsyncResponse(BaseModel):
|
|
174
|
+
"""
|
|
175
|
+
Schema for getting absence asynchronously response.
|
|
176
|
+
"""
|
|
177
|
+
attachments: Optional[List[Dict[str, Any]]] = Field(default=None)
|
|
178
|
+
employee: Optional[Employee] = Field(default=None)
|
|
179
|
+
from_date: Optional[datetime] = Field(alias="fromDate", default=None)
|
|
180
|
+
to_date: Optional[datetime] = Field(alias="toDate", default=None)
|
|
181
|
+
note: Optional[str] = Field(default=None)
|
|
182
|
+
absence_type: Optional[int] = Field(alias="absenceType", default=None)
|
|
183
|
+
status: Optional[int] = Field(default=None)
|
|
184
|
+
days: Optional[float] = Field(default=None)
|
|
185
|
+
project_id: Optional[str] = Field(alias="projectId", default=None)
|
|
186
|
+
attachment_count: Optional[int] = Field(alias="attachmentCount", default=None)
|
|
187
|
+
absence_type_name: Optional[str] = Field(alias="absenceTypeName", default=None)
|
|
188
|
+
company_absence_type: Optional[CompanyAbsenceType] = Field(alias="companyAbsenceType", default=None)
|
|
189
|
+
employee_payroll_fk: Optional[int] = Field(alias="employeePayrollFk", default=None)
|
|
190
|
+
id: Optional[int] = Field(default=None)
|
|
191
|
+
uid: Optional[UUID] = Field(example="00000000-0000-0000-0000-000000000000", default=None)
|
|
192
|
+
class Config:
|
|
193
|
+
populate_by_name = True
|
|
194
|
+
|
|
195
|
+
class UpdateAbsenceRequest(BaseModel):
|
|
196
|
+
"""
|
|
197
|
+
Schema for updating absence request.
|
|
198
|
+
"""
|
|
199
|
+
uid: Optional[UUID] = Field(
|
|
200
|
+
example="00000000-0000-0000-0000-000000000000", default=None,
|
|
201
|
+
description="Absence UID to update",
|
|
202
|
+
)
|
|
203
|
+
employee_uid: UUID = Field(
|
|
204
|
+
example="00000000-0000-0000-0000-000000000000", alias="employeeUid",
|
|
205
|
+
description="UID of the employee for whom the absence is updated",
|
|
206
|
+
)
|
|
207
|
+
from_date: datetime = Field(
|
|
208
|
+
alias="fromDate",
|
|
209
|
+
description="Absence start date/time (ISO 8601)",
|
|
210
|
+
example="2024-01-10T00:00:00Z",
|
|
211
|
+
)
|
|
212
|
+
to_date: datetime = Field(
|
|
213
|
+
alias="toDate",
|
|
214
|
+
description="Absence end date/time (ISO 8601)",
|
|
215
|
+
example="2024-01-12T23:59:59Z",
|
|
216
|
+
)
|
|
217
|
+
absence_type: int = Field(
|
|
218
|
+
alias="absenceType",
|
|
219
|
+
description="Absence type code",
|
|
220
|
+
example=1,
|
|
221
|
+
)
|
|
222
|
+
company_absence_type_uid: Optional[UUID] = Field(
|
|
223
|
+
example="00000000-0000-0000-0000-000000000000", alias="companyAbsenceTypeUid", default=None,
|
|
224
|
+
description="Company absence type UID",
|
|
225
|
+
)
|
|
226
|
+
note: Optional[str] = Field(
|
|
227
|
+
default=None,
|
|
228
|
+
description="Optional note for the absence",
|
|
229
|
+
example="Medical appointment",
|
|
230
|
+
)
|
|
231
|
+
days: Optional[float] = Field(
|
|
232
|
+
default=None,
|
|
233
|
+
description="Total number of absence days",
|
|
234
|
+
example=1.0,
|
|
235
|
+
)
|
|
236
|
+
project_id: Optional[str] = Field(
|
|
237
|
+
alias="projectId", default=None,
|
|
238
|
+
description="Related project identifier (if any)",
|
|
239
|
+
example="PRJ-1001",
|
|
240
|
+
)
|
|
241
|
+
status: Optional[int] = Field(
|
|
242
|
+
default=None,
|
|
243
|
+
description="Absence status code",
|
|
244
|
+
example=0,
|
|
245
|
+
)
|
|
246
|
+
attachment_uids: Optional[List[UUID]] = Field(
|
|
247
|
+
alias="attachmentUids", default=None,
|
|
248
|
+
description="List of attachment UIDs",
|
|
249
|
+
example=["00000000-0000-0000-0000-000000000000"],
|
|
250
|
+
)
|
|
251
|
+
class Config:
|
|
252
|
+
populate_by_name = True
|
|
253
|
+
|
|
254
|
+
class GetCompanyAbsenceAttachmentLocationAsyncResponse(BaseModel):
|
|
255
|
+
"""
|
|
256
|
+
Schema for getting company absence attachment location asynchronously response.
|
|
257
|
+
"""
|
|
258
|
+
pass
|
|
259
|
+
class Config:
|
|
260
|
+
populate_by_name = True
|
|
261
|
+
|
|
262
|
+
class InsertAbsencesAsyncRequest(BaseModel):
|
|
263
|
+
"""
|
|
264
|
+
Schema for inserting absences asynchronously request.
|
|
265
|
+
"""
|
|
266
|
+
absences: List[AbsenceData]
|
|
267
|
+
class Config:
|
|
268
|
+
populate_by_name = True
|
|
269
|
+
|
|
270
|
+
class GetAbsenceCalendarDaysForCompanyRequest(BaseModel):
|
|
271
|
+
"""
|
|
272
|
+
Schema for getting absence calendar days for company request.
|
|
273
|
+
|
|
274
|
+
"""
|
|
275
|
+
status: Optional[int] = Field(default=None)
|
|
276
|
+
types: Optional[List[int]] = Field(default=None)
|
|
277
|
+
company_absence_type_uids: Optional[List[UUID]] = Field(alias="companyAbsenceTypeUids", default=None)
|
|
278
|
+
employee_uids: Optional[List[UUID]] = Field(alias="employeeUids", default=None)
|
|
279
|
+
company_department_uids: Optional[List[UUID]] = Field(alias="companyDepartmentUids", default=None)
|
|
280
|
+
period: Optional[Dict[str, Any]] = Field(default=None)
|
|
281
|
+
attachments: Optional[int] = Field(default=None)
|
|
282
|
+
skip: Optional[int] = Field(default=None)
|
|
283
|
+
take: Optional[int] = Field(default=None)
|
|
284
|
+
class Config:
|
|
285
|
+
populate_by_name = True
|
|
286
|
+
|
|
287
|
+
class ValidateAbsencesAsyncRequest(BaseModel):
|
|
288
|
+
"""
|
|
289
|
+
Schema for validating absences asynchronously request.
|
|
290
|
+
"""
|
|
291
|
+
absences: List[AbsenceData]
|
|
292
|
+
class Config:
|
|
293
|
+
populate_by_name = True
|
|
294
|
+
|
|
295
|
+
class SplitEmployeeAbsenceRequest(BaseModel):
|
|
296
|
+
"""
|
|
297
|
+
Schema for splitting employee absence request.
|
|
298
|
+
"""
|
|
299
|
+
number_of_days: float = Field(alias="numberOfDays")
|
|
300
|
+
payroll_uid: UUID = Field(example="00000000-0000-0000-0000-000000000000", alias="payrollUid")
|
|
301
|
+
class Config:
|
|
302
|
+
populate_by_name = True
|
|
303
|
+
|
|
304
|
+
class GetAbsenceDataPerEmployeeRequest(BaseModel):
|
|
305
|
+
"""
|
|
306
|
+
Schema for getting absence data per employee request.
|
|
307
|
+
"""
|
|
308
|
+
datefrom: datetime = Field(alias="dateFrom")
|
|
309
|
+
dateto: datetime = Field(alias="dateTo")
|
|
310
|
+
class Config:
|
|
311
|
+
populate_by_name = True
|
|
312
|
+
|
|
313
|
+
# BrynQ Pandera DataFrame Model for Absence Days Per Company
|
|
314
|
+
from pandera.typing import Series
|
|
315
|
+
import pandera as pa
|
|
316
|
+
import pandas as pd
|
|
317
|
+
from brynq_sdk_functions import BrynQPanderaDataFrameModel
|
|
318
|
+
|
|
319
|
+
class AbsenceGet(BrynQPanderaDataFrameModel):
|
|
320
|
+
"""Flattened schema for Zenegy Absence Output data"""
|
|
321
|
+
# Employee fields
|
|
322
|
+
employee_title: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Employee title", alias="employee__title")
|
|
323
|
+
employee_is_active: Optional[Series[pd.BooleanDtype]] = pa.Field(coerce=True, nullable=True, description="Employee active status", alias="employee__isActive")
|
|
324
|
+
employee_is_resigned: Optional[Series[pd.BooleanDtype]] = pa.Field(coerce=True, nullable=True, description="Employee resigned status", alias="employee__isResigned")
|
|
325
|
+
employee_cpr: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Employee CPR number", alias="employee__cpr")
|
|
326
|
+
employee_salary_type: Optional[Series[pd.Int64Dtype]] = pa.Field(coerce=True, nullable=True, description="Employee salary type", alias="employee__salaryType")
|
|
327
|
+
employee_contact_phone: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Employee contact phone", alias="employee__contactPhone")
|
|
328
|
+
employee_contact_email: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Employee contact email", alias="employee__contactEmail")
|
|
329
|
+
employee_type: Optional[Series[pd.Int64Dtype]] = pa.Field(coerce=True, nullable=True, description="Employee type", alias="employee__type")
|
|
330
|
+
employee_salary_payout_period: Optional[Series[pd.Int64Dtype]] = pa.Field(coerce=True, nullable=True, description="Employee salary payout period", alias="employee__salaryPayoutPeriod")
|
|
331
|
+
employee_revenue_type: Optional[Series[pd.Int64Dtype]] = pa.Field(coerce=True, nullable=True, description="Employee revenue type", alias="employee__revenueType")
|
|
332
|
+
employee_income_type: Optional[Series[pd.Int64Dtype]] = pa.Field(coerce=True, nullable=True, description="Employee income type", alias="employee__incomeType")
|
|
333
|
+
employee_holiday_pay_receiver_type: Optional[Series[pd.Int64Dtype]] = pa.Field(coerce=True, nullable=True, description="Employee holiday pay receiver type", alias="employee__holidayPayReceiverType")
|
|
334
|
+
employee_extra_holiday_entitlement_rule: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Employee extra holiday entitlement rule", alias="employee__extraHolidayEntitlementRule")
|
|
335
|
+
employee_name: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Employee name", alias="employee__name")
|
|
336
|
+
employee_employee_number: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Employee number", alias="employee__employeeNumber")
|
|
337
|
+
employee_extra_employee_number: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Employee extra employee number", alias="employee__extraEmployeeNumber")
|
|
338
|
+
employee_id: Optional[Series[pd.Int64Dtype]] = pa.Field(coerce=True, nullable=True, description="Employee ID", alias="employee__id")
|
|
339
|
+
employee_uid: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Employee UID", alias="employee__uid")
|
|
340
|
+
|
|
341
|
+
# Department fields
|
|
342
|
+
employee_department_name: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Employee department name", alias="employee__department__name")
|
|
343
|
+
employee_department_number: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Employee department number", alias="employee__department__number")
|
|
344
|
+
employee_department_has_work_schema: Optional[Series[pd.BooleanDtype]] = pa.Field(coerce=True, nullable=True, description="Employee department has work schema", alias="employee__department__hasWorkSchema")
|
|
345
|
+
employee_department_id: Optional[Series[pd.Int64Dtype]] = pa.Field(coerce=True, nullable=True, description="Employee department ID", alias="employee__department__id")
|
|
346
|
+
employee_department_uid: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Employee department UID", alias="employee__department__uid")
|
|
347
|
+
|
|
348
|
+
# Direct Employee fields (not nested)
|
|
349
|
+
employee_cost_center: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Employee cost center", alias="employee__costCenter")
|
|
350
|
+
employee_profit_center: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Employee profit center", alias="employee__profitCenter")
|
|
351
|
+
employee_car_registration_number: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Employee car registration number", alias="employee__carRegistrationNumber")
|
|
352
|
+
|
|
353
|
+
# Cost Center fields (nested)
|
|
354
|
+
employee_cost_center_id: Optional[Series[pd.Int64Dtype]] = pa.Field(coerce=True, nullable=True, description="Employee cost center ID", alias="employee__costCenter__id")
|
|
355
|
+
employee_cost_center_uid: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Employee cost center UID", alias="employee__costCenter__uid")
|
|
356
|
+
employee_cost_center_name: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Employee cost center name", alias="employee__costCenter__name")
|
|
357
|
+
employee_cost_center_number: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Employee cost center number", alias="employee__costCenter__number")
|
|
358
|
+
employee_cost_center_type: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Employee cost center type", alias="employee__costCenter__type")
|
|
359
|
+
|
|
360
|
+
# Profit Center fields
|
|
361
|
+
employee_profit_center_id: Optional[Series[pd.Int64Dtype]] = pa.Field(coerce=True, nullable=True, description="Employee profit center ID", alias="employee__profitCenter__id")
|
|
362
|
+
employee_profit_center_uid: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Employee profit center UID", alias="employee_profitCenter__uid")
|
|
363
|
+
employee_profit_center_name: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Employee profit center name", alias="employee__profitCenter__name")
|
|
364
|
+
employee_profit_center_number: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Employee profit center number", alias="employee__profitCenter__number")
|
|
365
|
+
employee_profit_center_type: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Employee profit center type", alias="employee__profitCenter__type")
|
|
366
|
+
|
|
367
|
+
# Absence fields
|
|
368
|
+
from_date: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Absence from date", alias="fromDate")
|
|
369
|
+
to_date: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Absence to date", alias="toDate")
|
|
370
|
+
note: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Absence note", alias="note")
|
|
371
|
+
absence_type: Optional[Series[pd.Int64Dtype]] = pa.Field(coerce=True, nullable=True, description="Absence type", alias="absenceType")
|
|
372
|
+
status: Optional[Series[pd.Int64Dtype]] = pa.Field(coerce=True, nullable=True, description="Absence status", alias="status")
|
|
373
|
+
days: Optional[Series[pd.Float64Dtype]] = pa.Field(coerce=True, nullable=True, description="Absence days", alias="days")
|
|
374
|
+
project_id: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Project ID", alias="projectId")
|
|
375
|
+
attachment_count: Optional[Series[pd.Int64Dtype]] = pa.Field(coerce=True, nullable=True, description="Attachment count", alias="attachmentCount")
|
|
376
|
+
absence_type_name: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Absence type name", alias="absenceTypeName")
|
|
377
|
+
employee_payroll_fk: Optional[Series[pd.Int64Dtype]] = pa.Field(coerce=True, nullable=True, description="Employee payroll foreign key", alias="employeePayrollFk")
|
|
378
|
+
id: Optional[Series[pd.Int64Dtype]] = pa.Field(coerce=True, nullable=True, description="Absence ID", alias="id")
|
|
379
|
+
uid: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Absence UID", alias="uid")
|
|
380
|
+
|
|
381
|
+
# Company Absence Type fields
|
|
382
|
+
company_absence_type_name: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Company absence type name", alias="companyAbsenceType__name")
|
|
383
|
+
company_absence_type_number: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Company absence type number", alias="companyAbsenceType__number")
|
|
384
|
+
company_absence_type_absence_type_name: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Company absence type absence type name", alias="companyAbsenceType__absenceTypeName")
|
|
385
|
+
company_absence_type_absence_type: Optional[Series[pd.Int64Dtype]] = pa.Field(coerce=True, nullable=True, description="Company absence type absence type", alias="companyAbsenceType__absenceType")
|
|
386
|
+
company_absence_type_is_custom_absence_type: Optional[Series[pd.BooleanDtype]] = pa.Field(coerce=True, nullable=True, description="Company absence type is custom absence type", alias="companyAbsenceType__isCustomAbsenceType")
|
|
387
|
+
company_absence_type_search_name: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Company absence type search name", alias="companyAbsenceType__searchName")
|
|
388
|
+
company_absence_type_id: Optional[Series[pd.Int64Dtype]] = pa.Field(coerce=True, nullable=True, description="Company absence type ID", alias="companyAbsenceType__id")
|
|
389
|
+
company_absence_type_uid: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Company absence type UID", alias="companyAbsenceType__uid")
|
|
390
|
+
|
|
391
|
+
class _Annotation:
|
|
392
|
+
primary_key = "uid"
|
|
393
|
+
foreign_keys = {}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# Generated schemas for tag: Companies
|
|
2
|
+
|
|
3
|
+
from pydantic import BaseModel, Field, RootModel
|
|
4
|
+
from typing import Dict, List, Optional, Any
|
|
5
|
+
from uuid import UUID
|
|
6
|
+
|
|
7
|
+
# BrynQ Pandera DataFrame Model for Companies
|
|
8
|
+
from pandera.typing import Series
|
|
9
|
+
import pandera as pa
|
|
10
|
+
import pandas as pd
|
|
11
|
+
from brynq_sdk_functions import BrynQPanderaDataFrameModel
|
|
12
|
+
|
|
13
|
+
class CompaniesGet(BrynQPanderaDataFrameModel):
|
|
14
|
+
"""Flattened schema for Zenegy Companies Output data"""
|
|
15
|
+
# Basic company fields
|
|
16
|
+
user_id: Optional[Series[pd.Int64Dtype]] = pa.Field(coerce=True, nullable=True, description="User ID", alias="userId")
|
|
17
|
+
employee_uid: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Employee UID", alias="employeeUid")
|
|
18
|
+
vat_number: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="VAT number", alias="vatNumber")
|
|
19
|
+
is_valid: Optional[Series[pd.BooleanDtype]] = pa.Field(coerce=True, nullable=True, description="Is valid flag", alias="isValid")
|
|
20
|
+
purpose_type: Optional[Series[pd.Int64Dtype]] = pa.Field(coerce=True, nullable=True, description="Purpose type", alias="purposeType")
|
|
21
|
+
status: Optional[Series[pd.Int64Dtype]] = pa.Field(coerce=True, nullable=True, description="Status", alias="status")
|
|
22
|
+
source: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Source", alias="source")
|
|
23
|
+
area: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Area", alias="area")
|
|
24
|
+
id: Optional[Series[pd.Int64Dtype]] = pa.Field(coerce=True, nullable=True, description="Company ID", alias="id")
|
|
25
|
+
uid: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Company UID", alias="uid")
|
|
26
|
+
name: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Company name", alias="name")
|
|
27
|
+
logo_url: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Logo URL", alias="logoUrl")
|
|
28
|
+
|
|
29
|
+
# Roles, products, and modules (as JSON strings since they are lists)
|
|
30
|
+
roles: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Roles list", alias="roles")
|
|
31
|
+
products: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Products list", alias="products")
|
|
32
|
+
modules: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Modules list", alias="modules")
|
|
33
|
+
|
|
34
|
+
# Override app scopes (as JSON string since it's a list of objects)
|
|
35
|
+
override_app_scopes: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Override app scopes", alias="overrideAppScopes")
|
|
36
|
+
|
|
37
|
+
# Identity providers (as JSON string since it's a list of objects)
|
|
38
|
+
identity_providers: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Identity providers", alias="identityProviders")
|
|
39
|
+
|
|
40
|
+
class _Annotation:
|
|
41
|
+
primary_key = "uid"
|
|
42
|
+
foreign_keys = {}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# Generated schemas for tag: CompanyCostCenter
|
|
2
|
+
|
|
3
|
+
from pydantic import BaseModel, Field, RootModel
|
|
4
|
+
from typing import Dict, List, Optional, Any
|
|
5
|
+
from uuid import UUID
|
|
6
|
+
|
|
7
|
+
from pandera.typing import Series
|
|
8
|
+
import pandera as pa
|
|
9
|
+
import pandas as pd
|
|
10
|
+
from brynq_sdk_functions import BrynQPanderaDataFrameModel
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class CostCenterCreate(BaseModel):
|
|
14
|
+
cost_center_name: str = Field(
|
|
15
|
+
alias="costCenterName",
|
|
16
|
+
description="Cost center display name",
|
|
17
|
+
example="Finance"
|
|
18
|
+
)
|
|
19
|
+
cost_center_code: str = Field(
|
|
20
|
+
alias="costCenterCode",
|
|
21
|
+
description="Cost center code",
|
|
22
|
+
example="FIN"
|
|
23
|
+
)
|
|
24
|
+
type: str = Field(
|
|
25
|
+
description="Cost center type/category",
|
|
26
|
+
example="department"
|
|
27
|
+
)
|
|
28
|
+
employee_uids: Optional[List[UUID]] = Field(
|
|
29
|
+
alias="employeeUids", default=None,
|
|
30
|
+
description="List of employee UIDs assigned to the cost center",
|
|
31
|
+
example=["00000000-0000-0000-0000-000000000000"]
|
|
32
|
+
)
|
|
33
|
+
|
|
34
|
+
class Config:
|
|
35
|
+
populate_by_name = True
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
class CostCentersGet(BrynQPanderaDataFrameModel):
|
|
39
|
+
"""Flattened schema for Zenegy Cost Centers Output data"""
|
|
40
|
+
cost_center_name: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Cost center name", alias="costCenterName")
|
|
41
|
+
cost_center_code: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Cost center code", alias="costCenterCode")
|
|
42
|
+
type: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Cost center type", alias="type")
|
|
43
|
+
id: Optional[Series[pd.Int64Dtype]] = pa.Field(coerce=True, nullable=True, description="Cost center ID", alias="id")
|
|
44
|
+
uid: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Cost center UID", alias="uid")
|
|
45
|
+
|
|
46
|
+
class _Annotation:
|
|
47
|
+
primary_key = "uid"
|
|
48
|
+
foreign_keys = {}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
# Generated schemas for tag: CompanyDepartment
|
|
2
|
+
|
|
3
|
+
from pydantic import BaseModel, Field
|
|
4
|
+
from typing import Dict, List, Optional, Any
|
|
5
|
+
from uuid import UUID
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class ResponsiblePerson(BaseModel):
|
|
9
|
+
"""Schema for responsible person information."""
|
|
10
|
+
income_type: Optional[int] = Field(alias="incomeType", default=None, description="Income type code", example=1)
|
|
11
|
+
holiday_pay_receiver_type: Optional[int] = Field(alias="holidayPayReceiverType", default=None, description="Holiday pay receiver type code", example=2)
|
|
12
|
+
extra_holiday_entitlement_rule: Optional[str] = Field(alias="extraHolidayEntitlementRule", default=None, description="Extra holiday entitlement rule name/code", example="RULE_A")
|
|
13
|
+
name: Optional[str] = Field(default=None, description="Responsible person name", example="Jane Doe")
|
|
14
|
+
employee_number: Optional[str] = Field(alias="employeeNumber", default=None, description="Employee number", example="E-2001")
|
|
15
|
+
extra_employee_number: Optional[str] = Field(alias="extraEmployeeNumber", default=None, description="Secondary employee number", example="EXT-10")
|
|
16
|
+
id: Optional[int] = Field(default=None, description="Internal numeric identifier", example=12)
|
|
17
|
+
uid: Optional[UUID] = Field(example="00000000-0000-0000-0000-000000000000", default=None, description="Responsible person UID")
|
|
18
|
+
|
|
19
|
+
class Config:
|
|
20
|
+
populate_by_name = True
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
class CompanyWorkSchema(BaseModel):
|
|
24
|
+
"""Schema for company work schema information."""
|
|
25
|
+
name: Optional[str] = Field(default=None, description="Work schema name", example="Standard 7.4h")
|
|
26
|
+
working_hours_per_day: Optional[float] = Field(alias="workingHoursPerDay", default=None, description="Working hours per day", example=7.4)
|
|
27
|
+
can_be_deleted: Optional[bool] = Field(alias="canBeDeleted", default=None, description="Whether this work schema can be deleted", example=True)
|
|
28
|
+
id: Optional[int] = Field(default=None, description="Internal numeric identifier", example=3)
|
|
29
|
+
uid: Optional[UUID] = Field(example="00000000-0000-0000-0000-000000000000", default=None, description="Work schema UID")
|
|
30
|
+
|
|
31
|
+
class Config:
|
|
32
|
+
populate_by_name = True
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
class CompanyDepartmentData(BaseModel):
|
|
36
|
+
"""Schema for company department data."""
|
|
37
|
+
is_delete_allowed: Optional[bool] = Field(alias="isDeleteAllowed", default=None, description="Is delete allowed for this department", example=True)
|
|
38
|
+
responsible_persons: Optional[List[ResponsiblePerson]] = Field(alias="responsiblePersons", default=None, description="List of responsible persons")
|
|
39
|
+
company_work_schemas: Optional[List[CompanyWorkSchema]] = Field(alias="companyWorkSchemas", default=None, description="List of work schemas for this department")
|
|
40
|
+
name: Optional[str] = Field(default=None, description="Department name", example="Sales")
|
|
41
|
+
number: Optional[str] = Field(default=None, description="Department number/code", example="D-100")
|
|
42
|
+
has_work_schema: Optional[bool] = Field(alias="hasWorkSchema", default=None, description="Whether department has a work schema", example=True)
|
|
43
|
+
id: Optional[int] = Field(default=None, description="Internal numeric identifier", example=15)
|
|
44
|
+
uid: Optional[UUID] = Field(example="00000000-0000-0000-0000-000000000000", default=None, description="Department UID")
|
|
45
|
+
|
|
46
|
+
class Config:
|
|
47
|
+
populate_by_name = True
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
class GetCompanyDepartmentsAsyncResponse(BaseModel):
|
|
51
|
+
total_records: Optional[int] = Field(alias="totalRecords", default=None, description="Total records in data source", example=120)
|
|
52
|
+
total_display_records: Optional[int] = Field(alias="totalDisplayRecords", default=None, description="Total records in current page", example=50)
|
|
53
|
+
data: Optional[List[CompanyDepartmentData]] = Field(default=None, description="List of department data entries")
|
|
54
|
+
class Config:
|
|
55
|
+
populate_by_name = True
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
class InsertCompanyDepartmentRequest(BaseModel):
|
|
59
|
+
companydepartmenttemplateuid: UUID = Field(example="00000000-0000-0000-0000-000000000000", alias="companyDepartmentTemplateUid", description="Template UID to base the department on")
|
|
60
|
+
name: str = Field(description="Department name", example="Support")
|
|
61
|
+
number: str = Field(description="Department number/code", example="D-200")
|
|
62
|
+
responsibleemployeepersons: Optional[List[UUID]] = Field(alias="responsibleEmployeePersons", default=None, description="List of responsible employee UIDs", example=["00000000-0000-0000-0000-000000000000"])
|
|
63
|
+
class Config:
|
|
64
|
+
populate_by_name = True
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
class GetCompanyDepartmentResponse(BaseModel):
|
|
68
|
+
is_delete_allowed: Optional[bool] = Field(alias="isDeleteAllowed", default=None, description="Is delete allowed for this department", example=True)
|
|
69
|
+
responsible_persons: Optional[List[ResponsiblePerson]] = Field(alias="responsiblePersons", default=None, description="List of responsible persons")
|
|
70
|
+
company_work_schemas: Optional[List[CompanyWorkSchema]] = Field(alias="companyWorkSchemas", default=None, description="List of work schemas for this department")
|
|
71
|
+
name: Optional[str] = Field(default=None, description="Department name", example="Sales")
|
|
72
|
+
number: Optional[str] = Field(default=None, description="Department number/code", example="D-100")
|
|
73
|
+
has_work_schema: Optional[bool] = Field(alias="hasWorkSchema", default=None, description="Whether department has a work schema", example=True)
|
|
74
|
+
id: Optional[int] = Field(default=None, description="Internal numeric identifier", example=15)
|
|
75
|
+
uid: Optional[UUID] = Field(example="00000000-0000-0000-0000-000000000000", default=None, description="Department UID")
|
|
76
|
+
class Config:
|
|
77
|
+
populate_by_name = True
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
class GetWholeCompanyDepartmentResponse(BaseModel):
|
|
81
|
+
accountings: Optional[List[Dict[str, Any]]] = Field(default=None, description="Accounting objects related to department")
|
|
82
|
+
is_delete_allowed: Optional[bool] = Field(alias="isDeleteAllowed", default=None, description="Is delete allowed for this department", example=True)
|
|
83
|
+
responsible_persons: Optional[List[ResponsiblePerson]] = Field(alias="responsiblePersons", default=None, description="List of responsible persons")
|
|
84
|
+
company_work_schemas: Optional[List[CompanyWorkSchema]] = Field(alias="companyWorkSchemas", default=None, description="List of work schemas for this department")
|
|
85
|
+
name: Optional[str] = Field(default=None, description="Department name", example="Sales")
|
|
86
|
+
number: Optional[str] = Field(default=None, description="Department number/code", example="D-100")
|
|
87
|
+
has_work_schema: Optional[bool] = Field(alias="hasWorkSchema", default=None, description="Whether department has a work schema", example=True)
|
|
88
|
+
id: Optional[int] = Field(default=None, description="Internal numeric identifier", example=15)
|
|
89
|
+
uid: Optional[UUID] = Field(example="00000000-0000-0000-0000-000000000000", default=None, description="Department UID")
|
|
90
|
+
class Config:
|
|
91
|
+
populate_by_name = True
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
class GetCompanyDepartmentAccountingsAsyncResponse(BaseModel):
|
|
95
|
+
totalrecords: Optional[int] = Field(alias="totalRecords", default=None, description="Total records in data source", example=120)
|
|
96
|
+
totaldisplayrecords: Optional[int] = Field(alias="totalDisplayRecords", default=None, description="Total records in current page", example=50)
|
|
97
|
+
data: Optional[List[Dict[str, Any]]] = Field(default=None, description="List of accounting entries")
|
|
98
|
+
class Config:
|
|
99
|
+
populate_by_name = True
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
class GetCompanyDepartmentsListAsyncRequest(BaseModel):
|
|
103
|
+
skip: Optional[int] = Field(default=None, description="Number of records to skip for pagination", example=0)
|
|
104
|
+
take: Optional[int] = Field(default=None, description="Number of records to take for pagination", example=50)
|
|
105
|
+
companydepartmentuids: Optional[List[UUID]] = Field(alias="companyDepartmentUids", default=None, description="Filter by department UIDs", example=["00000000-0000-0000-0000-000000000000"])
|
|
106
|
+
responsiblepersonsuids: Optional[List[UUID]] = Field(alias="responsiblePersonsUids", default=None, description="Filter by responsible person UIDs", example=["00000000-0000-0000-0000-000000000000"])
|
|
107
|
+
departmentsortoptions: Optional[Dict[str, Any]] = Field(alias="departmentSortOptions", default=None, description="Sorting options for departments", example={"field": "name", "direction": "asc"})
|
|
108
|
+
departmentoverrides: Optional[List[bool]] = Field(alias="departmentOverrides", default=None, description="Override flags for department list", example=[True, False])
|
|
109
|
+
class Config:
|
|
110
|
+
populate_by_name = True
|
|
111
|
+
|
|
112
|
+
# BrynQ Pandera DataFrame Model for Departments
|
|
113
|
+
from pandera.typing import Series
|
|
114
|
+
import pandera as pa
|
|
115
|
+
import pandas as pd
|
|
116
|
+
from brynq_sdk_functions import BrynQPanderaDataFrameModel
|
|
117
|
+
|
|
118
|
+
class DepartmentsGet(BrynQPanderaDataFrameModel):
|
|
119
|
+
"""Flattened schema for Zenegy Departments Output data"""
|
|
120
|
+
# Basic department fields
|
|
121
|
+
is_delete_allowed: Optional[Series[pd.BooleanDtype]] = pa.Field(coerce=True, nullable=True, description="Is delete allowed", alias="isDeleteAllowed")
|
|
122
|
+
has_override: Optional[Series[pd.BooleanDtype]] = pa.Field(coerce=True, nullable=True, description="Has override", alias="hasOverride")
|
|
123
|
+
name: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Department name", alias="name")
|
|
124
|
+
number: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Department number", alias="number")
|
|
125
|
+
has_work_schema: Optional[Series[pd.BooleanDtype]] = pa.Field(coerce=True, nullable=True, description="Has work schema", alias="hasWorkSchema")
|
|
126
|
+
id: Optional[Series[pd.Int64Dtype]] = pa.Field(coerce=True, nullable=True, description="Department ID", alias="id")
|
|
127
|
+
uid: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Department UID", alias="uid")
|
|
128
|
+
|
|
129
|
+
# Responsible persons (as JSON string since it's a list of objects)
|
|
130
|
+
responsible_persons: Optional[Series[object]] = pa.Field(coerce=True, nullable=True, description="Responsible persons list", alias="responsiblePersons")
|
|
131
|
+
|
|
132
|
+
# Finance department dimension (nested object)
|
|
133
|
+
finance_department_dimension: Optional[Series[object]] = pa.Field(coerce=True, nullable=True, description="Finance department dimension", alias="financeDepartmentDimension")
|
|
134
|
+
|
|
135
|
+
# Company work schemas as array (when root-level normalization is used)
|
|
136
|
+
company_work_schemas: Optional[Series[object]] = pa.Field(coerce=True, nullable=True, description="Company work schemas", alias="companyWorkSchemas")
|
|
137
|
+
|
|
138
|
+
# Work schema fields (from expanded companyWorkSchemas)
|
|
139
|
+
work_schema_name: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Work schema name", alias="workSchema__name")
|
|
140
|
+
work_schema_working_hours_per_day: Optional[Series[pd.Float64Dtype]] = pa.Field(coerce=True, nullable=True, description="Working hours per day", alias="workSchema__workingHoursPerDay")
|
|
141
|
+
work_schema_can_be_deleted: Optional[Series[pd.BooleanDtype]] = pa.Field(coerce=True, nullable=True, description="Can be deleted", alias="workSchema__canBeDeleted")
|
|
142
|
+
work_schema_id: Optional[Series[pd.Int64Dtype]] = pa.Field(coerce=True, nullable=True, description="Work schema ID", alias="workSchema__id")
|
|
143
|
+
work_schema_uid: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Work schema UID", alias="workSchema__uid")
|
|
144
|
+
|
|
145
|
+
class _Annotation:
|
|
146
|
+
primary_key = "uid"
|
|
147
|
+
foreign_keys = {}
|