Skip to content

Commit 8e8f285

Browse files
JesusMendozaJesusMendoza
authored andcommitted
Ejemplos facturas con impuestos locales added
1 parent ed178b6 commit 8e8f285

8 files changed

+663
-11
lines changed

CLAUDE.md

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -111,10 +111,14 @@ from fiscalapi.services import InvoiceService, StampService
111111

112112
## Example Files
113113

114-
- `examples.py` - General usage examples (all invoice types)
115-
- `ejemplos-facturas-de-nomina.py` - Payroll invoice examples (13 types)
116-
- `ejemplos-facturas-de-complemento-pago.py` - Payment complement examples
117-
- `ejemplos-timbres.py` - Stamp service examples
114+
All example files are located in the `examples/` directory:
115+
116+
- `examples/examples.py` - General usage examples (all invoice types)
117+
- `examples/ejemplos-facturas-de-nomina.py` - Payroll invoice examples (13 types)
118+
- `examples/ejemplos-facturas-de-complemento-pago.py` - Payment complement examples
119+
- `examples/ejemplos-timbres.py` - Stamp service examples
120+
- `examples/ejemplos-factura-impuestos-locales-valores.py` - Local taxes examples (by values)
121+
- `examples/ejemplos-factura-impuestos-locales-referencias.py` - Local taxes examples (by references)
118122

119123
## Reference Documentation
120124

README.md

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,12 @@
3434
- **Administración de personas** (emisores, receptores, clientes, usuarios, etc.)
3535
- **Gestión de certificados CSD y FIEL** (subir archivos .cer y .key a FiscalAPI)
3636
- **Configuración de datos fiscales** (RFC, domicilio fiscal, régimen fiscal)
37-
- **Datos de empleado y empleador** (Para facturas de nómina)
37+
- **Datos de empleado** (agrega/actualiza/elimina datos de empleado a una persona. CFDI Nómina)
38+
- **Datos de empleador** (agrega/actualiza/elimina datos de empleador a una persona. CFDI Nómina)
39+
40+
## 🎖️ Gestión de Timbres
41+
- **Gestión de folios fiscales** Compra timbres a fiscalapi y transfiere/retira a las personas de tu organizacion segun tus reglas de negocio.
42+
3843

3944
## 🛍️ Gestión de Productos/Servicios
4045
- **Gestión de productos y servicios** con catálogo personalizable
@@ -323,6 +328,13 @@ else:
323328
- **Timbres**
324329
Listar transacciones, transferir y retirar timbres entre personas.
325330

331+
## 📂 Más Ejemplos
332+
333+
- [Gestión de Timbres](examples/ejemplos-timbres.py)
334+
- [Complementos de Pago](examples/ejemplos-facturas-de-complemento-pago.py)
335+
- [Facturas de Nómina](examples/ejemplos-facturas-de-nomina.py)
336+
- [Impuestos Locales (Por Valores)](examples/ejemplos-factura-impuestos-locales-valores.py)
337+
- [Impuestos Locales (Por Referencias)](examples/ejemplos-factura-impuestos-locales-referencias.py)
326338

327339
## 🤝 Contribuir
328340

@@ -348,14 +360,10 @@ Este proyecto está licenciado bajo la Licencia **MPL**. Consulta el archivo [LI
348360
- [Documentación Oficial](https://docs.fiscalapi.com)
349361
- [Como obtener mis credenciales](https://docs.fiscalapi.com/credentials-info)
350362
- [Portal de FiscalAPI](https://fiscalapi.com)
351-
- [Ejemplos en Python](https://github.com/FiscalAPI/fiscalapi-samples-python)
352-
- [Ejemplos de Nómina](https://github.com/FiscalAPI/fiscalapi-python/blob/main/ejemplos-facturas-de-nomina.py)
353-
- [Ejemplos de Timbres](https://github.com/FiscalAPI/fiscalapi-python/blob/main/ejemplos-timbres.py)
354-
- [Ejemplos de Complementos de Pago](https://github.com/FiscalAPI/fiscalapi-python/blob/main/ejemplos-facturas-de-complemento-pago.py)
355363
- [Soporte técnico](https://fiscalapi.com/contact-us)
356-
- [Certificados prueba](https://docs.fiscalapi.com/tax-files-info)
364+
- [Certificados de prueba](https://docs.fiscalapi.com/tax-files-info)
357365
- [Postman Collection](https://documenter.getpostman.com/view/4346593/2sB2j4eqXr)
358-
- [SDKs](https://docs.fiscalapi.com/sdks)
366+
- [SDKs en otros lenguajes](https://docs.fiscalapi.com/sdks)
359367
---
360368

361369
Desarrollado con ❤️ por [Fiscalapi](https://www.fiscalapi.com)
Lines changed: 290 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,290 @@
1+
"""
2+
Ejemplos de Factura con Impuestos Locales usando el SDK de FiscalAPI para Python.
3+
4+
Este archivo contiene ejemplos de facturas con impuestos locales (por referencias):
5+
1. Impuestos Locales CEDULAR + ISH (ambos)
6+
2. Impuestos Locales solo CEDULAR
7+
3. Impuestos Locales solo ISH
8+
9+
Modo de operacion: Por Referencias (usando IDs de emisor y receptor)
10+
"""
11+
12+
from datetime import datetime
13+
from decimal import Decimal
14+
from fiscalapi.models.common_models import FiscalApiSettings
15+
from fiscalapi.models.fiscalapi_models import (
16+
Invoice,
17+
InvoiceItem,
18+
InvoiceIssuer,
19+
InvoiceRecipient,
20+
InvoiceComplement,
21+
ItemTax,
22+
LocalTax,
23+
LocalTaxesComplement
24+
)
25+
from fiscalapi.services.fiscalapi_client import FiscalApiClient
26+
27+
28+
# ============================================================================
29+
# CONFIGURACION
30+
# ============================================================================
31+
32+
# Configuracion del cliente
33+
settings = FiscalApiSettings(
34+
# api_url="https://test.fiscalapi.com",
35+
# api_key="<API_KEY>",
36+
# tenant="<TENANT_KEY>"
37+
)
38+
39+
client = FiscalApiClient(settings=settings)
40+
41+
# IDs de personas para los ejemplos (pre-creadas en el sistema)
42+
escuela_kemper_urgate_id = "2e7b988f-3a2a-4f67-86e9-3f931dd48581"
43+
44+
45+
def get_invoice_items():
46+
"""
47+
Retorna los items de ejemplo para las facturas con impuestos locales.
48+
"""
49+
return [
50+
InvoiceItem(
51+
item_code="01010101",
52+
quantity=Decimal("9.5"),
53+
unit_of_measurement_code="E48",
54+
unit_of_measurement="Unidad de servicio",
55+
description="Invoicing software as a service",
56+
unit_price=Decimal("3587.75"),
57+
tax_object_code="02",
58+
item_sku="7506022301697",
59+
discount=Decimal("255.85"),
60+
item_taxes=[
61+
ItemTax(
62+
tax_code="002",
63+
tax_type_code="Tasa",
64+
tax_rate=Decimal("0.160000"),
65+
tax_flag_code="T"
66+
)
67+
]
68+
),
69+
InvoiceItem(
70+
item_code="01010101",
71+
quantity=Decimal("8"),
72+
unit_of_measurement_code="E48",
73+
unit_of_measurement="Unidad de servicio2",
74+
description="Software Consultant",
75+
unit_price=Decimal("250.85"),
76+
tax_object_code="02",
77+
item_sku="7506022301698",
78+
discount=Decimal("255.85"),
79+
item_taxes=[
80+
ItemTax(
81+
tax_code="002",
82+
tax_type_code="Tasa",
83+
tax_rate=Decimal("0.160000"),
84+
tax_flag_code="T"
85+
)
86+
]
87+
),
88+
InvoiceItem(
89+
item_code="01010101",
90+
quantity=Decimal("6"),
91+
unit_of_measurement_code="E48",
92+
unit_of_measurement="Unidad de servicio3",
93+
description="Computer software",
94+
unit_price=Decimal("1250.75"),
95+
tax_object_code="02",
96+
item_sku="7506022301699",
97+
item_taxes=[
98+
ItemTax(
99+
tax_code="002",
100+
tax_type_code="Tasa",
101+
tax_rate=Decimal("0.160000"),
102+
tax_flag_code="T"
103+
),
104+
ItemTax(
105+
tax_code="002",
106+
tax_type_code="Tasa",
107+
tax_rate=Decimal("0.106666"),
108+
tax_flag_code="R"
109+
)
110+
]
111+
)
112+
]
113+
114+
115+
# ============================================================================
116+
# 1. IMPUESTOS LOCALES CEDULAR + ISH (Por Referencias)
117+
# ============================================================================
118+
def create_impuestos_locales_cedular_ish_referencias():
119+
"""
120+
Crea una factura con impuestos locales CEDULAR e ISH por referencias.
121+
Usa IDs de emisor y receptor previamente creados en el sistema.
122+
"""
123+
print("\n" + "="*60)
124+
print("1. IMPUESTOS LOCALES CEDULAR + ISH (Por Referencias)")
125+
print("="*60)
126+
127+
invoice = Invoice(
128+
version_code="4.0",
129+
series="F",
130+
date=datetime.now().strftime("%Y-%m-%dT%H:%M:%S"),
131+
payment_form_code="01",
132+
currency_code="MXN",
133+
type_code="I",
134+
expedition_zip_code="42501",
135+
payment_method_code="PUE",
136+
exchange_rate=1,
137+
export_code="01",
138+
issuer=InvoiceIssuer(
139+
id=escuela_kemper_urgate_id
140+
),
141+
recipient=InvoiceRecipient(
142+
id=escuela_kemper_urgate_id
143+
),
144+
items=get_invoice_items(),
145+
complement=InvoiceComplement(
146+
local_taxes=LocalTaxesComplement(
147+
taxes=[
148+
LocalTax(
149+
tax_name="CEDULAR",
150+
tax_rate=Decimal("3.00"),
151+
tax_amount=Decimal("6.00"),
152+
tax_flag_code="R"
153+
),
154+
LocalTax(
155+
tax_name="ISH",
156+
tax_rate=Decimal("8.00"),
157+
tax_amount=Decimal("16.00"),
158+
tax_flag_code="R"
159+
)
160+
]
161+
)
162+
)
163+
)
164+
165+
api_response = client.invoices.create(invoice)
166+
print(f"Response: {api_response}")
167+
return api_response
168+
169+
170+
# ============================================================================
171+
# 2. IMPUESTOS LOCALES SOLO CEDULAR (Por Referencias)
172+
# ============================================================================
173+
def create_impuestos_locales_cedular_referencias():
174+
"""
175+
Crea una factura con impuesto local CEDULAR por referencias.
176+
Usa IDs de emisor y receptor previamente creados en el sistema.
177+
"""
178+
print("\n" + "="*60)
179+
print("2. IMPUESTOS LOCALES SOLO CEDULAR (Por Referencias)")
180+
print("="*60)
181+
182+
invoice = Invoice(
183+
version_code="4.0",
184+
series="F",
185+
date=datetime.now().strftime("%Y-%m-%dT%H:%M:%S"),
186+
payment_form_code="01",
187+
currency_code="MXN",
188+
type_code="I",
189+
expedition_zip_code="42501",
190+
payment_method_code="PUE",
191+
exchange_rate=1,
192+
export_code="01",
193+
issuer=InvoiceIssuer(
194+
id=escuela_kemper_urgate_id
195+
),
196+
recipient=InvoiceRecipient(
197+
id=escuela_kemper_urgate_id
198+
),
199+
items=get_invoice_items(),
200+
complement=InvoiceComplement(
201+
local_taxes=LocalTaxesComplement(
202+
taxes=[
203+
LocalTax(
204+
tax_name="CEDULAR",
205+
tax_rate=Decimal("3.00"),
206+
tax_amount=Decimal("6.00"),
207+
tax_flag_code="R"
208+
)
209+
]
210+
)
211+
)
212+
)
213+
214+
api_response = client.invoices.create(invoice)
215+
print(f"Response: {api_response}")
216+
return api_response
217+
218+
219+
# ============================================================================
220+
# 3. IMPUESTOS LOCALES SOLO ISH (Por Referencias)
221+
# ============================================================================
222+
def create_impuestos_locales_ish_referencias():
223+
"""
224+
Crea una factura con impuesto local ISH por referencias.
225+
Usa IDs de emisor y receptor previamente creados en el sistema.
226+
"""
227+
print("\n" + "="*60)
228+
print("3. IMPUESTOS LOCALES SOLO ISH (Por Referencias)")
229+
print("="*60)
230+
231+
invoice = Invoice(
232+
version_code="4.0",
233+
series="F",
234+
date=datetime.now().strftime("%Y-%m-%dT%H:%M:%S"),
235+
payment_form_code="01",
236+
currency_code="MXN",
237+
type_code="I",
238+
expedition_zip_code="42501",
239+
payment_method_code="PUE",
240+
exchange_rate=1,
241+
export_code="01",
242+
issuer=InvoiceIssuer(
243+
id=escuela_kemper_urgate_id
244+
),
245+
recipient=InvoiceRecipient(
246+
id=escuela_kemper_urgate_id
247+
),
248+
items=get_invoice_items(),
249+
complement=InvoiceComplement(
250+
local_taxes=LocalTaxesComplement(
251+
taxes=[
252+
LocalTax(
253+
tax_name="ISH",
254+
tax_rate=Decimal("8.00"),
255+
tax_amount=Decimal("16.00"),
256+
tax_flag_code="R"
257+
)
258+
]
259+
)
260+
)
261+
)
262+
263+
api_response = client.invoices.create(invoice)
264+
print(f"Response: {api_response}")
265+
return api_response
266+
267+
268+
# ============================================================================
269+
# FUNCION PRINCIPAL
270+
# ============================================================================
271+
def main():
272+
"""
273+
Funcion principal que ejecuta los ejemplos de factura con impuestos locales por referencias.
274+
Descomenta las funciones que desees ejecutar.
275+
"""
276+
277+
# 1. Impuestos locales CEDULAR + ISH
278+
# create_impuestos_locales_cedular_ish_referencias()
279+
280+
# 2. Impuestos locales solo CEDULAR
281+
# create_impuestos_locales_cedular_referencias()
282+
283+
# 3. Impuestos locales solo ISH
284+
# create_impuestos_locales_ish_referencias()
285+
286+
pass
287+
288+
289+
if __name__ == "__main__":
290+
main()

0 commit comments

Comments
 (0)