Exemple #1
0
def item(request, budget_id):
    budget = get_object_or_404(Budget, id=budget_id)

    if request.method == 'GET':
        form = BudgetForm(instance=budget)
    elif request.method == 'POST':
        form = BudgetForm(data=request.POST, instance=budget)
        if form.is_valid():
            data = form.cleaned_data
            form.save()
            budget.update_budgetlines()

            sum_natures = 0
            for n in ['fo', 'mi', 'sa', 'eq']:
                if n in data and data[n]:
                    sum_natures += data[n]

            if sum_natures > budget.get_amount_left():
                error_msg(
                    request,
                    u"Montant disponible insuffisant pour cette répartition.")
            else:
                for nature in ['fo', 'mi', 'sa', 'eq']:
                    if data[nature] or data[nature] == 0:
                        sub_budget, created = Budget.objects.get_or_create(
                            team=budget.team,
                            name="%s - %s" % (budget.name, nature.upper()),
                            default_origin=budget.default_origin,
                            budget_type=budget.budget_type,
                            tva_code=budget.tva_code,
                            domain=budget.domain,
                            default_nature=nature.upper())
                        if data[nature] > 0:
                            bl = sub_budget.credit(data[nature])
                            bl.product = u"Répartition"
                            bl.save()

                            bl = budget.debit(data[nature])
                            bl.product = u"Répartition vers %s" % nature.upper(
                            )
                            bl.save()

                # if budget.get_amount_left() == 0:
                #   budget.is_active = False
                #   budget.save()
                #   for bl in BudgetLine.objects.filter( budget_id = budget.id ):
                #       bl.is_active = False
                #       bl.save()
                #   info_msg( request, "Budget modifié avec succès. Il a été automatiquement archivé car son montant dispo est égal à 0.")
                # else:
                info_msg(request, "Budget modifié avec succès.")
                return redirect('budgets')
    else:
        return redirect('error')

    return render(request, 'budget/item.html', {
        'budget': budget,
        'form': form
    })
Exemple #2
0
def item(request, budget_id):
    budget = get_object_or_404( Budget, id = budget_id )
    
    if request.method == 'GET':
        form = BudgetForm( instance = budget )
    elif request.method == 'POST':
        form = BudgetForm(data = request.POST, instance = budget)
        if form.is_valid():
            data = form.cleaned_data
            form.save()
            budget.update_budgetlines()
            
            sum_natures = 0
            for n in ['fo','mi','sa','eq']:
                if n in data and data[n]:
                    sum_natures += data[n]
            
            if sum_natures > budget.get_amount_left():
                error_msg( request, u"Montant disponible insuffisant pour cette répartition." )
            else:
                for nature in ['fo','mi','sa','eq']:
                    if data[nature] or data[nature] == 0:
                        sub_budget, created = Budget.objects.get_or_create(
                            team = budget.team,
                            name = "%s - %s" % (budget.name, nature.upper()),
                            default_origin = budget.default_origin,
                            budget_type = budget.budget_type,
                            tva_code = budget.tva_code,
                            domain = budget.domain,
                            default_nature = nature.upper()
                        )
                        if data[nature] > 0:
                            bl = sub_budget.credit( data[nature] )
                            bl.product = u"Répartition"
                            bl.save()
                        
                            bl = budget.debit( data[nature] )
                            bl.product = u"Répartition vers %s" % nature.upper()
                            bl.save()
                
                # if budget.get_amount_left() == 0:
                #   budget.is_active = False
                #   budget.save()
                #   for bl in BudgetLine.objects.filter( budget_id = budget.id ):
                #       bl.is_active = False
                #       bl.save()
                #   info_msg( request, "Budget modifié avec succès. Il a été automatiquement archivé car son montant dispo est égal à 0.")
                # else:
                info_msg(request, "Budget modifié avec succès.")
                return redirect('budgets')
    else:
        return redirect('error')
    
    return render(request, 'budget/item.html', {
        'budget': budget,
        'form': form
    })
    def test_form_save_should_populate_slug_field(self):
        from budget.forms import BudgetForm

        form_data = {'name': 'Foo Bar',
                     'start_date': date.today()}
        form = BudgetForm(data=form_data)

        self.assertTrue(form.is_valid())

        form.save()
        self.assertEqual('foo-bar', form.instance.slug)
Exemple #4
0
def save_budget(request):
    if request.method == 'POST':
        budget = Budget()
        form = BudgetForm(request.POST, instance=budget)
        if form.is_valid():
            try:
                form.save()
            except Exception:
                return mail_response('false')
            sendmail(form)
            return mail_response('true')
        else:
            return mail_response('false')
    else:
        raise Http404
Exemple #5
0
def new(request):
    if request.method == 'GET':
        form = BudgetForm()
    elif request.method == 'POST':
        form = BudgetForm(data = request.POST)
        if form.is_valid():
            data = form.cleaned_data

            if data.get('all_natures', None) and data['all_natures'] >= 0:
                budget = form.save(commit = False)
                budget.name = "[%s] %s [%s]" % (
                    data['team'].shortname,
                    data['name'],
                    data['default_origin']
                )
                budget.save()
                if data['all_natures'] > 0:
                    bl = budget.credit(data["all_natures"])
                    bl.product = u"Initial"
                    bl.save()
                info_msg(request, "Budget '%s' ajouté avec succès." % budget.name)
            else:
                for nature in ['fo','mi','sa','eq']:
                    if data.get(nature, None) and data[nature] >= 0:
                        budget = Budget.objects.create(
                            team = data['team'],
                            name = "[%s] %s - %s [%s]" % (
                                data['team'].shortname,
                                data['name'],
                                nature.upper(),
                                data['default_origin']
                            ),
                            default_origin = data['default_origin'],
                            budget_type = data['budget_type'],
                            tva_code = data['tva_code'],
                            domain = data['domain'],
                            default_nature = nature.upper()
                        )
                        info_msg(request, "Budget '%s' ajouté avec succès." % budget.name)
                        if data[nature] > 0:
                            bl = budget.credit(data[nature])
                            bl.product = u"Initial"
                            bl.save()

            return redirect('budget:list')
    else:
        return redirect('error')
        
    return render(request, 'budget/form.html',{
        'form': form
    })
Exemple #6
0
def new(request):
    if request.method == 'GET':
        form = BudgetForm()
    elif request.method == 'POST':
        form = BudgetForm(data=request.POST)
        if form.is_valid():
            data = form.cleaned_data
            if data['all_natures'] or data["all_natures"] == 0:
                budget = form.save()
                if data['all_natures'] > 0:
                    bl = budget.credit(data["all_natures"])
                    bl.product = u"Initial"
                    bl.save()
            else:
                for nature in ['fo', 'mi', 'sa', 'eq']:
                    if data[nature] or data[nature] == 0:
                        budget = Budget.objects.create(
                            team=data['team'],
                            name="[%s] %s [%s] - %s" %
                            (data['team'].shortname, data['name'],
                             data['default_origin'], nature.upper()),
                            default_origin=data['default_origin'],
                            budget_type=data['budget_type'],
                            tva_code=data['tva_code'],
                            domain=data['domain'],
                            default_nature=nature.upper())
                        if data[nature] > 0:
                            bl = budget.credit(data[nature])
                            bl.product = u"Initial"
                            bl.save()

            info_msg(request, "Budget ajouté avec succès.")
            return redirect('budgets')
    else:
        return redirect('error')

    return render(request, 'budget/form.html', {'form': form})