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.
Files changed (48) hide show
  1. cloudbeds_fiscal_document/__init__.py +8 -1
  2. cloudbeds_fiscal_document/api/__init__.py +1 -0
  3. cloudbeds_fiscal_document/api/export_api.py +343 -0
  4. cloudbeds_fiscal_document/api_client.py +1 -1
  5. cloudbeds_fiscal_document/configuration.py +1 -1
  6. cloudbeds_fiscal_document/models/__init__.py +6 -0
  7. cloudbeds_fiscal_document/models/configs_response.py +5 -1
  8. cloudbeds_fiscal_document/models/configs_update_request.py +10 -1
  9. cloudbeds_fiscal_document/models/create_invoice_request.py +12 -3
  10. cloudbeds_fiscal_document/models/create_receipt_request.py +14 -4
  11. cloudbeds_fiscal_document/models/create_simple_receipt_request.py +8 -2
  12. cloudbeds_fiscal_document/models/get_folio_export_request.py +111 -0
  13. cloudbeds_fiscal_document/models/get_invoice_preview_request.py +12 -3
  14. cloudbeds_fiscal_document/models/government_integration.py +8 -4
  15. cloudbeds_fiscal_document/models/guest_document_type.py +41 -0
  16. cloudbeds_fiscal_document/models/guest_gender.py +38 -0
  17. cloudbeds_fiscal_document/models/manual_recipient_request.py +162 -0
  18. cloudbeds_fiscal_document/models/manual_recipient_request_address.py +127 -0
  19. cloudbeds_fiscal_document/models/manual_recipient_request_document.py +117 -0
  20. cloudbeds_fiscal_document/models/recipient_request.py +17 -5
  21. cloudbeds_fiscal_document/models/recipient_type.py +1 -0
  22. cloudbeds_fiscal_document/test/test_configs_response.py +2 -1
  23. cloudbeds_fiscal_document/test/test_configs_update_request.py +2 -1
  24. cloudbeds_fiscal_document/test/test_create_invoice_request.py +26 -5
  25. cloudbeds_fiscal_document/test/test_create_receipt_request.py +25 -4
  26. cloudbeds_fiscal_document/test/test_create_simple_receipt_request.py +26 -2
  27. cloudbeds_fiscal_document/test/test_export_api.py +38 -0
  28. cloudbeds_fiscal_document/test/test_fiscal_document_detailed_response.py +2 -1
  29. cloudbeds_fiscal_document/test/test_fiscal_document_paginated.py +2 -1
  30. cloudbeds_fiscal_document/test/test_fiscal_document_patch_request.py +2 -1
  31. cloudbeds_fiscal_document/test/test_fiscal_document_summary_response.py +2 -1
  32. cloudbeds_fiscal_document/test/test_get_folio_export_request.py +60 -0
  33. cloudbeds_fiscal_document/test/test_get_invoice_preview_request.py +26 -5
  34. cloudbeds_fiscal_document/test/test_government_integration.py +2 -1
  35. cloudbeds_fiscal_document/test/test_guest_document_type.py +33 -0
  36. cloudbeds_fiscal_document/test/test_guest_gender.py +33 -0
  37. cloudbeds_fiscal_document/test/test_manual_recipient_request.py +74 -0
  38. cloudbeds_fiscal_document/test/test_manual_recipient_request_address.py +56 -0
  39. cloudbeds_fiscal_document/test/test_manual_recipient_request_document.py +55 -0
  40. cloudbeds_fiscal_document/test/test_pro_forma_invoice_preview_request.py +4 -2
  41. cloudbeds_fiscal_document/test/test_pro_forma_invoice_request.py +4 -2
  42. cloudbeds_fiscal_document/test/test_property_configs_response.py +2 -1
  43. cloudbeds_fiscal_document/test/test_recipient_request.py +2 -1
  44. {cloudbeds_fiscal_document-1.12.0.dist-info → cloudbeds_fiscal_document-1.14.0.dist-info}/METADATA +9 -2
  45. {cloudbeds_fiscal_document-1.12.0.dist-info → cloudbeds_fiscal_document-1.14.0.dist-info}/RECORD +48 -34
  46. {cloudbeds_fiscal_document-1.12.0.dist-info → cloudbeds_fiscal_document-1.14.0.dist-info}/WHEEL +0 -0
  47. {cloudbeds_fiscal_document-1.12.0.dist-info → cloudbeds_fiscal_document-1.14.0.dist-info}/licenses/LICENSE +0 -0
  48. {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
- __properties: ClassVar[List[str]] = ["transactionIds", "sequenceId", "userId", "sourceId", "sourceKind", "recipient"]
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
- __properties: ClassVar[List[str]] = ["transactionIds", "sourceId", "sequenceId", "sourceKind", "userId", "recipient", "folioIds", "excludeTransactionIds", "includeTransactionIds", "simplified"]
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
- __properties: ClassVar[List[str]] = ["number", "series", "status", "qr", "url", "officialId", "externalId", "rectifyingInvoiceType", "cancellationFailedFallbackStatus"]
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
+