def copy_recurring(): today = datetime.date.today() session = DBSession() query = session.query(Invoice) query = query.filter(Invoice.recurring_date <= today) query = query.filter( or_(Invoice.recurring_stop == None, Invoice.recurring_stop > today)) for invoice in query.all(): # Clone invoice and invoice items invoice_clone = Invoice() invoice_clone.company = invoice.company invoice_clone.contact = invoice.contact invoice_clone.project_description = invoice.project_description invoice_clone.currency = invoice.currency invoice_clone.tax = invoice.tax session.add(invoice_clone) for item in invoice.items: item_clone = InvoiceItem() item_clone.item_number = item.item_number item_clone.amount = item.amount item_clone.hours = item.hours item_clone.days = item.days item_clone.service_description = item.service_description item_clone.service_title = item.service_title item_clone.invoice = invoice_clone session.add(item_clone) # Get new invoice number invoice_clone.invoice_number = next_invoice_number() # Adjust dates on cloned invoice invoice_clone.date = invoice.recurring_date invoice_clone.due_date = invoice_clone.date + (invoice.due_date - invoice.date) invoice_clone.recurring_date = invoice_clone.date + ( invoice.recurring_date - invoice.date) invoice_clone.recurring_stop = invoice.recurring_stop # Old invoice is not recurring anymore invoice.recurring_date = None transaction.commit()
def copy_recurring(): today = datetime.date.today() session = DBSession() query = session.query(Invoice) query = query.filter(Invoice.recurring_date <= today) query = query.filter(or_(Invoice.recurring_stop == None, Invoice.recurring_stop > today)) for invoice in query.all(): # Clone invoice and invoice items invoice_clone = Invoice() invoice_clone.company = invoice.company invoice_clone.contact = invoice.contact invoice_clone.project_description = invoice.project_description invoice_clone.currency = invoice.currency invoice_clone.tax = invoice.tax session.add(invoice_clone) for item in invoice.items: item_clone = InvoiceItem() item_clone.item_number = item.item_number item_clone.amount = item.amount item_clone.hours = item.hours item_clone.days = item.days item_clone.service_description = item.service_description item_clone.service_title = item.service_title item_clone.invoice = invoice_clone session.add(item_clone) # Get new invoice number invoice_clone.invoice_number = next_invoice_number() # Adjust dates on cloned invoice invoice_clone.date = invoice.recurring_date invoice_clone.due_date = invoice_clone.date + (invoice.due_date - invoice.date) invoice_clone.recurring_date = invoice_clone.date + (invoice.recurring_date - invoice.date) invoice_clone.recurring_stop = invoice.recurring_stop # Old invoice is not recurring anymore invoice.recurring_date = None transaction.commit()
def _add_invoice(self): from seantisinvoice.models import Invoice from seantisinvoice.models import InvoiceItem from seantisinvoice.models import DBSession session = DBSession() customer = self._add_customer() invoice = Invoice() invoice.project_description = u'Project' invoice.date = datetime.date.today() invoice.due_date = invoice.date + datetime.timedelta(days=30) invoice.currency = u'CHF' invoice.contact = customer.contacts[0] session.add(invoice) # Add invoice item to the invoice item = InvoiceItem() item.item_number = 0 item.service_title = u'Testing' item.service_description = u'A lot of work!' item.amount = 1000.0 item.invoice = invoice session.add(item) session.flush() return invoice
def _add_invoice(self): from seantisinvoice.models import Invoice from seantisinvoice.models import InvoiceItem from seantisinvoice.models import DBSession session = DBSession() customer = self._add_customer() invoice = Invoice() invoice.project_description = u"Project" invoice.date = datetime.date.today() invoice.due_date = invoice.date + datetime.timedelta(days=30) invoice.currency = u"CHF" invoice.contact = customer.contacts[0] session.add(invoice) # Add invoice item to the invoice item = InvoiceItem() item.item_number = 0 item.service_title = u"Testing" item.service_description = u"A lot of work!" item.amount = 1000.0 item.invoice = invoice session.add(item) session.flush() return invoice