Ejemplo n.º 1
0
def reciboNomina(tree):
    """ Regresa información básica de un recibo en cfdi.

    :param tree: generado por Xm.getXml
    :returns: lista con receptor (nombre y rfc), fecha timbrado,
              UUID, periodo, total percs, total deds, neto,
              diccionario de percepciones y diccionario de deducciones.
    """
    rc = cfdiSimple(tree)
    stn = Xm.getElem(tree, "Nomina")[0]
    fechas = [
        stn.attrib[k]
        for k in ["FechaPago", "FechaInicialPago", "FechaFinalPago"]
    ]
    percs = (float(Xm.leeAtributo(tree, "Percepciones", "TotalGravado")) +
             float(Xm.leeAtributo(tree, "Percepciones", "TotalExento")))

    if Xm.leeAtributo(tree, "Deducciones", "TotalGravado"):
        deds = (float(Xm.leeAtributo(tree, "Deducciones", "TotalGravado")) +
                float(Xm.leeAtributo(tree, "Deducciones", "TotalExento")))
    else:
        deds = 0.0
    ps = Xm.getElem(tree, "Percepcion")
    ds = Xm.getElem(tree, "Deduccion")
    dPs = {x[0]: x[1:] for x in [mkPercDed(p) for p in ps]}
    dDs = {x[0]: x[1:] for x in [mkPercDed(d) for d in ds]}
    return [rc[6], rc[7], rc[0], rc[5], rc[3], rc[4]] + fechas \
        + [percs, deds, dPs, dDs]
Ejemplo n.º 2
0
def getTrasladosDet(tree):
    imps = Xm.getElem(tree, "Impuestos")[0]
    # tras = Xm.getElem(tree, "Traslado")
    tras = Xm.getElem(imps, "Traslado")
    d = {}
    for t in tras:
        r = [t.attrib["impuesto"], t.attrib["tasa"], t.attrib["importe"]]
        if r[0] not in d.keys():
            d[r[0]] = []
        d[r[0]].append(r[1:])
    return d
Ejemplo n.º 3
0
def getTasaIeps(tree):
    tras = Xm.getElem(tree, "Traslado")
    tasa = "0.00"
    for t in tras:
        if t.attrib.get("impuesto", " ") == "IEPS":
            tasa = t.attrib.get("tasa", "0.00")
    return tasa
Ejemplo n.º 4
0
def getTraslados(tree):
    tras = Xm.getElem(tree, "Traslado")
    d = {}
    for t in tras:
        if t.attrib["impuesto"] not in d.keys():
            d[t.attrib["impuesto"]] = "0.0"
        d[t.attrib["impuesto"]] = str(
            float(d[t.attrib["impuesto"]]) + float(t.attrib["importe"]))
    return d
Ejemplo n.º 5
0
def getConceptos(tree):
    conc = Xm.getElem(tree, "Concepto")
    d = {}
    for c in conc:
        ki = c.attrib["descripcion"].strip()
        if ki in d.keys():
            d[ki] = [d[ki]]
            d[ki].append(c.attrib["importe"])
        else:
            d[ki] = c.attrib["importe"]
    return d
Ejemplo n.º 6
0
def getRetenciones(tree):
    rets = Xm.getElem(tree, "Retencion")
    d = {}
    for t in rets:
        d[t.attrib["impuesto"]] = t.attrib["importe"]
    return d
Ejemplo n.º 7
0
def readEmisor(tree):
    st = Xm.getElem(tree, "Emisor")[0]
    return [st.attrib.get("nombre", "Sin Nombre").strip(), st.attrib["rfc"]]
Ejemplo n.º 8
0
def readReceptor(tree):
    st = Xm.getElem(tree, "Receptor")[0]
    return [st.attrib.get("nombre", "").strip(), st.attrib["rfc"]]