stackin-python-sdk 0.3.1__py3-none-any.whl → 0.5.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.
stackin/br/tax.py CHANGED
@@ -4,24 +4,420 @@ from __future__ import annotations
4
4
 
5
5
  from typing import Any, Literal
6
6
 
7
- from pydantic import BaseModel, ConfigDict, Field
7
+ from pydantic import AliasChoices, BaseModel, ConfigDict, Field
8
8
 
9
9
  _CONFIG = ConfigDict(populate_by_name=True)
10
10
 
11
11
 
12
+ _IpiNtCst = Literal[
13
+ "01",
14
+ "02",
15
+ "03",
16
+ "04",
17
+ "05",
18
+ "51",
19
+ "52",
20
+ "53",
21
+ "54",
22
+ "55",
23
+ ]
24
+
25
+
26
+ _PisOutrCst = Literal[
27
+ "49",
28
+ "50",
29
+ "51",
30
+ "52",
31
+ "53",
32
+ "54",
33
+ "55",
34
+ "56",
35
+ "60",
36
+ "61",
37
+ "62",
38
+ "63",
39
+ "64",
40
+ "65",
41
+ "66",
42
+ "67",
43
+ "70",
44
+ "71",
45
+ "72",
46
+ "73",
47
+ "74",
48
+ "75",
49
+ "98",
50
+ "99",
51
+ ]
52
+
53
+
54
+ _CofinsOutrCst = Literal[
55
+ "49",
56
+ "50",
57
+ "51",
58
+ "52",
59
+ "53",
60
+ "54",
61
+ "55",
62
+ "56",
63
+ "60",
64
+ "61",
65
+ "62",
66
+ "63",
67
+ "64",
68
+ "65",
69
+ "66",
70
+ "67",
71
+ "70",
72
+ "71",
73
+ "72",
74
+ "73",
75
+ "74",
76
+ "75",
77
+ "98",
78
+ "99",
79
+ ]
80
+
81
+
12
82
  class Icms00(BaseModel):
13
83
  """ICMS fully taxed."""
14
84
 
15
85
  model_config = _CONFIG
16
86
 
17
87
  orig: str
18
- cst: str = Field(default="00", alias="CST")
19
- mod_bc: str = Field(alias="modBC")
20
- v_bc: str = Field(alias="vBC")
21
- p_icms: str = Field(alias="pICMS")
22
- v_icms: str = Field(alias="vICMS")
23
- p_fcp: str | None = Field(default=None, alias="pFCP")
24
- v_fcp: str | None = Field(default=None, alias="vFCP")
88
+ cst: Literal["00"] = Field(
89
+ default="00",
90
+ validation_alias=AliasChoices("cst", "CST"),
91
+ serialization_alias="CST",
92
+ )
93
+ mod_bc: str = Field(
94
+ validation_alias=AliasChoices("mod_bc", "modBC"),
95
+ serialization_alias="modBC",
96
+ )
97
+ v_bc: str = Field(
98
+ validation_alias=AliasChoices("v_bc", "vBC"),
99
+ serialization_alias="vBC",
100
+ )
101
+ p_icms: str = Field(
102
+ validation_alias=AliasChoices("p_icms", "pICMS"),
103
+ serialization_alias="pICMS",
104
+ )
105
+ v_icms: str = Field(
106
+ validation_alias=AliasChoices("v_icms", "vICMS"),
107
+ serialization_alias="vICMS",
108
+ )
109
+ p_fcp: str | None = Field(
110
+ default=None,
111
+ validation_alias=AliasChoices("p_fcp", "pFCP"),
112
+ serialization_alias="pFCP",
113
+ )
114
+ v_fcp: str | None = Field(
115
+ default=None,
116
+ validation_alias=AliasChoices("v_fcp", "vFCP"),
117
+ serialization_alias="vFCP",
118
+ )
119
+
120
+
121
+ class Icms02(BaseModel):
122
+ """ICMS monofasico, taxed by unit."""
123
+
124
+ model_config = _CONFIG
125
+
126
+ orig: str
127
+ cst: Literal["02"] = Field(
128
+ default="02",
129
+ validation_alias=AliasChoices("cst", "CST"),
130
+ serialization_alias="CST",
131
+ )
132
+ q_bc_mono: str | None = Field(
133
+ default=None,
134
+ validation_alias=AliasChoices("q_bc_mono", "qBCMono"),
135
+ serialization_alias="qBCMono",
136
+ )
137
+ ad_rem_icms: str = Field(
138
+ validation_alias=AliasChoices("ad_rem_icms", "adRemICMS"),
139
+ serialization_alias="adRemICMS",
140
+ )
141
+ v_icms_mono: str = Field(
142
+ validation_alias=AliasChoices("v_icms_mono", "vICMSMono"),
143
+ serialization_alias="vICMSMono",
144
+ )
145
+
146
+
147
+ class Icms10(BaseModel):
148
+ """ICMS taxed with substitution."""
149
+
150
+ model_config = _CONFIG
151
+
152
+ orig: str
153
+ cst: Literal["10"] = Field(
154
+ default="10",
155
+ validation_alias=AliasChoices("cst", "CST"),
156
+ serialization_alias="CST",
157
+ )
158
+ mod_bc: str = Field(
159
+ validation_alias=AliasChoices("mod_bc", "modBC"),
160
+ serialization_alias="modBC",
161
+ )
162
+ v_bc: str = Field(
163
+ validation_alias=AliasChoices("v_bc", "vBC"),
164
+ serialization_alias="vBC",
165
+ )
166
+ p_icms: str = Field(
167
+ validation_alias=AliasChoices("p_icms", "pICMS"),
168
+ serialization_alias="pICMS",
169
+ )
170
+ v_icms: str = Field(
171
+ validation_alias=AliasChoices("v_icms", "vICMS"),
172
+ serialization_alias="vICMS",
173
+ )
174
+ v_bc_fcp: str | None = Field(
175
+ default=None,
176
+ validation_alias=AliasChoices("v_bc_fcp", "vBCFCP"),
177
+ serialization_alias="vBCFCP",
178
+ )
179
+ p_fcp: str | None = Field(
180
+ default=None,
181
+ validation_alias=AliasChoices("p_fcp", "pFCP"),
182
+ serialization_alias="pFCP",
183
+ )
184
+ v_fcp: str | None = Field(
185
+ default=None,
186
+ validation_alias=AliasChoices("v_fcp", "vFCP"),
187
+ serialization_alias="vFCP",
188
+ )
189
+ mod_bc_st: str = Field(
190
+ validation_alias=AliasChoices("mod_bc_st", "modBCST"),
191
+ serialization_alias="modBCST",
192
+ )
193
+ p_mva_st: str | None = Field(
194
+ default=None,
195
+ validation_alias=AliasChoices("p_mva_st", "pMVAST"),
196
+ serialization_alias="pMVAST",
197
+ )
198
+ p_red_bc_st: str | None = Field(
199
+ default=None,
200
+ validation_alias=AliasChoices("p_red_bc_st", "pRedBCST"),
201
+ serialization_alias="pRedBCST",
202
+ )
203
+ v_bc_st: str = Field(
204
+ validation_alias=AliasChoices("v_bc_st", "vBCST"),
205
+ serialization_alias="vBCST",
206
+ )
207
+ p_icms_st: str = Field(
208
+ validation_alias=AliasChoices("p_icms_st", "pICMSST"),
209
+ serialization_alias="pICMSST",
210
+ )
211
+ v_icms_st: str = Field(
212
+ validation_alias=AliasChoices("v_icms_st", "vICMSST"),
213
+ serialization_alias="vICMSST",
214
+ )
215
+ v_bc_fcp_st: str | None = Field(
216
+ default=None,
217
+ validation_alias=AliasChoices("v_bc_fcp_st", "vBCFCPST"),
218
+ serialization_alias="vBCFCPST",
219
+ )
220
+ p_fcp_st: str | None = Field(
221
+ default=None,
222
+ validation_alias=AliasChoices("p_fcp_st", "pFCPST"),
223
+ serialization_alias="pFCPST",
224
+ )
225
+ v_fcp_st: str | None = Field(
226
+ default=None,
227
+ validation_alias=AliasChoices("v_fcp_st", "vFCPST"),
228
+ serialization_alias="vFCPST",
229
+ )
230
+ v_icms_st_deson: str | None = Field(
231
+ default=None,
232
+ validation_alias=AliasChoices("v_icms_st_deson", "vICMSSTDeson"),
233
+ serialization_alias="vICMSSTDeson",
234
+ )
235
+ mot_des_icms_st: str | None = Field(
236
+ default=None,
237
+ validation_alias=AliasChoices("mot_des_icms_st", "motDesICMSST"),
238
+ serialization_alias="motDesICMSST",
239
+ )
240
+
241
+
242
+ class Icms15(BaseModel):
243
+ """ICMS monofasico with retention."""
244
+
245
+ model_config = _CONFIG
246
+
247
+ orig: str
248
+ cst: Literal["15"] = Field(
249
+ default="15",
250
+ validation_alias=AliasChoices("cst", "CST"),
251
+ serialization_alias="CST",
252
+ )
253
+ q_bc_mono: str | None = Field(
254
+ default=None,
255
+ validation_alias=AliasChoices("q_bc_mono", "qBCMono"),
256
+ serialization_alias="qBCMono",
257
+ )
258
+ ad_rem_icms: str = Field(
259
+ validation_alias=AliasChoices("ad_rem_icms", "adRemICMS"),
260
+ serialization_alias="adRemICMS",
261
+ )
262
+ v_icms_mono: str = Field(
263
+ validation_alias=AliasChoices("v_icms_mono", "vICMSMono"),
264
+ serialization_alias="vICMSMono",
265
+ )
266
+ q_bc_mono_reten: str | None = Field(
267
+ default=None,
268
+ validation_alias=AliasChoices("q_bc_mono_reten", "qBCMonoReten"),
269
+ serialization_alias="qBCMonoReten",
270
+ )
271
+ ad_rem_icms_reten: str = Field(
272
+ validation_alias=AliasChoices("ad_rem_icms_reten", "adRemICMSReten"),
273
+ serialization_alias="adRemICMSReten",
274
+ )
275
+ v_icms_mono_reten: str = Field(
276
+ validation_alias=AliasChoices("v_icms_mono_reten", "vICMSMonoReten"),
277
+ serialization_alias="vICMSMonoReten",
278
+ )
279
+ p_red_ad_rem: str | None = Field(
280
+ default=None,
281
+ validation_alias=AliasChoices("p_red_ad_rem", "pRedAdRem"),
282
+ serialization_alias="pRedAdRem",
283
+ )
284
+ mot_red_ad_rem: str | None = Field(
285
+ default=None,
286
+ validation_alias=AliasChoices("mot_red_ad_rem", "motRedAdRem"),
287
+ serialization_alias="motRedAdRem",
288
+ )
289
+
290
+
291
+ class Icms20(BaseModel):
292
+ """ICMS with a reduced base."""
293
+
294
+ model_config = _CONFIG
295
+
296
+ orig: str
297
+ cst: Literal["20"] = Field(
298
+ default="20",
299
+ validation_alias=AliasChoices("cst", "CST"),
300
+ serialization_alias="CST",
301
+ )
302
+ mod_bc: str = Field(
303
+ validation_alias=AliasChoices("mod_bc", "modBC"),
304
+ serialization_alias="modBC",
305
+ )
306
+ p_red_bc: str = Field(
307
+ validation_alias=AliasChoices("p_red_bc", "pRedBC"),
308
+ serialization_alias="pRedBC",
309
+ )
310
+ v_bc: str = Field(
311
+ validation_alias=AliasChoices("v_bc", "vBC"),
312
+ serialization_alias="vBC",
313
+ )
314
+ p_icms: str = Field(
315
+ validation_alias=AliasChoices("p_icms", "pICMS"),
316
+ serialization_alias="pICMS",
317
+ )
318
+ v_icms: str = Field(
319
+ validation_alias=AliasChoices("v_icms", "vICMS"),
320
+ serialization_alias="vICMS",
321
+ )
322
+ v_bc_fcp: str | None = Field(
323
+ default=None,
324
+ validation_alias=AliasChoices("v_bc_fcp", "vBCFCP"),
325
+ serialization_alias="vBCFCP",
326
+ )
327
+ p_fcp: str | None = Field(
328
+ default=None,
329
+ validation_alias=AliasChoices("p_fcp", "pFCP"),
330
+ serialization_alias="pFCP",
331
+ )
332
+ v_fcp: str | None = Field(
333
+ default=None,
334
+ validation_alias=AliasChoices("v_fcp", "vFCP"),
335
+ serialization_alias="vFCP",
336
+ )
337
+ v_icms_deson: str | None = Field(
338
+ default=None,
339
+ validation_alias=AliasChoices("v_icms_deson", "vICMSDeson"),
340
+ serialization_alias="vICMSDeson",
341
+ )
342
+ mot_des_icms: str | None = Field(
343
+ default=None,
344
+ validation_alias=AliasChoices("mot_des_icms", "motDesICMS"),
345
+ serialization_alias="motDesICMS",
346
+ )
347
+ ind_deduz_deson: str | None = Field(
348
+ default=None,
349
+ validation_alias=AliasChoices("ind_deduz_deson", "indDeduzDeson"),
350
+ serialization_alias="indDeduzDeson",
351
+ )
352
+
353
+
354
+ class Icms30(BaseModel):
355
+ """ICMS exempt with substitution."""
356
+
357
+ model_config = _CONFIG
358
+
359
+ orig: str
360
+ cst: Literal["30"] = Field(
361
+ default="30",
362
+ validation_alias=AliasChoices("cst", "CST"),
363
+ serialization_alias="CST",
364
+ )
365
+ mod_bc_st: str = Field(
366
+ validation_alias=AliasChoices("mod_bc_st", "modBCST"),
367
+ serialization_alias="modBCST",
368
+ )
369
+ p_mva_st: str | None = Field(
370
+ default=None,
371
+ validation_alias=AliasChoices("p_mva_st", "pMVAST"),
372
+ serialization_alias="pMVAST",
373
+ )
374
+ p_red_bc_st: str | None = Field(
375
+ default=None,
376
+ validation_alias=AliasChoices("p_red_bc_st", "pRedBCST"),
377
+ serialization_alias="pRedBCST",
378
+ )
379
+ v_bc_st: str = Field(
380
+ validation_alias=AliasChoices("v_bc_st", "vBCST"),
381
+ serialization_alias="vBCST",
382
+ )
383
+ p_icms_st: str = Field(
384
+ validation_alias=AliasChoices("p_icms_st", "pICMSST"),
385
+ serialization_alias="pICMSST",
386
+ )
387
+ v_icms_st: str = Field(
388
+ validation_alias=AliasChoices("v_icms_st", "vICMSST"),
389
+ serialization_alias="vICMSST",
390
+ )
391
+ v_bc_fcp_st: str | None = Field(
392
+ default=None,
393
+ validation_alias=AliasChoices("v_bc_fcp_st", "vBCFCPST"),
394
+ serialization_alias="vBCFCPST",
395
+ )
396
+ p_fcp_st: str | None = Field(
397
+ default=None,
398
+ validation_alias=AliasChoices("p_fcp_st", "pFCPST"),
399
+ serialization_alias="pFCPST",
400
+ )
401
+ v_fcp_st: str | None = Field(
402
+ default=None,
403
+ validation_alias=AliasChoices("v_fcp_st", "vFCPST"),
404
+ serialization_alias="vFCPST",
405
+ )
406
+ v_icms_deson: str | None = Field(
407
+ default=None,
408
+ validation_alias=AliasChoices("v_icms_deson", "vICMSDeson"),
409
+ serialization_alias="vICMSDeson",
410
+ )
411
+ mot_des_icms: str | None = Field(
412
+ default=None,
413
+ validation_alias=AliasChoices("mot_des_icms", "motDesICMS"),
414
+ serialization_alias="motDesICMS",
415
+ )
416
+ ind_deduz_deson: str | None = Field(
417
+ default=None,
418
+ validation_alias=AliasChoices("ind_deduz_deson", "indDeduzDeson"),
419
+ serialization_alias="indDeduzDeson",
420
+ )
25
421
 
26
422
 
27
423
  class Icms40(BaseModel):
@@ -30,9 +426,166 @@ class Icms40(BaseModel):
30
426
  model_config = _CONFIG
31
427
 
32
428
  orig: str
33
- cst: str = Field(alias="CST")
34
- v_icms_deson: str | None = Field(default=None, alias="vICMSDeson")
35
- mot_des_icms: str | None = Field(default=None, alias="motDesICMS")
429
+ cst: Literal["40", "41", "50"] = Field(
430
+ validation_alias=AliasChoices("cst", "CST"),
431
+ serialization_alias="CST",
432
+ )
433
+ v_icms_deson: str | None = Field(
434
+ default=None,
435
+ validation_alias=AliasChoices("v_icms_deson", "vICMSDeson"),
436
+ serialization_alias="vICMSDeson",
437
+ )
438
+ mot_des_icms: str | None = Field(
439
+ default=None,
440
+ validation_alias=AliasChoices("mot_des_icms", "motDesICMS"),
441
+ serialization_alias="motDesICMS",
442
+ )
443
+ ind_deduz_deson: str | None = Field(
444
+ default=None,
445
+ validation_alias=AliasChoices("ind_deduz_deson", "indDeduzDeson"),
446
+ serialization_alias="indDeduzDeson",
447
+ )
448
+
449
+
450
+ class Icms51(BaseModel):
451
+ """ICMS deferred."""
452
+
453
+ model_config = _CONFIG
454
+
455
+ orig: str
456
+ cst: Literal["51"] = Field(
457
+ default="51",
458
+ validation_alias=AliasChoices("cst", "CST"),
459
+ serialization_alias="CST",
460
+ )
461
+ mod_bc: str | None = Field(
462
+ default=None,
463
+ validation_alias=AliasChoices("mod_bc", "modBC"),
464
+ serialization_alias="modBC",
465
+ )
466
+ p_red_bc: str | None = Field(
467
+ default=None,
468
+ validation_alias=AliasChoices("p_red_bc", "pRedBC"),
469
+ serialization_alias="pRedBC",
470
+ )
471
+ c_benef_rbc: str | None = Field(
472
+ default=None,
473
+ validation_alias=AliasChoices("c_benef_rbc", "cBenefRBC"),
474
+ serialization_alias="cBenefRBC",
475
+ )
476
+ v_bc: str | None = Field(
477
+ default=None,
478
+ validation_alias=AliasChoices("v_bc", "vBC"),
479
+ serialization_alias="vBC",
480
+ )
481
+ p_icms: str | None = Field(
482
+ default=None,
483
+ validation_alias=AliasChoices("p_icms", "pICMS"),
484
+ serialization_alias="pICMS",
485
+ )
486
+ v_icms_op: str | None = Field(
487
+ default=None,
488
+ validation_alias=AliasChoices("v_icms_op", "vICMSOp"),
489
+ serialization_alias="vICMSOp",
490
+ )
491
+ p_dif: str | None = Field(
492
+ default=None,
493
+ validation_alias=AliasChoices("p_dif", "pDif"),
494
+ serialization_alias="pDif",
495
+ )
496
+ v_icms_dif: str | None = Field(
497
+ default=None,
498
+ validation_alias=AliasChoices("v_icms_dif", "vICMSDif"),
499
+ serialization_alias="vICMSDif",
500
+ )
501
+ v_icms: str | None = Field(
502
+ default=None,
503
+ validation_alias=AliasChoices("v_icms", "vICMS"),
504
+ serialization_alias="vICMS",
505
+ )
506
+ v_bc_fcp: str | None = Field(
507
+ default=None,
508
+ validation_alias=AliasChoices("v_bc_fcp", "vBCFCP"),
509
+ serialization_alias="vBCFCP",
510
+ )
511
+ p_fcp: str | None = Field(
512
+ default=None,
513
+ validation_alias=AliasChoices("p_fcp", "pFCP"),
514
+ serialization_alias="pFCP",
515
+ )
516
+ v_fcp: str | None = Field(
517
+ default=None,
518
+ validation_alias=AliasChoices("v_fcp", "vFCP"),
519
+ serialization_alias="vFCP",
520
+ )
521
+ p_fcp_dif: str | None = Field(
522
+ default=None,
523
+ validation_alias=AliasChoices("p_fcp_dif", "pFCPDif"),
524
+ serialization_alias="pFCPDif",
525
+ )
526
+ v_fcp_dif: str | None = Field(
527
+ default=None,
528
+ validation_alias=AliasChoices("v_fcp_dif", "vFCPDif"),
529
+ serialization_alias="vFCPDif",
530
+ )
531
+ v_fcp_efet: str | None = Field(
532
+ default=None,
533
+ validation_alias=AliasChoices("v_fcp_efet", "vFCPEfet"),
534
+ serialization_alias="vFCPEfet",
535
+ )
536
+
537
+
538
+ class Icms53(BaseModel):
539
+ """ICMS monofasico deferred."""
540
+
541
+ model_config = _CONFIG
542
+
543
+ orig: str
544
+ cst: Literal["53"] = Field(
545
+ default="53",
546
+ validation_alias=AliasChoices("cst", "CST"),
547
+ serialization_alias="CST",
548
+ )
549
+ q_bc_mono: str | None = Field(
550
+ default=None,
551
+ validation_alias=AliasChoices("q_bc_mono", "qBCMono"),
552
+ serialization_alias="qBCMono",
553
+ )
554
+ ad_rem_icms: str | None = Field(
555
+ default=None,
556
+ validation_alias=AliasChoices("ad_rem_icms", "adRemICMS"),
557
+ serialization_alias="adRemICMS",
558
+ )
559
+ v_icms_mono_op: str | None = Field(
560
+ default=None,
561
+ validation_alias=AliasChoices("v_icms_mono_op", "vICMSMonoOp"),
562
+ serialization_alias="vICMSMonoOp",
563
+ )
564
+ p_dif: str | None = Field(
565
+ default=None,
566
+ validation_alias=AliasChoices("p_dif", "pDif"),
567
+ serialization_alias="pDif",
568
+ )
569
+ v_icms_mono_dif: str | None = Field(
570
+ default=None,
571
+ validation_alias=AliasChoices("v_icms_mono_dif", "vICMSMonoDif"),
572
+ serialization_alias="vICMSMonoDif",
573
+ )
574
+ v_icms_mono: str | None = Field(
575
+ default=None,
576
+ validation_alias=AliasChoices("v_icms_mono", "vICMSMono"),
577
+ serialization_alias="vICMSMono",
578
+ )
579
+ q_bc_mono_dif: str | None = Field(
580
+ default=None,
581
+ validation_alias=AliasChoices("q_bc_mono_dif", "qBCMonoDif"),
582
+ serialization_alias="qBCMonoDif",
583
+ )
584
+ ad_rem_icms_dif: str | None = Field(
585
+ default=None,
586
+ validation_alias=AliasChoices("ad_rem_icms_dif", "adRemICMSDif"),
587
+ serialization_alias="adRemICMSDif",
588
+ )
36
589
 
37
590
 
38
591
  class Icms60(BaseModel):
@@ -41,20 +594,534 @@ class Icms60(BaseModel):
41
594
  model_config = _CONFIG
42
595
 
43
596
  orig: str
44
- cst: str = Field(default="60", alias="CST")
45
- v_bc_st_ret: str | None = Field(default=None, alias="vBCSTRet")
46
- p_st: str | None = Field(default=None, alias="pST")
597
+ cst: Literal["60"] = Field(
598
+ default="60",
599
+ validation_alias=AliasChoices("cst", "CST"),
600
+ serialization_alias="CST",
601
+ )
602
+ v_bc_st_ret: str | None = Field(
603
+ default=None,
604
+ validation_alias=AliasChoices("v_bc_st_ret", "vBCSTRet"),
605
+ serialization_alias="vBCSTRet",
606
+ )
607
+ p_st: str | None = Field(
608
+ default=None,
609
+ validation_alias=AliasChoices("p_st", "pST"),
610
+ serialization_alias="pST",
611
+ )
612
+ v_icms_substituto: str | None = Field(
613
+ default=None,
614
+ validation_alias=AliasChoices("v_icms_substituto", "vICMSSubstituto"),
615
+ serialization_alias="vICMSSubstituto",
616
+ )
617
+ v_icms_st_ret: str | None = Field(
618
+ default=None,
619
+ validation_alias=AliasChoices("v_icms_st_ret", "vICMSSTRet"),
620
+ serialization_alias="vICMSSTRet",
621
+ )
622
+ v_bc_fcp_st_ret: str | None = Field(
623
+ default=None,
624
+ validation_alias=AliasChoices("v_bc_fcp_st_ret", "vBCFCPSTRet"),
625
+ serialization_alias="vBCFCPSTRet",
626
+ )
627
+ p_fcp_st_ret: str | None = Field(
628
+ default=None,
629
+ validation_alias=AliasChoices("p_fcp_st_ret", "pFCPSTRet"),
630
+ serialization_alias="pFCPSTRet",
631
+ )
632
+ v_fcp_st_ret: str | None = Field(
633
+ default=None,
634
+ validation_alias=AliasChoices("v_fcp_st_ret", "vFCPSTRet"),
635
+ serialization_alias="vFCPSTRet",
636
+ )
637
+ p_red_bc_efet: str | None = Field(
638
+ default=None,
639
+ validation_alias=AliasChoices("p_red_bc_efet", "pRedBCEfet"),
640
+ serialization_alias="pRedBCEfet",
641
+ )
642
+ v_bc_efet: str | None = Field(
643
+ default=None,
644
+ validation_alias=AliasChoices("v_bc_efet", "vBCEfet"),
645
+ serialization_alias="vBCEfet",
646
+ )
647
+ p_icms_efet: str | None = Field(
648
+ default=None,
649
+ validation_alias=AliasChoices("p_icms_efet", "pICMSEfet"),
650
+ serialization_alias="pICMSEfet",
651
+ )
652
+ v_icms_efet: str | None = Field(
653
+ default=None,
654
+ validation_alias=AliasChoices("v_icms_efet", "vICMSEfet"),
655
+ serialization_alias="vICMSEfet",
656
+ )
657
+
658
+
659
+ class Icms61(BaseModel):
660
+ """ICMS monofasico already charged earlier."""
661
+
662
+ model_config = _CONFIG
663
+
664
+ orig: str
665
+ cst: Literal["61"] = Field(
666
+ default="61",
667
+ validation_alias=AliasChoices("cst", "CST"),
668
+ serialization_alias="CST",
669
+ )
670
+ q_bc_mono_ret: str | None = Field(
671
+ default=None,
672
+ validation_alias=AliasChoices("q_bc_mono_ret", "qBCMonoRet"),
673
+ serialization_alias="qBCMonoRet",
674
+ )
675
+ ad_rem_icms_ret: str = Field(
676
+ validation_alias=AliasChoices("ad_rem_icms_ret", "adRemICMSRet"),
677
+ serialization_alias="adRemICMSRet",
678
+ )
679
+ v_icms_mono_ret: str = Field(
680
+ validation_alias=AliasChoices("v_icms_mono_ret", "vICMSMonoRet"),
681
+ serialization_alias="vICMSMonoRet",
682
+ )
683
+
684
+
685
+ class Icms70(BaseModel):
686
+ """ICMS with a reduced base and substitution."""
687
+
688
+ model_config = _CONFIG
689
+
690
+ orig: str
691
+ cst: Literal["70"] = Field(
692
+ default="70",
693
+ validation_alias=AliasChoices("cst", "CST"),
694
+ serialization_alias="CST",
695
+ )
696
+ mod_bc: str = Field(
697
+ validation_alias=AliasChoices("mod_bc", "modBC"),
698
+ serialization_alias="modBC",
699
+ )
700
+ p_red_bc: str = Field(
701
+ validation_alias=AliasChoices("p_red_bc", "pRedBC"),
702
+ serialization_alias="pRedBC",
703
+ )
704
+ v_bc: str = Field(
705
+ validation_alias=AliasChoices("v_bc", "vBC"),
706
+ serialization_alias="vBC",
707
+ )
708
+ p_icms: str = Field(
709
+ validation_alias=AliasChoices("p_icms", "pICMS"),
710
+ serialization_alias="pICMS",
711
+ )
712
+ v_icms: str = Field(
713
+ validation_alias=AliasChoices("v_icms", "vICMS"),
714
+ serialization_alias="vICMS",
715
+ )
716
+ v_bc_fcp: str | None = Field(
717
+ default=None,
718
+ validation_alias=AliasChoices("v_bc_fcp", "vBCFCP"),
719
+ serialization_alias="vBCFCP",
720
+ )
721
+ p_fcp: str | None = Field(
722
+ default=None,
723
+ validation_alias=AliasChoices("p_fcp", "pFCP"),
724
+ serialization_alias="pFCP",
725
+ )
726
+ v_fcp: str | None = Field(
727
+ default=None,
728
+ validation_alias=AliasChoices("v_fcp", "vFCP"),
729
+ serialization_alias="vFCP",
730
+ )
731
+ mod_bc_st: str = Field(
732
+ validation_alias=AliasChoices("mod_bc_st", "modBCST"),
733
+ serialization_alias="modBCST",
734
+ )
735
+ p_mva_st: str | None = Field(
736
+ default=None,
737
+ validation_alias=AliasChoices("p_mva_st", "pMVAST"),
738
+ serialization_alias="pMVAST",
739
+ )
740
+ p_red_bc_st: str | None = Field(
741
+ default=None,
742
+ validation_alias=AliasChoices("p_red_bc_st", "pRedBCST"),
743
+ serialization_alias="pRedBCST",
744
+ )
745
+ v_bc_st: str = Field(
746
+ validation_alias=AliasChoices("v_bc_st", "vBCST"),
747
+ serialization_alias="vBCST",
748
+ )
749
+ p_icms_st: str = Field(
750
+ validation_alias=AliasChoices("p_icms_st", "pICMSST"),
751
+ serialization_alias="pICMSST",
752
+ )
753
+ v_icms_st: str = Field(
754
+ validation_alias=AliasChoices("v_icms_st", "vICMSST"),
755
+ serialization_alias="vICMSST",
756
+ )
757
+ v_bc_fcp_st: str | None = Field(
758
+ default=None,
759
+ validation_alias=AliasChoices("v_bc_fcp_st", "vBCFCPST"),
760
+ serialization_alias="vBCFCPST",
761
+ )
762
+ p_fcp_st: str | None = Field(
763
+ default=None,
764
+ validation_alias=AliasChoices("p_fcp_st", "pFCPST"),
765
+ serialization_alias="pFCPST",
766
+ )
767
+ v_fcp_st: str | None = Field(
768
+ default=None,
769
+ validation_alias=AliasChoices("v_fcp_st", "vFCPST"),
770
+ serialization_alias="vFCPST",
771
+ )
772
+ v_icms_deson: str | None = Field(
773
+ default=None,
774
+ validation_alias=AliasChoices("v_icms_deson", "vICMSDeson"),
775
+ serialization_alias="vICMSDeson",
776
+ )
777
+ mot_des_icms: str | None = Field(
778
+ default=None,
779
+ validation_alias=AliasChoices("mot_des_icms", "motDesICMS"),
780
+ serialization_alias="motDesICMS",
781
+ )
782
+ ind_deduz_deson: str | None = Field(
783
+ default=None,
784
+ validation_alias=AliasChoices("ind_deduz_deson", "indDeduzDeson"),
785
+ serialization_alias="indDeduzDeson",
786
+ )
787
+ v_icms_st_deson: str | None = Field(
788
+ default=None,
789
+ validation_alias=AliasChoices("v_icms_st_deson", "vICMSSTDeson"),
790
+ serialization_alias="vICMSSTDeson",
791
+ )
792
+ mot_des_icms_st: str | None = Field(
793
+ default=None,
794
+ validation_alias=AliasChoices("mot_des_icms_st", "motDesICMSST"),
795
+ serialization_alias="motDesICMSST",
796
+ )
797
+
798
+
799
+ class Icms90(BaseModel):
800
+ """ICMS, other cases."""
801
+
802
+ model_config = _CONFIG
803
+
804
+ orig: str
805
+ cst: Literal["90"] = Field(
806
+ default="90",
807
+ validation_alias=AliasChoices("cst", "CST"),
808
+ serialization_alias="CST",
809
+ )
810
+ mod_bc: str | None = Field(
811
+ default=None,
812
+ validation_alias=AliasChoices("mod_bc", "modBC"),
813
+ serialization_alias="modBC",
814
+ )
815
+ v_bc: str | None = Field(
816
+ default=None,
817
+ validation_alias=AliasChoices("v_bc", "vBC"),
818
+ serialization_alias="vBC",
819
+ )
820
+ p_red_bc: str | None = Field(
821
+ default=None,
822
+ validation_alias=AliasChoices("p_red_bc", "pRedBC"),
823
+ serialization_alias="pRedBC",
824
+ )
825
+ c_benef_rbc: str | None = Field(
826
+ default=None,
827
+ validation_alias=AliasChoices("c_benef_rbc", "cBenefRBC"),
828
+ serialization_alias="cBenefRBC",
829
+ )
830
+ p_icms: str | None = Field(
831
+ default=None,
832
+ validation_alias=AliasChoices("p_icms", "pICMS"),
833
+ serialization_alias="pICMS",
834
+ )
835
+ v_icms_op: str | None = Field(
836
+ default=None,
837
+ validation_alias=AliasChoices("v_icms_op", "vICMSOp"),
838
+ serialization_alias="vICMSOp",
839
+ )
840
+ p_dif: str | None = Field(
841
+ default=None,
842
+ validation_alias=AliasChoices("p_dif", "pDif"),
843
+ serialization_alias="pDif",
844
+ )
845
+ v_icms_dif: str | None = Field(
846
+ default=None,
847
+ validation_alias=AliasChoices("v_icms_dif", "vICMSDif"),
848
+ serialization_alias="vICMSDif",
849
+ )
850
+ v_icms: str | None = Field(
851
+ default=None,
852
+ validation_alias=AliasChoices("v_icms", "vICMS"),
853
+ serialization_alias="vICMS",
854
+ )
855
+ v_bc_fcp: str | None = Field(
856
+ default=None,
857
+ validation_alias=AliasChoices("v_bc_fcp", "vBCFCP"),
858
+ serialization_alias="vBCFCP",
859
+ )
860
+ p_fcp: str | None = Field(
861
+ default=None,
862
+ validation_alias=AliasChoices("p_fcp", "pFCP"),
863
+ serialization_alias="pFCP",
864
+ )
865
+ v_fcp: str | None = Field(
866
+ default=None,
867
+ validation_alias=AliasChoices("v_fcp", "vFCP"),
868
+ serialization_alias="vFCP",
869
+ )
870
+ p_fcp_dif: str | None = Field(
871
+ default=None,
872
+ validation_alias=AliasChoices("p_fcp_dif", "pFCPDif"),
873
+ serialization_alias="pFCPDif",
874
+ )
875
+ v_fcp_dif: str | None = Field(
876
+ default=None,
877
+ validation_alias=AliasChoices("v_fcp_dif", "vFCPDif"),
878
+ serialization_alias="vFCPDif",
879
+ )
880
+ v_fcp_efet: str | None = Field(
881
+ default=None,
882
+ validation_alias=AliasChoices("v_fcp_efet", "vFCPEfet"),
883
+ serialization_alias="vFCPEfet",
884
+ )
885
+ mod_bc_st: str | None = Field(
886
+ default=None,
887
+ validation_alias=AliasChoices("mod_bc_st", "modBCST"),
888
+ serialization_alias="modBCST",
889
+ )
890
+ p_mva_st: str | None = Field(
891
+ default=None,
892
+ validation_alias=AliasChoices("p_mva_st", "pMVAST"),
893
+ serialization_alias="pMVAST",
894
+ )
895
+ p_red_bc_st: str | None = Field(
896
+ default=None,
897
+ validation_alias=AliasChoices("p_red_bc_st", "pRedBCST"),
898
+ serialization_alias="pRedBCST",
899
+ )
900
+ v_bc_st: str | None = Field(
901
+ default=None,
902
+ validation_alias=AliasChoices("v_bc_st", "vBCST"),
903
+ serialization_alias="vBCST",
904
+ )
905
+ p_icms_st: str | None = Field(
906
+ default=None,
907
+ validation_alias=AliasChoices("p_icms_st", "pICMSST"),
908
+ serialization_alias="pICMSST",
909
+ )
910
+ v_icms_st: str | None = Field(
911
+ default=None,
912
+ validation_alias=AliasChoices("v_icms_st", "vICMSST"),
913
+ serialization_alias="vICMSST",
914
+ )
915
+ v_bc_fcp_st: str | None = Field(
916
+ default=None,
917
+ validation_alias=AliasChoices("v_bc_fcp_st", "vBCFCPST"),
918
+ serialization_alias="vBCFCPST",
919
+ )
920
+ p_fcp_st: str | None = Field(
921
+ default=None,
922
+ validation_alias=AliasChoices("p_fcp_st", "pFCPST"),
923
+ serialization_alias="pFCPST",
924
+ )
925
+ v_fcp_st: str | None = Field(
926
+ default=None,
927
+ validation_alias=AliasChoices("v_fcp_st", "vFCPST"),
928
+ serialization_alias="vFCPST",
929
+ )
930
+ v_icms_deson: str | None = Field(
931
+ default=None,
932
+ validation_alias=AliasChoices("v_icms_deson", "vICMSDeson"),
933
+ serialization_alias="vICMSDeson",
934
+ )
935
+ mot_des_icms: str | None = Field(
936
+ default=None,
937
+ validation_alias=AliasChoices("mot_des_icms", "motDesICMS"),
938
+ serialization_alias="motDesICMS",
939
+ )
940
+ ind_deduz_deson: str | None = Field(
941
+ default=None,
942
+ validation_alias=AliasChoices("ind_deduz_deson", "indDeduzDeson"),
943
+ serialization_alias="indDeduzDeson",
944
+ )
945
+ v_icms_st_deson: str | None = Field(
946
+ default=None,
947
+ validation_alias=AliasChoices("v_icms_st_deson", "vICMSSTDeson"),
948
+ serialization_alias="vICMSSTDeson",
949
+ )
950
+ mot_des_icms_st: str | None = Field(
951
+ default=None,
952
+ validation_alias=AliasChoices("mot_des_icms_st", "motDesICMSST"),
953
+ serialization_alias="motDesICMSST",
954
+ )
955
+
956
+
957
+ class IcmsPart(BaseModel):
958
+ """ICMS split between the origin and destination states."""
959
+
960
+ model_config = _CONFIG
961
+
962
+ orig: str
963
+ cst: Literal["10", "20", "90"] = Field(
964
+ validation_alias=AliasChoices("cst", "CST"),
965
+ serialization_alias="CST",
966
+ )
967
+ mod_bc: str = Field(
968
+ validation_alias=AliasChoices("mod_bc", "modBC"),
969
+ serialization_alias="modBC",
970
+ )
971
+ v_bc: str = Field(
972
+ validation_alias=AliasChoices("v_bc", "vBC"),
973
+ serialization_alias="vBC",
974
+ )
975
+ p_red_bc: str | None = Field(
976
+ default=None,
977
+ validation_alias=AliasChoices("p_red_bc", "pRedBC"),
978
+ serialization_alias="pRedBC",
979
+ )
980
+ p_icms: str = Field(
981
+ validation_alias=AliasChoices("p_icms", "pICMS"),
982
+ serialization_alias="pICMS",
983
+ )
984
+ v_icms: str = Field(
985
+ validation_alias=AliasChoices("v_icms", "vICMS"),
986
+ serialization_alias="vICMS",
987
+ )
988
+ mod_bc_st: str = Field(
989
+ validation_alias=AliasChoices("mod_bc_st", "modBCST"),
990
+ serialization_alias="modBCST",
991
+ )
992
+ p_mva_st: str | None = Field(
993
+ default=None,
994
+ validation_alias=AliasChoices("p_mva_st", "pMVAST"),
995
+ serialization_alias="pMVAST",
996
+ )
997
+ p_red_bc_st: str | None = Field(
998
+ default=None,
999
+ validation_alias=AliasChoices("p_red_bc_st", "pRedBCST"),
1000
+ serialization_alias="pRedBCST",
1001
+ )
1002
+ v_bc_st: str = Field(
1003
+ validation_alias=AliasChoices("v_bc_st", "vBCST"),
1004
+ serialization_alias="vBCST",
1005
+ )
1006
+ p_icms_st: str = Field(
1007
+ validation_alias=AliasChoices("p_icms_st", "pICMSST"),
1008
+ serialization_alias="pICMSST",
1009
+ )
1010
+ v_icms_st: str = Field(
1011
+ validation_alias=AliasChoices("v_icms_st", "vICMSST"),
1012
+ serialization_alias="vICMSST",
1013
+ )
1014
+ v_bc_fcp_st: str | None = Field(
1015
+ default=None,
1016
+ validation_alias=AliasChoices("v_bc_fcp_st", "vBCFCPST"),
1017
+ serialization_alias="vBCFCPST",
1018
+ )
1019
+ p_fcp_st: str | None = Field(
1020
+ default=None,
1021
+ validation_alias=AliasChoices("p_fcp_st", "pFCPST"),
1022
+ serialization_alias="pFCPST",
1023
+ )
1024
+ v_fcp_st: str | None = Field(
1025
+ default=None,
1026
+ validation_alias=AliasChoices("v_fcp_st", "vFCPST"),
1027
+ serialization_alias="vFCPST",
1028
+ )
1029
+ p_bc_op: str = Field(
1030
+ validation_alias=AliasChoices("p_bc_op", "pBCOp"),
1031
+ serialization_alias="pBCOp",
1032
+ )
1033
+ uf_st: str = Field(
1034
+ validation_alias=AliasChoices("uf_st", "UFST"),
1035
+ serialization_alias="UFST",
1036
+ )
1037
+ v_icms_deson: str | None = Field(
1038
+ default=None,
1039
+ validation_alias=AliasChoices("v_icms_deson", "vICMSDeson"),
1040
+ serialization_alias="vICMSDeson",
1041
+ )
1042
+ mot_des_icms: str | None = Field(
1043
+ default=None,
1044
+ validation_alias=AliasChoices("mot_des_icms", "motDesICMS"),
1045
+ serialization_alias="motDesICMS",
1046
+ )
1047
+ ind_deduz_deson: str | None = Field(
1048
+ default=None,
1049
+ validation_alias=AliasChoices("ind_deduz_deson", "indDeduzDeson"),
1050
+ serialization_alias="indDeduzDeson",
1051
+ )
1052
+
1053
+
1054
+ class IcmsSt(BaseModel):
1055
+ """ICMS charged earlier, for the substituted taxpayer."""
1056
+
1057
+ model_config = _CONFIG
1058
+
1059
+ orig: str
1060
+ cst: Literal["41", "60"] = Field(
1061
+ validation_alias=AliasChoices("cst", "CST"),
1062
+ serialization_alias="CST",
1063
+ )
1064
+ v_bc_st_ret: str = Field(
1065
+ validation_alias=AliasChoices("v_bc_st_ret", "vBCSTRet"),
1066
+ serialization_alias="vBCSTRet",
1067
+ )
1068
+ p_st: str | None = Field(
1069
+ default=None,
1070
+ validation_alias=AliasChoices("p_st", "pST"),
1071
+ serialization_alias="pST",
1072
+ )
47
1073
  v_icms_substituto: str | None = Field(
48
- default=None, alias="vICMSSubstituto"
1074
+ default=None,
1075
+ validation_alias=AliasChoices("v_icms_substituto", "vICMSSubstituto"),
1076
+ serialization_alias="vICMSSubstituto",
1077
+ )
1078
+ v_icms_st_ret: str = Field(
1079
+ validation_alias=AliasChoices("v_icms_st_ret", "vICMSSTRet"),
1080
+ serialization_alias="vICMSSTRet",
1081
+ )
1082
+ v_bc_fcp_st_ret: str | None = Field(
1083
+ default=None,
1084
+ validation_alias=AliasChoices("v_bc_fcp_st_ret", "vBCFCPSTRet"),
1085
+ serialization_alias="vBCFCPSTRet",
1086
+ )
1087
+ p_fcp_st_ret: str | None = Field(
1088
+ default=None,
1089
+ validation_alias=AliasChoices("p_fcp_st_ret", "pFCPSTRet"),
1090
+ serialization_alias="pFCPSTRet",
1091
+ )
1092
+ v_fcp_st_ret: str | None = Field(
1093
+ default=None,
1094
+ validation_alias=AliasChoices("v_fcp_st_ret", "vFCPSTRet"),
1095
+ serialization_alias="vFCPSTRet",
1096
+ )
1097
+ v_bc_st_dest: str = Field(
1098
+ validation_alias=AliasChoices("v_bc_st_dest", "vBCSTDest"),
1099
+ serialization_alias="vBCSTDest",
1100
+ )
1101
+ v_icms_st_dest: str = Field(
1102
+ validation_alias=AliasChoices("v_icms_st_dest", "vICMSSTDest"),
1103
+ serialization_alias="vICMSSTDest",
1104
+ )
1105
+ p_red_bc_efet: str | None = Field(
1106
+ default=None,
1107
+ validation_alias=AliasChoices("p_red_bc_efet", "pRedBCEfet"),
1108
+ serialization_alias="pRedBCEfet",
1109
+ )
1110
+ v_bc_efet: str | None = Field(
1111
+ default=None,
1112
+ validation_alias=AliasChoices("v_bc_efet", "vBCEfet"),
1113
+ serialization_alias="vBCEfet",
1114
+ )
1115
+ p_icms_efet: str | None = Field(
1116
+ default=None,
1117
+ validation_alias=AliasChoices("p_icms_efet", "pICMSEfet"),
1118
+ serialization_alias="pICMSEfet",
1119
+ )
1120
+ v_icms_efet: str | None = Field(
1121
+ default=None,
1122
+ validation_alias=AliasChoices("v_icms_efet", "vICMSEfet"),
1123
+ serialization_alias="vICMSEfet",
49
1124
  )
50
- v_icms_st_ret: str | None = Field(default=None, alias="vICMSSTRet")
51
- v_bc_fcp_st_ret: str | None = Field(default=None, alias="vBCFCPSTRet")
52
- p_fcp_st_ret: str | None = Field(default=None, alias="pFCPSTRet")
53
- v_fcp_st_ret: str | None = Field(default=None, alias="vFCPSTRet")
54
- p_red_bc_efet: str | None = Field(default=None, alias="pRedBCEfet")
55
- v_bc_efet: str | None = Field(default=None, alias="vBCEfet")
56
- p_icms_efet: str | None = Field(default=None, alias="pICMSEfet")
57
- v_icms_efet: str | None = Field(default=None, alias="vICMSEfet")
58
1125
 
59
1126
 
60
1127
  class IcmsSn101(BaseModel):
@@ -63,9 +1130,19 @@ class IcmsSn101(BaseModel):
63
1130
  model_config = _CONFIG
64
1131
 
65
1132
  orig: str
66
- csosn: str = Field(default="101", alias="CSOSN")
67
- p_cred_sn: str = Field(alias="pCredSN")
68
- v_cred_icms_sn: str = Field(alias="vCredICMSSN")
1133
+ csosn: Literal["101"] = Field(
1134
+ default="101",
1135
+ validation_alias=AliasChoices("csosn", "CSOSN"),
1136
+ serialization_alias="CSOSN",
1137
+ )
1138
+ p_cred_sn: str = Field(
1139
+ validation_alias=AliasChoices("p_cred_sn", "pCredSN"),
1140
+ serialization_alias="pCredSN",
1141
+ )
1142
+ v_cred_icms_sn: str = Field(
1143
+ validation_alias=AliasChoices("v_cred_icms_sn", "vCredICMSSN"),
1144
+ serialization_alias="vCredICMSSN",
1145
+ )
69
1146
 
70
1147
 
71
1148
  class IcmsSn102(BaseModel):
@@ -74,76 +1151,332 @@ class IcmsSn102(BaseModel):
74
1151
  model_config = _CONFIG
75
1152
 
76
1153
  orig: str | None = None
77
- csosn: str = Field(alias="CSOSN")
1154
+ csosn: Literal["102", "103", "300", "400"] = Field(
1155
+ validation_alias=AliasChoices("csosn", "CSOSN"),
1156
+ serialization_alias="CSOSN",
1157
+ )
78
1158
 
79
1159
 
80
- class IcmsSn900(BaseModel):
81
- """Simples Nacional ICMS, other cases (used with interstate partilha)."""
1160
+ class IcmsSn201(BaseModel):
1161
+ """Simples Nacional ICMS with a credit and substitution."""
82
1162
 
83
1163
  model_config = _CONFIG
84
1164
 
85
- orig: str | None = None
86
- csosn: str = Field(default="900", alias="CSOSN")
87
- mod_bc: str | None = Field(default=None, alias="modBC")
88
- v_bc: str | None = Field(default=None, alias="vBC")
89
- p_icms: str | None = Field(default=None, alias="pICMS")
90
- v_icms: str | None = Field(default=None, alias="vICMS")
1165
+ orig: str
1166
+ csosn: Literal["201"] = Field(
1167
+ default="201",
1168
+ validation_alias=AliasChoices("csosn", "CSOSN"),
1169
+ serialization_alias="CSOSN",
1170
+ )
1171
+ mod_bc_st: str = Field(
1172
+ validation_alias=AliasChoices("mod_bc_st", "modBCST"),
1173
+ serialization_alias="modBCST",
1174
+ )
1175
+ p_mva_st: str | None = Field(
1176
+ default=None,
1177
+ validation_alias=AliasChoices("p_mva_st", "pMVAST"),
1178
+ serialization_alias="pMVAST",
1179
+ )
1180
+ p_red_bc_st: str | None = Field(
1181
+ default=None,
1182
+ validation_alias=AliasChoices("p_red_bc_st", "pRedBCST"),
1183
+ serialization_alias="pRedBCST",
1184
+ )
1185
+ v_bc_st: str = Field(
1186
+ validation_alias=AliasChoices("v_bc_st", "vBCST"),
1187
+ serialization_alias="vBCST",
1188
+ )
1189
+ p_icms_st: str = Field(
1190
+ validation_alias=AliasChoices("p_icms_st", "pICMSST"),
1191
+ serialization_alias="pICMSST",
1192
+ )
1193
+ v_icms_st: str = Field(
1194
+ validation_alias=AliasChoices("v_icms_st", "vICMSST"),
1195
+ serialization_alias="vICMSST",
1196
+ )
1197
+ v_bc_fcp_st: str | None = Field(
1198
+ default=None,
1199
+ validation_alias=AliasChoices("v_bc_fcp_st", "vBCFCPST"),
1200
+ serialization_alias="vBCFCPST",
1201
+ )
1202
+ p_fcp_st: str | None = Field(
1203
+ default=None,
1204
+ validation_alias=AliasChoices("p_fcp_st", "pFCPST"),
1205
+ serialization_alias="pFCPST",
1206
+ )
1207
+ v_fcp_st: str | None = Field(
1208
+ default=None,
1209
+ validation_alias=AliasChoices("v_fcp_st", "vFCPST"),
1210
+ serialization_alias="vFCPST",
1211
+ )
1212
+ p_cred_sn: str = Field(
1213
+ validation_alias=AliasChoices("p_cred_sn", "pCredSN"),
1214
+ serialization_alias="pCredSN",
1215
+ )
1216
+ v_cred_icms_sn: str = Field(
1217
+ validation_alias=AliasChoices("v_cred_icms_sn", "vCredICMSSN"),
1218
+ serialization_alias="vCredICMSSN",
1219
+ )
91
1220
 
92
1221
 
93
- class IcmsUfDest(BaseModel):
94
- """Interstate ICMS share owed to the destination state."""
1222
+ class IcmsSn202(BaseModel):
1223
+ """Simples Nacional ICMS without a credit, with substitution."""
95
1224
 
96
1225
  model_config = _CONFIG
97
1226
 
98
- v_bc_uf_dest: str = Field(alias="vBCUFDest")
99
- v_bc_fcp_uf_dest: str | None = Field(default=None, alias="vBCFCPUFDest")
100
- p_fcp_uf_dest: str | None = Field(default=None, alias="pFCPUFDest")
101
- p_icms_uf_dest: str = Field(alias="pICMSUFDest")
102
- p_icms_inter: Literal["4.00", "7.00", "12.00"] = Field(alias="pICMSInter")
103
- p_icms_inter_part: str = Field(alias="pICMSInterPart")
104
- v_fcp_uf_dest: str | None = Field(default=None, alias="vFCPUFDest")
105
- v_icms_uf_dest: str = Field(alias="vICMSUFDest")
106
- v_icms_uf_remet: str = Field(alias="vICMSUFRemet")
1227
+ orig: str
1228
+ csosn: Literal["202", "203"] = Field(
1229
+ validation_alias=AliasChoices("csosn", "CSOSN"),
1230
+ serialization_alias="CSOSN",
1231
+ )
1232
+ mod_bc_st: str = Field(
1233
+ validation_alias=AliasChoices("mod_bc_st", "modBCST"),
1234
+ serialization_alias="modBCST",
1235
+ )
1236
+ p_mva_st: str | None = Field(
1237
+ default=None,
1238
+ validation_alias=AliasChoices("p_mva_st", "pMVAST"),
1239
+ serialization_alias="pMVAST",
1240
+ )
1241
+ p_red_bc_st: str | None = Field(
1242
+ default=None,
1243
+ validation_alias=AliasChoices("p_red_bc_st", "pRedBCST"),
1244
+ serialization_alias="pRedBCST",
1245
+ )
1246
+ v_bc_st: str = Field(
1247
+ validation_alias=AliasChoices("v_bc_st", "vBCST"),
1248
+ serialization_alias="vBCST",
1249
+ )
1250
+ p_icms_st: str = Field(
1251
+ validation_alias=AliasChoices("p_icms_st", "pICMSST"),
1252
+ serialization_alias="pICMSST",
1253
+ )
1254
+ v_icms_st: str = Field(
1255
+ validation_alias=AliasChoices("v_icms_st", "vICMSST"),
1256
+ serialization_alias="vICMSST",
1257
+ )
1258
+ v_bc_fcp_st: str | None = Field(
1259
+ default=None,
1260
+ validation_alias=AliasChoices("v_bc_fcp_st", "vBCFCPST"),
1261
+ serialization_alias="vBCFCPST",
1262
+ )
1263
+ p_fcp_st: str | None = Field(
1264
+ default=None,
1265
+ validation_alias=AliasChoices("p_fcp_st", "pFCPST"),
1266
+ serialization_alias="pFCPST",
1267
+ )
1268
+ v_fcp_st: str | None = Field(
1269
+ default=None,
1270
+ validation_alias=AliasChoices("v_fcp_st", "vFCPST"),
1271
+ serialization_alias="vFCPST",
1272
+ )
107
1273
 
108
1274
 
109
- class IpiTrib(BaseModel):
110
- """IPI taxed by rate."""
1275
+ class IcmsSn500(BaseModel):
1276
+ """Simples Nacional ICMS already charged by substitution."""
111
1277
 
112
1278
  model_config = _CONFIG
113
1279
 
114
- cst: Literal["00", "49", "50", "99"] = Field(alias="CST")
115
- v_bc: str | None = Field(default=None, alias="vBC")
116
- p_ipi: str | None = Field(default=None, alias="pIPI")
117
- q_unid: str | None = Field(default=None, alias="qUnid")
118
- v_unid: str | None = Field(default=None, alias="vUnid")
119
- v_ipi: str = Field(alias="vIPI")
1280
+ orig: str
1281
+ csosn: Literal["500"] = Field(
1282
+ default="500",
1283
+ validation_alias=AliasChoices("csosn", "CSOSN"),
1284
+ serialization_alias="CSOSN",
1285
+ )
1286
+ v_bc_st_ret: str | None = Field(
1287
+ default=None,
1288
+ validation_alias=AliasChoices("v_bc_st_ret", "vBCSTRet"),
1289
+ serialization_alias="vBCSTRet",
1290
+ )
1291
+ p_st: str | None = Field(
1292
+ default=None,
1293
+ validation_alias=AliasChoices("p_st", "pST"),
1294
+ serialization_alias="pST",
1295
+ )
1296
+ v_icms_substituto: str | None = Field(
1297
+ default=None,
1298
+ validation_alias=AliasChoices("v_icms_substituto", "vICMSSubstituto"),
1299
+ serialization_alias="vICMSSubstituto",
1300
+ )
1301
+ v_icms_st_ret: str | None = Field(
1302
+ default=None,
1303
+ validation_alias=AliasChoices("v_icms_st_ret", "vICMSSTRet"),
1304
+ serialization_alias="vICMSSTRet",
1305
+ )
1306
+ v_bc_fcp_st_ret: str | None = Field(
1307
+ default=None,
1308
+ validation_alias=AliasChoices("v_bc_fcp_st_ret", "vBCFCPSTRet"),
1309
+ serialization_alias="vBCFCPSTRet",
1310
+ )
1311
+ p_fcp_st_ret: str | None = Field(
1312
+ default=None,
1313
+ validation_alias=AliasChoices("p_fcp_st_ret", "pFCPSTRet"),
1314
+ serialization_alias="pFCPSTRet",
1315
+ )
1316
+ v_fcp_st_ret: str | None = Field(
1317
+ default=None,
1318
+ validation_alias=AliasChoices("v_fcp_st_ret", "vFCPSTRet"),
1319
+ serialization_alias="vFCPSTRet",
1320
+ )
1321
+ p_red_bc_efet: str | None = Field(
1322
+ default=None,
1323
+ validation_alias=AliasChoices("p_red_bc_efet", "pRedBCEfet"),
1324
+ serialization_alias="pRedBCEfet",
1325
+ )
1326
+ v_bc_efet: str | None = Field(
1327
+ default=None,
1328
+ validation_alias=AliasChoices("v_bc_efet", "vBCEfet"),
1329
+ serialization_alias="vBCEfet",
1330
+ )
1331
+ p_icms_efet: str | None = Field(
1332
+ default=None,
1333
+ validation_alias=AliasChoices("p_icms_efet", "pICMSEfet"),
1334
+ serialization_alias="pICMSEfet",
1335
+ )
1336
+ v_icms_efet: str | None = Field(
1337
+ default=None,
1338
+ validation_alias=AliasChoices("v_icms_efet", "vICMSEfet"),
1339
+ serialization_alias="vICMSEfet",
1340
+ )
120
1341
 
121
1342
 
122
- class IpiNt(BaseModel):
123
- """IPI not taxed."""
1343
+ class IcmsSn900(BaseModel):
1344
+ """Simples Nacional ICMS, other cases."""
124
1345
 
125
1346
  model_config = _CONFIG
126
1347
 
127
- cst: str = Field(alias="CST")
1348
+ orig: str | None = None
1349
+ csosn: Literal["900"] = Field(
1350
+ default="900",
1351
+ validation_alias=AliasChoices("csosn", "CSOSN"),
1352
+ serialization_alias="CSOSN",
1353
+ )
1354
+ mod_bc: str | None = Field(
1355
+ default=None,
1356
+ validation_alias=AliasChoices("mod_bc", "modBC"),
1357
+ serialization_alias="modBC",
1358
+ )
1359
+ v_bc: str | None = Field(
1360
+ default=None,
1361
+ validation_alias=AliasChoices("v_bc", "vBC"),
1362
+ serialization_alias="vBC",
1363
+ )
1364
+ p_red_bc: str | None = Field(
1365
+ default=None,
1366
+ validation_alias=AliasChoices("p_red_bc", "pRedBC"),
1367
+ serialization_alias="pRedBC",
1368
+ )
1369
+ p_icms: str | None = Field(
1370
+ default=None,
1371
+ validation_alias=AliasChoices("p_icms", "pICMS"),
1372
+ serialization_alias="pICMS",
1373
+ )
1374
+ v_icms: str | None = Field(
1375
+ default=None,
1376
+ validation_alias=AliasChoices("v_icms", "vICMS"),
1377
+ serialization_alias="vICMS",
1378
+ )
1379
+ mod_bc_st: str | None = Field(
1380
+ default=None,
1381
+ validation_alias=AliasChoices("mod_bc_st", "modBCST"),
1382
+ serialization_alias="modBCST",
1383
+ )
1384
+ p_mva_st: str | None = Field(
1385
+ default=None,
1386
+ validation_alias=AliasChoices("p_mva_st", "pMVAST"),
1387
+ serialization_alias="pMVAST",
1388
+ )
1389
+ p_red_bc_st: str | None = Field(
1390
+ default=None,
1391
+ validation_alias=AliasChoices("p_red_bc_st", "pRedBCST"),
1392
+ serialization_alias="pRedBCST",
1393
+ )
1394
+ v_bc_st: str | None = Field(
1395
+ default=None,
1396
+ validation_alias=AliasChoices("v_bc_st", "vBCST"),
1397
+ serialization_alias="vBCST",
1398
+ )
1399
+ p_icms_st: str | None = Field(
1400
+ default=None,
1401
+ validation_alias=AliasChoices("p_icms_st", "pICMSST"),
1402
+ serialization_alias="pICMSST",
1403
+ )
1404
+ v_icms_st: str | None = Field(
1405
+ default=None,
1406
+ validation_alias=AliasChoices("v_icms_st", "vICMSST"),
1407
+ serialization_alias="vICMSST",
1408
+ )
1409
+ v_bc_fcp_st: str | None = Field(
1410
+ default=None,
1411
+ validation_alias=AliasChoices("v_bc_fcp_st", "vBCFCPST"),
1412
+ serialization_alias="vBCFCPST",
1413
+ )
1414
+ p_fcp_st: str | None = Field(
1415
+ default=None,
1416
+ validation_alias=AliasChoices("p_fcp_st", "pFCPST"),
1417
+ serialization_alias="pFCPST",
1418
+ )
1419
+ v_fcp_st: str | None = Field(
1420
+ default=None,
1421
+ validation_alias=AliasChoices("v_fcp_st", "vFCPST"),
1422
+ serialization_alias="vFCPST",
1423
+ )
1424
+ p_cred_sn: str | None = Field(
1425
+ default=None,
1426
+ validation_alias=AliasChoices("p_cred_sn", "pCredSN"),
1427
+ serialization_alias="pCredSN",
1428
+ )
1429
+ v_cred_icms_sn: str | None = Field(
1430
+ default=None,
1431
+ validation_alias=AliasChoices("v_cred_icms_sn", "vCredICMSSN"),
1432
+ serialization_alias="vCredICMSSN",
1433
+ )
128
1434
 
129
1435
 
130
- IpiVariant = IpiTrib | IpiNt | dict[str, Any]
131
- _IPI_TAGS = {IpiTrib: "IPITrib", IpiNt: "IPINT"}
1436
+ class IpiTrib(BaseModel):
1437
+ """IPI taxed by rate or by quantity."""
132
1438
 
1439
+ model_config = _CONFIG
133
1440
 
134
- class Ipi(BaseModel):
135
- """This item's IPI."""
1441
+ cst: Literal["00", "49", "50", "99"] = Field(
1442
+ validation_alias=AliasChoices("cst", "CST"),
1443
+ serialization_alias="CST",
1444
+ )
1445
+ v_bc: str | None = Field(
1446
+ default=None,
1447
+ validation_alias=AliasChoices("v_bc", "vBC"),
1448
+ serialization_alias="vBC",
1449
+ )
1450
+ p_ipi: str | None = Field(
1451
+ default=None,
1452
+ validation_alias=AliasChoices("p_ipi", "pIPI"),
1453
+ serialization_alias="pIPI",
1454
+ )
1455
+ q_unid: str | None = Field(
1456
+ default=None,
1457
+ validation_alias=AliasChoices("q_unid", "qUnid"),
1458
+ serialization_alias="qUnid",
1459
+ )
1460
+ v_unid: str | None = Field(
1461
+ default=None,
1462
+ validation_alias=AliasChoices("v_unid", "vUnid"),
1463
+ serialization_alias="vUnid",
1464
+ )
1465
+ v_ipi: str = Field(
1466
+ validation_alias=AliasChoices("v_ipi", "vIPI"),
1467
+ serialization_alias="vIPI",
1468
+ )
136
1469
 
137
- model_config = _CONFIG
138
1470
 
139
- c_enq: str = Field(alias="cEnq")
140
- trib: IpiVariant
1471
+ class IpiNt(BaseModel):
1472
+ """IPI not taxed."""
141
1473
 
142
- def to_dict(self) -> dict:
143
- """Returns the IPI group as a plain dict."""
144
- data = {"cEnq": self.c_enq}
145
- data.update(_wrap(self.trib, _IPI_TAGS))
146
- return data
1474
+ model_config = _CONFIG
1475
+
1476
+ cst: _IpiNtCst = Field(
1477
+ validation_alias=AliasChoices("cst", "CST"),
1478
+ serialization_alias="CST",
1479
+ )
147
1480
 
148
1481
 
149
1482
  class PisAliq(BaseModel):
@@ -151,10 +1484,46 @@ class PisAliq(BaseModel):
151
1484
 
152
1485
  model_config = _CONFIG
153
1486
 
154
- cst: str = Field(alias="CST")
155
- v_bc: str = Field(alias="vBC")
156
- p_pis: str = Field(alias="pPIS")
157
- v_pis: str = Field(alias="vPIS")
1487
+ cst: Literal["01", "02"] = Field(
1488
+ validation_alias=AliasChoices("cst", "CST"),
1489
+ serialization_alias="CST",
1490
+ )
1491
+ v_bc: str = Field(
1492
+ validation_alias=AliasChoices("v_bc", "vBC"),
1493
+ serialization_alias="vBC",
1494
+ )
1495
+ p_pis: str = Field(
1496
+ validation_alias=AliasChoices("p_pis", "pPIS"),
1497
+ serialization_alias="pPIS",
1498
+ )
1499
+ v_pis: str = Field(
1500
+ validation_alias=AliasChoices("v_pis", "vPIS"),
1501
+ serialization_alias="vPIS",
1502
+ )
1503
+
1504
+
1505
+ class PisQtde(BaseModel):
1506
+ """PIS taxed by quantity."""
1507
+
1508
+ model_config = _CONFIG
1509
+
1510
+ cst: Literal["03"] = Field(
1511
+ default="03",
1512
+ validation_alias=AliasChoices("cst", "CST"),
1513
+ serialization_alias="CST",
1514
+ )
1515
+ q_bc_prod: str = Field(
1516
+ validation_alias=AliasChoices("q_bc_prod", "qBCProd"),
1517
+ serialization_alias="qBCProd",
1518
+ )
1519
+ v_aliq_prod: str = Field(
1520
+ validation_alias=AliasChoices("v_aliq_prod", "vAliqProd"),
1521
+ serialization_alias="vAliqProd",
1522
+ )
1523
+ v_pis: str = Field(
1524
+ validation_alias=AliasChoices("v_pis", "vPIS"),
1525
+ serialization_alias="vPIS",
1526
+ )
158
1527
 
159
1528
 
160
1529
  class PisNt(BaseModel):
@@ -162,7 +1531,10 @@ class PisNt(BaseModel):
162
1531
 
163
1532
  model_config = _CONFIG
164
1533
 
165
- cst: str = Field(alias="CST")
1534
+ cst: Literal["04", "05", "06", "07", "08", "09"] = Field(
1535
+ validation_alias=AliasChoices("cst", "CST"),
1536
+ serialization_alias="CST",
1537
+ )
166
1538
 
167
1539
 
168
1540
  class PisOutr(BaseModel):
@@ -170,10 +1542,34 @@ class PisOutr(BaseModel):
170
1542
 
171
1543
  model_config = _CONFIG
172
1544
 
173
- cst: str = Field(alias="CST")
174
- v_bc: str | None = Field(default=None, alias="vBC")
175
- p_pis: str | None = Field(default=None, alias="pPIS")
176
- v_pis: str = Field(alias="vPIS")
1545
+ cst: _PisOutrCst = Field(
1546
+ validation_alias=AliasChoices("cst", "CST"),
1547
+ serialization_alias="CST",
1548
+ )
1549
+ v_bc: str | None = Field(
1550
+ default=None,
1551
+ validation_alias=AliasChoices("v_bc", "vBC"),
1552
+ serialization_alias="vBC",
1553
+ )
1554
+ p_pis: str | None = Field(
1555
+ default=None,
1556
+ validation_alias=AliasChoices("p_pis", "pPIS"),
1557
+ serialization_alias="pPIS",
1558
+ )
1559
+ q_bc_prod: str | None = Field(
1560
+ default=None,
1561
+ validation_alias=AliasChoices("q_bc_prod", "qBCProd"),
1562
+ serialization_alias="qBCProd",
1563
+ )
1564
+ v_aliq_prod: str | None = Field(
1565
+ default=None,
1566
+ validation_alias=AliasChoices("v_aliq_prod", "vAliqProd"),
1567
+ serialization_alias="vAliqProd",
1568
+ )
1569
+ v_pis: str = Field(
1570
+ validation_alias=AliasChoices("v_pis", "vPIS"),
1571
+ serialization_alias="vPIS",
1572
+ )
177
1573
 
178
1574
 
179
1575
  class CofinsAliq(BaseModel):
@@ -181,10 +1577,46 @@ class CofinsAliq(BaseModel):
181
1577
 
182
1578
  model_config = _CONFIG
183
1579
 
184
- cst: str = Field(alias="CST")
185
- v_bc: str = Field(alias="vBC")
186
- p_cofins: str = Field(alias="pCOFINS")
187
- v_cofins: str = Field(alias="vCOFINS")
1580
+ cst: Literal["01", "02"] = Field(
1581
+ validation_alias=AliasChoices("cst", "CST"),
1582
+ serialization_alias="CST",
1583
+ )
1584
+ v_bc: str = Field(
1585
+ validation_alias=AliasChoices("v_bc", "vBC"),
1586
+ serialization_alias="vBC",
1587
+ )
1588
+ p_cofins: str = Field(
1589
+ validation_alias=AliasChoices("p_cofins", "pCOFINS"),
1590
+ serialization_alias="pCOFINS",
1591
+ )
1592
+ v_cofins: str = Field(
1593
+ validation_alias=AliasChoices("v_cofins", "vCOFINS"),
1594
+ serialization_alias="vCOFINS",
1595
+ )
1596
+
1597
+
1598
+ class CofinsQtde(BaseModel):
1599
+ """COFINS taxed by quantity."""
1600
+
1601
+ model_config = _CONFIG
1602
+
1603
+ cst: Literal["03"] = Field(
1604
+ default="03",
1605
+ validation_alias=AliasChoices("cst", "CST"),
1606
+ serialization_alias="CST",
1607
+ )
1608
+ q_bc_prod: str = Field(
1609
+ validation_alias=AliasChoices("q_bc_prod", "qBCProd"),
1610
+ serialization_alias="qBCProd",
1611
+ )
1612
+ v_aliq_prod: str = Field(
1613
+ validation_alias=AliasChoices("v_aliq_prod", "vAliqProd"),
1614
+ serialization_alias="vAliqProd",
1615
+ )
1616
+ v_cofins: str = Field(
1617
+ validation_alias=AliasChoices("v_cofins", "vCOFINS"),
1618
+ serialization_alias="vCOFINS",
1619
+ )
188
1620
 
189
1621
 
190
1622
  class CofinsNt(BaseModel):
@@ -192,7 +1624,10 @@ class CofinsNt(BaseModel):
192
1624
 
193
1625
  model_config = _CONFIG
194
1626
 
195
- cst: str = Field(alias="CST")
1627
+ cst: Literal["04", "05", "06", "07", "08", "09"] = Field(
1628
+ validation_alias=AliasChoices("cst", "CST"),
1629
+ serialization_alias="CST",
1630
+ )
196
1631
 
197
1632
 
198
1633
  class CofinsOutr(BaseModel):
@@ -200,38 +1635,216 @@ class CofinsOutr(BaseModel):
200
1635
 
201
1636
  model_config = _CONFIG
202
1637
 
203
- cst: str = Field(alias="CST")
204
- v_bc: str | None = Field(default=None, alias="vBC")
205
- p_cofins: str | None = Field(default=None, alias="pCOFINS")
206
- v_cofins: str = Field(alias="vCOFINS")
1638
+ cst: _CofinsOutrCst = Field(
1639
+ validation_alias=AliasChoices("cst", "CST"),
1640
+ serialization_alias="CST",
1641
+ )
1642
+ v_bc: str | None = Field(
1643
+ default=None,
1644
+ validation_alias=AliasChoices("v_bc", "vBC"),
1645
+ serialization_alias="vBC",
1646
+ )
1647
+ p_cofins: str | None = Field(
1648
+ default=None,
1649
+ validation_alias=AliasChoices("p_cofins", "pCOFINS"),
1650
+ serialization_alias="pCOFINS",
1651
+ )
1652
+ q_bc_prod: str | None = Field(
1653
+ default=None,
1654
+ validation_alias=AliasChoices("q_bc_prod", "qBCProd"),
1655
+ serialization_alias="qBCProd",
1656
+ )
1657
+ v_aliq_prod: str | None = Field(
1658
+ default=None,
1659
+ validation_alias=AliasChoices("v_aliq_prod", "vAliqProd"),
1660
+ serialization_alias="vAliqProd",
1661
+ )
1662
+ v_cofins: str = Field(
1663
+ validation_alias=AliasChoices("v_cofins", "vCOFINS"),
1664
+ serialization_alias="vCOFINS",
1665
+ )
1666
+
1667
+
1668
+ class IcmsUfDest(BaseModel):
1669
+ """Interstate ICMS share owed to the destination state."""
1670
+
1671
+ model_config = _CONFIG
1672
+
1673
+ v_bc_uf_dest: str = Field(
1674
+ validation_alias=AliasChoices("v_bc_uf_dest", "vBCUFDest"),
1675
+ serialization_alias="vBCUFDest",
1676
+ )
1677
+ v_bc_fcp_uf_dest: str | None = Field(
1678
+ default=None,
1679
+ validation_alias=AliasChoices("v_bc_fcp_uf_dest", "vBCFCPUFDest"),
1680
+ serialization_alias="vBCFCPUFDest",
1681
+ )
1682
+ p_fcp_uf_dest: str | None = Field(
1683
+ default=None,
1684
+ validation_alias=AliasChoices("p_fcp_uf_dest", "pFCPUFDest"),
1685
+ serialization_alias="pFCPUFDest",
1686
+ )
1687
+ p_icms_uf_dest: str = Field(
1688
+ validation_alias=AliasChoices("p_icms_uf_dest", "pICMSUFDest"),
1689
+ serialization_alias="pICMSUFDest",
1690
+ )
1691
+ p_icms_inter: str = Field(
1692
+ validation_alias=AliasChoices("p_icms_inter", "pICMSInter"),
1693
+ serialization_alias="pICMSInter",
1694
+ )
1695
+ p_icms_inter_part: str = Field(
1696
+ validation_alias=AliasChoices("p_icms_inter_part", "pICMSInterPart"),
1697
+ serialization_alias="pICMSInterPart",
1698
+ )
1699
+ v_fcp_uf_dest: str | None = Field(
1700
+ default=None,
1701
+ validation_alias=AliasChoices("v_fcp_uf_dest", "vFCPUFDest"),
1702
+ serialization_alias="vFCPUFDest",
1703
+ )
1704
+ v_icms_uf_dest: str = Field(
1705
+ validation_alias=AliasChoices("v_icms_uf_dest", "vICMSUFDest"),
1706
+ serialization_alias="vICMSUFDest",
1707
+ )
1708
+ v_icms_uf_remet: str = Field(
1709
+ validation_alias=AliasChoices("v_icms_uf_remet", "vICMSUFRemet"),
1710
+ serialization_alias="vICMSUFRemet",
1711
+ )
1712
+
1713
+
1714
+ class PisSt(BaseModel):
1715
+ """PIS withheld by substitution."""
1716
+
1717
+ model_config = _CONFIG
1718
+
1719
+ v_bc: str | None = Field(
1720
+ default=None,
1721
+ validation_alias=AliasChoices("v_bc", "vBC"),
1722
+ serialization_alias="vBC",
1723
+ )
1724
+ p_pis: str | None = Field(
1725
+ default=None,
1726
+ validation_alias=AliasChoices("p_pis", "pPIS"),
1727
+ serialization_alias="pPIS",
1728
+ )
1729
+ q_bc_prod: str | None = Field(
1730
+ default=None,
1731
+ validation_alias=AliasChoices("q_bc_prod", "qBCProd"),
1732
+ serialization_alias="qBCProd",
1733
+ )
1734
+ v_aliq_prod: str | None = Field(
1735
+ default=None,
1736
+ validation_alias=AliasChoices("v_aliq_prod", "vAliqProd"),
1737
+ serialization_alias="vAliqProd",
1738
+ )
1739
+ v_pis: str = Field(
1740
+ validation_alias=AliasChoices("v_pis", "vPIS"),
1741
+ serialization_alias="vPIS",
1742
+ )
1743
+ ind_soma_pis_st: str | None = Field(
1744
+ default=None,
1745
+ validation_alias=AliasChoices("ind_soma_pis_st", "indSomaPISST"),
1746
+ serialization_alias="indSomaPISST",
1747
+ )
1748
+
1749
+
1750
+ class CofinsSt(BaseModel):
1751
+ """COFINS withheld by substitution."""
1752
+
1753
+ model_config = _CONFIG
1754
+
1755
+ v_bc: str | None = Field(
1756
+ default=None,
1757
+ validation_alias=AliasChoices("v_bc", "vBC"),
1758
+ serialization_alias="vBC",
1759
+ )
1760
+ p_cofins: str | None = Field(
1761
+ default=None,
1762
+ validation_alias=AliasChoices("p_cofins", "pCOFINS"),
1763
+ serialization_alias="pCOFINS",
1764
+ )
1765
+ q_bc_prod: str | None = Field(
1766
+ default=None,
1767
+ validation_alias=AliasChoices("q_bc_prod", "qBCProd"),
1768
+ serialization_alias="qBCProd",
1769
+ )
1770
+ v_aliq_prod: str | None = Field(
1771
+ default=None,
1772
+ validation_alias=AliasChoices("v_aliq_prod", "vAliqProd"),
1773
+ serialization_alias="vAliqProd",
1774
+ )
1775
+ v_cofins: str = Field(
1776
+ validation_alias=AliasChoices("v_cofins", "vCOFINS"),
1777
+ serialization_alias="vCOFINS",
1778
+ )
1779
+ ind_soma_cofins_st: str | None = Field(
1780
+ default=None,
1781
+ validation_alias=AliasChoices("ind_soma_cofins_st", "indSomaCOFINSST"),
1782
+ serialization_alias="indSomaCOFINSST",
1783
+ )
1784
+
1785
+
1786
+ IpiVariant = IpiTrib | IpiNt | dict[str, Any]
1787
+
1788
+
1789
+ class Ipi(BaseModel):
1790
+ """This item's IPI."""
1791
+
1792
+ model_config = _CONFIG
1793
+
1794
+ cnpj_prod: str | None = Field(
1795
+ default=None,
1796
+ validation_alias=AliasChoices("cnpj_prod", "CNPJProd"),
1797
+ serialization_alias="CNPJProd",
1798
+ )
1799
+ c_selo: str | None = Field(
1800
+ default=None,
1801
+ validation_alias=AliasChoices("c_selo", "cSelo"),
1802
+ serialization_alias="cSelo",
1803
+ )
1804
+ q_selo: str | None = Field(
1805
+ default=None,
1806
+ validation_alias=AliasChoices("q_selo", "qSelo"),
1807
+ serialization_alias="qSelo",
1808
+ )
1809
+ c_enq: str = Field(
1810
+ validation_alias=AliasChoices("c_enq", "cEnq"),
1811
+ serialization_alias="cEnq",
1812
+ )
1813
+ trib: IpiVariant
1814
+
1815
+ def to_dict(self) -> dict:
1816
+ """Returns the IPI group as a plain dict."""
1817
+ return self.model_dump(exclude_none=True)
207
1818
 
208
1819
 
209
1820
  IcmsGroup = (
210
1821
  Icms00
1822
+ | Icms02
1823
+ | Icms10
1824
+ | Icms15
1825
+ | Icms20
1826
+ | Icms30
211
1827
  | Icms40
1828
+ | Icms51
1829
+ | Icms53
212
1830
  | Icms60
1831
+ | Icms61
1832
+ | Icms70
1833
+ | Icms90
1834
+ | IcmsPart
1835
+ | IcmsSt
213
1836
  | IcmsSn101
214
1837
  | IcmsSn102
1838
+ | IcmsSn201
1839
+ | IcmsSn202
1840
+ | IcmsSn500
215
1841
  | IcmsSn900
216
1842
  | dict[str, Any]
217
1843
  )
218
- PisGroup = PisAliq | PisNt | PisOutr | dict[str, Any]
219
- CofinsGroup = CofinsAliq | CofinsNt | CofinsOutr | dict[str, Any]
220
-
221
- _ICMS_TAGS = {
222
- Icms00: "ICMS00",
223
- Icms40: "ICMS40",
224
- Icms60: "ICMS60",
225
- IcmsSn101: "ICMSSN101",
226
- IcmsSn102: "ICMSSN102",
227
- IcmsSn900: "ICMSSN900",
228
- }
229
- _PIS_TAGS = {PisAliq: "PISAliq", PisNt: "PISNT", PisOutr: "PISOutr"}
230
- _COFINS_TAGS = {
231
- CofinsAliq: "COFINSAliq",
232
- CofinsNt: "COFINSNT",
233
- CofinsOutr: "COFINSOutr",
234
- }
1844
+
1845
+ PisGroup = PisAliq | PisQtde | PisNt | PisOutr | dict[str, Any]
1846
+
1847
+ CofinsGroup = CofinsAliq | CofinsQtde | CofinsNt | CofinsOutr | dict[str, Any]
235
1848
 
236
1849
 
237
1850
  class Tax(BaseModel):
@@ -239,39 +1852,15 @@ class Tax(BaseModel):
239
1852
 
240
1853
  model_config = _CONFIG
241
1854
 
242
- v_tot_trib: str | None = Field(default=None, alias="vTotTrib")
1855
+ v_tot_trib: str | None = None
243
1856
  icms: IcmsGroup | None = None
244
1857
  icms_uf_dest: IcmsUfDest | None = None
245
1858
  ipi: Ipi | dict[str, Any] | None = None
246
1859
  pis: PisGroup | None = None
1860
+ pis_st: PisSt | None = None
247
1861
  cofins: CofinsGroup | None = None
1862
+ cofins_st: CofinsSt | None = None
248
1863
 
249
1864
  def to_dict(self) -> dict:
250
- """Returns the taxes as a plain dict."""
251
- data: dict[str, Any] = {}
252
- if self.v_tot_trib is not None:
253
- data["vTotTrib"] = self.v_tot_trib
254
- if self.icms is not None:
255
- data["ICMS"] = _wrap(self.icms, _ICMS_TAGS)
256
- if self.icms_uf_dest is not None:
257
- data["ICMSUFDest"] = self.icms_uf_dest.model_dump(
258
- by_alias=True, exclude_none=True
259
- )
260
- if self.ipi is not None:
261
- data["IPI"] = (
262
- self.ipi.to_dict() if isinstance(self.ipi, Ipi) else self.ipi
263
- )
264
- if self.pis is not None:
265
- data["PIS"] = _wrap(self.pis, _PIS_TAGS)
266
- if self.cofins is not None:
267
- data["COFINS"] = _wrap(self.cofins, _COFINS_TAGS)
268
- return data
269
-
270
-
271
- def _wrap(group: BaseModel | dict, tags: dict[type, str]) -> dict:
272
- """Nests a tax group under its variant name."""
273
- if isinstance(group, dict):
274
- return group
275
- return {
276
- tags[type(group)]: group.model_dump(by_alias=True, exclude_none=True)
277
- }
1865
+ """Returns the taxes as the snake_case dict the API takes."""
1866
+ return self.model_dump(exclude_none=True)