def grabarDetalleRetencion(retencion, iva_bie=0, iva_serv=0, iva_100=0, imp_renta=0, concepto_retencion=None):
    if iva_100!=0:
        d = DetalleRetencion()
        d.es_renta = False
        d.es_iva = 'iva_100'
        d.valor_retenido = iva_100
        d.base_imponible = iva_100
        d.retencion = retencion
        d.save()
    else:
        if iva_serv!=0:
            d = DetalleRetencion()
            d.es_renta = False
            d.es_iva = 'iva_serv'
            d.valor_retenido = iva_serv
            d.base_imponible = iva_serv
            d.retencion = retencion
            d.save()
        if iva_bie!=0:
            d = DetalleRetencion()
            d.es_renta = False
            d.es_iva = 'iva_bie'
            d.valor_retenido = iva_bie
            d.base_imponible = iva_bie
            d.retencion = retencion
            d.save()
    if imp_renta!=0:
        d = DetalleRetencion()
        d.es_renta = True
        d.es_iva = None
        d.valor_retenido = imp_renta
        d.base_imponible = imp_renta
        d.concepto_retencion = concepto_retencion
        d.retencion = retencion
        d.save()
    return d.pk
def editarAnexoTransaccional(anexo, sustento, tipo_comprobante, iva_bien, iva_serv, iva_100):
    anexo = RegistroAnexoDocumento.objects.get(pk=anexo)
    anexo.sustento = SustentoTributario.objects.get(pk=sustento)
    anexo.tipo_comprobante = TipoComprobante.objects.get(pk=tipo_comprobante)
    #obtener solo detalles de iva
    detalle = DetalleRetencion.objects.filter(retencion_id=anexo.retencion_documento.pk, es_renta=False)
    
    de = buscarDetalle(detalle, "iva_bie")
    if  iva_bien == 0 and de:
        de.delete()
    elif iva_bien == 0 and de == False:
        pass
    elif iva_bien != 0 and de:
        pass
    elif iva_bien != 0 and de == False:
        det = DetalleRetencion()
        det.base_imponible = iva_bien
        det.es_iva = "iva_bie"
        det.es_renta = False
        det.valor_retenido = iva_bien
        det.retencion = Retencion.objects.get(pk=anexo.retencion_documento.pk)
        det.save()
    
    de = buscarDetalle(detalle, "iva_serv")
    if  iva_serv == 0 and de:
        de.delete()
    elif iva_serv == 0 and de == False:
        pass
    elif iva_serv != 0 and de:
        pass
    elif iva_serv != 0 and de == False:
        det = DetalleRetencion()
        det.base_imponible = iva_serv
        det.es_iva = "iva_serv"
        det.es_renta = False
        det.valor_retenido = iva_serv
        det.retencion = Retencion.objects.get(pk=anexo.retencion_documento.pk)
        det.save()
    
    de = buscarDetalle(detalle, "iva_100")
    if  iva_100 == 0 and de:
        de.delete()
    elif iva_100 == 0 and de == False:
        pass
    elif iva_100 != 0 and de:
        pass
    elif iva_100 != 0 and de == False:
        det = DetalleRetencion()
        det.base_imponible = iva_100
        det.es_iva = "iva_100"
        det.es_renta = False
        det.valor_retenido = iva_100
        det.retencion = Retencion.objects.get(pk=anexo.retencion_documento.pk)
        det.save()
        
    anexo.save(update_fields=['sustento','tipo_comprobante'])