Пример #1
0
    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))
Пример #2
0
    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))
Пример #3
0
    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())
Пример #4
0
    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())
Пример #5
0
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()
Пример #6
0
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()