cfdibills.schemas.cfdi33.CFDI33

class cfdibills.schemas.cfdi33.CFDI33(*, version: Literal['3.3'], serie: str = None, folio: str = None, fecha: datetime.datetime, sello: str, forma_pago: cfdibills.schemas.catalogs.FormaPago = None, no_certificado: cfdibills.schemas.cfdi33.ConstrainedStrValue, certificado: str, condiciones_de_pago: str = None, sub_total: cfdibills.schemas.fields.ConstrainedDecimalValue, descuento: cfdibills.schemas.fields.ConstrainedDecimalValue = Decimal('0'), moneda: cfdibills.schemas.catalogs.Moneda, tipo_cambio: cfdibills.schemas.fields.ConstrainedDecimalValue = None, total: cfdibills.schemas.fields.ConstrainedDecimalValue, tipo_de_comprobante: cfdibills.schemas.catalogs.TipoDeComprobante, metodo_pago: cfdibills.schemas.catalogs.MetodoDePago = None, lugar_expedicion: str, confirmacion: str = None, cfdi_relacionados: cfdibills.schemas.cfdi33.CfdiRelacionados = None, emisor: cfdibills.schemas.cfdi33.Emisor, receptor: cfdibills.schemas.cfdi33.Receptor, conceptos: List[cfdibills.schemas.cfdi33.Concepto], impuestos: cfdibills.schemas.cfdi33.ImpuestosCFDI = None, complemento: List[Union[cfdibills.schemas.complementos.TimbreFiscalDigital, cfdibills.schemas.complementos.Aerolineas, cfdibills.schemas.complementos.CertificadoDeDestruccion, cfdibills.schemas.complementos.ComercioExterior, Dict]] = [], addenda: Dict = None)[source]

Bases: pydantic.main.BaseModel, cfdibills.schemas.mixins.CFDIMixin

Schema of a CFDI version 3.3.

Based on:

__init__(**data: Any) None

Create a new model by parsing and validating input data from keyword arguments.

Raises ValidationError if the input data cannot be parsed to form a valid model.

Methods

__init__(**data)

Create a new model by parsing and validating input data from keyword arguments.

construct([_fields_set])

Creates a new model setting __dict__ and __fields_set__ from trusted or pre-validated data.

copy(*[, include, exclude, update, deep])

Duplicate a model, optionally choose which fields to include, exclude and change.

dict(*[, include, exclude, by_alias, ...])

Generate a dictionary representation of the model, optionally specifying which fields to include or exclude.

from_orm(obj)

get_complemento(complemento_type)

Retrieves the complemento of type complemento_type.

get_total_transferred_tax(tax_type)

Computes the total tax transferred (from impuestos.traslados) of type tax_type.

get_total_withheld_tax(tax_type)

Computes the total tax get_total_withheld_tax (from impuestos.retenciones) of type tax_type.

json(*[, include, exclude, by_alias, ...])

Generate a JSON representation of the model, include and exclude arguments as per dict().

parse_file(path, *[, content_type, ...])

parse_obj(obj)

parse_raw(b, *[, content_type, encoding, ...])

schema([by_alias, ref_template])

schema_json(*[, by_alias, ref_template])

update_forward_refs(**localns)

Try to update ForwardRefs on fields based on this Model, globalns and localns.

validate(value)

Attributes

complemento

Nodo opcional donde se incluye el complemento Timbre Fiscal Digital de manera obligatoria y los nodos complementarios determinados por el SAT, de acuerdo con las disposiciones particulares para un sector o actividad específica.

version

Atributo requerido con valor prefijado a 3.3 que indica la versión del estándar bajo el que se encuentra expresado el comprobante.

serie

Atributo opcional para precisar la serie para control interno del contribuyente.

folio

Atributo opcional para control interno del contribuyente que expresa el folio del comprobante, acepta una cadena de caracteres.

fecha

Atributo requerido para la expresión de la fecha y hora de expedición del Comprobante Fiscal Digital por Internet.

sello

Atributo requerido para contener el sello digital del comprobante fiscal, al que hacen referencia las reglas de resolución miscelánea vigente.

forma_pago

Atributo condicional para expresar la clave de la forma de pago de los bienes o servicios amparados por el comprobante.

no_certificado

Atributo requerido para expresar el número de serie del certificado de sello digital que ampara al comprobante, de acuerdo con el acuse correspondiente a 20 posiciones otorgado por el sistema del SAT.

certificado

Atributo requerido que sirve para incorporar el certificado de sello digital que ampara al comprobante, como texto en formato base 64.

condiciones_de_pago

Atributo condicional para expresar las condiciones comerciales aplicables para el pago del comprobante fiscal digital por Internet.

sub_total

Atributo requerido para representar la suma de los importes de los conceptos antes de descuentos e impuesto.

descuento

Atributo condicional para representar el importe total de los descuentos aplicables antes de impuestos.

moneda

Atributo requerido para identificar la clave de la moneda utilizada para expresar los montos, cuando se usa moneda nacional se registra MXN.

tipo_cambio

Atributo condicional para representar el tipo de cambio conforme con la moneda usada.

total

Atributo requerido para representar la suma del subtotal, menos los descuentos aplicables, más las contribuciones recibidas (impuestos trasladados - federales o locales, derechos, productos, aprovechamientos, aportaciones de seguridad social, contribuciones de mejoras) menos los impuestos retenidos.

tipo_de_comprobante

Atributo requerido para expresar la clave del efecto del comprobante fiscal para el contribuyente emisor.

metodo_pago

Atributo condicional para precisar la clave del método de pago que aplica para este comprobante fiscal digital por Internet, conforme al Artículo 29-A fracción VII incisos a y b del CFF

lugar_expedicion

Atributo requerido para incorporar el código postal del lugar de expedición del comprobante (domicilio de la matriz o de la sucursal).

confirmacion

Atributo condicional para registrar la clave de confirmación que entregue el PAC para expedir el comprobante con importes grandes, con un tipo de cambio fuera del rango establecido o con ambos casos.

cfdi_relacionados

Nodo opcional para precisar la información de los comprobantes relacionados.

emisor

Nodo requerido para expresar la información del contribuyente emisor del comprobante.

receptor

Nodo requerido para precisar la información del contribuyente receptor del comprobante

conceptos

Nodo requerido para listar los conceptos cubiertos por el comprobante.

impuestos

Nodo condicional para expresar el resumen de los impuestos aplicables.

addenda

Nodo opcional para recibir las extensiones al presente formato que sean de utilidad al contribuyente.

addenda: Optional[Dict]

Nodo opcional para recibir las extensiones al presente formato que sean de utilidad al contribuyente. Para las reglas de uso del mismo, referirse al formato origen.

certificado: str

Atributo requerido que sirve para incorporar el certificado de sello digital que ampara al comprobante, como texto en formato base 64.

cfdi_relacionados: Optional[cfdibills.schemas.cfdi33.CfdiRelacionados]

Nodo opcional para precisar la información de los comprobantes relacionados.

complemento: List[Union[cfdibills.schemas.complementos.TimbreFiscalDigital, cfdibills.schemas.complementos.Aerolineas, cfdibills.schemas.complementos.CertificadoDeDestruccion, cfdibills.schemas.complementos.ComercioExterior, Dict]] = []

Nodo opcional donde se incluye el complemento Timbre Fiscal Digital de manera obligatoria y los nodos complementarios determinados por el SAT, de acuerdo con las disposiciones particulares para un sector o actividad específica.

conceptos: List[cfdibills.schemas.cfdi33.Concepto]

Nodo requerido para listar los conceptos cubiertos por el comprobante.

condiciones_de_pago: Optional[str]

Atributo condicional para expresar las condiciones comerciales aplicables para el pago del comprobante fiscal digital por Internet. Este atributo puede ser condicionado mediante atributos o complementos.

confirmacion: Optional[str]

Atributo condicional para registrar la clave de confirmación que entregue el PAC para expedir el comprobante con importes grandes, con un tipo de cambio fuera del rango establecido o con ambos casos. Es requerido cuando se registra un tipo de cambio o un total fuera del rango establecido.

classmethod construct(_fields_set: Optional[SetStr] = None, **values: Any) Model

Creates a new model setting __dict__ and __fields_set__ from trusted or pre-validated data. Default values are respected, but no other validation is performed. Behaves as if Config.extra = ‘allow’ was set since it adds all passed values

copy(*, include: Union[AbstractSetIntStr, MappingIntStrAny] = None, exclude: Union[AbstractSetIntStr, MappingIntStrAny] = None, update: DictStrAny = None, deep: bool = False) Model

Duplicate a model, optionally choose which fields to include, exclude and change.

Parameters
  • include – fields to include in new model

  • exclude – fields to exclude from new model, as with values this takes precedence over include

  • update – values to change/add in the new model. Note: the data is not validated before creating the new model: you should trust this data

  • deep – set to True to make a deep copy of the model

Returns

new model instance

descuento: cfdibills.schemas.fields.ConstrainedDecimalValue

Atributo condicional para representar el importe total de los descuentos aplicables antes de impuestos. No se permiten valores negativos. Se debe registrar cuando existan conceptos con descuento.

dict(*, include: Union[AbstractSetIntStr, MappingIntStrAny] = None, exclude: Union[AbstractSetIntStr, MappingIntStrAny] = None, by_alias: bool = False, skip_defaults: bool = None, exclude_unset: bool = False, exclude_defaults: bool = False, exclude_none: bool = False) DictStrAny

Generate a dictionary representation of the model, optionally specifying which fields to include or exclude.

emisor: cfdibills.schemas.cfdi33.Emisor

Nodo requerido para expresar la información del contribuyente emisor del comprobante.

fecha: datetime.datetime

Atributo requerido para la expresión de la fecha y hora de expedición del Comprobante Fiscal Digital por Internet. Se expresa en la forma AAAA-MM-DDThh:mm:ss y debe corresponder con la hora local donde se expide el comprobante.

folio: Optional[str]

Atributo opcional para control interno del contribuyente que expresa el folio del comprobante, acepta una cadena de caracteres.

forma_pago: Optional[cfdibills.schemas.catalogs.FormaPago]

Atributo condicional para expresar la clave de la forma de pago de los bienes o servicios amparados por el comprobante. Si no se conoce la forma de pago este atributo se debe omitir.

get_complemento(complemento_type: Type[cfdibills.schemas.complementos.AnyComplementoType]) cfdibills.schemas.complementos.AnyComplementoType

Retrieves the complemento of type complemento_type.

Parameters

complemento_type (Type[AnyComplementoType]) – Type of complemento to find.

Returns

Complemento found in this CFDI of type complemento_type

Return type

AnyComplementoType

Raises

ComplementoNotFoundError – When the CFDI doesn’t contain a complemento of type complemento_type

get_total_transferred_tax(tax_type: cfdibills.schemas.catalogs.Impuesto) float

Computes the total tax transferred (from impuestos.traslados) of type tax_type.

Parameters

tax_type (Impuesto) – Type of tax to sum.

Returns

Sum of all the transferred taxes of type tax_type.

Return type

float

get_total_withheld_tax(tax_type: cfdibills.schemas.catalogs.Impuesto) float

Computes the total tax get_total_withheld_tax (from impuestos.retenciones) of type tax_type.

Parameters

tax_type (Impuesto) – Type of tax to sum.

Returns

Sum of all the withheld taxes of type tax_type.

Return type

float

impuestos: Optional[cfdibills.schemas.cfdi33.ImpuestosCFDI]

Nodo condicional para expresar el resumen de los impuestos aplicables.

json(*, include: Union[AbstractSetIntStr, MappingIntStrAny] = None, exclude: Union[AbstractSetIntStr, MappingIntStrAny] = None, by_alias: bool = False, skip_defaults: bool = None, exclude_unset: bool = False, exclude_defaults: bool = False, exclude_none: bool = False, encoder: Optional[Callable[[Any], Any]] = None, models_as_dict: bool = True, **dumps_kwargs: Any) unicode

Generate a JSON representation of the model, include and exclude arguments as per dict().

encoder is an optional function to supply as default to json.dumps(), other arguments as per json.dumps().

lugar_expedicion: str

Atributo requerido para incorporar el código postal del lugar de expedición del comprobante (domicilio de la matriz o de la sucursal).

metodo_pago: Optional[cfdibills.schemas.catalogs.MetodoDePago]

Atributo condicional para precisar la clave del método de pago que aplica para este comprobante fiscal digital por Internet, conforme al Artículo 29-A fracción VII incisos a y b del CFF

moneda: cfdibills.schemas.catalogs.Moneda

Atributo requerido para identificar la clave de la moneda utilizada para expresar los montos, cuando se usa moneda nacional se registra MXN. Conforme con la especificación ISO 4217.

no_certificado: str

Atributo requerido para expresar el número de serie del certificado de sello digital que ampara al comprobante, de acuerdo con el acuse correspondiente a 20 posiciones otorgado por el sistema del SAT.

receptor: cfdibills.schemas.cfdi33.Receptor

Nodo requerido para precisar la información del contribuyente receptor del comprobante

sello: str

Atributo requerido para contener el sello digital del comprobante fiscal, al que hacen referencia las reglas de resolución miscelánea vigente. El sello debe ser expresado como una cadena de texto en formato Base 64.

serie: Optional[str]

Atributo opcional para precisar la serie para control interno del contribuyente. Este atributo acepta una cadena de caracteres

sub_total: cfdibills.schemas.fields.ConstrainedDecimalValue

Atributo requerido para representar la suma de los importes de los conceptos antes de descuentos e impuesto. No se permiten valores negativos.

tipo_cambio: Optional[cfdibills.schemas.fields.ConstrainedDecimalValue]

Atributo condicional para representar el tipo de cambio conforme con la moneda usada. Es requerido cuando la clave de moneda es distinta de MXN y de XXX. El valor debe reflejar el número de pesos mexicanos que equivalen a una unidad de la divisa señalada en el atributo moneda. Si el valor está fuera del porcentaje aplicable a la moneda tomado del catálogo c_Moneda, el emisor debe obtener del PAC que vaya a timbrar el CFDI, de manera no automática, una clave de confirmación para ratificar que el valor es correcto e integrar dicha clave en el atributo Confirmacion.

tipo_de_comprobante: cfdibills.schemas.catalogs.TipoDeComprobante

Atributo requerido para expresar la clave del efecto del comprobante fiscal para el contribuyente emisor.

total: cfdibills.schemas.fields.ConstrainedDecimalValue

Atributo requerido para representar la suma del subtotal, menos los descuentos aplicables, más las contribuciones recibidas (impuestos trasladados - federales o locales, derechos, productos, aprovechamientos, aportaciones de seguridad social, contribuciones de mejoras) menos los impuestos retenidos. Si el valor es superior al límite que establezca el SAT en la Resolución Miscelánea Fiscal vigente, el emisor debe obtener del PAC que vaya a timbrar el CFDI, de manera no automática, una clave de confirmación para ratificar que el valor es correcto e integrar dicha clave en el atributo Confirmacion. No se permiten valores negativos.

classmethod update_forward_refs(**localns: Any) None

Try to update ForwardRefs on fields based on this Model, globalns and localns.

version: Literal['3.3']

Atributo requerido con valor prefijado a 3.3 que indica la versión del estándar bajo el que se encuentra expresado el comprobante.