cloudbeds-fiscal-document 1.12.0__py3-none-any.whl → 1.14.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.
- cloudbeds_fiscal_document/__init__.py +8 -1
- cloudbeds_fiscal_document/api/__init__.py +1 -0
- cloudbeds_fiscal_document/api/export_api.py +343 -0
- cloudbeds_fiscal_document/api_client.py +1 -1
- cloudbeds_fiscal_document/configuration.py +1 -1
- cloudbeds_fiscal_document/models/__init__.py +6 -0
- cloudbeds_fiscal_document/models/configs_response.py +5 -1
- cloudbeds_fiscal_document/models/configs_update_request.py +10 -1
- cloudbeds_fiscal_document/models/create_invoice_request.py +12 -3
- cloudbeds_fiscal_document/models/create_receipt_request.py +14 -4
- cloudbeds_fiscal_document/models/create_simple_receipt_request.py +8 -2
- cloudbeds_fiscal_document/models/get_folio_export_request.py +111 -0
- cloudbeds_fiscal_document/models/get_invoice_preview_request.py +12 -3
- cloudbeds_fiscal_document/models/government_integration.py +8 -4
- cloudbeds_fiscal_document/models/guest_document_type.py +41 -0
- cloudbeds_fiscal_document/models/guest_gender.py +38 -0
- cloudbeds_fiscal_document/models/manual_recipient_request.py +162 -0
- cloudbeds_fiscal_document/models/manual_recipient_request_address.py +127 -0
- cloudbeds_fiscal_document/models/manual_recipient_request_document.py +117 -0
- cloudbeds_fiscal_document/models/recipient_request.py +17 -5
- cloudbeds_fiscal_document/models/recipient_type.py +1 -0
- cloudbeds_fiscal_document/test/test_configs_response.py +2 -1
- cloudbeds_fiscal_document/test/test_configs_update_request.py +2 -1
- cloudbeds_fiscal_document/test/test_create_invoice_request.py +26 -5
- cloudbeds_fiscal_document/test/test_create_receipt_request.py +25 -4
- cloudbeds_fiscal_document/test/test_create_simple_receipt_request.py +26 -2
- cloudbeds_fiscal_document/test/test_export_api.py +38 -0
- cloudbeds_fiscal_document/test/test_fiscal_document_detailed_response.py +2 -1
- cloudbeds_fiscal_document/test/test_fiscal_document_paginated.py +2 -1
- cloudbeds_fiscal_document/test/test_fiscal_document_patch_request.py +2 -1
- cloudbeds_fiscal_document/test/test_fiscal_document_summary_response.py +2 -1
- cloudbeds_fiscal_document/test/test_get_folio_export_request.py +60 -0
- cloudbeds_fiscal_document/test/test_get_invoice_preview_request.py +26 -5
- cloudbeds_fiscal_document/test/test_government_integration.py +2 -1
- cloudbeds_fiscal_document/test/test_guest_document_type.py +33 -0
- cloudbeds_fiscal_document/test/test_guest_gender.py +33 -0
- cloudbeds_fiscal_document/test/test_manual_recipient_request.py +74 -0
- cloudbeds_fiscal_document/test/test_manual_recipient_request_address.py +56 -0
- cloudbeds_fiscal_document/test/test_manual_recipient_request_document.py +55 -0
- cloudbeds_fiscal_document/test/test_pro_forma_invoice_preview_request.py +4 -2
- cloudbeds_fiscal_document/test/test_pro_forma_invoice_request.py +4 -2
- cloudbeds_fiscal_document/test/test_property_configs_response.py +2 -1
- cloudbeds_fiscal_document/test/test_recipient_request.py +2 -1
- {cloudbeds_fiscal_document-1.12.0.dist-info → cloudbeds_fiscal_document-1.14.0.dist-info}/METADATA +9 -2
- {cloudbeds_fiscal_document-1.12.0.dist-info → cloudbeds_fiscal_document-1.14.0.dist-info}/RECORD +48 -34
- {cloudbeds_fiscal_document-1.12.0.dist-info → cloudbeds_fiscal_document-1.14.0.dist-info}/WHEEL +0 -0
- {cloudbeds_fiscal_document-1.12.0.dist-info → cloudbeds_fiscal_document-1.14.0.dist-info}/licenses/LICENSE +0 -0
- {cloudbeds_fiscal_document-1.12.0.dist-info → cloudbeds_fiscal_document-1.14.0.dist-info}/top_level.txt +0 -0
|
@@ -20,6 +20,7 @@ import json
|
|
|
20
20
|
from pydantic import BaseModel, ConfigDict, Field, StrictInt
|
|
21
21
|
from typing import Any, ClassVar, Dict, List, Optional
|
|
22
22
|
from typing_extensions import Annotated
|
|
23
|
+
from cloudbeds_fiscal_document.models.manual_recipient_request import ManualRecipientRequest
|
|
23
24
|
from cloudbeds_fiscal_document.models.recipient_request import RecipientRequest
|
|
24
25
|
from cloudbeds_fiscal_document.models.source_kind import SourceKind
|
|
25
26
|
from typing import Optional, Set
|
|
@@ -35,7 +36,8 @@ class CreateSimpleReceiptRequest(BaseModel):
|
|
|
35
36
|
source_id: Annotated[int, Field(strict=True, ge=1)] = Field(alias="sourceId")
|
|
36
37
|
source_kind: SourceKind = Field(alias="sourceKind")
|
|
37
38
|
recipient: RecipientRequest
|
|
38
|
-
|
|
39
|
+
manual_recipient: Optional[ManualRecipientRequest] = Field(default=None, alias="manualRecipient")
|
|
40
|
+
__properties: ClassVar[List[str]] = ["transactionIds", "sequenceId", "userId", "sourceId", "sourceKind", "recipient", "manualRecipient"]
|
|
39
41
|
|
|
40
42
|
model_config = ConfigDict(
|
|
41
43
|
populate_by_name=True,
|
|
@@ -79,6 +81,9 @@ class CreateSimpleReceiptRequest(BaseModel):
|
|
|
79
81
|
# override the default output from pydantic by calling `to_dict()` of recipient
|
|
80
82
|
if self.recipient:
|
|
81
83
|
_dict['recipient'] = self.recipient.to_dict()
|
|
84
|
+
# override the default output from pydantic by calling `to_dict()` of manual_recipient
|
|
85
|
+
if self.manual_recipient:
|
|
86
|
+
_dict['manualRecipient'] = self.manual_recipient.to_dict()
|
|
82
87
|
# set to None if sequence_id (nullable) is None
|
|
83
88
|
# and model_fields_set contains the field
|
|
84
89
|
if self.sequence_id is None and "sequence_id" in self.model_fields_set:
|
|
@@ -101,7 +106,8 @@ class CreateSimpleReceiptRequest(BaseModel):
|
|
|
101
106
|
"userId": obj.get("userId"),
|
|
102
107
|
"sourceId": obj.get("sourceId"),
|
|
103
108
|
"sourceKind": obj.get("sourceKind"),
|
|
104
|
-
"recipient": RecipientRequest.from_dict(obj["recipient"]) if obj.get("recipient") is not None else None
|
|
109
|
+
"recipient": RecipientRequest.from_dict(obj["recipient"]) if obj.get("recipient") is not None else None,
|
|
110
|
+
"manualRecipient": ManualRecipientRequest.from_dict(obj["manualRecipient"]) if obj.get("manualRecipient") is not None else None
|
|
105
111
|
})
|
|
106
112
|
return _obj
|
|
107
113
|
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
# coding: utf-8
|
|
2
|
+
|
|
3
|
+
"""
|
|
4
|
+
Fiscal document service API
|
|
5
|
+
|
|
6
|
+
No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
|
|
7
|
+
|
|
8
|
+
The version of the OpenAPI document: v1
|
|
9
|
+
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
|
10
|
+
|
|
11
|
+
Do not edit the class manually.
|
|
12
|
+
""" # noqa: E501
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
from __future__ import annotations
|
|
16
|
+
import pprint
|
|
17
|
+
import re # noqa: F401
|
|
18
|
+
import json
|
|
19
|
+
|
|
20
|
+
from datetime import date
|
|
21
|
+
from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictInt
|
|
22
|
+
from typing import Any, ClassVar, Dict, List, Optional
|
|
23
|
+
from cloudbeds_fiscal_document.models.source_kind import SourceKind
|
|
24
|
+
from typing import Optional, Set
|
|
25
|
+
from typing_extensions import Self
|
|
26
|
+
|
|
27
|
+
class GetFolioExportRequest(BaseModel):
|
|
28
|
+
"""
|
|
29
|
+
GetFolioExportRequest
|
|
30
|
+
""" # noqa: E501
|
|
31
|
+
folio_ids: List[StrictInt] = Field(description="Include transactions from the specified folio IDs", alias="folioIds")
|
|
32
|
+
source_kind: SourceKind = Field(alias="sourceKind")
|
|
33
|
+
source_id: StrictInt = Field(description="source ID of folio", alias="sourceId")
|
|
34
|
+
credit_debit_view: Optional[StrictBool] = Field(default=None, description="Should transactions be separated into debit/credits", alias="creditDebitView")
|
|
35
|
+
revenue_compact: Optional[StrictBool] = Field(default=None, description="Compact revenue transactions, valid only for sourceKind = RESERVATION", alias="revenueCompact")
|
|
36
|
+
date_from: Optional[date] = Field(default=None, description="Minimum date, only for sourceKind = HOUSE_ACCOUNT", alias="dateFrom")
|
|
37
|
+
date_to: Optional[date] = Field(default=None, description="Maximum date, only for sourceKind = HOUSE_ACCOUNT, optional", alias="dateTo")
|
|
38
|
+
__properties: ClassVar[List[str]] = ["folioIds", "sourceKind", "sourceId", "creditDebitView", "revenueCompact", "dateFrom", "dateTo"]
|
|
39
|
+
|
|
40
|
+
model_config = ConfigDict(
|
|
41
|
+
populate_by_name=True,
|
|
42
|
+
validate_assignment=True,
|
|
43
|
+
protected_namespaces=(),
|
|
44
|
+
)
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
def to_str(self) -> str:
|
|
48
|
+
"""Returns the string representation of the model using alias"""
|
|
49
|
+
return pprint.pformat(self.model_dump(by_alias=True))
|
|
50
|
+
|
|
51
|
+
def to_json(self) -> str:
|
|
52
|
+
"""Returns the JSON representation of the model using alias"""
|
|
53
|
+
# TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
|
|
54
|
+
return json.dumps(self.to_dict())
|
|
55
|
+
|
|
56
|
+
@classmethod
|
|
57
|
+
def from_json(cls, json_str: str) -> Optional[Self]:
|
|
58
|
+
"""Create an instance of GetFolioExportRequest from a JSON string"""
|
|
59
|
+
return cls.from_dict(json.loads(json_str))
|
|
60
|
+
|
|
61
|
+
def to_dict(self) -> Dict[str, Any]:
|
|
62
|
+
"""Return the dictionary representation of the model using alias.
|
|
63
|
+
|
|
64
|
+
This has the following differences from calling pydantic's
|
|
65
|
+
`self.model_dump(by_alias=True)`:
|
|
66
|
+
|
|
67
|
+
* `None` is only added to the output dict for nullable fields that
|
|
68
|
+
were set at model initialization. Other fields with value `None`
|
|
69
|
+
are ignored.
|
|
70
|
+
"""
|
|
71
|
+
excluded_fields: Set[str] = set([
|
|
72
|
+
])
|
|
73
|
+
|
|
74
|
+
_dict = self.model_dump(
|
|
75
|
+
by_alias=True,
|
|
76
|
+
exclude=excluded_fields,
|
|
77
|
+
exclude_none=True,
|
|
78
|
+
)
|
|
79
|
+
# set to None if date_from (nullable) is None
|
|
80
|
+
# and model_fields_set contains the field
|
|
81
|
+
if self.date_from is None and "date_from" in self.model_fields_set:
|
|
82
|
+
_dict['dateFrom'] = None
|
|
83
|
+
|
|
84
|
+
# set to None if date_to (nullable) is None
|
|
85
|
+
# and model_fields_set contains the field
|
|
86
|
+
if self.date_to is None and "date_to" in self.model_fields_set:
|
|
87
|
+
_dict['dateTo'] = None
|
|
88
|
+
|
|
89
|
+
return _dict
|
|
90
|
+
|
|
91
|
+
@classmethod
|
|
92
|
+
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
|
|
93
|
+
"""Create an instance of GetFolioExportRequest from a dict"""
|
|
94
|
+
if obj is None:
|
|
95
|
+
return None
|
|
96
|
+
|
|
97
|
+
if not isinstance(obj, dict):
|
|
98
|
+
return cls.model_validate(obj)
|
|
99
|
+
|
|
100
|
+
_obj = cls.model_validate({
|
|
101
|
+
"folioIds": obj.get("folioIds"),
|
|
102
|
+
"sourceKind": obj.get("sourceKind"),
|
|
103
|
+
"sourceId": obj.get("sourceId"),
|
|
104
|
+
"creditDebitView": obj.get("creditDebitView"),
|
|
105
|
+
"revenueCompact": obj.get("revenueCompact"),
|
|
106
|
+
"dateFrom": obj.get("dateFrom"),
|
|
107
|
+
"dateTo": obj.get("dateTo")
|
|
108
|
+
})
|
|
109
|
+
return _obj
|
|
110
|
+
|
|
111
|
+
|
|
@@ -17,9 +17,11 @@ import pprint
|
|
|
17
17
|
import re # noqa: F401
|
|
18
18
|
import json
|
|
19
19
|
|
|
20
|
+
from datetime import date
|
|
20
21
|
from pydantic import BaseModel, ConfigDict, Field, StrictBool
|
|
21
22
|
from typing import Any, ClassVar, Dict, List, Optional
|
|
22
23
|
from typing_extensions import Annotated
|
|
24
|
+
from cloudbeds_fiscal_document.models.manual_recipient_request import ManualRecipientRequest
|
|
23
25
|
from cloudbeds_fiscal_document.models.recipient_request import RecipientRequest
|
|
24
26
|
from cloudbeds_fiscal_document.models.source_kind import SourceKind
|
|
25
27
|
from typing import Optional, Set
|
|
@@ -34,12 +36,14 @@ class GetInvoicePreviewRequest(BaseModel):
|
|
|
34
36
|
sequence_id: Optional[Annotated[int, Field(strict=True, ge=1)]] = Field(default=None, alias="sequenceId")
|
|
35
37
|
source_kind: SourceKind = Field(alias="sourceKind")
|
|
36
38
|
user_id: Optional[Annotated[int, Field(strict=True, ge=0)]] = Field(default=None, alias="userId")
|
|
37
|
-
recipient: RecipientRequest
|
|
39
|
+
recipient: Optional[RecipientRequest] = None
|
|
40
|
+
manual_recipient: Optional[ManualRecipientRequest] = Field(default=None, alias="manualRecipient")
|
|
38
41
|
folio_ids: Optional[List[Annotated[int, Field(strict=True, ge=1)]]] = Field(default=None, description="Include all transactions from the specified folio IDs", alias="folioIds")
|
|
39
42
|
exclude_transaction_ids: Optional[List[Annotated[int, Field(strict=True, ge=1)]]] = Field(default=None, description="Exclude transactions with the specified IDs", alias="excludeTransactionIds")
|
|
40
43
|
include_transaction_ids: Optional[List[Annotated[int, Field(strict=True, ge=1)]]] = Field(default=None, description="Include transactions with the specified IDs", alias="includeTransactionIds")
|
|
41
44
|
simplified: Optional[StrictBool] = False
|
|
42
|
-
|
|
45
|
+
due_date_property_timezone: Optional[date] = Field(default=None, alias="dueDatePropertyTimezone")
|
|
46
|
+
__properties: ClassVar[List[str]] = ["transactionIds", "sourceId", "sequenceId", "sourceKind", "userId", "recipient", "manualRecipient", "folioIds", "excludeTransactionIds", "includeTransactionIds", "simplified", "dueDatePropertyTimezone"]
|
|
43
47
|
|
|
44
48
|
model_config = ConfigDict(
|
|
45
49
|
populate_by_name=True,
|
|
@@ -83,6 +87,9 @@ class GetInvoicePreviewRequest(BaseModel):
|
|
|
83
87
|
# override the default output from pydantic by calling `to_dict()` of recipient
|
|
84
88
|
if self.recipient:
|
|
85
89
|
_dict['recipient'] = self.recipient.to_dict()
|
|
90
|
+
# override the default output from pydantic by calling `to_dict()` of manual_recipient
|
|
91
|
+
if self.manual_recipient:
|
|
92
|
+
_dict['manualRecipient'] = self.manual_recipient.to_dict()
|
|
86
93
|
# set to None if sequence_id (nullable) is None
|
|
87
94
|
# and model_fields_set contains the field
|
|
88
95
|
if self.sequence_id is None and "sequence_id" in self.model_fields_set:
|
|
@@ -111,10 +118,12 @@ class GetInvoicePreviewRequest(BaseModel):
|
|
|
111
118
|
"sourceKind": obj.get("sourceKind"),
|
|
112
119
|
"userId": obj.get("userId"),
|
|
113
120
|
"recipient": RecipientRequest.from_dict(obj["recipient"]) if obj.get("recipient") is not None else None,
|
|
121
|
+
"manualRecipient": ManualRecipientRequest.from_dict(obj["manualRecipient"]) if obj.get("manualRecipient") is not None else None,
|
|
114
122
|
"folioIds": obj.get("folioIds"),
|
|
115
123
|
"excludeTransactionIds": obj.get("excludeTransactionIds"),
|
|
116
124
|
"includeTransactionIds": obj.get("includeTransactionIds"),
|
|
117
|
-
"simplified": obj.get("simplified") if obj.get("simplified") is not None else False
|
|
125
|
+
"simplified": obj.get("simplified") if obj.get("simplified") is not None else False,
|
|
126
|
+
"dueDatePropertyTimezone": obj.get("dueDatePropertyTimezone")
|
|
118
127
|
})
|
|
119
128
|
return _obj
|
|
120
129
|
|
|
@@ -17,8 +17,8 @@ import pprint
|
|
|
17
17
|
import re # noqa: F401
|
|
18
18
|
import json
|
|
19
19
|
|
|
20
|
-
from pydantic import BaseModel, ConfigDict, Field, StrictStr
|
|
21
|
-
from typing import Any, ClassVar, Dict, List, Optional
|
|
20
|
+
from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictBytes, StrictStr
|
|
21
|
+
from typing import Any, ClassVar, Dict, List, Optional, Union
|
|
22
22
|
from cloudbeds_fiscal_document.models.fiscal_document_status import FiscalDocumentStatus
|
|
23
23
|
from cloudbeds_fiscal_document.models.government_integration_qr import GovernmentIntegrationQr
|
|
24
24
|
from typing import Optional, Set
|
|
@@ -37,7 +37,9 @@ class GovernmentIntegration(BaseModel):
|
|
|
37
37
|
external_id: Optional[StrictStr] = Field(default=None, alias="externalId")
|
|
38
38
|
rectifying_invoice_type: Optional[StrictStr] = Field(default=None, alias="rectifyingInvoiceType")
|
|
39
39
|
cancellation_failed_fallback_status: Optional[FiscalDocumentStatus] = Field(default=None, alias="cancellationFailedFallbackStatus")
|
|
40
|
-
|
|
40
|
+
pdf_file_base64: Optional[Union[StrictBytes, StrictStr]] = Field(default=None, description="Base64-encoded PDF file content. Only allowed when status is COMPLETED_INTEGRATION.", alias="pdfFileBase64")
|
|
41
|
+
handwritten: Optional[StrictBool] = Field(default=None, description="Indicates this is a handwritten receipt created during POS unavailability.")
|
|
42
|
+
__properties: ClassVar[List[str]] = ["number", "series", "status", "qr", "url", "officialId", "externalId", "rectifyingInvoiceType", "cancellationFailedFallbackStatus", "pdfFileBase64", "handwritten"]
|
|
41
43
|
|
|
42
44
|
model_config = ConfigDict(
|
|
43
45
|
populate_by_name=True,
|
|
@@ -101,7 +103,9 @@ class GovernmentIntegration(BaseModel):
|
|
|
101
103
|
"officialId": obj.get("officialId"),
|
|
102
104
|
"externalId": obj.get("externalId"),
|
|
103
105
|
"rectifyingInvoiceType": obj.get("rectifyingInvoiceType"),
|
|
104
|
-
"cancellationFailedFallbackStatus": obj.get("cancellationFailedFallbackStatus")
|
|
106
|
+
"cancellationFailedFallbackStatus": obj.get("cancellationFailedFallbackStatus"),
|
|
107
|
+
"pdfFileBase64": obj.get("pdfFileBase64"),
|
|
108
|
+
"handwritten": obj.get("handwritten")
|
|
105
109
|
})
|
|
106
110
|
return _obj
|
|
107
111
|
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# coding: utf-8
|
|
2
|
+
|
|
3
|
+
"""
|
|
4
|
+
Fiscal document service API
|
|
5
|
+
|
|
6
|
+
No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
|
|
7
|
+
|
|
8
|
+
The version of the OpenAPI document: v1
|
|
9
|
+
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
|
10
|
+
|
|
11
|
+
Do not edit the class manually.
|
|
12
|
+
""" # noqa: E501
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
from __future__ import annotations
|
|
16
|
+
import json
|
|
17
|
+
from enum import Enum
|
|
18
|
+
from typing_extensions import Self
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
class GuestDocumentType(str, Enum):
|
|
22
|
+
"""
|
|
23
|
+
Type of guest identification document
|
|
24
|
+
"""
|
|
25
|
+
|
|
26
|
+
"""
|
|
27
|
+
allowed enum values
|
|
28
|
+
"""
|
|
29
|
+
NA = 'na'
|
|
30
|
+
DRIVER_LICENCE = 'driver_licence'
|
|
31
|
+
STUDENT_ID = 'student_id'
|
|
32
|
+
PASSPORT = 'passport'
|
|
33
|
+
DNI = 'dni'
|
|
34
|
+
NIE = 'nie'
|
|
35
|
+
|
|
36
|
+
@classmethod
|
|
37
|
+
def from_json(cls, json_str: str) -> Self:
|
|
38
|
+
"""Create an instance of GuestDocumentType from a JSON string"""
|
|
39
|
+
return cls(json.loads(json_str))
|
|
40
|
+
|
|
41
|
+
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# coding: utf-8
|
|
2
|
+
|
|
3
|
+
"""
|
|
4
|
+
Fiscal document service API
|
|
5
|
+
|
|
6
|
+
No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
|
|
7
|
+
|
|
8
|
+
The version of the OpenAPI document: v1
|
|
9
|
+
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
|
10
|
+
|
|
11
|
+
Do not edit the class manually.
|
|
12
|
+
""" # noqa: E501
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
from __future__ import annotations
|
|
16
|
+
import json
|
|
17
|
+
from enum import Enum
|
|
18
|
+
from typing_extensions import Self
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
class GuestGender(str, Enum):
|
|
22
|
+
"""
|
|
23
|
+
Gender of the guest
|
|
24
|
+
"""
|
|
25
|
+
|
|
26
|
+
"""
|
|
27
|
+
allowed enum values
|
|
28
|
+
"""
|
|
29
|
+
M = 'M'
|
|
30
|
+
F = 'F'
|
|
31
|
+
N_SLASH_A = 'N/A'
|
|
32
|
+
|
|
33
|
+
@classmethod
|
|
34
|
+
def from_json(cls, json_str: str) -> Self:
|
|
35
|
+
"""Create an instance of GuestGender from a JSON string"""
|
|
36
|
+
return cls(json.loads(json_str))
|
|
37
|
+
|
|
38
|
+
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
# coding: utf-8
|
|
2
|
+
|
|
3
|
+
"""
|
|
4
|
+
Fiscal document service API
|
|
5
|
+
|
|
6
|
+
No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
|
|
7
|
+
|
|
8
|
+
The version of the OpenAPI document: v1
|
|
9
|
+
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
|
10
|
+
|
|
11
|
+
Do not edit the class manually.
|
|
12
|
+
""" # noqa: E501
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
from __future__ import annotations
|
|
16
|
+
import pprint
|
|
17
|
+
import re # noqa: F401
|
|
18
|
+
import json
|
|
19
|
+
|
|
20
|
+
from datetime import date
|
|
21
|
+
from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator
|
|
22
|
+
from typing import Any, ClassVar, Dict, List, Optional
|
|
23
|
+
from cloudbeds_fiscal_document.models.guest_gender import GuestGender
|
|
24
|
+
from cloudbeds_fiscal_document.models.manual_recipient_request_address import ManualRecipientRequestAddress
|
|
25
|
+
from cloudbeds_fiscal_document.models.manual_recipient_request_document import ManualRecipientRequestDocument
|
|
26
|
+
from typing import Optional, Set
|
|
27
|
+
from typing_extensions import Self
|
|
28
|
+
|
|
29
|
+
class ManualRecipientRequest(BaseModel):
|
|
30
|
+
"""
|
|
31
|
+
ManualRecipientRequest
|
|
32
|
+
""" # noqa: E501
|
|
33
|
+
type: StrictStr = Field(description="Type of recipient (person or company)")
|
|
34
|
+
name: Optional[StrictStr] = Field(description="Name of the recipient")
|
|
35
|
+
gender: Optional[GuestGender] = None
|
|
36
|
+
email: Optional[StrictStr] = Field(default=None, description="Email address of the recipient")
|
|
37
|
+
birthday: Optional[date] = Field(default=None, description="Birthday of the recipient")
|
|
38
|
+
phone: Optional[StrictStr] = Field(default=None, description="Phone number")
|
|
39
|
+
cell_phone: Optional[StrictStr] = Field(default=None, description="Cell phone number", alias="cellPhone")
|
|
40
|
+
tax_id: Optional[StrictStr] = Field(description="Tax ID / VAT number", alias="taxId")
|
|
41
|
+
address: Optional[ManualRecipientRequestAddress] = None
|
|
42
|
+
document: Optional[ManualRecipientRequestDocument] = None
|
|
43
|
+
__properties: ClassVar[List[str]] = ["type", "name", "gender", "email", "birthday", "phone", "cellPhone", "taxId", "address", "document"]
|
|
44
|
+
|
|
45
|
+
@field_validator('type')
|
|
46
|
+
def type_validate_enum(cls, value):
|
|
47
|
+
"""Validates the enum"""
|
|
48
|
+
if value not in set(['PERSON', 'COMPANY']):
|
|
49
|
+
raise ValueError("must be one of enum values ('PERSON', 'COMPANY')")
|
|
50
|
+
return value
|
|
51
|
+
|
|
52
|
+
model_config = ConfigDict(
|
|
53
|
+
populate_by_name=True,
|
|
54
|
+
validate_assignment=True,
|
|
55
|
+
protected_namespaces=(),
|
|
56
|
+
)
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
def to_str(self) -> str:
|
|
60
|
+
"""Returns the string representation of the model using alias"""
|
|
61
|
+
return pprint.pformat(self.model_dump(by_alias=True))
|
|
62
|
+
|
|
63
|
+
def to_json(self) -> str:
|
|
64
|
+
"""Returns the JSON representation of the model using alias"""
|
|
65
|
+
# TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
|
|
66
|
+
return json.dumps(self.to_dict())
|
|
67
|
+
|
|
68
|
+
@classmethod
|
|
69
|
+
def from_json(cls, json_str: str) -> Optional[Self]:
|
|
70
|
+
"""Create an instance of ManualRecipientRequest from a JSON string"""
|
|
71
|
+
return cls.from_dict(json.loads(json_str))
|
|
72
|
+
|
|
73
|
+
def to_dict(self) -> Dict[str, Any]:
|
|
74
|
+
"""Return the dictionary representation of the model using alias.
|
|
75
|
+
|
|
76
|
+
This has the following differences from calling pydantic's
|
|
77
|
+
`self.model_dump(by_alias=True)`:
|
|
78
|
+
|
|
79
|
+
* `None` is only added to the output dict for nullable fields that
|
|
80
|
+
were set at model initialization. Other fields with value `None`
|
|
81
|
+
are ignored.
|
|
82
|
+
"""
|
|
83
|
+
excluded_fields: Set[str] = set([
|
|
84
|
+
])
|
|
85
|
+
|
|
86
|
+
_dict = self.model_dump(
|
|
87
|
+
by_alias=True,
|
|
88
|
+
exclude=excluded_fields,
|
|
89
|
+
exclude_none=True,
|
|
90
|
+
)
|
|
91
|
+
# override the default output from pydantic by calling `to_dict()` of address
|
|
92
|
+
if self.address:
|
|
93
|
+
_dict['address'] = self.address.to_dict()
|
|
94
|
+
# override the default output from pydantic by calling `to_dict()` of document
|
|
95
|
+
if self.document:
|
|
96
|
+
_dict['document'] = self.document.to_dict()
|
|
97
|
+
# set to None if name (nullable) is None
|
|
98
|
+
# and model_fields_set contains the field
|
|
99
|
+
if self.name is None and "name" in self.model_fields_set:
|
|
100
|
+
_dict['name'] = None
|
|
101
|
+
|
|
102
|
+
# set to None if email (nullable) is None
|
|
103
|
+
# and model_fields_set contains the field
|
|
104
|
+
if self.email is None and "email" in self.model_fields_set:
|
|
105
|
+
_dict['email'] = None
|
|
106
|
+
|
|
107
|
+
# set to None if birthday (nullable) is None
|
|
108
|
+
# and model_fields_set contains the field
|
|
109
|
+
if self.birthday is None and "birthday" in self.model_fields_set:
|
|
110
|
+
_dict['birthday'] = None
|
|
111
|
+
|
|
112
|
+
# set to None if phone (nullable) is None
|
|
113
|
+
# and model_fields_set contains the field
|
|
114
|
+
if self.phone is None and "phone" in self.model_fields_set:
|
|
115
|
+
_dict['phone'] = None
|
|
116
|
+
|
|
117
|
+
# set to None if cell_phone (nullable) is None
|
|
118
|
+
# and model_fields_set contains the field
|
|
119
|
+
if self.cell_phone is None and "cell_phone" in self.model_fields_set:
|
|
120
|
+
_dict['cellPhone'] = None
|
|
121
|
+
|
|
122
|
+
# set to None if tax_id (nullable) is None
|
|
123
|
+
# and model_fields_set contains the field
|
|
124
|
+
if self.tax_id is None and "tax_id" in self.model_fields_set:
|
|
125
|
+
_dict['taxId'] = None
|
|
126
|
+
|
|
127
|
+
# set to None if address (nullable) is None
|
|
128
|
+
# and model_fields_set contains the field
|
|
129
|
+
if self.address is None and "address" in self.model_fields_set:
|
|
130
|
+
_dict['address'] = None
|
|
131
|
+
|
|
132
|
+
# set to None if document (nullable) is None
|
|
133
|
+
# and model_fields_set contains the field
|
|
134
|
+
if self.document is None and "document" in self.model_fields_set:
|
|
135
|
+
_dict['document'] = None
|
|
136
|
+
|
|
137
|
+
return _dict
|
|
138
|
+
|
|
139
|
+
@classmethod
|
|
140
|
+
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
|
|
141
|
+
"""Create an instance of ManualRecipientRequest from a dict"""
|
|
142
|
+
if obj is None:
|
|
143
|
+
return None
|
|
144
|
+
|
|
145
|
+
if not isinstance(obj, dict):
|
|
146
|
+
return cls.model_validate(obj)
|
|
147
|
+
|
|
148
|
+
_obj = cls.model_validate({
|
|
149
|
+
"type": obj.get("type"),
|
|
150
|
+
"name": obj.get("name"),
|
|
151
|
+
"gender": obj.get("gender"),
|
|
152
|
+
"email": obj.get("email"),
|
|
153
|
+
"birthday": obj.get("birthday"),
|
|
154
|
+
"phone": obj.get("phone"),
|
|
155
|
+
"cellPhone": obj.get("cellPhone"),
|
|
156
|
+
"taxId": obj.get("taxId"),
|
|
157
|
+
"address": ManualRecipientRequestAddress.from_dict(obj["address"]) if obj.get("address") is not None else None,
|
|
158
|
+
"document": ManualRecipientRequestDocument.from_dict(obj["document"]) if obj.get("document") is not None else None
|
|
159
|
+
})
|
|
160
|
+
return _obj
|
|
161
|
+
|
|
162
|
+
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
# coding: utf-8
|
|
2
|
+
|
|
3
|
+
"""
|
|
4
|
+
Fiscal document service API
|
|
5
|
+
|
|
6
|
+
No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
|
|
7
|
+
|
|
8
|
+
The version of the OpenAPI document: v1
|
|
9
|
+
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
|
10
|
+
|
|
11
|
+
Do not edit the class manually.
|
|
12
|
+
""" # noqa: E501
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
from __future__ import annotations
|
|
16
|
+
import pprint
|
|
17
|
+
import re # noqa: F401
|
|
18
|
+
import json
|
|
19
|
+
|
|
20
|
+
from pydantic import BaseModel, ConfigDict, Field, StrictStr
|
|
21
|
+
from typing import Any, ClassVar, Dict, List, Optional
|
|
22
|
+
from typing import Optional, Set
|
|
23
|
+
from typing_extensions import Self
|
|
24
|
+
|
|
25
|
+
class ManualRecipientRequestAddress(BaseModel):
|
|
26
|
+
"""
|
|
27
|
+
ManualRecipientRequestAddress
|
|
28
|
+
""" # noqa: E501
|
|
29
|
+
country: Optional[StrictStr] = Field(default=None, description="Country code")
|
|
30
|
+
state: Optional[StrictStr] = Field(default=None, description="State or province")
|
|
31
|
+
city: Optional[StrictStr] = Field(default=None, description="City")
|
|
32
|
+
address1: Optional[StrictStr] = Field(default=None, description="Primary street address")
|
|
33
|
+
address2: Optional[StrictStr] = Field(default=None, description="Secondary street address")
|
|
34
|
+
zip: Optional[StrictStr] = Field(default=None, description="Zip/postal code")
|
|
35
|
+
__properties: ClassVar[List[str]] = ["country", "state", "city", "address1", "address2", "zip"]
|
|
36
|
+
|
|
37
|
+
model_config = ConfigDict(
|
|
38
|
+
populate_by_name=True,
|
|
39
|
+
validate_assignment=True,
|
|
40
|
+
protected_namespaces=(),
|
|
41
|
+
)
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
def to_str(self) -> str:
|
|
45
|
+
"""Returns the string representation of the model using alias"""
|
|
46
|
+
return pprint.pformat(self.model_dump(by_alias=True))
|
|
47
|
+
|
|
48
|
+
def to_json(self) -> str:
|
|
49
|
+
"""Returns the JSON representation of the model using alias"""
|
|
50
|
+
# TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
|
|
51
|
+
return json.dumps(self.to_dict())
|
|
52
|
+
|
|
53
|
+
@classmethod
|
|
54
|
+
def from_json(cls, json_str: str) -> Optional[Self]:
|
|
55
|
+
"""Create an instance of ManualRecipientRequestAddress from a JSON string"""
|
|
56
|
+
return cls.from_dict(json.loads(json_str))
|
|
57
|
+
|
|
58
|
+
def to_dict(self) -> Dict[str, Any]:
|
|
59
|
+
"""Return the dictionary representation of the model using alias.
|
|
60
|
+
|
|
61
|
+
This has the following differences from calling pydantic's
|
|
62
|
+
`self.model_dump(by_alias=True)`:
|
|
63
|
+
|
|
64
|
+
* `None` is only added to the output dict for nullable fields that
|
|
65
|
+
were set at model initialization. Other fields with value `None`
|
|
66
|
+
are ignored.
|
|
67
|
+
"""
|
|
68
|
+
excluded_fields: Set[str] = set([
|
|
69
|
+
])
|
|
70
|
+
|
|
71
|
+
_dict = self.model_dump(
|
|
72
|
+
by_alias=True,
|
|
73
|
+
exclude=excluded_fields,
|
|
74
|
+
exclude_none=True,
|
|
75
|
+
)
|
|
76
|
+
# set to None if country (nullable) is None
|
|
77
|
+
# and model_fields_set contains the field
|
|
78
|
+
if self.country is None and "country" in self.model_fields_set:
|
|
79
|
+
_dict['country'] = None
|
|
80
|
+
|
|
81
|
+
# set to None if state (nullable) is None
|
|
82
|
+
# and model_fields_set contains the field
|
|
83
|
+
if self.state is None and "state" in self.model_fields_set:
|
|
84
|
+
_dict['state'] = None
|
|
85
|
+
|
|
86
|
+
# set to None if city (nullable) is None
|
|
87
|
+
# and model_fields_set contains the field
|
|
88
|
+
if self.city is None and "city" in self.model_fields_set:
|
|
89
|
+
_dict['city'] = None
|
|
90
|
+
|
|
91
|
+
# set to None if address1 (nullable) is None
|
|
92
|
+
# and model_fields_set contains the field
|
|
93
|
+
if self.address1 is None and "address1" in self.model_fields_set:
|
|
94
|
+
_dict['address1'] = None
|
|
95
|
+
|
|
96
|
+
# set to None if address2 (nullable) is None
|
|
97
|
+
# and model_fields_set contains the field
|
|
98
|
+
if self.address2 is None and "address2" in self.model_fields_set:
|
|
99
|
+
_dict['address2'] = None
|
|
100
|
+
|
|
101
|
+
# set to None if zip (nullable) is None
|
|
102
|
+
# and model_fields_set contains the field
|
|
103
|
+
if self.zip is None and "zip" in self.model_fields_set:
|
|
104
|
+
_dict['zip'] = None
|
|
105
|
+
|
|
106
|
+
return _dict
|
|
107
|
+
|
|
108
|
+
@classmethod
|
|
109
|
+
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
|
|
110
|
+
"""Create an instance of ManualRecipientRequestAddress from a dict"""
|
|
111
|
+
if obj is None:
|
|
112
|
+
return None
|
|
113
|
+
|
|
114
|
+
if not isinstance(obj, dict):
|
|
115
|
+
return cls.model_validate(obj)
|
|
116
|
+
|
|
117
|
+
_obj = cls.model_validate({
|
|
118
|
+
"country": obj.get("country"),
|
|
119
|
+
"state": obj.get("state"),
|
|
120
|
+
"city": obj.get("city"),
|
|
121
|
+
"address1": obj.get("address1"),
|
|
122
|
+
"address2": obj.get("address2"),
|
|
123
|
+
"zip": obj.get("zip")
|
|
124
|
+
})
|
|
125
|
+
return _obj
|
|
126
|
+
|
|
127
|
+
|