Ejemplo n.º 1
0
 def cancel(self, issuer):
     """
     Cancel the :class:`~invoicing.models.Invoice` with the creation of an
     associated :class:`~invoicing.models.CreditNote`
     """
     from invoicing.models import CreditNote, CreditNoteRevision
     if not self.is_cancelable():
         raise NotCancelableInvoice("Invoice is not cancelable.")
     credit_note = CreditNote(full_init=False,
                              tenant=self.tenant,
                              account_type=self.account_type,
                              issuer=issuer,
                              organization=self.organization,
                              contact=self.contact,
                              related_to=self,
                              group=self.group)
     cn_data = credit_note.add_revision(revision=CreditNoteRevision(
         based_on=self.current_revision))
     cn_data.issuer = issuer
     cn_data.issue_date = datetime_now()
     cn_data.credit_note_emission_date = datetime.date.today()
     if self.is_down_payment_invoice():
         # XXX should be removed in favor of translatable line items
         cn_data.line_items = []
     credit_note.save()
     self.set_state(Invoice.STATES.CANCELLED)
     return credit_note
Ejemplo n.º 2
0
 def cancel(self, issuer):
     """
     Cancel the :class:`~invoicing.models.Invoice` with the creation of an
     associated :class:`~invoicing.models.CreditNote`
     """
     from invoicing.models import CreditNote, CreditNoteRevision
     if not self.is_cancelable():
         raise NotCancelableInvoice("Invoice is not cancelable.")
     credit_note = CreditNote(
         full_init=False,
         tenant=self.tenant,
         account_type=self.account_type,
         issuer=issuer,
         organization=self.organization,
         contact=self.contact,
         related_to=self,
         group=self.group
     )
     cn_data = credit_note.add_revision(revision=CreditNoteRevision(based_on=self.current_revision))
     cn_data.issuer = issuer
     cn_data.issue_date = datetime_now()
     cn_data.credit_note_emission_date = datetime.date.today()
     for item in cn_data.line_items:
         if not isinstance(item.reference, basestring):
             item.reference = unicode(item.reference)
         item.unit_price = -item.unit_price
     credit_note.save()
     self.set_state(Invoice.STATES.CANCELLED)
     return credit_note