def submit_success(self, appstruct): log.debug("Submitting invoice add") appstruct = get_invoice_dbdatas(appstruct) # Since the call to get_next_invoice_number commits the current # transaction, it needs to be called before creating our invoice, to # avoid missing arguments errors snumber = self.context.get_next_invoice_number() invoice = Invoice() invoice.project = self.context invoice.owner = self.request.user invoice = merge_session_with_post(invoice, appstruct["invoice"]) invoice.set_sequence_number(snumber) invoice.set_number() invoice.set_name() try: invoice = self.set_task_status(invoice) # Line handling invoice = add_lines_to_invoice(invoice, appstruct) self.dbsession.add(invoice) self.dbsession.flush() self.session.flash(u"La facture a bien été ajoutée.") except Forbidden, err: self.request.session.flash(err.message, queue='error')
def _get_common_invoice(cls, estimation, user): """ Prepare a new Invoice related to the given estimation :param obj estimation: The estimation we're starting from :param obj user: The user generating the new document :returns: A new Invoice :rtype: `class:Invoice` """ from autonomie.models.task.invoice import Invoice invoice = Invoice( user=user, company=estimation.company, customer=estimation.customer, project=estimation.project, phase_id=estimation.phase_id, estimation=estimation, payment_conditions=estimation.payment_conditions, description=estimation.description, address=estimation.address, workplace=estimation.workplace, mentions=estimation.mentions, business_type_id=estimation.business_type_id, ) return invoice
def test_invoice(dbsession, objects): user, phase, project = objects inv = Invoice(**INVOICE) inv.project = project inv.phase = phase dbsession.add(inv) dbsession.flush() task = dbsession.query(Task)\ .filter(Task.phase_id==phase.id).first() assert isinstance(task, Invoice)
def invoice(project, user, customer, company): invoice = Invoice( company, customer, project, project.phases[-1], user, ) for key, value in INVOICE.items(): setattr(invoice, key, value) return invoice
def test_payment(dbsession, objects): user, phase, project = objects inv = Invoice(**INVOICE) inv.CAEStatus = "valid" #inv.project = project inv.phase = phase inv.record_payment(amount=1500, mode="CHEQUE", resulted=True) dbsession.add(inv) dbsession.flush() p1 = dbsession.query(Payment).join(Task)\ .filter(Task.phase_id==phase.id).first() assert isinstance(p1.task, Invoice) assert not isinstance(p1.task, CancelInvoice)
def _mk_invoice(date=None, company=company): from autonomie.models.task.invoice import Invoice invoice = Invoice( company=company, project=project, customer=customer, phase=phase, user=user, date=date, ) dbsession.add(invoice) dbsession.flush() return invoice
def invoice( dbsession, tva, unity, project, customer, company, user, phase, ): from autonomie.models.task.invoice import Invoice invoice = Invoice( company=company, project=project, customer=customer, user=user, phase=phase, ) dbsession.add(invoice) dbsession.flush() return invoice
def add_invoice(cls, business, user): """ Freely add a new invoice to the current business :param obj business: The current business instance this service is attached to :returns: A new Invoice instance """ from autonomie.models.task.invoice import Invoice invoice = Invoice( user=user, company=business.project.company, project=business.project, customer_id=cls._get_customer_id(business), business_id=business.id, business_type_id=business.business_type_id, ) invoice.initialize_business_datas() DBSESSION().add(invoice) DBSESSION().flush() return invoice