Beispiel #1
0
def generate_child_invoice(**kwargs):
    """
    function to generate a new child invoice based upon the parent
    """
    try:
        parent = Invoice.objects.get(
            invoice_number=kwargs['args'])  # invoice instance
        child = Invoice()
        child.client = parent.client
        child.tax = parent.tax
        child.discount_rate = parent.discount_rate
        child.issued_by = parent.issued_by
        child.invoice_status = Invoice.INVOICE_STATUS[1][0]
        child.recurring = Invoice.RECURRING[0][0]
        child.parent_invoice = parent
        child.date_due = timezone.now().date()
        child.save()
        # save the new m2m intermediary model
        parent_units = Units.objects.filter(invoice=parent)
        for item in parent_units.iterator():
            new = Units()
            new.invoice = child
            new.item = item.item
            new.quantity = item.quantity
            new.save()
        # generate pdf and send email (note: email=False, as already being dispatched due to creation of new PDF)
        invoicing_view.pdf_gen_or_fetch_or_email(
            invoice_number=child.invoice_number,
            type=invoicing_view.PDF_TYPES.get('invoice'),
            email=False,
            regenerate=False)
        return True
    except Invoice.DoesNotExist:
        return None