Пример #1
0
 def form_valid(self, form):
     form.instance = new_bill_protocol(
         bill_model=form.instance,
         entity_slug=self.kwargs['entity_slug'],
         user_model=self.request.user
     )
     return super().form_valid(form=form)
Пример #2
0
 def form_valid(self, form):
     unit_slug = form.cleaned_data.get('entity_unit')
     form.instance = new_bill_protocol(
         bill_model=form.instance,
         entity_slug=self.kwargs['entity_slug'],
         user_model=self.request.user,
         unit_slug=unit_slug)
     return super().form_valid(form=form)
Пример #3
0
    def form_valid(self, form):
        bill_model = form.save(commit=False)
        ledger_model, bill_model = new_bill_protocol(
            bill_model=bill_model,
            entity_slug=self.kwargs['entity_slug'],
            user_model=self.request.user)

        if self.for_purchase_order:
            po_pk = self.kwargs['po_pk']
            item_uuids = self.request.GET.get('item_uuids')
            if not item_uuids:
                return HttpResponseBadRequest()
            item_uuids = item_uuids.split(',')
            po_qs = PurchaseOrderModel.objects.for_entity(
                entity_slug=self.kwargs['entity_slug'],
                user_model=self.request.user)
            po_model: PurchaseOrderModel = get_object_or_404(po_qs,
                                                             uuid__exact=po_pk)

            if po_model.po_date > bill_model.date:
                messages.add_message(
                    self.request,
                    message=f'Bill Date {bill_model.date} cannot be'
                    f' earlier than PO Date {po_model.po_date}',
                    level=messages.ERROR,
                    extra_tags='is-danger')
                return self.render_to_response(
                    self.get_context_data(form=form))

            po_model_items_qs = po_model.itemthroughmodel_set.filter(
                uuid__in=item_uuids)

            bill_model.update_amount_due(queryset=po_model_items_qs)
            bill_model.new_state(commit=True)
            bill_model.clean()
            form.save()

            po_model_items_qs.update(bill_model=bill_model)

            bill_model.migrate_state(user_model=self.request.user,
                                     entity_slug=self.kwargs['entity_slug'],
                                     itemthrough_queryset=po_model_items_qs)
        else:
            form.save()
        return HttpResponseRedirect(self.get_success_url())