Пример #1
0
def edit_ligne_frais_hors_forfait(request, pk):
    """
    :view edit_ligne_frais_hors_forfait: permet d'editer Frais Hors Forfait d'une Fiche de Frais
    :template edition_elem_fiche_frais.html:
    """
    ligne_frais_hors_forfait = get_object_or_404(LigneFraisHorsForfait, pk=pk)
    date_fiche_frais = get_date_fiche_frais()

    if ligne_frais_hors_forfait.fiche_frais.user != request.user:
        return HttpResponseForbidden()
    elif ligne_frais_hors_forfait.fiche_frais.date.month != date_fiche_frais.month or ligne_frais_hors_forfait.fiche_frais.date.year != date_fiche_frais.year:
        return HttpResponseForbidden()

    edit_form = FormLigneFraisHorsForfait(request.POST or None,
                                          instance=ligne_frais_hors_forfait)

    if edit_form.is_valid():
        ligne_frais_hors_forfait = edit_form.save(commit=False)
        ligne_frais_hors_forfait.etat = Etat.objects.get(valeur=1)
        ligne_frais_hors_forfait.save()
        ligne_frais_hors_forfait.fiche_frais.set_montant_valide()
        return redirect(request.user.profile.job.home_job)

    context = {
        "edit_form": edit_form,
        "element": "Frais Hors Forfait",
        "back": request.user.profile.job.home_job,
    }

    return render(request, "fichefrais/edition_elem_fiche_frais.html", context)
Пример #2
0
def android_add_frais(request):
    if request.method == "POST":

        if request.user.is_authenticated:
            date_fiche_frais = get_date_fiche_frais()
            fiche_frais = FicheFrais.objects.get_or_create(
                user=request.user,
                date__month=date_fiche_frais.month,
                date__year=date_fiche_frais.year)[0]
            etat = Etat.objects.get(valeur=1)
            type_fiche = request.data.get("type_f")
            if type_fiche == "frais_forfait":
                forfait_libelle = request.data.get("libelle")
                forfait_montant = float(request.data.get("montant"))
                date_frais = datetime.datetime.strptime(
                    request.data.get("date"), "%Y-%m-%d").date()
                quantite_frais = int(request.data.get("quantite"))

                forfait = Forfait.objects.get(libelle_forfait=forfait_libelle,
                                              montant=forfait_montant)

                frais = AndroidLigneFraisForfaitSerializer(
                    LigneFraisForfait.objects.create(fiche_frais=fiche_frais,
                                                     etat=etat,
                                                     forfait=forfait,
                                                     quantite=quantite_frais,
                                                     date_frais=date_frais))
                return Response(frais.data, status=status.HTTP_201_CREATED)
            elif type_fiche == "frais_hors_forfait":
                libelle_frais = request.data.get("libelle")
                montant_frais = float(request.data.get("montant"))
                date_frais = datetime.datetime.strptime(
                    request.data.get("date"), "%Y-%m-%d").date()
                frais = AndroidLigneFraisHorsForfaitSerializer(
                    LigneFraisHorsForfait.objects.create(
                        fiche_frais=fiche_frais,
                        etat=etat,
                        libelle_hors_forfait=libelle_frais,
                        montant=montant_frais,
                        date_frais=date_frais))
                return Response(frais.data, status=status.HTTP_201_CREATED)
            else:
                return Response(status=status.HTTP_406_NOT_ACCEPTABLE)
        else:
            return Response(status=status.HTTP_401_UNAUTHORIZED)
Пример #3
0
def home_visiteur(request):
    """
    :view home_visiteur: Permet d'afficher l'Accueil des visiteurs
    :template home_visiteur.html:
    """
    title = "Accueil"
    today = datetime.date.today()

    date_fiche_frais = get_date_fiche_frais()
    date_fin_fiche_frais = get_date_fin_fiche_frais()

    qs_fiche_frais = FicheFrais.objects.filter(
        user=request.user,
        date__month=date_fiche_frais.month,
        date__year=date_fiche_frais.year)

    left = get_temps_relatif(date_fin_fiche_frais, today)

    if not qs_fiche_frais:
        etat = Etat.objects.filter(valeur=1).first()
        qs_fiche_frais = [
            FicheFrais.objects.create(user=request.user,
                                      etat=etat,
                                      nb_justificatif=0,
                                      montant_valide=0,
                                      date=date_fiche_frais)
        ]

    fiche_frais = liste_fiche_frais(qs_fiche_frais)[qs_fiche_frais[0]]

    context = {
        "title": title,
        "left": left,
        "fiche_frais": fiche_frais,
        "date_fiche_frais": date_fiche_frais,
        "action_button_frais_forfait":
        "visiteur/action_button_frais_forfait.html",
        "action_button_frais_hors_forfait":
        "visiteur/action_button_frais_hors_forfait.html",
        "action_button_justificatif":
        "visiteur/action_button_justificatif.html",
    }

    return render(request, "fichefrais/visiteur/home_visiteur.html", context)
Пример #4
0
def creation_frais(request):
    """
    :view creation_frais: Permet d'utiliser un formulaire d'ajout de Frais (Forfait, Hors Forfait)
    :template ajout_frais.html:
    """
    title = "Ajouter Frais"

    if request.method == "POST":
        date_fiche_frais = get_date_fiche_frais()
        form_ff = FormLigneFraisForfait(request.POST)
        form_hf = FormLigneFraisHorsForfait(request.POST)
        fiche_frais = FicheFrais.objects.filter(
            user=request.user,
            date__year=date_fiche_frais.year,
            date__month=date_fiche_frais.month).first()
        etat = Etat.objects.filter(valeur=1).first()

        if form_ff.is_valid():
            ligne_ff = form_ff.save(commit=False)
            ligne_ff.fiche_frais = fiche_frais
            ligne_ff.etat = etat
            ligne_ff.save()
            return redirect(request.user.profile.job.home_job)

        elif form_hf.is_valid():
            ligne_hf = form_hf.save(commit=False)
            ligne_hf.fiche_frais = fiche_frais
            ligne_hf.etat = etat
            ligne_hf.save()
            return redirect(request.user.profile.job.home_job)
    else:
        form_ff = FormLigneFraisForfait()
        form_hf = FormLigneFraisHorsForfait()

    context = {
        "title": title,
        "back": request.user.profile.job.home_job,
        "user": request.user,
        "form_ff": form_ff,
        "form_hf": form_hf,
    }

    return render(request, "fichefrais/visiteur/ajout_frais.html", context)
Пример #5
0
def ajout_piece_jointe(request):
    """
    :view ajout_piece_joint: Permet d'utiliser le formulaire d'ajout de Justificatif pour une Fiche de Frais
    :template ajout_justificatif.html:
    """
    title = "Ajout Justificatif"

    if request.method == "POST":
        form_piece = FormPieceJointe(request.POST, request.FILES)
        if form_piece.is_valid():
            date_fiche_frais = get_date_fiche_frais()
            fiche_frais = FicheFrais.objects.get(user=request.user, date__year=date_fiche_frais.year,
                                                    date__month=date_fiche_frais.month)
            justificatif = PieceJointe.objects.filter(fiche_frais=fiche_frais)

            piece_file = form_piece.cleaned_data.get("piece")
            if piece_file:
                if piece_file.name.endswith("php" or "html" or "js" or "py"):
                    print("mauvais fichier")
                    return redirect("ajout_justificatif")

            piece = PieceJointe()
            piece.piece = piece_file
            piece.fiche_frais = fiche_frais
            piece.libelle = piece_file.name
            piece.filename = "%s.%s" % (justificatif.count() + 1, piece_file.name.split(".")[-1])
            piece.save()
            fiche_frais.nb_justificatif += 1
            fiche_frais.save()
            return redirect(request.user.profile.job.home_job)
    else:
        form_piece = FormPieceJointe()

    context = {
        "user": request.user,
        "title": title,
        "form_justificatif": form_piece,
    }

    return render(request, "fichefrais/visiteur/ajout_justificatif.html", context)