brynq-sdk-alight 1.0.0__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_alight/__init__.py +1019 -0
- brynq_sdk_alight/address.py +72 -0
- brynq_sdk_alight/archive/flat_wrapper.py +139 -0
- brynq_sdk_alight/archive/hrxml_generator.py +280 -0
- brynq_sdk_alight/archive/managers.py +132 -0
- brynq_sdk_alight/archive/managers_generic.py +114 -0
- brynq_sdk_alight/archive/managers_old_complex.py +294 -0
- brynq_sdk_alight/archive/managers_simple.py +229 -0
- brynq_sdk_alight/employee.py +81 -0
- brynq_sdk_alight/job.py +89 -0
- brynq_sdk_alight/leave.py +97 -0
- brynq_sdk_alight/pay_elements.py +97 -0
- brynq_sdk_alight/salary.py +89 -0
- brynq_sdk_alight/schemas/__init__.py +26 -0
- brynq_sdk_alight/schemas/absence.py +83 -0
- brynq_sdk_alight/schemas/address.py +113 -0
- brynq_sdk_alight/schemas/employee.py +641 -0
- brynq_sdk_alight/schemas/generated_envelope_xsd_schema/__init__.py +38683 -0
- brynq_sdk_alight/schemas/generated_envelope_xsd_schema/process_pay_serv_emp.py +622264 -0
- brynq_sdk_alight/schemas/generated_xsd_schemas/__init__.py +10965 -0
- brynq_sdk_alight/schemas/generated_xsd_schemas/csec_person.py +39808 -0
- brynq_sdk_alight/schemas/generated_xsd_schemas/hrxml_indicative_data.py +90318 -0
- brynq_sdk_alight/schemas/generated_xsd_schemas/openapplications_bod.py +33869 -0
- brynq_sdk_alight/schemas/generated_xsd_schemas/openapplications_code_list_currency_code_iso_7_04.py +365 -0
- brynq_sdk_alight/schemas/generated_xsd_schemas/openapplications_code_list_language_code_iso_7_04.py +16 -0
- brynq_sdk_alight/schemas/generated_xsd_schemas/openapplications_code_list_mimemedia_type_code_iana_7_04.py +16 -0
- brynq_sdk_alight/schemas/generated_xsd_schemas/openapplications_code_list_unit_code_unece_7_04.py +14 -0
- brynq_sdk_alight/schemas/generated_xsd_schemas/openapplications_code_lists.py +535 -0
- brynq_sdk_alight/schemas/generated_xsd_schemas/openapplications_qualified_data_types.py +84 -0
- brynq_sdk_alight/schemas/generated_xsd_schemas/openapplications_unqualified_data_types.py +1449 -0
- brynq_sdk_alight/schemas/job.py +129 -0
- brynq_sdk_alight/schemas/leave.py +58 -0
- brynq_sdk_alight/schemas/payments.py +207 -0
- brynq_sdk_alight/schemas/salary.py +67 -0
- brynq_sdk_alight/schemas/termination.py +48 -0
- brynq_sdk_alight/schemas/timequota.py +66 -0
- brynq_sdk_alight/schemas/utils.py +452 -0
- brynq_sdk_alight/termination.py +103 -0
- brynq_sdk_alight/time_elements.py +121 -0
- brynq_sdk_alight/time_quotas.py +114 -0
- brynq_sdk_alight-1.0.0.dist-info/METADATA +20 -0
- brynq_sdk_alight-1.0.0.dist-info/RECORD +44 -0
- brynq_sdk_alight-1.0.0.dist-info/WHEEL +5 -0
- brynq_sdk_alight-1.0.0.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
from typing import Any, Dict, List, Optional, Union
|
|
2
|
+
|
|
3
|
+
from .schemas.timequota import TimeQuota, TimeQuotas
|
|
4
|
+
from .schemas.payments import PayServEmpExtensionCreate
|
|
5
|
+
from .schemas import EmployeeCreate as EmployeeModel
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class TimeQuotas:
|
|
9
|
+
"""
|
|
10
|
+
High-level Time Quotas API. Sends TimeQuotas via PayServEmpExtension.
|
|
11
|
+
|
|
12
|
+
Usage:
|
|
13
|
+
alight = Alight()
|
|
14
|
+
xml = alight.time_quotas.create(time_quotas=[...], person_id="35561", employee_id="35561ZZGB")
|
|
15
|
+
xml = alight.time_quotas.update(time_quotas=[...], person_id="35561", employee_id="35561ZZGB")
|
|
16
|
+
"""
|
|
17
|
+
|
|
18
|
+
def __init__(self, client: Any):
|
|
19
|
+
self._client = client
|
|
20
|
+
|
|
21
|
+
def _build_extension_with_time_quotas(self, time_quotas: List[Union[TimeQuota, Dict[str, Any]]]) -> Dict[str, Any]:
|
|
22
|
+
"""
|
|
23
|
+
Wrap raw time quota dictionaries into the schema-backed extension payload.
|
|
24
|
+
|
|
25
|
+
Running through `TimeQuota` and `TimeQuotas` ensures aliases (like unit/identifier wrappers)
|
|
26
|
+
are applied before the data touches the XSD validation layer.
|
|
27
|
+
|
|
28
|
+
Example:
|
|
29
|
+
>>> self._build_extension_with_time_quotas(
|
|
30
|
+
... [{"quota_code": "VAC", "balance": "40", "valid_from": "2024-01-01"}]
|
|
31
|
+
... )
|
|
32
|
+
"""
|
|
33
|
+
quota_models = [q if isinstance(q, TimeQuota) else TimeQuota(**q) for q in time_quotas]
|
|
34
|
+
wrapper = TimeQuotas(time_quotas=quota_models)
|
|
35
|
+
ext = PayServEmpExtensionCreate(time_quotas=wrapper) # type: ignore[arg-type]
|
|
36
|
+
return ext.to_nested_dict()
|
|
37
|
+
|
|
38
|
+
def create(
|
|
39
|
+
self,
|
|
40
|
+
*,
|
|
41
|
+
time_quotas: List[Union[TimeQuota, Dict[str, Any]]],
|
|
42
|
+
person_id: str,
|
|
43
|
+
employee_id: str,
|
|
44
|
+
logical_id: Optional[str] = None,
|
|
45
|
+
envelope_options: Optional[Dict[str, Any]] = None,
|
|
46
|
+
pretty_print: bool = True,
|
|
47
|
+
) -> str:
|
|
48
|
+
"""
|
|
49
|
+
Generate an ADD envelope that pushes quota balances through the extension block.
|
|
50
|
+
|
|
51
|
+
Example:
|
|
52
|
+
>>> alight.time_quotas.create(
|
|
53
|
+
... time_quotas=[{"quota_code": "VAC", "balance": "40"}],
|
|
54
|
+
... person_id="35561",
|
|
55
|
+
... employee_id="35561ZZGB",
|
|
56
|
+
... )
|
|
57
|
+
|
|
58
|
+
Passing quota dictionaries directly keeps the calling code small—the helper expands wrappers like
|
|
59
|
+
`quota_code.value` and runs schema validation before serializing to XML.
|
|
60
|
+
"""
|
|
61
|
+
extension_data = self._build_extension_with_time_quotas(time_quotas)
|
|
62
|
+
|
|
63
|
+
employee_model = EmployeeModel(
|
|
64
|
+
person_id=person_id,
|
|
65
|
+
employee_id=employee_id,
|
|
66
|
+
)
|
|
67
|
+
|
|
68
|
+
return self._client.generate_employee_xml(
|
|
69
|
+
employee=employee_model,
|
|
70
|
+
action_code="ADD",
|
|
71
|
+
logical_id=logical_id,
|
|
72
|
+
extension_data=extension_data,
|
|
73
|
+
envelope_options=envelope_options,
|
|
74
|
+
pretty_print=pretty_print,
|
|
75
|
+
)
|
|
76
|
+
|
|
77
|
+
def update(
|
|
78
|
+
self,
|
|
79
|
+
*,
|
|
80
|
+
time_quotas: List[Union[TimeQuota, Dict[str, Any]]],
|
|
81
|
+
person_id: str,
|
|
82
|
+
employee_id: str,
|
|
83
|
+
logical_id: Optional[str] = None,
|
|
84
|
+
envelope_options: Optional[Dict[str, Any]] = None,
|
|
85
|
+
pretty_print: bool = True,
|
|
86
|
+
) -> str:
|
|
87
|
+
"""
|
|
88
|
+
Generate a CHANGE envelope for quota adjustments using the same normalization flow as `create`.
|
|
89
|
+
|
|
90
|
+
Keeps the employee identifiers consistent with the flat dictionary interface while ensuring the
|
|
91
|
+
extension payload remains schema-valid.
|
|
92
|
+
|
|
93
|
+
Example:
|
|
94
|
+
>>> alight.time_quotas.update(
|
|
95
|
+
... time_quotas=[{"quota_code": "VAC", "balance": "32"}],
|
|
96
|
+
... person_id="35561",
|
|
97
|
+
... employee_id="35561ZZGB",
|
|
98
|
+
... )
|
|
99
|
+
"""
|
|
100
|
+
extension_data = self._build_extension_with_time_quotas(time_quotas)
|
|
101
|
+
|
|
102
|
+
employee_model = EmployeeModel(
|
|
103
|
+
person_id=person_id,
|
|
104
|
+
employee_id=employee_id,
|
|
105
|
+
)
|
|
106
|
+
|
|
107
|
+
return self._client.generate_employee_xml(
|
|
108
|
+
employee=employee_model,
|
|
109
|
+
action_code="CHANGE",
|
|
110
|
+
logical_id=logical_id,
|
|
111
|
+
extension_data=extension_data,
|
|
112
|
+
envelope_options=envelope_options,
|
|
113
|
+
pretty_print=pretty_print,
|
|
114
|
+
)
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: brynq_sdk_alight
|
|
3
|
+
Version: 1.0.0
|
|
4
|
+
Summary: Alight SDK for the BrynQ.com platform
|
|
5
|
+
Author: BrynQ
|
|
6
|
+
Author-email: support@brynq.com
|
|
7
|
+
License: BrynQ License
|
|
8
|
+
Requires-Dist: requests<=3,>=2
|
|
9
|
+
Requires-Dist: xsdata>=25.0.0
|
|
10
|
+
Requires-Dist: pydantic>=2.0.0
|
|
11
|
+
Requires-Dist: pydantic-xml>=2.0.0
|
|
12
|
+
Requires-Dist: xsdata-pydantic>=24.0.0
|
|
13
|
+
Dynamic: author
|
|
14
|
+
Dynamic: author-email
|
|
15
|
+
Dynamic: description
|
|
16
|
+
Dynamic: license
|
|
17
|
+
Dynamic: requires-dist
|
|
18
|
+
Dynamic: summary
|
|
19
|
+
|
|
20
|
+
Alight SDK for the BrynQ.com platform
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
brynq_sdk_alight/__init__.py,sha256=ox3r7tZwgzyPAdA8SWrRJwjD8XQLYph1swA21k9s5Sw,43336
|
|
2
|
+
brynq_sdk_alight/address.py,sha256=xi14zO_l2hdXMVzxDcKaeEyhh6y0LBhgidTZ6ws0dek,2180
|
|
3
|
+
brynq_sdk_alight/employee.py,sha256=9E-zlgD7eSPiS7p5brRPpf9X9JFSsyETkv5bXfqv0dU,2692
|
|
4
|
+
brynq_sdk_alight/job.py,sha256=0sO6_Z5VJRUdGqDh__X3J9u1pLlf4Mzq8v1UzKhzPQY,2674
|
|
5
|
+
brynq_sdk_alight/leave.py,sha256=7hYWbkxXFLWEjzBqallYCOg6kVGXxd_FCsRsE_TXTns,2993
|
|
6
|
+
brynq_sdk_alight/pay_elements.py,sha256=XJA1KexjHX8ottQWSsgD8jip2M5LmLlhiTU3Ldp51co,3519
|
|
7
|
+
brynq_sdk_alight/salary.py,sha256=KfSYW-WrW4L0OqxfE2oUTDJERaCmhCTptRSft07NsrA,3716
|
|
8
|
+
brynq_sdk_alight/termination.py,sha256=IhvJ61GteSnOx2v98eDf2WOIhLn1jDdIdio5N4kCNQI,3427
|
|
9
|
+
brynq_sdk_alight/time_elements.py,sha256=ssYHzpx_hJ-f7RTyYpq_7OrfZBdPUrxfU5Fx418TabM,4360
|
|
10
|
+
brynq_sdk_alight/time_quotas.py,sha256=dag3OEzUge81IX61093SZ_RwJGynBY0zcuVn0XO7xb0,4143
|
|
11
|
+
brynq_sdk_alight/archive/flat_wrapper.py,sha256=-5yK5P3daAItmSIXfqfiPssSZ3Lje-dItGBqNAhwSB8,5677
|
|
12
|
+
brynq_sdk_alight/archive/hrxml_generator.py,sha256=b52bfGmLKUsCPGFtMr6KWCcc11XPAf8GOR4v7UBAVOU,9852
|
|
13
|
+
brynq_sdk_alight/archive/managers.py,sha256=hJpEK5Ni2ddAYde64ER4HAbVY6fb7XKkFXhr1Ixyhb8,5890
|
|
14
|
+
brynq_sdk_alight/archive/managers_generic.py,sha256=41t_NRzA0THoFcu_0peUhaBmxdpY6k8PbOJxzQs6IeQ,4916
|
|
15
|
+
brynq_sdk_alight/archive/managers_old_complex.py,sha256=aAw0xWN-hGjVgcki6nTyR65aykEdTWlwlrCMryrpaEs,12516
|
|
16
|
+
brynq_sdk_alight/archive/managers_simple.py,sha256=EiHTVocRAmBQdO4ipxXAQtgdIPrM5IG-V6m2BRoQ-p8,8601
|
|
17
|
+
brynq_sdk_alight/schemas/__init__.py,sha256=nDqu5nKvrts-cDHNWYbBJWz-ouq6BtOazdwT1z165nc,537
|
|
18
|
+
brynq_sdk_alight/schemas/absence.py,sha256=2BlTvF3ecRfYqF27QvkKo5J6k1ZMFypSZpuhY6pPuWo,3402
|
|
19
|
+
brynq_sdk_alight/schemas/address.py,sha256=Rl6dqE8piDQv1oA8PA7IId14uVp03vK21DGopP4dPiM,4473
|
|
20
|
+
brynq_sdk_alight/schemas/employee.py,sha256=nTDooXDUkU_TqZGYoR58fwJTnxV7rDgn7IFJyn0Waz4,26840
|
|
21
|
+
brynq_sdk_alight/schemas/job.py,sha256=M6vNeR5asDj3EaguRaMeQoi5LO2GquTLvmxg9-tjws4,4995
|
|
22
|
+
brynq_sdk_alight/schemas/leave.py,sha256=BUJ7V5I4c-t-U6Keyaoqr81FfguzoxtJ4-Yg6e1e0q8,2183
|
|
23
|
+
brynq_sdk_alight/schemas/payments.py,sha256=69O40UoOa8FG7VAWSWk-x_c7co2Sxn_LG95hYkCYpOI,15331
|
|
24
|
+
brynq_sdk_alight/schemas/salary.py,sha256=B1wykXINd-oqG1Agk8bSDB9HneWejChnZeDtBzts-CY,2343
|
|
25
|
+
brynq_sdk_alight/schemas/termination.py,sha256=dbKiMUkaUExqks1ZyRKJklejpQxZ5MtOfzuhejhZxSU,1761
|
|
26
|
+
brynq_sdk_alight/schemas/timequota.py,sha256=kq-u5zkKIRtTGqJBTZQBSmvifaTg_P-UCc5GSzIAb1U,2926
|
|
27
|
+
brynq_sdk_alight/schemas/utils.py,sha256=6mOI_kbkaw4MAuqponZZNqUAsPfwy-6pNd6OBCgZzxs,16284
|
|
28
|
+
brynq_sdk_alight/schemas/generated_envelope_xsd_schema/__init__.py,sha256=2mPTceQnAvE9jayO_HlvcJ77swycTOo1yaQWSzU_ZUU,909937
|
|
29
|
+
brynq_sdk_alight/schemas/generated_envelope_xsd_schema/process_pay_serv_emp.py,sha256=B0h8e3hMz0udXUV0dYjjsc3ZqVp2gDw3RqJwclfSFsk,17349645
|
|
30
|
+
brynq_sdk_alight/schemas/generated_xsd_schemas/__init__.py,sha256=BwVA8LuNjTwjQHGP-IDubRt5zZSXkNglMHn1oTTL9Eg,289863
|
|
31
|
+
brynq_sdk_alight/schemas/generated_xsd_schemas/csec_person.py,sha256=102ahqr03fBkNOLty79rYpQhEBU6qBkV1kKn2ub1iFo,1119803
|
|
32
|
+
brynq_sdk_alight/schemas/generated_xsd_schemas/hrxml_indicative_data.py,sha256=V2AlkYyUuIXFJkR9LbkVRUWy-j2WBlRrrcaHqN5AzbA,3190892
|
|
33
|
+
brynq_sdk_alight/schemas/generated_xsd_schemas/openapplications_bod.py,sha256=wdMkcGgn3i_IDwoaLouMTV4ifwFM5zyc_dmcpX4axwY,1179590
|
|
34
|
+
brynq_sdk_alight/schemas/generated_xsd_schemas/openapplications_code_list_currency_code_iso_7_04.py,sha256=bCHsvtH_0H7Z2B2nY4ohz-7Br5ZKSfne5wiBqPWNW4E,12893
|
|
35
|
+
brynq_sdk_alight/schemas/generated_xsd_schemas/openapplications_code_list_language_code_iso_7_04.py,sha256=64sQtW4XAL2gYjH3w3goxqBLZ1DNM3OLgByAJIwNwec,369
|
|
36
|
+
brynq_sdk_alight/schemas/generated_xsd_schemas/openapplications_code_list_mimemedia_type_code_iana_7_04.py,sha256=-UuDNEh-ffD0HA94qPR707keQAJocqI_VJX1claA93s,378
|
|
37
|
+
brynq_sdk_alight/schemas/generated_xsd_schemas/openapplications_code_list_unit_code_unece_7_04.py,sha256=RjuRRlfuIVrXyium230AR0RkBNXmenYuB1TkH_9_ltM,354
|
|
38
|
+
brynq_sdk_alight/schemas/generated_xsd_schemas/openapplications_code_lists.py,sha256=YSjUKQI3j0BxDIk3jOipJ8bSvFRH3M7OU4g7lFqP4Gc,15244
|
|
39
|
+
brynq_sdk_alight/schemas/generated_xsd_schemas/openapplications_qualified_data_types.py,sha256=fwhRh2bkBdMvpRpRnITAv-1wiYKf1H20HCeIWa0ziyE,2696
|
|
40
|
+
brynq_sdk_alight/schemas/generated_xsd_schemas/openapplications_unqualified_data_types.py,sha256=cbea-P7N45ktP7tFcQMZvKbvTE9-x81NV7CumP4G10I,69646
|
|
41
|
+
brynq_sdk_alight-1.0.0.dist-info/METADATA,sha256=WHiP4JjfFpqL-a3PkHXoRmqvt12QigKePvZRPuFRnUQ,497
|
|
42
|
+
brynq_sdk_alight-1.0.0.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
|
|
43
|
+
brynq_sdk_alight-1.0.0.dist-info/top_level.txt,sha256=4S5DPwjBXkLhf4SonK9dvZsdc5ijVT8Zeyro8vv82-I,17
|
|
44
|
+
brynq_sdk_alight-1.0.0.dist-info/RECORD,,
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
brynq_sdk_alight
|