Exemplo n.º 1
0
def invoice():
    inv = Invoice(**INVOICE)
    for line in LINES:
        inv.lines.append(InvoiceLine(**line))
    for discount in DISCOUNTS:
        inv.discounts.append(DiscountLine(**discount))
    return inv
Exemplo n.º 2
0
def estimation():
    est = Estimation(**ESTIMATION)
    for line in LINES:
        est.lines.append(EstimationLine(**line))
    for line in DISCOUNTS:
        est.discounts.append(DiscountLine(**line))
    for line in PAYMENT_LINES:
        est.payment_lines.append(PaymentLine(**line))
    return est
Exemplo n.º 3
0
def invoice(project, user, customer, company, phase):
    invoice = Invoice(
        company,
        customer,
        project,
        phase,
        user,
    )
    for key, value in INVOICE.items():
        setattr(invoice, key, value)

    for line in LINES:
        invoice.default_line_group.lines.append(TaskLine(**line))
    for discount in DISCOUNTS:
        invoice.discounts.append(DiscountLine(**discount))
    invoice.mentions = [TaskMention(label='1', title='t1', full_text='text')]

    invoice.address = customer.address

    return invoice
Exemplo n.º 4
0
def estimation(project, user, customer, company, phase):
    est = Estimation(
        company,
        customer,
        project,
        phase,
        user,
    )
    for key, value in ESTIMATION.items():
        setattr(est, key, value)
    for line in LINES:
        est.add_line(TaskLine(**line))
    for line in DISCOUNTS:
        est.discounts.append(DiscountLine(**line))
    for line in PAYMENT_LINES:
        est.payment_lines.append(PaymentLine(**line))
    est.mentions = [
        TaskMention(label='mention1', title='title1', full_text='text1')
    ]
    return est
Exemplo n.º 5
0
    def post_percent_discount_view(self):
        """
        View handling percent discount configuration

        Generates discounts for each tva used in this document

        current context : Invoice/Estimation/CancelInvoice
        """
        percent = self.request.json_body.get('percentage')
        description = self.request.json_body.get('description')
        lines = []
        if percent is not None and description is not None:
            tva_parts = self.context.tva_ht_parts()
            for tva, ht in tva_parts.items():
                amount = percentage(ht, percent)
                line = DiscountLine(description=description,
                                    amount=amount,
                                    tva=tva)
                lines.append(line)
                self.context.discounts.append(line)
            self.request.dbsession.merge(self.context)
        return lines
Exemplo n.º 6
0
def add_lines_to_invoice(task, appstruct):
    """
        Add the lines to the current invoice
    """
    # Needed for edition only
    task.default_line_group.lines = []
    task.line_groups = [task.default_line_group]
    task.discounts = []

    for group in appstruct['groups']:
        lines = group.pop('lines', [])
        group = TaskLineGroup(**group)
        for line in lines:
            group.lines.append(TaskLine(**line))
        task.line_groups.append(group)
    for line in appstruct['lines']:
        task.default_line_group.lines.append(TaskLine(**line))

    for line in appstruct.get('discounts', []):
        task.discounts.append(DiscountLine(**line))

    return task