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