Ejemplo n.º 1
0
def invoice(config, get_csrf_request_with_db, project, user):
    print(Invoice.query().all())
    assert len(Invoice.query().all()) == 0
    from autonomie.views.invoice import InvoiceAdd
    config.add_route('project', '/')
    request = get_csrf_request_with_db(post=APPSTRUCT)
    request.context = project
    request.context.__name__ = 'project'
    request.matched_route = "project_invoices"
    request.user = user
    request.context = project
    view = InvoiceAdd(request)
    view.submit_success(APPSTRUCT)
    return getone()
Ejemplo n.º 2
0
def invoice(config, get_csrf_request_with_db, project, user):
    print(Invoice.query().all())
    assert len(Invoice.query().all()) == 0
    from autonomie.views.invoice import InvoiceAdd
    config.add_route('project', '/')
    request = get_csrf_request_with_db(post=APPSTRUCT)
    request.context = project
    request.context.__name__ = 'project'
    request.matched_route = "project_invoices"
    request.user = user
    request.context = project
    view = InvoiceAdd(request)
    view.submit_success(APPSTRUCT)
    return getone()
Ejemplo n.º 3
0
def test_add_invoice(
    config, get_csrf_request_with_db, project, phase, company,
    user, customer, default_business_type,
):
    from autonomie.models.task.invoice import Invoice
    from autonomie.views.project.routes import PROJECT_ITEM_INVOICE_ROUTE
    from autonomie.views.invoices.invoice import InvoiceAddView
    config.add_route('/invoices/{id}', "/")
    value = {
        "name": u"Facture",
        'business_type_id': default_business_type.id,
        'project_id': project.id,
        'phase_id': phase.id,
        'customer_id': customer.id,
    }

    request = get_csrf_request_with_db()
    request.context = project
    request.current_company = company.id
    request.matched_route = Dummy(name=PROJECT_ITEM_INVOICE_ROUTE)
    request.user = user
    view = InvoiceAddView(request)
    view.submit_success(value)

    # view.submit_success(value)
    invoice = Invoice.query().first()

    assert invoice.name == u"Facture"
    assert invoice.phase_id == phase.id
    assert invoice.customer_id == customer.id
    assert invoice.project_id == project.id
    assert invoice.business_type_id == default_business_type.id
Ejemplo n.º 4
0
 def getOne(self):
     try:
         invoice = Invoice.query().filter(Invoice.phase_id==1).first()
         invoice.__name__ = 'invoice'
         return invoice
     except:
         return None
Ejemplo n.º 5
0
def test_add_invoice(config, get_csrf_request_with_db, project, phase, company,
                     user, customer, ):
    from autonomie.models.task.invoice import Invoice
    from autonomie.views.invoices.invoice import InvoiceAddView
    config.add_route('/invoices/{id}', "/")
    value = {
        "name": u"Facture",
        'course': True,
        'project_id': project.id,
        'phase_id': phase.id,
        'customer_id': customer.id,
    }

    request = get_csrf_request_with_db()
    request.context = project
    request.current_company = company.id
    request.matched_route = Dummy(name="project_invoices")
    request.user = user
    view = InvoiceAddView(request)
    view.submit_success(value)

    # view.submit_success(value)
    invoice = Invoice.query().first()

    assert invoice.name == u"Facture"
    assert invoice.phase_id == phase.id
    assert invoice.customer_id == customer.id
    assert invoice.project_id == project.id
    assert invoice.course is True
def upgrade():
    # Devis
    op.add_column("estimation_line",
                    sa.Column("tva", sa.Integer))
    # Adding tva to the lines
    op.execute("""
    update estimation_line as l join estimation as e on e.id=l.task_id set l.tva=e.tva;
    """)
    # Moving dicounts to a discount table
    for est in Estimation.query().all():
        id_ = est.id
        op.execute("""
insert discount (description, amount, tva, task_id) select "Remise", discountHT, tva, id from estimation where estimation.id='%s' and estimation.discountHT!= 0 and estimation.discountHT is not null ;
    """% (id_))
    # Factures
    op.add_column("invoice_line",
                    sa.Column("tva", sa.Integer))
    # Adding tva to the lines
    op.execute("""
    update invoice_line as l join invoice as i on i.id=l.task_id set l.tva=i.tva;
    """)
    # Moving discounts to discount table
    for inv in Invoice.query().all():
        id_ = inv.id
        op.execute("""
insert discount (description, amount, tva, task_id) select "Remise", discountHT, tva, id from invoice where invoice.id='%s' and invoice.discountHT!= 0 and invoice.discountHT is not null ;
    """% (id_))
    # Avoirs
    add_column("cancelinvoice_line",
                    sa.Column("tva", sa.Integer))
    if column_exists("cancelinvoice", "tva"):
        # If the column exists, there may be some cancelinvoices
        op.execute("""
    update cancelinvoice_line as l join cancelinvoice as i on i.id=l.task_id set l.tva=i.tva;
    """)
Ejemplo n.º 7
0
 def test_duplicate(self):
     self.config.testing_securitypolicy(userid="test",
             groupids=('admin',), permissive=True)
     self.config.add_route('invoice', '/inv')
     self.addOne()
     invoice = self.getOne()
     #The invoice status need to be at least wait to be duplicated
     invoice.CAEStatus = 'wait'
     request = self.request(task=invoice, post_args={'submit':'duplicate',
         'phase':"1", 'project':"1", 'customer':"1"})
     duplicate(request)
     invoices = Invoice.query().filter(Invoice.phase_id==1).all()
     self.assertEqual(len(invoices), 2)
Ejemplo n.º 8
0
def deferred_invoice_widget(node, kw):
    """
    Return a select for estimation selection
    """
    query = Invoice.query()
    query = query.filter_by(project_id=kw['request'].context.project_id)
    choices = []
    for invoice in query:
        if invoice.estimation_id is None:
            label = invoice.name
        else:
            label = u"{0} (est déjà rattachée à un devis)".format(invoice.name)
        choices.append((invoice.id, label))
    return deform.widget.CheckboxChoiceWidget(values=choices)
Ejemplo n.º 9
0
def deferred_invoice_widget(node, kw):
    """
    Return a select for estimation selection
    """
    query = Invoice.query()
    query = query.filter_by(project_id=kw['request'].context.project_id)
    choices = []
    for invoice in query:
        if invoice.estimation_id is None:
            label = invoice.name
        else:
            label = u"{0} (est déjà rattachée à un devis)".format(invoice.name)
        choices.append((invoice.id, label))
    return deform.widget.CheckboxChoiceWidget(values=choices)
Ejemplo n.º 10
0
def test_duplicate(config, content, dbsession, invoice, get_csrf_request_with_db):
    from autonomie.views.invoice import duplicate
    config.testing_securitypolicy(userid="test", groupids=('admin',),
                                  permissive=True)
    config.add_route('invoice', '/inv')
    #The invoice status need to be at least wait to be duplicated
    invoice.CAEStatus = 'wait'
    request = get_csrf_request_with_db(
        post={'submit':'duplicate', 'phase':"1", 'project':"1", 'customer':"1"}
    )
    request.context = invoice
    request.matched_route = "invoice"
    duplicate(request)
    dbsession.flush()
    invoices = Invoice.query().filter(Invoice.phase_id==1).all()
    assert len(invoices) == 2
Ejemplo n.º 11
0
def test_duplicate(config, content, dbsession, invoice,
                   get_csrf_request_with_db):
    from autonomie.views.invoice import duplicate
    config.testing_securitypolicy(userid="test",
                                  groupids=('admin', ),
                                  permissive=True)
    config.add_route('invoice', '/inv')
    #The invoice status need to be at least wait to be duplicated
    invoice.CAEStatus = 'wait'
    request = get_csrf_request_with_db(post={
        'submit': 'duplicate',
        'phase': "1",
        'project': "1",
        'customer': "1"
    })
    request.context = invoice
    request.matched_route = "invoice"
    duplicate(request)
    dbsession.flush()
    invoices = Invoice.query().filter(Invoice.phase_id == 1).all()
    assert len(invoices) == 2
Ejemplo n.º 12
0
def getone():
    invoice = Invoice.query().filter(Invoice.phase_id == 1).first()
    if invoice is not None:
        invoice.__name__ = 'invoice'
    return invoice
Ejemplo n.º 13
0
def getone():
    invoice = Invoice.query().filter(Invoice.phase_id==1).first()
    if invoice is not None:
        invoice.__name__ = 'invoice'
    return invoice