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,134 @@
|
|
|
1
|
+
# Generated schemas for tag: Payroll
|
|
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
|
+
# BrynQ Pandera DataFrame Model for Payrolls
|
|
9
|
+
from pandera.typing import Series
|
|
10
|
+
import pandera as pa
|
|
11
|
+
import pandas as pd
|
|
12
|
+
from brynq_sdk_functions import BrynQPanderaDataFrameModel
|
|
13
|
+
|
|
14
|
+
class PayrollsGet(BrynQPanderaDataFrameModel):
|
|
15
|
+
"""Flattened schema for Zenegy Payrolls Output data"""
|
|
16
|
+
# Basic payroll fields
|
|
17
|
+
uid: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Payroll UID", alias="uid")
|
|
18
|
+
type: Optional[Series[pd.Int64Dtype]] = pa.Field(coerce=True, nullable=True, description="Payroll type", alias="type")
|
|
19
|
+
period_from: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Period from", alias="periodFrom")
|
|
20
|
+
period_to: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Period to", alias="periodTo")
|
|
21
|
+
disposition_date: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Disposition date", alias="dispositionDate")
|
|
22
|
+
status: Optional[Series[pd.Int64Dtype]] = pa.Field(coerce=True, nullable=True, description="Payroll status", alias="status")
|
|
23
|
+
has_holiday_payment: Optional[Series[pd.BooleanDtype]] = pa.Field(coerce=True, nullable=True, description="Has holiday payment", alias="hasHolidayPayment")
|
|
24
|
+
has_benefit_package: Optional[Series[pd.BooleanDtype]] = pa.Field(coerce=True, nullable=True, description="Has benefit package", alias="hasBenefitPackage")
|
|
25
|
+
has_benefit_package_two: Optional[Series[pd.BooleanDtype]] = pa.Field(coerce=True, nullable=True, description="Has benefit package two", alias="hasBenefitPackageTwo")
|
|
26
|
+
has_am_pension: Optional[Series[pd.BooleanDtype]] = pa.Field(coerce=True, nullable=True, description="Has AM pension", alias="hasAmPension")
|
|
27
|
+
has_approval_flow_enabled: Optional[Series[pd.BooleanDtype]] = pa.Field(coerce=True, nullable=True, description="Has approval flow enabled", alias="hasApprovalFlowEnabled")
|
|
28
|
+
has_holiday_supplement_payout: Optional[Series[pd.BooleanDtype]] = pa.Field(coerce=True, nullable=True, description="Has holiday supplement payout", alias="hasHolidaySupplementPayout")
|
|
29
|
+
disable_payslip_notification: Optional[Series[pd.BooleanDtype]] = pa.Field(coerce=True, nullable=True, description="Disable payslip notification", alias="disablePayslipNotification")
|
|
30
|
+
send_payslip_notification_on: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Send payslip notification on", alias="sendPayslipNotificationOn")
|
|
31
|
+
has_holiday_payment_payout: Optional[Series[pd.BooleanDtype]] = pa.Field(coerce=True, nullable=True, description="Has holiday payment payout", alias="hasHolidayPaymentPayout")
|
|
32
|
+
has_holiday_payment_to_holiday_pay_payout: Optional[Series[pd.BooleanDtype]] = pa.Field(coerce=True, nullable=True, description="Has holiday payment to holiday pay payout", alias="hasHolidayPaymentToHolidayPayPayout")
|
|
33
|
+
has_benefit_package_payout: Optional[Series[pd.BooleanDtype]] = pa.Field(coerce=True, nullable=True, description="Has benefit package payout", alias="hasBenefitPackagePayout")
|
|
34
|
+
has_benefit_package_two_payout: Optional[Series[pd.BooleanDtype]] = pa.Field(coerce=True, nullable=True, description="Has benefit package two payout", alias="hasBenefitPackageTwoPayout")
|
|
35
|
+
is_already_paid: Optional[Series[pd.BooleanDtype]] = pa.Field(coerce=True, nullable=True, description="Is already paid", alias="isAlreadyPaid")
|
|
36
|
+
is_eligible_for_revert: Optional[Series[pd.BooleanDtype]] = pa.Field(coerce=True, nullable=True, description="Is eligible for revert", alias="isEligibleForRevert")
|
|
37
|
+
note: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Note", alias="note")
|
|
38
|
+
is_forced: Optional[Series[pd.BooleanDtype]] = pa.Field(coerce=True, nullable=True, description="Is forced", alias="isForced")
|
|
39
|
+
has_time_in_lieu_payout: Optional[Series[pd.BooleanDtype]] = pa.Field(coerce=True, nullable=True, description="Has time in lieu payout", alias="hasTimeInLieuPayout")
|
|
40
|
+
payslip_status: Optional[Series[pd.Int64Dtype]] = pa.Field(coerce=True, nullable=True, description="Payslip status", alias="payslipStatus")
|
|
41
|
+
is_payroll_approval_enabled_for_payroll: Optional[Series[pd.BooleanDtype]] = pa.Field(coerce=True, nullable=True, description="Is payroll approval enabled for payroll", alias="isPayrollApprovalEnabledForPayroll")
|
|
42
|
+
disable_payslip_generation: Optional[Series[pd.BooleanDtype]] = pa.Field(coerce=True, nullable=True, description="Disable payslip generation", alias="disablePayslipGeneration")
|
|
43
|
+
is_tracking_negative_salary_enabled: Optional[Series[pd.BooleanDtype]] = pa.Field(coerce=True, nullable=True, description="Is tracking negative salary enabled", alias="isTrackingNegativeSalaryEnabled")
|
|
44
|
+
is_company_extra_entitlement_in_hours: Optional[Series[pd.BooleanDtype]] = pa.Field(coerce=True, nullable=True, description="Is company extra entitlement in hours", alias="isCompanyExtraEntitlementInHours")
|
|
45
|
+
is_extra_holiday_entitlement_in_hours_enabled: Optional[Series[pd.BooleanDtype]] = pa.Field(coerce=True, nullable=True, description="Is extra holiday entitlement in hours enabled", alias="isExtraHolidayEntitlementInHoursEnabled")
|
|
46
|
+
revert_type: Optional[Series[pd.Int64Dtype]] = pa.Field(coerce=True, nullable=True, description="Revert type", alias="revertType")
|
|
47
|
+
has_holiday_payment_taxation_and_transfer_to_next_year: Optional[Series[pd.BooleanDtype]] = pa.Field(coerce=True, nullable=True, description="Has holiday payment taxation and transfer to next year", alias="hasHolidayPaymentTaxationAndTransferToNextYear")
|
|
48
|
+
has_holiday_payment_netto_payout: Optional[Series[pd.BooleanDtype]] = pa.Field(coerce=True, nullable=True, description="Has holiday payment netto payout", alias="hasHolidayPaymentNettoPayout")
|
|
49
|
+
has_transfer_sh_netto_and_payout: Optional[Series[pd.BooleanDtype]] = pa.Field(coerce=True, nullable=True, description="Has transfer SH netto and payout", alias="hasTransferShNettoAndPayout")
|
|
50
|
+
has_sh_net_payout: Optional[Series[pd.BooleanDtype]] = pa.Field(coerce=True, nullable=True, description="Has SH net payout", alias="hasShNetPayout")
|
|
51
|
+
has_fifth_holiday_week_payout: Optional[Series[pd.BooleanDtype]] = pa.Field(coerce=True, nullable=True, description="Has fifth holiday week payout", alias="hasFifthHolidayWeekPayout")
|
|
52
|
+
extra_payroll_run: Optional[Series[pd.BooleanDtype]] = pa.Field(coerce=True, nullable=True, description="Extra payroll run", alias="extraPayrollRun")
|
|
53
|
+
is_completed_with_am_accounting: Optional[Series[pd.BooleanDtype]] = pa.Field(coerce=True, nullable=True, description="Is completed with AM accounting", alias="isCompletedWithAmAccounting")
|
|
54
|
+
failed_payroll_uid: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Failed payroll UID", alias="failedPayrollUid")
|
|
55
|
+
|
|
56
|
+
# Company fields (nested object)
|
|
57
|
+
company_name: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Company name", alias="company__name")
|
|
58
|
+
company_vat_number: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Company VAT number", alias="company__vatNumber")
|
|
59
|
+
company_company_type: Optional[Series[pd.Int64Dtype]] = pa.Field(coerce=True, nullable=True, description="Company company type", alias="company__companyType")
|
|
60
|
+
company_transfer_type: Optional[Series[pd.Int64Dtype]] = pa.Field(coerce=True, nullable=True, description="Company transfer type", alias="company__transferType")
|
|
61
|
+
company_transfer_sh_netto_amount: Optional[Series[pd.BooleanDtype]] = pa.Field(coerce=True, nullable=True, description="Company transfer SH netto amount", alias="company__transferShNettoAmount")
|
|
62
|
+
company_id: Optional[Series[pd.Int64Dtype]] = pa.Field(coerce=True, nullable=True, description="Company ID", alias="company__id")
|
|
63
|
+
company_uid: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Company UID", alias="company__uid")
|
|
64
|
+
|
|
65
|
+
# Employees (as JSON string since it's a list of objects)
|
|
66
|
+
employees: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Employees list", alias="employees")
|
|
67
|
+
|
|
68
|
+
# Employee fields (flattened from employees array)
|
|
69
|
+
employee_personal_identification_number: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Employee personal identification number", alias="employee__personalIdentificationNumber")
|
|
70
|
+
employee_uid: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Employee UID", alias="employee__employeeUid")
|
|
71
|
+
employee_konto_number: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Employee konto number", alias="employee__kontoNumber")
|
|
72
|
+
employee_reg_number: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Employee reg number", alias="employee__regNumber")
|
|
73
|
+
employee_for_payment: Optional[Series[pd.Float64Dtype]] = pa.Field(coerce=True, nullable=True, description="Employee for payment", alias="employee__forPayment")
|
|
74
|
+
employee_is_updated: Optional[Series[pd.BooleanDtype]] = pa.Field(coerce=True, nullable=True, description="Employee is updated", alias="employee__isUpdated")
|
|
75
|
+
employee_note: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Employee note", alias="employee__note")
|
|
76
|
+
employee_payslip_status: Optional[Series[pd.Int64Dtype]] = pa.Field(coerce=True, nullable=True, description="Employee payslip status", alias="employee__payslipStatus")
|
|
77
|
+
employee_email: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Employee email", alias="employee__email")
|
|
78
|
+
employee_is_resigned: Optional[Series[pd.BooleanDtype]] = pa.Field(coerce=True, nullable=True, description="Employee is resigned", alias="employee__isResigned")
|
|
79
|
+
employee_has_payroll: Optional[Series[pd.BooleanDtype]] = pa.Field(coerce=True, nullable=True, description="Employee has payroll", alias="employee__hasPayroll")
|
|
80
|
+
employee_salary_type: Optional[Series[pd.Int64Dtype]] = pa.Field(coerce=True, nullable=True, description="Employee salary type", alias="employee__salaryType")
|
|
81
|
+
employee_has_errors: Optional[Series[pd.BooleanDtype]] = pa.Field(coerce=True, nullable=True, description="Employee has errors", alias="employee__hasErrors")
|
|
82
|
+
employee_has_warnings: Optional[Series[pd.BooleanDtype]] = pa.Field(coerce=True, nullable=True, description="Employee has warnings", alias="employee__hasWarnings")
|
|
83
|
+
employee_employment_date: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Employee employment date", alias="employee__employmentDate")
|
|
84
|
+
employee_is_resigned_within_last_year: Optional[Series[pd.BooleanDtype]] = pa.Field(coerce=True, nullable=True, description="Employee is resigned within last year", alias="employee__isResignedWithinLastyear")
|
|
85
|
+
employee_is_resigned_with_registrations: Optional[Series[pd.BooleanDtype]] = pa.Field(coerce=True, nullable=True, description="Employee is resigned with registrations", alias="employee__isResignedWithRegistrations")
|
|
86
|
+
employee_title: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Employee title", alias="employee__title")
|
|
87
|
+
employee_has_profile_image: Optional[Series[pd.BooleanDtype]] = pa.Field(coerce=True, nullable=True, description="Employee has profile image", alias="employee__hasProfileImage")
|
|
88
|
+
employee_income_type: Optional[Series[pd.Int64Dtype]] = pa.Field(coerce=True, nullable=True, description="Employee income type", alias="employee__incomeType")
|
|
89
|
+
employee_holiday_pay_receiver_type: Optional[Series[pd.Int64Dtype]] = pa.Field(coerce=True, nullable=True, description="Employee holiday pay receiver type", alias="employee__holidayPayReceiverType")
|
|
90
|
+
employee_extra_holiday_entitlement_rule: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Employee extra holiday entitlement rule", alias="employee__extraHolidayEntitlementRule")
|
|
91
|
+
employee_name: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Employee name", alias="employee__name")
|
|
92
|
+
employee_employee_number: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Employee number", alias="employee__employeeNumber")
|
|
93
|
+
employee_extra_employee_number: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Employee extra employee number", alias="employee__extraEmployeeNumber")
|
|
94
|
+
employee_id: Optional[Series[pd.Int64Dtype]] = pa.Field(coerce=True, nullable=True, description="Employee ID", alias="employee__id")
|
|
95
|
+
employee_uid: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Employee UID", alias="employee__uid")
|
|
96
|
+
|
|
97
|
+
# Employee department fields (nested object)
|
|
98
|
+
employee_department_name: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Employee department name", alias="employee__department__name")
|
|
99
|
+
employee_department_number: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Employee department number", alias="employee__department__number")
|
|
100
|
+
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")
|
|
101
|
+
employee_department_id: Optional[Series[pd.Int64Dtype]] = pa.Field(coerce=True, nullable=True, description="Employee department ID", alias="employee__department__id")
|
|
102
|
+
employee_department_uid: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Employee department UID", alias="employee__department__uid")
|
|
103
|
+
|
|
104
|
+
# Employee user fields (nested object)
|
|
105
|
+
employee_user_email: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Employee user email", alias="employee__user__email")
|
|
106
|
+
employee_user_name: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Employee user name", alias="employee__user__name")
|
|
107
|
+
employee_user_photo_url: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Employee user photo URL", alias="employee__user__photoUrl")
|
|
108
|
+
employee_user_id: Optional[Series[pd.Int64Dtype]] = pa.Field(coerce=True, nullable=True, description="Employee user ID", alias="employee__user__id")
|
|
109
|
+
employee_user_uid: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Employee user UID", alias="employee__user__uid")
|
|
110
|
+
|
|
111
|
+
# Employee deparment fields (nested object - note the typo in API)
|
|
112
|
+
employee_deparment_name: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Employee deparment name", alias="employee__deparment__name")
|
|
113
|
+
employee_deparment_number: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Employee deparment number", alias="employee__deparment__number")
|
|
114
|
+
employee_deparment_has_work_schema: Optional[Series[pd.BooleanDtype]] = pa.Field(coerce=True, nullable=True, description="Employee deparment has work schema", alias="employee__deparment__hasWorkSchema")
|
|
115
|
+
employee_deparment_id: Optional[Series[pd.Int64Dtype]] = pa.Field(coerce=True, nullable=True, description="Employee deparment ID", alias="employee__deparment__id")
|
|
116
|
+
employee_deparment_uid: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Employee deparment UID", alias="employee__deparment__uid")
|
|
117
|
+
|
|
118
|
+
# Payroll registration periods (as JSON string since it's a list of objects)
|
|
119
|
+
payroll_registration_periods: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Payroll registration periods", alias="payrollRegistrationPeriods")
|
|
120
|
+
|
|
121
|
+
class _Annotation:
|
|
122
|
+
primary_key = "uid"
|
|
123
|
+
foreign_keys = {
|
|
124
|
+
"company_uid": {
|
|
125
|
+
"parent_schema": "CompaniesGet",
|
|
126
|
+
"parent_column": "uid",
|
|
127
|
+
"cardinality": "N:1",
|
|
128
|
+
},
|
|
129
|
+
"employee_uid": {
|
|
130
|
+
"parent_schema": "EmployeesGet",
|
|
131
|
+
"parent_column": "uid",
|
|
132
|
+
"cardinality": "N:1",
|
|
133
|
+
},
|
|
134
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# Generated schemas for tag: Payslip
|
|
2
|
+
|
|
3
|
+
from typing import Optional
|
|
4
|
+
|
|
5
|
+
# BrynQ Pandera DataFrame Model for Payslips
|
|
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
|
+
class PayslipsGet(BrynQPanderaDataFrameModel):
|
|
12
|
+
"""Flattened schema for Zenegy Payslips Output data"""
|
|
13
|
+
# Basic payslip fields
|
|
14
|
+
payroll_number: Optional[Series[pd.Int64Dtype]] = pa.Field(coerce=True, nullable=True, description="Payroll number", alias="payrollNumber")
|
|
15
|
+
for_payment: Optional[Series[pd.Float64Dtype]] = pa.Field(coerce=True, nullable=True, description="For payment", alias="forPayment")
|
|
16
|
+
gross_income: Optional[Series[pd.Float64Dtype]] = pa.Field(coerce=True, nullable=True, description="Gross income", alias="grossIncome")
|
|
17
|
+
type: Optional[Series[pd.Int64Dtype]] = pa.Field(coerce=True, nullable=True, description="Payslip type", alias="type")
|
|
18
|
+
payslip_calculation_status: Optional[Series[pd.Int64Dtype]] = pa.Field(coerce=True, nullable=True, description="Payslip calculation status", alias="payslipCalculationStatus")
|
|
19
|
+
extra_payroll_run: Optional[Series[pd.BooleanDtype]] = pa.Field(coerce=True, nullable=True, description="Extra payroll run", alias="extraPayrollRun")
|
|
20
|
+
id: Optional[Series[pd.Int64Dtype]] = pa.Field(coerce=True, nullable=True, description="Payslip ID", alias="id")
|
|
21
|
+
uid: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Payslip UID", alias="uid")
|
|
22
|
+
|
|
23
|
+
# Payroll base fields (nested object)
|
|
24
|
+
payroll_base_period_from: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Payroll base period from", alias="payrollBase__periodFrom")
|
|
25
|
+
payroll_base_period_to: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Payroll base period to", alias="payrollBase__periodTo")
|
|
26
|
+
payroll_base_disposition_date: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Payroll base disposition date", alias="payrollBase__dispositionDate")
|
|
27
|
+
payroll_base_id: Optional[Series[pd.Int64Dtype]] = pa.Field(coerce=True, nullable=True, description="Payroll base ID", alias="payrollBase__id")
|
|
28
|
+
payroll_base_uid: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Payroll base UID", alias="payrollBase__uid")
|
|
29
|
+
|
|
30
|
+
class _Annotation:
|
|
31
|
+
primary_key = "uid"
|
|
32
|
+
foreign_keys = {}
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
# Generated schemas for tag: SupplementRates
|
|
2
|
+
|
|
3
|
+
from pandera.typing import Series
|
|
4
|
+
import pandera as pa
|
|
5
|
+
import pandas as pd
|
|
6
|
+
from typing import Optional
|
|
7
|
+
from brynq_sdk_functions import BrynQPanderaDataFrameModel
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class SupplementRatesGet(BrynQPanderaDataFrameModel):
|
|
11
|
+
"""Flattened schema for Zenegy Supplement Rates Output data"""
|
|
12
|
+
# Basic supplement rate fields
|
|
13
|
+
id: Optional[Series[pd.Int64Dtype]] = pa.Field(
|
|
14
|
+
coerce=True, nullable=True, description="Supplement rate ID", alias="id"
|
|
15
|
+
)
|
|
16
|
+
uid: Optional[Series[pd.StringDtype]] = pa.Field(
|
|
17
|
+
coerce=True, nullable=True, description="Supplement rate UID", alias="uid"
|
|
18
|
+
)
|
|
19
|
+
created_on: Optional[Series[pd.StringDtype]] = pa.Field(
|
|
20
|
+
coerce=True, nullable=True, description="Created on date", alias="createdOn"
|
|
21
|
+
)
|
|
22
|
+
rate: Optional[Series[pd.Float64Dtype]] = pa.Field(
|
|
23
|
+
coerce=True, nullable=True, description="Rate", alias="rate"
|
|
24
|
+
)
|
|
25
|
+
hours: Optional[Series[pd.Float64Dtype]] = pa.Field(
|
|
26
|
+
coerce=True, nullable=True, description="Hours", alias="hours"
|
|
27
|
+
)
|
|
28
|
+
name: Optional[Series[pd.StringDtype]] = pa.Field(
|
|
29
|
+
coerce=True, nullable=True, description="Name", alias="name"
|
|
30
|
+
)
|
|
31
|
+
number: Optional[Series[pd.StringDtype]] = pa.Field(
|
|
32
|
+
coerce=True, nullable=True, description="Number", alias="number"
|
|
33
|
+
)
|
|
34
|
+
konto_number: Optional[Series[pd.StringDtype]] = pa.Field(
|
|
35
|
+
coerce=True, nullable=True, description="Konto number", alias="kontoNumber"
|
|
36
|
+
)
|
|
37
|
+
reg_number: Optional[Series[pd.StringDtype]] = pa.Field(
|
|
38
|
+
coerce=True, nullable=True, description="Registration number", alias="regNumber"
|
|
39
|
+
)
|
|
40
|
+
type: Optional[Series[pd.Int64Dtype]] = pa.Field(
|
|
41
|
+
coerce=True, nullable=True, description="Type", alias="type"
|
|
42
|
+
)
|
|
43
|
+
shared_to_all: Optional[Series[pd.BooleanDtype]] = pa.Field(
|
|
44
|
+
coerce=True, nullable=True, description="Shared to all", alias="sharedToAll"
|
|
45
|
+
)
|
|
46
|
+
limited_to_employee: Optional[Series[pd.BooleanDtype]] = pa.Field(
|
|
47
|
+
coerce=True, nullable=True, description="Limited to employee", alias="limitedToEmployee"
|
|
48
|
+
)
|
|
49
|
+
is_benefit_package_two_enabled: Optional[Series[pd.BooleanDtype]] = pa.Field(
|
|
50
|
+
coerce=True, nullable=True, description="Is benefit package two enabled", alias="isBenefitPackageTwoEnabled"
|
|
51
|
+
)
|
|
52
|
+
override_rate: Optional[Series[pd.BooleanDtype]] = pa.Field(
|
|
53
|
+
coerce=True, nullable=True, description="Override rate", alias="overrideRate"
|
|
54
|
+
)
|
|
55
|
+
is_prorated_rate: Optional[Series[pd.BooleanDtype]] = pa.Field(
|
|
56
|
+
coerce=True, nullable=True, description="Is prorated rate", alias="isProratedRate"
|
|
57
|
+
)
|
|
58
|
+
include_in_pension_base: Optional[Series[pd.BooleanDtype]] = pa.Field(
|
|
59
|
+
coerce=True, nullable=True, description="Include in pension base", alias="includeInPensionBase"
|
|
60
|
+
)
|
|
61
|
+
include_in_am_pension_base: Optional[Series[pd.BooleanDtype]] = pa.Field(
|
|
62
|
+
coerce=True, nullable=True, description="Include in AM pension base", alias="includeInAmPensionBase"
|
|
63
|
+
)
|
|
64
|
+
predefined_rate_type: Optional[Series[pd.Int64Dtype]] = pa.Field(
|
|
65
|
+
coerce=True, nullable=True, description="Predefined rate type", alias="predefinedRateType"
|
|
66
|
+
)
|
|
67
|
+
is_included_in_holiday_entitlement_salary: Optional[Series[pd.BooleanDtype]] = pa.Field(
|
|
68
|
+
coerce=True, nullable=True, description="Is included in holiday entitlement salary", alias="isIncludedInHolidayEntitlementSalary"
|
|
69
|
+
)
|
|
70
|
+
override_name: Optional[Series[pd.BooleanDtype]] = pa.Field(
|
|
71
|
+
coerce=True, nullable=True, description="Override name", alias="overrideName"
|
|
72
|
+
)
|
|
73
|
+
use_supplement_rates: Optional[Series[pd.BooleanDtype]] = pa.Field(
|
|
74
|
+
coerce=True, nullable=True, description="Use supplement rates", alias="useSupplementRates"
|
|
75
|
+
)
|
|
76
|
+
use_hour_rates: Optional[Series[pd.BooleanDtype]] = pa.Field(
|
|
77
|
+
coerce=True, nullable=True, description="Use hour rates", alias="useHourRates"
|
|
78
|
+
)
|
|
79
|
+
composed_rates: Optional[Series[pd.StringDtype]] = pa.Field(
|
|
80
|
+
coerce=True, nullable=True, description="Composed rates", alias="composedRates"
|
|
81
|
+
)
|
|
82
|
+
calculate_on_percentage: Optional[Series[pd.BooleanDtype]] = pa.Field(
|
|
83
|
+
coerce=True, nullable=True, description="Calculate on percentage", alias="calculateOnPercentage"
|
|
84
|
+
)
|
|
85
|
+
percentage: Optional[Series[pd.Float64Dtype]] = pa.Field(
|
|
86
|
+
coerce=True, nullable=True, description="Percentage", alias="percentage"
|
|
87
|
+
)
|
|
88
|
+
calculate_on_gross_salary: Optional[Series[pd.BooleanDtype]] = pa.Field(
|
|
89
|
+
coerce=True, nullable=True, description="Calculate on gross salary", alias="calculateOnGrossSalary"
|
|
90
|
+
)
|
|
91
|
+
has_booking_group_override: Optional[Series[pd.BooleanDtype]] = pa.Field(
|
|
92
|
+
coerce=True, nullable=True, description="Has booking group override", alias="hasBookingGroupOverride"
|
|
93
|
+
)
|
|
94
|
+
is_from_template: Optional[Series[pd.BooleanDtype]] = pa.Field(
|
|
95
|
+
coerce=True, nullable=True, description="Is from template", alias="isFromTemplate"
|
|
96
|
+
)
|
|
97
|
+
is_in_use: Optional[Series[pd.BooleanDtype]] = pa.Field(
|
|
98
|
+
coerce=True, nullable=True, description="Is in use", alias="isInUse"
|
|
99
|
+
)
|
|
100
|
+
is_included_in_holiday_entitlement_salary_reduction: Optional[Series[pd.BooleanDtype]] = pa.Field(
|
|
101
|
+
coerce=True, nullable=True, description="Is included in holiday entitlement salary reduction", alias="isIncludedInHolidayEntitlementSalaryReduction"
|
|
102
|
+
)
|
|
103
|
+
is_overridden: Optional[Series[pd.BooleanDtype]] = pa.Field(
|
|
104
|
+
coerce=True, nullable=True, description="Is overridden", alias="isOverridden"
|
|
105
|
+
)
|
|
106
|
+
|
|
107
|
+
class _Annotation:
|
|
108
|
+
primary_key = "uid"
|
|
109
|
+
foreign_keys = {}
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
# Employee-level supplement registrations (moved from employee_supplements_and_deductions_rates.py)
|
|
113
|
+
class SupplementRegistrationsGet(BrynQPanderaDataFrameModel):
|
|
114
|
+
"""Flattened schema for Zenegy Supplement Registrations Output data"""
|
|
115
|
+
# Basic registration fields
|
|
116
|
+
id: Optional[Series[pd.Int64Dtype]] = pa.Field(coerce=True, nullable=True, description="Registration ID", alias="id")
|
|
117
|
+
uid: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Registration UID", alias="uid")
|
|
118
|
+
date: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Date", alias="date")
|
|
119
|
+
units: Optional[Series[pd.Float64Dtype]] = pa.Field(coerce=True, nullable=True, description="Units", alias="units")
|
|
120
|
+
rate: Optional[Series[pd.Float64Dtype]] = pa.Field(coerce=True, nullable=True, description="Rate", alias="rate")
|
|
121
|
+
total: Optional[Series[pd.Float64Dtype]] = pa.Field(coerce=True, nullable=True, description="Total", alias="total")
|
|
122
|
+
name: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Name", alias="name")
|
|
123
|
+
description: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Description", alias="description")
|
|
124
|
+
status: Optional[Series[pd.Int64Dtype]] = pa.Field(coerce=True, nullable=True, description="Status", alias="status")
|
|
125
|
+
project_id: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Project ID", alias="projectId")
|
|
126
|
+
attachment_count: Optional[Series[pd.Int64Dtype]] = pa.Field(coerce=True, nullable=True, description="Attachment count", alias="attachmentCount")
|
|
127
|
+
country_uid: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Country UID", alias="countryUid")
|
|
128
|
+
country_name: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Country name", alias="countryName")
|
|
129
|
+
country_code: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Country code", alias="countryCode")
|
|
130
|
+
country_id: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Country ID", alias="countryId")
|
|
131
|
+
country_tax_percentage: Optional[Series[pd.Float64Dtype]] = pa.Field(coerce=True, nullable=True, description="Country tax percentage", alias="countryTaxPercentage")
|
|
132
|
+
country_taxable_income: Optional[Series[pd.BooleanDtype]] = pa.Field(coerce=True, nullable=True, description="Country taxable income", alias="countryTaxableIncome")
|
|
133
|
+
cost_center_uid: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Cost center UID", alias="costCenterUid")
|
|
134
|
+
cost_center_name: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Cost center name", alias="costCenterName")
|
|
135
|
+
cost_center_code: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Cost center code", alias="costCenterCode")
|
|
136
|
+
trigger_retro: Optional[Series[pd.BooleanDtype]] = pa.Field(coerce=True, nullable=True, description="Trigger retro", alias="triggerRetro")
|
|
137
|
+
company_department_uid: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Company department UID", alias="companyDepartmentUid")
|
|
138
|
+
company_profit_center_uid: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Company profit center UID", alias="companyProfitCenterUid")
|
|
139
|
+
percentage: Optional[Series[pd.Float64Dtype]] = pa.Field(coerce=True, nullable=True, description="Percentage", alias="percentage")
|
|
140
|
+
reference_id: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Reference ID", alias="referenceId")
|
|
141
|
+
|
|
142
|
+
# Employee fields (nested object)
|
|
143
|
+
employee_id: Optional[Series[pd.Int64Dtype]] = pa.Field(coerce=True, nullable=True, description="Employee ID", alias="employee__id")
|
|
144
|
+
employee_uid: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Employee UID", alias="employee__uid")
|
|
145
|
+
employee_name: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Employee name", alias="employee__name")
|
|
146
|
+
employee_income_type: Optional[Series[pd.Int64Dtype]] = pa.Field(coerce=True, nullable=True, description="Employee income type", alias="employee__incomeType")
|
|
147
|
+
|
|
148
|
+
# Department fields (nested object)
|
|
149
|
+
department_id: Optional[Series[pd.Int64Dtype]] = pa.Field(coerce=True, nullable=True, description="Department ID", alias="department__id")
|
|
150
|
+
department_uid: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Department UID", alias="department__uid")
|
|
151
|
+
department_name: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Department name", alias="department__name")
|
|
152
|
+
department_number: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Department number", alias="department__number")
|
|
153
|
+
department_has_work_schema: Optional[Series[pd.BooleanDtype]] = pa.Field(coerce=True, nullable=True, description="Department has work schema", alias="department__hasWorkSchema")
|
|
154
|
+
|
|
155
|
+
# Supplement rate fields (nested object)
|
|
156
|
+
supplement_rate_id: Optional[Series[pd.Int64Dtype]] = pa.Field(coerce=True, nullable=True, description="Supplement rate ID", alias="supplementRate__id")
|
|
157
|
+
supplement_rate_uid: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Supplement rate UID", alias="supplementRate__uid")
|
|
158
|
+
supplement_rate_created_on: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Supplement rate created on", alias="supplementRate__createdOn")
|
|
159
|
+
supplement_rate_rate: Optional[Series[pd.Float64Dtype]] = pa.Field(coerce=True, nullable=True, description="Supplement rate rate", alias="supplementRate__rate")
|
|
160
|
+
supplement_rate_hours: Optional[Series[pd.Float64Dtype]] = pa.Field(coerce=True, nullable=True, description="Supplement rate hours", alias="supplementRate__hours")
|
|
161
|
+
supplement_rate_name: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Supplement rate name", alias="supplementRate__name")
|
|
162
|
+
supplement_rate_number: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Supplement rate number", alias="supplementRate__number")
|
|
163
|
+
supplement_rate_konto_number: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Supplement rate konto number", alias="supplementRate__kontoNumber")
|
|
164
|
+
supplement_rate_reg_number: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Supplement rate reg number", alias="supplementRate__regNumber")
|
|
165
|
+
supplement_rate_type: Optional[Series[pd.Int64Dtype]] = pa.Field(coerce=True, nullable=True, description="Supplement rate type", alias="supplementRate__type")
|
|
166
|
+
supplement_rate_shared_to_all: Optional[Series[pd.BooleanDtype]] = pa.Field(coerce=True, nullable=True, description="Supplement rate shared to all", alias="supplementRate__sharedToAll")
|
|
167
|
+
supplement_rate_limited_to_employee: Optional[Series[pd.BooleanDtype]] = pa.Field(coerce=True, nullable=True, description="Supplement rate limited to employee", alias="supplementRate__limitedToEmployee")
|
|
168
|
+
supplement_rate_is_benefit_package_two_enabled: Optional[Series[pd.BooleanDtype]] = pa.Field(coerce=True, nullable=True, description="Supplement rate is benefit package two enabled", alias="supplementRate__isBenefitPackageTwoEnabled")
|
|
169
|
+
supplement_rate_override_rate: Optional[Series[pd.BooleanDtype]] = pa.Field(coerce=True, nullable=True, description="Supplement rate override rate", alias="supplementRate__overrideRate")
|
|
170
|
+
supplement_rate_is_prorated_rate: Optional[Series[pd.BooleanDtype]] = pa.Field(coerce=True, nullable=True, description="Supplement rate is prorated rate", alias="supplementRate__isProratedRate")
|
|
171
|
+
supplement_rate_include_in_pension_base: Optional[Series[pd.BooleanDtype]] = pa.Field(coerce=True, nullable=True, description="Supplement rate include in pension base", alias="supplementRate__includeInPensionBase")
|
|
172
|
+
supplement_rate_include_in_am_pension_base: Optional[Series[pd.BooleanDtype]] = pa.Field(coerce=True, nullable=True, description="Supplement rate include in AM pension base", alias="supplementRate__includeInAmPensionBase")
|
|
173
|
+
supplement_rate_predefined_rate_type: Optional[Series[pd.Int64Dtype]] = pa.Field(coerce=True, nullable=True, description="Supplement rate predefined rate type", alias="supplementRate__predefinedRateType")
|
|
174
|
+
supplement_rate_is_included_in_holiday_entitlement_salary: Optional[Series[pd.BooleanDtype]] = pa.Field(coerce=True, nullable=True, description="Supplement rate is included in holiday entitlement salary", alias="supplementRate__isIncludedInHolidayEntitlementSalary")
|
|
175
|
+
supplement_rate_override_name: Optional[Series[pd.BooleanDtype]] = pa.Field(coerce=True, nullable=True, description="Supplement rate override name", alias="supplementRate__overrideName")
|
|
176
|
+
supplement_rate_use_supplement_rates: Optional[Series[pd.BooleanDtype]] = pa.Field(coerce=True, nullable=True, description="Supplement rate use supplement rates", alias="supplementRate__useSupplementRates")
|
|
177
|
+
supplement_rate_use_hour_rates: Optional[Series[pd.BooleanDtype]] = pa.Field(coerce=True, nullable=True, description="Supplement rate use hour rates", alias="supplementRate__useHourRates")
|
|
178
|
+
supplement_rate_composed_rates: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Supplement rate composed rates", alias="supplementRate__composedRates")
|
|
179
|
+
supplement_rate_calculate_on_percentage: Optional[Series[pd.BooleanDtype]] = pa.Field(coerce=True, nullable=True, description="Supplement rate calculate on percentage", alias="supplementRate__calculateOnPercentage")
|
|
180
|
+
supplement_rate_percentage: Optional[Series[pd.Float64Dtype]] = pa.Field(coerce=True, nullable=True, description="Supplement rate percentage", alias="supplementRate__percentage")
|
|
181
|
+
supplement_rate_calculate_on_gross_salary: Optional[Series[pd.BooleanDtype]] = pa.Field(coerce=True, nullable=True, description="Supplement rate calculate on gross salary", alias="supplementRate__calculateOnGrossSalary")
|
|
182
|
+
supplement_rate_has_booking_group_override: Optional[Series[pd.BooleanDtype]] = pa.Field(coerce=True, nullable=True, description="Supplement rate has booking group override", alias="supplementRate__hasBookingGroupOverride")
|
|
183
|
+
supplement_rate_is_from_template: Optional[Series[pd.BooleanDtype]] = pa.Field(coerce=True, nullable=True, description="Supplement rate is from template", alias="supplementRate__isFromTemplate")
|
|
184
|
+
supplement_rate_is_in_use: Optional[Series[pd.BooleanDtype]] = pa.Field(coerce=True, nullable=True, description="Supplement rate is in use", alias="supplementRate__isInUse")
|
|
185
|
+
supplement_rate_is_included_in_holiday_entitlement_salary_reduction: Optional[Series[pd.BooleanDtype]] = pa.Field(coerce=True, nullable=True, description="Supplement rate is included in holiday entitlement salary reduction", alias="supplementRate__isIncludedInHolidayEntitlementSalaryReduction")
|
|
186
|
+
|
|
187
|
+
class _Annotation:
|
|
188
|
+
primary_key = "uid"
|
|
189
|
+
foreign_keys = {}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
from .schemas.supplements_and_deductions_rates import SupplementRatesGet, SupplementRegistrationsGet
|
|
2
|
+
from uuid import UUID
|
|
3
|
+
from typing import Dict, Any, List, Tuple
|
|
4
|
+
import pandas as pd
|
|
5
|
+
from brynq_sdk_functions import Functions
|
|
6
|
+
|
|
7
|
+
class SupplementsAndDeductionsRates:
|
|
8
|
+
"""
|
|
9
|
+
Handles all companysupplementsanddeductionsrates-related operations in Zenegy API
|
|
10
|
+
"""
|
|
11
|
+
def __init__(self, zenegy):
|
|
12
|
+
"""
|
|
13
|
+
Initialize the SupplementsAndDeductionsRates class.
|
|
14
|
+
|
|
15
|
+
Args:
|
|
16
|
+
zenegy: The Zenegy instance to use for API calls
|
|
17
|
+
"""
|
|
18
|
+
self.zenegy = zenegy
|
|
19
|
+
self.endpoint = f"api/companies/{self.zenegy.company_uid}/supplementsanddeductions/rates"
|
|
20
|
+
|
|
21
|
+
def get(self) -> Tuple[pd.DataFrame, pd.DataFrame]:
|
|
22
|
+
"""
|
|
23
|
+
GetSupplementRatesListDtoAsync
|
|
24
|
+
Returns:
|
|
25
|
+
Tuple of (valid_data, invalid_data) DataFrames
|
|
26
|
+
"""
|
|
27
|
+
endpoint = f"{self.endpoint}/list"
|
|
28
|
+
try:
|
|
29
|
+
content = self.zenegy.get(endpoint=endpoint)
|
|
30
|
+
|
|
31
|
+
# Get data from response
|
|
32
|
+
data = content.get("data", [])
|
|
33
|
+
if data:
|
|
34
|
+
# Normalize the data
|
|
35
|
+
df = pd.json_normalize(
|
|
36
|
+
data,
|
|
37
|
+
sep='__'
|
|
38
|
+
)
|
|
39
|
+
# Validate data using schema
|
|
40
|
+
valid_data, invalid_data = Functions.validate_data(df, SupplementRatesGet)
|
|
41
|
+
return valid_data, invalid_data
|
|
42
|
+
return pd.DataFrame(), pd.DataFrame()
|
|
43
|
+
except Exception as e:
|
|
44
|
+
raise Exception(f"Failed to retrieve supplement rates: {str(e)}") from e
|
|
45
|
+
|
|
46
|
+
def get_registrations(self, employee_uid: UUID) -> Tuple[pd.DataFrame, pd.DataFrame]:
|
|
47
|
+
"""
|
|
48
|
+
GetRegistrationDtoQueryAsync
|
|
49
|
+
Args:
|
|
50
|
+
employee_uid (UUID): The employee uid
|
|
51
|
+
Returns:
|
|
52
|
+
Tuple of (valid_data, invalid_data) DataFrames
|
|
53
|
+
"""
|
|
54
|
+
endpoint = f"api/companies/{self.zenegy.company_uid}/employees/{employee_uid}/supplementsanddeductions/registrations"
|
|
55
|
+
try:
|
|
56
|
+
content = self.zenegy.get(endpoint=endpoint)
|
|
57
|
+
|
|
58
|
+
# Get data from response
|
|
59
|
+
data = content.get("data", [])
|
|
60
|
+
if data:
|
|
61
|
+
# Normalize the data with nested objects
|
|
62
|
+
df = pd.json_normalize(
|
|
63
|
+
data,
|
|
64
|
+
sep='__'
|
|
65
|
+
)
|
|
66
|
+
# Validate data using schema
|
|
67
|
+
valid_data, invalid_data = Functions.validate_data(df, SupplementRegistrationsGet)
|
|
68
|
+
return valid_data, invalid_data
|
|
69
|
+
return pd.DataFrame(), pd.DataFrame()
|
|
70
|
+
except Exception as e:
|
|
71
|
+
raise Exception(f"Failed to retrieve supplement registrations: {str(e)}") from e
|