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 test_total(self): from seantisinvoice.models import Company from seantisinvoice.models import Customer from seantisinvoice.models import CustomerContact from seantisinvoice.models import Invoice from seantisinvoice.models import InvoiceItem company = Company() # Customer customer = Customer() contact = CustomerContact() contact.customer = customer # Invoice invoice = Invoice() invoice.company = company invoice.contact = contact item = InvoiceItem() item.invoice = invoice item.amount = 3000.0 self.assertEquals(3000.0, item.total()) # Hourly rate is defined on the company company.hourly_rate = 120.0 item = InvoiceItem() item.invoice = invoice item.hours = 13 self.assertEquals(1560.0, item.total()) # Daily rate is also defined on the company company.daily_rate = 1300.0 item = InvoiceItem() item.invoice = invoice item.days = 2.5 self.assertEquals(3250.0, item.total()) # Special daily rate on customer customer.special_daily_rate = 1100.0 item = InvoiceItem() item.invoice = invoice item.days = 4.5 self.assertEquals(4950.0, item.total()) # Special hourly rate on customer customer.special_hourly_rate = 100.0 item = InvoiceItem() item.invoice = invoice item.hours = 10 self.assertEquals(1000.0, item.total())
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()