Skip to content

Commit

Permalink
updated
Browse files Browse the repository at this point in the history
  • Loading branch information
satcfdi committed Dec 7, 2023
1 parent fb5b8d7 commit f00c7df
Show file tree
Hide file tree
Showing 3 changed files with 49 additions and 2 deletions.
21 changes: 19 additions & 2 deletions satdigitalinvoice/file_data_managers.py
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,7 @@ def load_validator(schema_file):

client_validator = load_validator("cliente.yaml")
factura_validator = load_validator("factura.yaml")
product_validator = load_validator("producto.yaml")


class LocalData(dict):
Expand Down Expand Up @@ -110,6 +111,16 @@ def __init__(self):
self[k]["RegimenFiscal"] = self[k]["RegimenFiscal"]


class ProductosManager(LocalData):
file_source = "productos.yaml"

def __init__(self):
super().__init__()
for k, v in self.items():
if error := jsonschema.exceptions.best_match(product_validator.iter_errors(v)):
raise error


class FacturasManager(LocalData):
file_source = "facturas.yaml"

Expand All @@ -128,8 +139,14 @@ def loading_function(loader, node):
if dup := first_duplicate(json.dumps(x, sort_keys=True, default=str) for x in self["Facturas"]):
raise Exception("Factura Duplicada: {}".format(dup))

if dp:
for v in self["Facturas"]:
pm = ProductosManager()

for v in self["Facturas"]:
for c in v["Conceptos"]:
if "_producto" in c:
c.update(pm[c["_producto"]]["Concepto"])

if dp:
if error := jsonschema.exceptions.best_match(factura_validator.iter_errors(v)):
raise error

Expand Down
2 changes: 2 additions & 0 deletions satdigitalinvoice/schemas/factura.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,8 @@ properties:
type: integer
_deposito:
type: number
_producto:
type: string
ValorUnitario:
type:
- number
Expand Down
28 changes: 28 additions & 0 deletions satdigitalinvoice/schemas/producto.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
$schema: 'https://json-schema.org/draft/2020-12/schema'
type: object
properties:
Detalle:
type: string
Concepto:
type: object
properties:
CuentaPredial:
anyOf:
- type: string
- type: array
items:
type: string
ClaveProdServ:
type: string
ClaveUnidad:
type: string
Descripcion:
type: string
additionalProperties: false
required:
- Descripcion
- ClaveProdServ
- ClaveUnidad
additionalProperties: false


0 comments on commit f00c7df

Please sign in to comment.