def test_next_invoice_number(self): from seantisinvoice.models import DBSession from seantisinvoice.models import Company from seantisinvoice.models import next_invoice_number session = DBSession() company = session.query(Company).one() company.invoice_start_number = 20 result = next_invoice_number() self.assertEqual(20, result) self.assertEqual(21, company.invoice_start_number)
def test_next_invoice_number_used(self): from seantisinvoice.models import DBSession from seantisinvoice.models import Company from seantisinvoice.models import Invoice from seantisinvoice.models import next_invoice_number session = DBSession() company = session.query(Company).one() company.invoice_start_number = 20 invoice = Invoice(invoice_number=20) session.add(invoice) session.flush() result = next_invoice_number() self.assertEqual(21, result) self.assertEqual(22, company.invoice_start_number)
def handle_add(self, converted): session = DBSession() invoice = Invoice() invoice.company = session.query(Company).first() self._apply_data(invoice, converted) session.add(invoice) # Get and add unique invoice number if invoice.invoice_number is None: invoice.invoice_number = next_invoice_number() statusmessage.show(self.request, u"Invoice added.", "success") return HTTPFound(location=route_url('invoices', self.request))
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()