Beispiel #1
0
 def startElement(self, tag, attrs):
     if (tag == 'cfdi:Comprobante'):
         Base32Handler.transform_comprobante(self, tag, attrs)
     elif (tag == 'cfdi:Emisor'):
         self._start_emisor = True
         Base32Handler.transform_emisor(self, tag, attrs)
     elif (tag == 'cfdi:RegimenFiscal' and self._start_emisor):
         Base32Handler.transform_regimen_fiscal(self, tag, attrs)
     elif (tag == 'cfdi:Receptor'):
         Base32Handler.transform_receptor(self, tag, attrs)
     elif (tag == 'cfdi:Concepto'):
         self._start_concept = True
         self.__transform_conceptos(tag, attrs)
     elif (tag == 'cfdi:Impuestos' and self._start_concept == False):
         self.__transform_impuestos(tag, attrs)
     elif (tag == 'cfdi:Traslado' and self._start_concept == False):
         self.__transform_impuestos_traslados(tag, attrs)
     elif (tag == 'cfdi:Retencion' and self._start_concept == False):
         self.__transform_impuestos_retenciones(tag, attrs)
     elif (tag == 'cfdi:Complemento'):
         self._start_complement = True
     elif (tag == 'tfd:TimbreFiscalDigital'):
         self._complement_profundity += 1
         Base32Handler.transform_tfd(self, tag, attrs)
     elif (tag == 'implocal:ImpuestosLocales'):
         self._complement_profundity += 1
         self.__transform_imploc(tag, attrs)
     elif (self._start_complement):
         self._complement_profundity += 1
Beispiel #2
0
 def __transform_impuestos(self, tag, attrs):
     if ('totalImpuestosTrasladados' in attrs):
         self._total_impuestos_traslado = Base32Handler.sum(self, 
             self._total_impuestos_traslado, attrs['totalImpuestosTrasladados'])
     if ('totalImpuestosRetenidos' in attrs):
         self._total_impuestos_retenidos = Base32Handler.sum(self, 
             self._total_impuestos_retenidos, attrs['totalImpuestosRetenidos'])
 def startElement(self, tag, attrs):
     if (tag == 'cfdi:Comprobante'):
         if ('Version' in attrs):
             Base33Handler.transform_comprobante(self, tag, attrs)
         elif ('version' in attrs):
             Base32Handler.transform_comprobante(self, tag, attrs)
     elif (tag == 'cfdi:Emisor'):
         if (self._version == '3.3'):
             Base33Handler.transform_emisor(self, tag, attrs)
         else:
             self._start_emisor = True
             Base32Handler.transform_emisor(self, tag, attrs)
     elif (tag == 'cfdi:Receptor'):
         if (self._version == '3.3'):
             Base33Handler.transform_receptor(self, tag, attrs)
         else:
             Base32Handler.transform_receptor(self, tag, attrs)
     elif (tag == 'cfdi:RegimenFiscal' and self._start_emisor
           and self._version == '3.2'):
         Base32Handler.transform_regimen_fiscal(self, tag, attrs)
     elif (tag == 'tfd:TimbreFiscalDigital'):
         if (self._version == '3.3'):
             Base33Handler.transform_tfd(self, tag, attrs)
         else:
             Base32Handler.transform_tfd(self, tag, attrs)
     elif (tag == 'pago10:Pago'):
         self.__transform_pago(tag, attrs)
     elif (tag == 'pago10:DoctoRelacionado'):
         self.__transform_docto_relacionado(tag, attrs)
Beispiel #4
0
 def __transform_imploc(self, tag, attrs):
     if ('TotaldeTraslados' in attrs):
         self._total_traslados_impuestos_locales = Base32Handler.sum(
             self, self._total_traslados_impuestos_locales,
             attrs['TotaldeTraslados'])
     if ('TotaldeRetenciones' in attrs):
         self._total_retenciones_impuestos_locales = Base32Handler.sum(
             self, self._total_retenciones_impuestos_locales,
             attrs['TotaldeRetenciones'])
Beispiel #5
0
 def __transform_impuestos_traslados(self, tag, attrs):
     if ('impuesto' in attrs and 'importe' in attrs):
         if (attrs['impuesto'] == 'IVA'):
             self._iva_traslado = Base32Handler.sum(self,
                                                    self._iva_traslado,
                                                    attrs['importe'])
         elif (attrs['impuesto'] == 'IEPS'):
             self._ieps_traslado = Base32Handler.sum(
                 self, self._ieps_traslado, attrs['importe'])
Beispiel #6
0
 def __transform_impuestos_retenciones(self, tag, attrs):
     if ('impuesto' in attrs and 'importe' in attrs):
         if (attrs['impuesto'] == 'ISR'):
             self._isr_retenido = Base32Handler.sum(self,
                                                    self._isr_retenido,
                                                    attrs['importe'])
         elif (attrs['impuesto'] == 'IVA'):
             self._iva_retenido = Base32Handler.sum(self,
                                                    self._iva_retenido,
                                                    attrs['importe'])
Beispiel #7
0
 def startElement(self, tag, attrs):
     if (tag == 'cfdi:Comprobante'):
         if ('Version' in attrs):
             Base33Handler.transform_comprobante(self, tag, attrs)
         elif ('version' in attrs):
             Base32Handler.transform_comprobante(self, tag, attrs)
     elif (tag == 'cfdi:Emisor'):
         if (self._version == '3.3'):
             Base33Handler.transform_emisor(self, tag, attrs)
         else:
             self._start_emisor = True
             Base32Handler.transform_emisor(self, tag, attrs)
     elif (tag == 'cfdi:Receptor'):
         if (self._version == '3.3'):
             Base33Handler.transform_receptor(self, tag, attrs)
         else:
             Base32Handler.transform_receptor(self, tag, attrs)
     elif (tag == 'cfdi:RegimenFiscal' and self._start_emisor
           and self._version == '3.2'):
         Base32Handler.transform_regimen_fiscal(self, tag, attrs)
     elif (tag == 'tfd:TimbreFiscalDigital'):
         if (self._version == '3.3'):
             Base33Handler.transform_tfd(self, tag, attrs)
         else:
             Base32Handler.transform_tfd(self, tag, attrs)
     elif (tag == 'nomina12:Nomina'):
         self.__transform_nomina12(tag, attrs)
     elif (tag == 'nomina12:Emisor'):
         self.__transform_nomina12_emisor(tag, attrs)
     elif (tag == 'nomina12:Receptor'):
         self.__transform_nomina12_receptor(tag, attrs)
     elif (tag == 'nomina12:Percepciones'):
         self.__transform_nomina12_percepciones(tag, attrs)
     elif (tag == 'nomina12:Percepcion'):
         self.__transform_nomina12_percepcion(tag, attrs)
     elif (tag == 'nomina12:HorasExtra'):
         self.__transform_horas_extra(tag, attrs)
     elif (tag == 'nomina12:JubilacionPensionRetiro'):
         self.__transform_jubilacion_pension_retiro(tag, attrs)
     elif (tag == 'nomina12:Deducciones'):
         self.__transform_nomina12_deducciones(tag, attrs)
     elif (tag == 'nomina12:Deduccion'):
         self.__transform_nomina12_deduccion(tag, attrs)
     elif (tag == 'nomina12:Incapacidad'):
         self.__transform_incapacidad(tag, attrs)
     elif (tag == 'nomina12:OtroPago'):
         self.__transform_otro_pago(tag, attrs)
     elif (tag == 'nomina12:SubsidioAlEmpleo'):
         self.__transform_subsidio_causado(tag, attrs)
     elif (tag == 'nomina12:CompensacionSaldosAFavor'):
         self.__transform_compensaciones_saldos_a_favor(tag, attrs)
Beispiel #8
0
 def __transform_complementos(self, tag):
     complement_name = tag
     if (':' in tag):
         complement_name = tag[tag.rindex(':') + 1:]
     self._complementos = Base32Handler.concatenate(self,
                                                    self._complementos,
                                                    complement_name)
    def __init__(self):
        xml.sax.ContentHandler.__init__(self)
        Base32Handler.__init__(self)
        Base33Handler.__init__(self)
        self._complemento_pago_counter = 1
        self._pago_counter = 1
        self._doc_relacionado_counter = 1

        self._doctos_relacionados = list()
        self._pagos = list()

        self.p_iva_traslado = '-'
        self.p_ieps_traslado = '-'
        self.p_total_impuestos_trasladados = '-'
        self.p_isr_retencion = '-'
        self.p_iva_retencion = '-'
        self.p_iesp_retencion = '-'
        self.p_total_impuestos_retenidos = '-'
 def __transform_nomina11_deduccion(self, tag, attrs):
     if ('TipoDeduccion' in attrs):
         tipo_deduccion = attrs['TipoDeduccion']
         importe = '0.00'
         if ('ImporteGravado' in attrs):
             importe = attrs['ImporteGravado']
         if (tipo_deduccion in self._deducciones):
             deduccion = self._deducciones[tipo_deduccion]
             importe = Base32Handler.sum(self, deduccion[1], importe)
         self._deducciones[tipo_deduccion] = [tipo_deduccion, importe]
Beispiel #11
0
 def startElement(self, tag, attrs):
     if (tag == 'cfdi:Comprobante'):
         Base32Handler.transform_comprobante(self, tag, attrs)
     elif (tag == 'cfdi:Emisor'):
         Base32Handler.transform_emisor(self, tag, attrs)
     elif (tag == 'cfdi:Receptor'):
         Base32Handler.transform_receptor(self, tag, attrs)
     elif (tag == 'cfdi:Concepto'):
         self._position_concept += 1
         self.__transform_conceptos(tag, attrs)
     elif (tag == 'tfd:TimbreFiscalDigital'):
         Base32Handler.transform_tfd(self, tag, attrs)
    def __init__(self):
        xml.sax.ContentHandler.__init__(self)
        Base32Handler.__init__(self)
        Base33Handler.__init__(self)
        self._start_emisor = False

        #Datos nodo nomina
        self._tipo_nomina = '-'
        self._fecha_pago = '-'
        self._fecha_inicial_pago = '-'
        self._fecha_final_pago = '-'
        self._num_dias_pagados = '-'
        self._total_percepciones = '-'
        self._total_deducciones = '-'
        self._total_otros_pagos = '-'

        #Datos nodo emisor
        self._curp_emisor = '-'
        self._registro_patronal = '-'
        self._rfc_patron_origen = '-'

        #Datos nodo receptor
        self._curp_receptor = '-'
        self._num_seguridad_social = '-'
        self._fecha_inicio_relacion_laboral = '-'
        self._sindicalizado = '-'
        self._tipo_jornada = '-'
        self._tipo_regimen = '-'
        self._num_empleado = '-'
        self._departamento = '-'
        self._puesto = '-'
        self._riesgo_puesto = '-'
        self._banco = '-'
        self._cuenta_bancaria = '-'
        self._antiguedad = '-'
        self._tipo_contrato = '-'
        self._periodicidad_pago = '-'
        self._salario_base_cot_apor = '-'
        self._salario_diario_integrado = '-'
        self._clave_ent_fed = '-'

        #Datos nodo percepciones
        self._total_sueldos = 0
        self._total_separacion_indemnizacion = '-'
        self._total_jubilacion_pension_retiro = '-'
        self._total_gravado = 0
        self._total_excento = 0

        #datos nodos percepcion
        self._percepciones = {}

        #Datos nodo horas extra
        self._p19_dias = '-'
        self._p19_tipo_horas = '-'
        self._p19_horas_extra = '-'
        self._p19_importe_pagado = '-'

        #datos nodo JubilacionPensionRetiro
        self._p39_ingreso_no_acumulable = '-'
        self._p39_ingreso_acumulable = '-'
        self._p39_total_una_exhibicion = '-'
        self._p39_monto_diario = '-'
        self._p39_total_parcialidad = '-'

        #Datos nodo deducciones
        self._total_otras_deducciones = '-'
        self._total_impuestos_retenidos = '-'

        #datos nodos deduccion
        self._deducciones = {}

        #datos nodo incapacidad
        self._d006_dias_incapacidad = '-'
        self._d006_tipo_incapacidad = '-'
        self._d006_importe_monetario = '-'

        #datos otro pago
        self._otros_pagos = {}

        #datos otro SubsidioAlEmpleo
        self._o002_subsidio_causado = '-'

        #datos otro SubsidioAlEmpleo
        self._o004_saldo_favor = '-'
        self._o004_ano = '-'
        self._o004_remanente_saldo_favor = '-'
Beispiel #13
0
    def __init__(self):
        xml.sax.ContentHandler.__init__(self)
        Base32Handler.__init__(self)
        self._position_concept = 0

        self._concepts = list()
Beispiel #14
0
 def __transform_conceptos(self, tag, attrs):
     if ('noIdentificacion' in attrs):
         self._clave_prod_serv = Base32Handler.concatenate(
             self, self._clave_prod_serv,
             attrs['noIdentificacion'].replace('|', ''))
Beispiel #15
0
 def __init__(self):
     xml.sax.ContentHandler.__init__(self)
     Base32Handler.__init__(self)
     self._start_concept = False
     self._start_complement = False
     self._complement_profundity = 0