def create_invoice(self, recipient_user, recipient_email, recipient_name, recipient_address, title, invoicedate, duedate, invoicerows, processor = None, processorid = None, autopaymentoptions = True, bankinfo = True, accounting_account = None, accounting_object = None): invoice = Invoice( recipient_email=recipient_email, recipient_name=recipient_name, recipient_address=recipient_address, title=title, invoicedate=invoicedate, duedate=duedate, total_amount=-1, bankinfo=bankinfo, accounting_account=accounting_account, accounting_object=accounting_object) if recipient_user: invoice.recipient_user = recipient_user if processor: invoice.processor = processor if processorid: invoice.processorid = processorid # Add our rows. Need to save the invoice first so it has an id. # But we expect to be in a transaction anyway. invoice.save() for r in invoicerows: invoice.invoicerow_set.add(InvoiceRow(invoice=invoice, rowtext = r[0], rowcount = r[1], rowamount = r[2])) if autopaymentoptions: invoice.allowedmethods = InvoicePaymentMethod.objects.filter(auto=True) invoice.save() # That should be it. Finalize so we get a PDF, and then # return whatever we have. wrapper = InvoiceWrapper(invoice) wrapper.finalizeInvoice() return invoice