Esempio n. 1
0
    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')
Esempio n. 2
0
    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
Esempio n. 3
0
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)
Esempio n. 4
0
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
Esempio n. 5
0
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)
Esempio n. 6
0
 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
Esempio n. 7
0
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
Esempio n. 8
0
    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