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.
Files changed (33) hide show
  1. brynq_sdk_zenegy/__init__.py +23 -0
  2. brynq_sdk_zenegy/absence.py +100 -0
  3. brynq_sdk_zenegy/companies.py +43 -0
  4. brynq_sdk_zenegy/cost_center.py +80 -0
  5. brynq_sdk_zenegy/departments.py +77 -0
  6. brynq_sdk_zenegy/employee_documents.py +40 -0
  7. brynq_sdk_zenegy/employees.py +301 -0
  8. brynq_sdk_zenegy/global_value_sets.py +260 -0
  9. brynq_sdk_zenegy/global_values.py +265 -0
  10. brynq_sdk_zenegy/paychecks.py +119 -0
  11. brynq_sdk_zenegy/payroll.py +117 -0
  12. brynq_sdk_zenegy/payslips.py +43 -0
  13. brynq_sdk_zenegy/pensions.py +118 -0
  14. brynq_sdk_zenegy/schemas/__init__.py +30 -0
  15. brynq_sdk_zenegy/schemas/absences.py +393 -0
  16. brynq_sdk_zenegy/schemas/companies.py +42 -0
  17. brynq_sdk_zenegy/schemas/company_cost_centers.py +48 -0
  18. brynq_sdk_zenegy/schemas/company_departments.py +147 -0
  19. brynq_sdk_zenegy/schemas/employee_documents.py +30 -0
  20. brynq_sdk_zenegy/schemas/employee_pay_checks.py +169 -0
  21. brynq_sdk_zenegy/schemas/employee_pensions.py +140 -0
  22. brynq_sdk_zenegy/schemas/employees.py +2372 -0
  23. brynq_sdk_zenegy/schemas/global_value_sets.py +185 -0
  24. brynq_sdk_zenegy/schemas/global_values.py +433 -0
  25. brynq_sdk_zenegy/schemas/payrolls.py +134 -0
  26. brynq_sdk_zenegy/schemas/payslips.py +32 -0
  27. brynq_sdk_zenegy/schemas/supplements_and_deductions_rates.py +189 -0
  28. brynq_sdk_zenegy/supplements_and_deductions_rates.py +71 -0
  29. brynq_sdk_zenegy/zenegy.py +221 -0
  30. brynq_sdk_zenegy-1.3.3.dist-info/METADATA +16 -0
  31. brynq_sdk_zenegy-1.3.3.dist-info/RECORD +33 -0
  32. brynq_sdk_zenegy-1.3.3.dist-info/WHEEL +5 -0
  33. brynq_sdk_zenegy-1.3.3.dist-info/top_level.txt +1 -0
@@ -0,0 +1,30 @@
1
+ # Generated schemas for tag: EmployeeDocuments
2
+
3
+ from typing import Optional
4
+
5
+ # BrynQ Pandera DataFrame Model for Employee Documents
6
+ from pandera.typing import Series
7
+ import pandera as pa
8
+ import pandas as pd
9
+ from brynq_sdk_functions import BrynQPanderaDataFrameModel
10
+
11
+
12
+ class EmployeeDocumentsGet(BrynQPanderaDataFrameModel):
13
+ """Flattened schema for Zenegy Employee Documents output data"""
14
+ employee_uid: Optional[Series[pd.StringDtype]] = pa.Field(nullable=True, description="Employee UID", alias="employeeUid",)
15
+ created_on: Optional[Series[pd.StringDtype]] = pa.Field(nullable=True, description="Document creation timestamp", alias="createdOn",)
16
+ file_name: Optional[Series[pd.StringDtype]] = pa.Field(nullable=True, description="Original file name", alias="fileName")
17
+ file_size: Optional[Series[pd.Int64Dtype]] = pa.Field(nullable=True, description="Document size in bytes", alias="fileSize")
18
+ description: Optional[Series[pd.StringDtype]] = pa.Field(nullable=True, description="Document description", alias="description")
19
+ is_protected: Optional[Series[pd.BooleanDtype]] = pa.Field(nullable=True, description="Indicates if the document is protected", alias="isProtected")
20
+ extension: Optional[Series[pd.Int64Dtype]] = pa.Field(nullable=True, description="File extension enum", alias="extension", isin=[0, 1, 2, 3, 4, 5])
21
+ is_document_owner: Optional[Series[pd.BooleanDtype]] = pa.Field(nullable=True, description="Whether the employee owns the document", alias="isDocumentOwner")
22
+ id: Optional[Series[pd.Int64Dtype]] = pa.Field(nullable=True, description="Numeric document ID", alias="id")
23
+ uid: Optional[Series[pd.StringDtype]] = pa.Field(nullable=True,description="Document UID", alias="uid")
24
+
25
+ class Config:
26
+ coerce = True
27
+
28
+ class _Annotation:
29
+ primary_key = "uid"
30
+ foreign_keys = {}
@@ -0,0 +1,169 @@
1
+ # Generated schemas for tag: EmployeePayChecks
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
+ from brynq_sdk_zenegy.schemas.company_departments import CompanyDepartmentData
9
+
10
+ class PaycheckCreate(BaseModel):
11
+ """Schema for creating pay checks."""
12
+ paycheck_for: Optional[int] = Field(alias="payCheckFor", default=None, description="Target paycheck type/code", example=1)
13
+ name: str = Field(..., min_length=0, max_length=128, description="Paycheck item name", example="Bonus")
14
+ unit: Optional[float] = Field(default=None, description="Units for the item", example=10.0)
15
+ payment_per_unit: Optional[float] = Field(alias="paymentPerUnit", default=None, description="Payment per unit", example=150.0)
16
+ rate_uid: Optional[UUID] = Field(example="00000000-0000-0000-0000-000000000000", alias="rateUid", default=None, description="Linked rate UID")
17
+ reg_number: Optional[str] = Field(alias="regNumber", pattern=r"^\d{4}$", description="Must be exactly 4 digits", default=None, example="0001")
18
+ konto_number: Optional[str] = Field(alias="kontoNumber", pattern=r"^\d{10}$", description="Must be exactly 10 digits", default=None, example="1234567890")
19
+ include_in_pension_base: Optional[bool] = Field(alias="includeInPensionBase", default=None, description="Include in pension base", example=True)
20
+ include_in_am_pension_base: Optional[bool] = Field(alias="includeInAmPensionBase", default=None, description="Include in AM pension base", example=True)
21
+ is_included_in_holiday_entitlement_salary: Optional[bool] = Field(alias="isIncludedInHolidayEntitlementSalary", default=None, description="Included in holiday entitlement salary", example=False)
22
+ department_uid: Optional[UUID] = Field(example="00000000-0000-0000-0000-000000000000", alias="departmentUid", default=None, description="Department UID")
23
+ cost_center_uid: Optional[UUID] = Field(example="00000000-0000-0000-0000-000000000000", alias="costCenterUid", default=None, description="Cost center UID")
24
+ profit_center_uid: Optional[UUID] = Field(example="00000000-0000-0000-0000-000000000000", alias="profitCenterUid", default=None, description="Profit center UID")
25
+ percentage: Optional[float] = Field(default=None, description="Percentage for calculation", example=12.5)
26
+ is_included_in_holiday_entitlement_salary_reduction: Optional[bool] = Field(alias="isIncludedInHolidayEntitlementSalaryReduction", default=None, description="Included in holiday entitlement salary reduction", example=False)
27
+
28
+ class Config:
29
+ populate_by_name = True
30
+
31
+ class PaycheckUpdate(BaseModel):
32
+ """Schema for updating pay checks."""
33
+ paycheck_for: Optional[int] = Field(alias="payCheckFor", default=None, description="Target paycheck type/code", example=1)
34
+ name: str = Field(..., min_length=0, max_length=128, description="Paycheck item name", example="Bonus")
35
+ unit: Optional[float] = Field(default=None, description="Units for the item", example=10.0)
36
+ payment_per_unit: Optional[float] = Field(alias="paymentPerUnit", default=None, description="Payment per unit", example=150.0)
37
+ rate_uid: Optional[UUID] = Field(example="00000000-0000-0000-0000-000000000000", alias="rateUid", default=None, description="Linked rate UID")
38
+ reg_number: Optional[str] = Field(alias="regNumber", pattern=r"^\d{4}$", description="Must be exactly 4 digits", default=None, example="0001")
39
+ konto_number: Optional[str] = Field(alias="kontoNumber", pattern=r"^\d{10}$", description="Must be exactly 10 digits", default=None, example="1234567890")
40
+ include_in_pension_base: Optional[bool] = Field(alias="includeInPensionBase", default=None, description="Include in pension base", example=True)
41
+ include_in_am_pension_base: Optional[bool] = Field(alias="includeInAmPensionBase", default=None, description="Include in AM pension base", example=True)
42
+ is_included_in_holiday_entitlement_salary: Optional[bool] = Field(alias="isIncludedInHolidayEntitlementSalary", default=None, description="Included in holiday entitlement salary", example=False)
43
+ department_uid: Optional[UUID] = Field(example="00000000-0000-0000-0000-000000000000", alias="departmentUid", default=None, description="Department UID")
44
+ cost_center_uid: Optional[UUID] = Field(example="00000000-0000-0000-0000-000000000000", alias="costCenterUid", default=None, description="Cost center UID")
45
+ profit_center_uid: Optional[UUID] = Field(example="00000000-0000-0000-0000-000000000000", alias="profitCenterUid", default=None, description="Profit center UID")
46
+ percentage: Optional[float] = Field(default=None, description="Percentage for calculation", example=12.5)
47
+ is_included_in_holiday_entitlement_salary_reduction: Optional[bool] = Field(alias="isIncludedInHolidayEntitlementSalaryReduction", default=None, description="Included in holiday entitlement salary reduction", example=False)
48
+
49
+ class Config:
50
+ populate_by_name = True
51
+
52
+ # BrynQ Pandera DataFrame Model for Pay Checks
53
+ from pandera.typing import Series
54
+ import pandera as pa
55
+ import pandas as pd
56
+ from brynq_sdk_functions import BrynQPanderaDataFrameModel
57
+
58
+ class PayChecksGet(BrynQPanderaDataFrameModel):
59
+ """Flattened schema for Zenegy Pay Checks Output data"""
60
+ # Basic pay check fields
61
+ source: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Source", alias="source")
62
+ paycheck_for: Optional[Series[pd.Int64Dtype]] = pa.Field(coerce=True, nullable=True, description="Pay check for", alias="payCheckFor")
63
+ name: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Pay check name", alias="name")
64
+ unit: Optional[Series[pd.Float64Dtype]] = pa.Field(coerce=True, nullable=True, description="Unit", alias="unit")
65
+ payment_per_unit: Optional[Series[pd.Float64Dtype]] = pa.Field(coerce=True, nullable=True, description="Payment per unit", alias="paymentPerUnit")
66
+ reg_number: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Registration number", alias="regNumber")
67
+ konto_number: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Konto number", alias="kontoNumber")
68
+ is_prorated: Optional[Series[pd.BooleanDtype]] = pa.Field(coerce=True, nullable=True, description="Is prorated", alias="isProrated")
69
+ prorated_amount: Optional[Series[pd.Float64Dtype]] = pa.Field(coerce=True, nullable=True, description="Prorated amount", alias="proratedAmount")
70
+ cost_center_code: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Cost center code", alias="costCenterCode")
71
+ cost_center_name: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Cost center name", alias="costCenterName")
72
+ registration_date: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Registration date", alias="registrationDate")
73
+ should_trigger_retro: Optional[Series[pd.BooleanDtype]] = pa.Field(coerce=True, nullable=True, description="Should trigger retro", alias="shouldTriggerRetro")
74
+ include_in_pension_base: Optional[Series[pd.BooleanDtype]] = pa.Field(coerce=True, nullable=True, description="Include in pension base", alias="includeInPensionBase")
75
+ include_in_am_pension_base: Optional[Series[pd.BooleanDtype]] = pa.Field(coerce=True, nullable=True, description="Include in AM pension base", alias="includeInAmPensionBase")
76
+ is_included_in_holiday_entitlement_salary: Optional[Series[pd.BooleanDtype]] = pa.Field(coerce=True, nullable=True, description="Is included in holiday entitlement salary", alias="isIncludedInHolidayEntitlementSalary")
77
+ created_on: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Created on", alias="createdOn")
78
+ percentage_info_text: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Percentage info text", alias="percentageInfoText")
79
+ calculated_amount: Optional[Series[pd.Float64Dtype]] = pa.Field(coerce=True, nullable=True, description="Calculated amount", alias="calculatedAmount")
80
+ hours: Optional[Series[pd.Float64Dtype]] = pa.Field(coerce=True, nullable=True, description="Hours", alias="hours")
81
+ percentage: Optional[Series[pd.Float64Dtype]] = pa.Field(coerce=True, nullable=True, description="Percentage", alias="percentage")
82
+ is_included_in_holiday_entitlement_salary_reduction: Optional[Series[pd.BooleanDtype]] = pa.Field(coerce=True, nullable=True, description="Is included in holiday entitlement salary reduction", alias="isIncludedInHolidayEntitlementSalaryReduction")
83
+ id: Optional[Series[pd.Int64Dtype]] = pa.Field(coerce=True, nullable=True, description="Pay check ID", alias="id")
84
+ uid: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Pay check UID", alias="uid")
85
+
86
+ # Raw nested objects (if API returns unflattened objects as-is)
87
+ rate: Optional[Series[object]] = pa.Field(coerce=True, nullable=True, description="Raw rate object", alias="rate")
88
+ department: Optional[Series[object]] = pa.Field(coerce=True, nullable=True, description="Raw department object", alias="department")
89
+ cost_center: Optional[Series[object]] = pa.Field(coerce=True, nullable=True, description="Raw cost center object", alias="costCenter")
90
+ profit_center: Optional[Series[object]] = pa.Field(coerce=True, nullable=True, description="Raw profit center object", alias="profitCenter")
91
+ country_specific_dto: Optional[Series[object]] = pa.Field(coerce=True, nullable=True, description="Raw country specific DTO", alias="countrySpecificDto")
92
+
93
+ # Rate fields (nested object)
94
+ rate_has_override: Optional[Series[pd.BooleanDtype]] = pa.Field(coerce=True, nullable=True, description="Rate has override", alias="rate__hasOverride")
95
+ rate_account_type: Optional[Series[pd.Int64Dtype]] = pa.Field(coerce=True, nullable=True, description="Rate account type", alias="rate__accountType")
96
+ rate_account_number: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Rate account number", alias="rate__accountNumber")
97
+ rate_account_text: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Rate account text", alias="rate__accountText")
98
+ rate_wage_code: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Rate wage code", alias="rate__wageCode")
99
+ rate_credit_account_number: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Rate credit account number", alias="rate__creditAccountNumber")
100
+ rate_reg_number: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Rate reg number", alias="rate__regNumber")
101
+ rate_konto_number: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Rate konto number", alias="rate__kontoNumber")
102
+ rate_is_deleted: Optional[Series[pd.BooleanDtype]] = pa.Field(coerce=True, nullable=True, description="Rate is deleted", alias="rate__isDeleted")
103
+ rate_is_prorated_rate: Optional[Series[pd.BooleanDtype]] = pa.Field(coerce=True, nullable=True, description="Rate is prorated rate", alias="rate__isProratedRate")
104
+ rate_include_in_pension_base: Optional[Series[pd.BooleanDtype]] = pa.Field(coerce=True, nullable=True, description="Rate include in pension base", alias="rate__includeInPensionBase")
105
+ rate_include_in_am_pension_base: Optional[Series[pd.BooleanDtype]] = pa.Field(coerce=True, nullable=True, description="Rate include in AM pension base", alias="rate__includeInAmPensionBase")
106
+ rate_is_included_in_holiday_entitlement_salary: Optional[Series[pd.BooleanDtype]] = pa.Field(coerce=True, nullable=True, description="Rate is included in holiday entitlement salary", alias="rate__isIncludedInHolidayEntitlementSalary")
107
+ rate_use_supplement_rates: Optional[Series[pd.BooleanDtype]] = pa.Field(coerce=True, nullable=True, description="Rate use supplement rates", alias="rate__useSupplementRates")
108
+ rate_use_hour_rates: Optional[Series[pd.BooleanDtype]] = pa.Field(coerce=True, nullable=True, description="Rate use hour rates", alias="rate__useHourRates")
109
+ rate_composed_rates: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Rate composed rates", alias="rate__composedRates")
110
+ rate_calculate_on_percentage: Optional[Series[pd.BooleanDtype]] = pa.Field(coerce=True, nullable=True, description="Rate calculate on percentage", alias="rate__calculateOnPercentage")
111
+ rate_percentage_info_text: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Rate percentage info text", alias="rate__percentageInfoText")
112
+ rate_calculate_on_gross_salary: Optional[Series[pd.BooleanDtype]] = pa.Field(coerce=True, nullable=True, description="Rate calculate on gross salary", alias="rate__calculateOnGrossSalary")
113
+ rate_is_from_template: Optional[Series[pd.BooleanDtype]] = pa.Field(coerce=True, nullable=True, description="Rate is from template", alias="rate__isFromTemplate")
114
+ rate_predefined_rate_type: Optional[Series[pd.Int64Dtype]] = pa.Field(coerce=True, nullable=True, description="Rate predefined rate type", alias="rate__predefinedRateType")
115
+ rate_is_included_in_holiday_entitlement_salary_reduction: Optional[Series[pd.BooleanDtype]] = pa.Field(coerce=True, nullable=True, description="Rate is included in holiday entitlement salary reduction", alias="rate__isIncludedInHolidayEntitlementSalaryReduction")
116
+ rate_number: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Rate number", alias="rate__number")
117
+ rate_type: Optional[Series[pd.Int64Dtype]] = pa.Field(coerce=True, nullable=True, description="Rate type", alias="rate__type")
118
+ rate_limited_to_employee: Optional[Series[pd.BooleanDtype]] = pa.Field(coerce=True, nullable=True, description="Rate limited to employee", alias="rate__limitedToEmployee")
119
+ rate_is_benefit_package_two_enabled: Optional[Series[pd.BooleanDtype]] = pa.Field(coerce=True, nullable=True, description="Rate is benefit package two enabled", alias="rate__isBenefitPackageTwoEnabled")
120
+ rate_override_rate: Optional[Series[pd.BooleanDtype]] = pa.Field(coerce=True, nullable=True, description="Rate override rate", alias="rate__overrideRate")
121
+ rate_hours: Optional[Series[pd.Float64Dtype]] = pa.Field(coerce=True, nullable=True, description="Rate hours", alias="rate__hours")
122
+ rate_override_name: Optional[Series[pd.BooleanDtype]] = pa.Field(coerce=True, nullable=True, description="Rate override name", alias="rate__overrideName")
123
+ rate_employees: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Rate employees", alias="rate__employees")
124
+ rate_departments: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Rate departments", alias="rate__departments")
125
+ rate_rate: Optional[Series[pd.Float64Dtype]] = pa.Field(coerce=True, nullable=True, description="Rate rate", alias="rate__rate")
126
+ rate_name: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Rate name", alias="rate__name")
127
+ rate_percentage: Optional[Series[pd.Float64Dtype]] = pa.Field(coerce=True, nullable=True, description="Rate percentage", alias="rate__percentage")
128
+ rate_id: Optional[Series[pd.Int64Dtype]] = pa.Field(coerce=True, nullable=True, description="Rate ID", alias="rate__id")
129
+ rate_uid: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Rate UID", alias="rate__uid")
130
+
131
+ # Country specific fields (nested object)
132
+ country_specific_dto_country_uid: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Country specific DTO country UID", alias="countrySpecificDto__countryUid")
133
+ country_specific_dto_country_name: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Country specific DTO country name", alias="countrySpecificDto__countryName")
134
+ country_specific_dto_country_code: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Country specific DTO country code", alias="countrySpecificDto__countryCode")
135
+ country_specific_dto_country_id: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Country specific DTO country ID", alias="countrySpecificDto__countryId")
136
+ country_specific_dto_country_tax_percentage: Optional[Series[pd.Float64Dtype]] = pa.Field(coerce=True, nullable=True, description="Country specific DTO country tax percentage", alias="countrySpecificDto__countryTaxPercentage")
137
+ country_specific_dto_country_taxable_income: Optional[Series[pd.BooleanDtype]] = pa.Field(coerce=True, nullable=True, description="Country specific DTO country taxable income", alias="countrySpecificDto__countryTaxableIncome")
138
+
139
+ # Department fields (nested object)
140
+ department_is_delete_allowed: Optional[Series[pd.BooleanDtype]] = pa.Field(coerce=True, nullable=True, description="Department is delete allowed", alias="department__isDeleteAllowed")
141
+ department_responsible_persons: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Department responsible persons", alias="department__responsiblePersons")
142
+ department_company_work_schemas: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Department company work schemas", alias="department__companyWorkSchemas")
143
+ department_name: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Department name", alias="department__name")
144
+ department_number: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Department number", alias="department__number")
145
+ department_has_work_schema: Optional[Series[pd.BooleanDtype]] = pa.Field(coerce=True, nullable=True, description="Department has work schema", alias="department__hasWorkSchema")
146
+ department_id: Optional[Series[pd.Int64Dtype]] = pa.Field(coerce=True, nullable=True, description="Department ID", alias="department__id")
147
+ department_uid: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Department UID", alias="department__uid")
148
+
149
+ # Cost center fields (nested object)
150
+ cost_center_number_of_employees: Optional[Series[pd.Int64Dtype]] = pa.Field(coerce=True, nullable=True, description="Cost center number of employees", alias="costCenter__numberOfEmployees")
151
+ cost_center_employee_uids: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Cost center employee UIDs", alias="costCenter__employeeUids")
152
+ cost_center_cost_center_name: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Cost center cost center name", alias="costCenter__costCenterName")
153
+ cost_center_cost_center_code: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Cost center cost center code", alias="costCenter__costCenterCode")
154
+ cost_center_type: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Cost center type", alias="costCenter__type")
155
+ cost_center_id: Optional[Series[pd.Int64Dtype]] = pa.Field(coerce=True, nullable=True, description="Cost center ID", alias="costCenter__id")
156
+ cost_center_uid: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Cost center UID", alias="costCenter__uid")
157
+
158
+ # Profit center fields (nested object)
159
+ profit_center_number_of_employees: Optional[Series[pd.Int64Dtype]] = pa.Field(coerce=True, nullable=True, description="Profit center number of employees", alias="profitCenter__numberOfEmployees")
160
+ profit_center_employee_uids: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Profit center employee UIDs", alias="profitCenter__employeeUids")
161
+ profit_center_cost_center_name: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Profit center cost center name", alias="profitCenter__costCenterName")
162
+ profit_center_cost_center_code: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Profit center cost center code", alias="profitCenter__costCenterCode")
163
+ profit_center_type: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Profit center type", alias="profitCenter__type")
164
+ profit_center_id: Optional[Series[pd.Int64Dtype]] = pa.Field(coerce=True, nullable=True, description="Profit center ID", alias="profitCenter__id")
165
+ profit_center_uid: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Profit center UID", alias="profitCenter__uid")
166
+
167
+ class _Annotation:
168
+ primary_key = "uid"
169
+ foreign_keys = {}
@@ -0,0 +1,140 @@
1
+ # Generated schemas for tag: EmployeePensions
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
+ class Pension(BaseModel):
9
+ """Schema for pension information."""
10
+ identifier: Optional[str] = Field(default=None, description="Pension identifier", example="PEN-001")
11
+ payment_day_type: Optional[int] = Field(alias="paymentDayType", default=None, description="Payment day type code", example=1)
12
+ info_type: Optional[int] = Field(alias="infoType", default=None, description="Info type code", example=0)
13
+ pbs_is_in_regular_and_am_pension: Optional[bool] = Field(alias="pbsIsInRegularAndAmPension", default=None, description="PBS is in regular and AM pension flag", example=True)
14
+ name: Optional[str] = Field(default=None, description="Pension name", example="ATP Pension")
15
+ resource_name: Optional[str] = Field(alias="resourceName", default=None, description="Resource name", example="ATP")
16
+ pbs_number: Optional[str] = Field(alias="pbsNumber", default=None, description="PBS number", example="1234")
17
+ type: Optional[int] = Field(default=None, description="Pension type code", example=1)
18
+ id: Optional[int] = Field(default=None, description="Internal numeric identifier", example=10)
19
+ uid: Optional[UUID] = Field(example="00000000-0000-0000-0000-000000000000", default=None, description="Pension UID")
20
+
21
+ class Config:
22
+ populate_by_name = True
23
+
24
+ class EmployeePensionCreate(BaseModel):
25
+ pension_uid: Optional[UUID] = Field(
26
+ example="00000000-0000-0000-0000-000000000000", alias="pensionUid", default=None,
27
+ description="Target pension UID (if updating an existing pension)"
28
+ )
29
+ pension: Pension = Field(
30
+ default=None,
31
+ description="Pension master data (name, type, PBS codes)",
32
+ example={"name": "ATP Pension"}
33
+ )
34
+ account_number: Optional[str] = Field(
35
+ alias="accountNumber", default=None,
36
+ description="Employee pension account number", example="1234567890"
37
+ )
38
+ register_number: Optional[str] = Field(
39
+ alias="registerNumber", default=None,
40
+ description="Bank registration number", example="0001"
41
+ )
42
+ private_pension: Optional[float] = Field(
43
+ alias="privatePension", default=None,
44
+ description="Employee private pension contribution", example=500.0
45
+ )
46
+ company_pension: Optional[float] = Field(
47
+ alias="companyPension", default=None,
48
+ description="Company pension contribution", example=1000.0
49
+ )
50
+ policy_reference_number: Optional[str] = Field(
51
+ alias="policyReferenceNumber", default=None,
52
+ description="Policy reference number", example="POL-123"
53
+ )
54
+ pension_value_type: Optional[int] = Field(
55
+ alias="pensionValueType", default=None,
56
+ description="Value type code for pension", example=1
57
+ )
58
+ tax_pension_amount: Optional[bool] = Field(
59
+ alias="taxPensionAmount", default=None,
60
+ description="Whether pension amount is taxable", example=True
61
+ )
62
+ union_code: Optional[str] = Field(
63
+ alias="unionCode", default=None,
64
+ description="Union code", example="UN-1"
65
+ )
66
+ coverage_base_salary: Optional[float] = Field(
67
+ alias="coverageBaseSalary", default=None,
68
+ description="Coverage base salary", example=35000.0
69
+ )
70
+ employee_wage_code: Optional[str] = Field(
71
+ alias="employeeWageCode", default=None,
72
+ description="Employee wage code", example="E100"
73
+ )
74
+ company_wage_code: Optional[str] = Field(
75
+ alias="companyWageCode", default=None,
76
+ description="Company wage code", example="C100"
77
+ )
78
+ insurance_amount: Optional[float] = Field(
79
+ alias="insuranceAmount", default=None,
80
+ description="Insurance amount", example=250.0
81
+ )
82
+ group_life_agreement_number: Optional[str] = Field(
83
+ alias="groupLifeAgreementNumber", default=None,
84
+ description="Group life agreement number", example="GL-001"
85
+ )
86
+ calculate_from_am_pension: Optional[bool] = Field(
87
+ alias="calculateFromAmPension", default=None,
88
+ description="Calculate contributions from AM pension base", example=True
89
+ )
90
+ uid: Optional[UUID] = Field(
91
+ example="00000000-0000-0000-0000-000000000000", default=None,
92
+ description="Inserted employee pension UID"
93
+ )
94
+
95
+ class Config:
96
+ populate_by_name = True
97
+
98
+ # BrynQ Pandera DataFrame Model for Pensions
99
+ from pandera.typing import Series
100
+ import pandera as pa
101
+ import pandas as pd
102
+ from brynq_sdk_functions import BrynQPanderaDataFrameModel
103
+
104
+ class PensionGet(BrynQPanderaDataFrameModel):
105
+ """Flattened schema for Zenegy Pension Output data (single response)"""
106
+ # Basic pension fields
107
+ account_number: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Account number", alias="accountNumber")
108
+ register_number: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Register number", alias="registerNumber")
109
+ employee_payroll_fk: Optional[Series[pd.Int64Dtype]] = pa.Field(coerce=True, nullable=True, description="Employee payroll FK", alias="employeePayrollFk")
110
+ employee_fk: Optional[Series[pd.Int64Dtype]] = pa.Field(coerce=True, nullable=True, description="Employee FK", alias="employeeFk")
111
+ private_pension: Optional[Series[pd.Float64Dtype]] = pa.Field(coerce=True, nullable=True, description="Private pension amount", alias="privatePension")
112
+ company_pension: Optional[Series[pd.Float64Dtype]] = pa.Field(coerce=True, nullable=True, description="Company pension amount", alias="companyPension")
113
+ policy_reference_number: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Policy reference number", alias="policyReferenceNumber")
114
+ tax_pension_amount: Optional[Series[pd.BooleanDtype]] = pa.Field(coerce=True, nullable=True, description="Tax pension amount", alias="taxPensionAmount")
115
+ pension_value_type: Optional[Series[pd.Int64Dtype]] = pa.Field(coerce=True, nullable=True, description="Pension value type", alias="pensionValueType")
116
+ union_code: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Union code", alias="unionCode")
117
+ coverage_base_salary: Optional[Series[pd.Float64Dtype]] = pa.Field(coerce=True, nullable=True, description="Coverage base salary", alias="coverageBaseSalary")
118
+ employee_wage_code: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Employee wage code", alias="employeeWageCode")
119
+ company_wage_code: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Company wage code", alias="companyWageCode")
120
+ insurance_amount: Optional[Series[pd.Float64Dtype]] = pa.Field(coerce=True, nullable=True, description="Insurance amount", alias="insuranceAmount")
121
+ group_life_agreement_number: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Group life agreement number", alias="groupLifeAgreementNumber")
122
+ calculate_from_am_pension: Optional[Series[pd.BooleanDtype]] = pa.Field(coerce=True, nullable=True, description="Calculate from AM pension", alias="calculateFromAmPension")
123
+ id: Optional[Series[pd.Int64Dtype]] = pa.Field(coerce=True, nullable=True, description="Pension ID", alias="id")
124
+ uid: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Pension UID", alias="uid")
125
+
126
+ # Pension fields (nested object)
127
+ pension_identifier: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Pension identifier", alias="pension__identifier")
128
+ pension_payment_day_type: Optional[Series[pd.Int64Dtype]] = pa.Field(coerce=True, nullable=True, description="Pension payment day type", alias="pension__paymentDayType")
129
+ pension_info_type: Optional[Series[pd.Int64Dtype]] = pa.Field(coerce=True, nullable=True, description="Pension info type", alias="pension__infoType")
130
+ pension_pbs_is_in_regular_and_am_pension: Optional[Series[pd.BooleanDtype]] = pa.Field(coerce=True, nullable=True, description="Pension PBS is in regular and AM pension", alias="pension__pbsIsInRegularAndAmPension")
131
+ pension_name: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Pension name", alias="pension__name")
132
+ pension_resource_name: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Pension resource name", alias="pension__resourceName")
133
+ pension_pbs_number: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Pension PBS number", alias="pension__pbsNumber")
134
+ pension_type: Optional[Series[pd.Int64Dtype]] = pa.Field(coerce=True, nullable=True, description="Pension type", alias="pension__type")
135
+ pension_id: Optional[Series[pd.Int64Dtype]] = pa.Field(coerce=True, nullable=True, description="Pension ID", alias="pension__id")
136
+ pension_uid: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Pension UID", alias="pension__uid")
137
+
138
+ class _Annotation:
139
+ primary_key = "uid"
140
+ foreign_keys = {}