def test_deferred_total_validator(
    invoice,
    request_with_config,
    mode,
    bank,
    task_line,
    task_line_group,
    tva,
):
    invoice.line_groups = [task_line_group]
    task_line_group.lines = [task_line]
    from autonomie.forms.tasks.invoice import PaymentSchema
    request_with_config.context = invoice
    schema = PaymentSchema().bind(request=request_with_config)

    value = {
        'bank_remittance_id': '79.4',
        'amount': '20.0',
        'date': '2015-08-07',
        'bank_id': str(bank.id),
        'mode': mode.label,
        'resulted': True,
        'tva_id': str(tva.id),
    }
    expected_value = {
        'bank_remittance_id': '79.4',
        'amount': 15500000,
        'date': datetime.date(2015, 8, 7),
        'bank_id': str(bank.id),
        'mode': mode.label,
        'resulted': True,
        'tva_id': tva.id,
    }
    schema.deserialize(value) == expected_value

    value = {
        'bank_remittance_id': '79.4',
        'amount': '21',
        'date': '2015-08-07',
        'bank_id': str(bank.id),
        'mode': mode.label,
        'resulted': True,
        'tva_id': str(tva.id),
    }
    with pytest.raises(colander.Invalid):
        schema.deserialize(value)
示例#2
0
class PaymentEdit(BaseFormView):
    """
    Edit payment view
    """
    title = u"Modification d'un paiement"
    schema = PaymentSchema()

    def populate_actionmenu(self):
        return populate_invoice_payment_actionmenu(self.context, self.request)

    def before(self, form):
        form.set_appstruct(self.context.appstruct())
        self.populate_actionmenu()
        return form

    def get_default_redirect(self):
        """
        Get the default redirection path
        """
        return self.request.route_path(
            "payment",
            id=self.context.id
        )

    def submit_success(self, appstruct):
        """
        handle successfull submission of the form
        """
        payment_obj = self.context

        # update the payment
        merge_session_with_post(payment_obj, appstruct)
        self.dbsession.merge(payment_obj)

        # Check the invoice status
        force_resulted = appstruct.pop('resulted', False)
        parent = payment_obj.parent
        parent = parent.check_resulted(
            force_resulted=force_resulted,
            user_id=self.request.user.id
        )
        self.dbsession.merge(parent)

        come_from = appstruct.pop('come_from', None)

        if come_from is not None:
            redirect = come_from
        else:
            redirect = self.get_default_redirect()
        return HTTPFound(redirect)
示例#3
0
def test_paymentform_schema(
    dbsession,
    invoice,
    request_with_config,
    mode,
    bank,
    task_line,
    task_line_group,
    tva,
):
    task_line_group.lines = [task_line]
    invoice.line_groups = [task_line_group]
    from autonomie.forms.tasks.invoice import PaymentSchema
    request_with_config.context = invoice
    schema = PaymentSchema().bind(request=request_with_config)

    value = {
        'remittance_amount': '79.4',
        'amount': '12.53',
        'date': '2015-08-07',
        'bank_id': str(bank.id),
        'mode': mode.label,
        'resulted': True,
        'tva_id': str(tva.id),
    }
    expected_value = {
        'come_from': '',
        'remittance_amount': '79.4',
        'amount': 1253000,
        'date': datetime.date(2015, 8, 7),
        'bank_id': bank.id,
        'mode': mode.label,
        'resulted': True,
        'tva_id': tva.id,
    }
    assert schema.deserialize(value) == expected_value
def test_paymentform_schema(
    dbsession,
    invoice,
    request_with_config,
    mode,
    bank,
    task_line,
    task_line_group,
    tva,
):
    task_line_group.lines = [task_line]
    invoice.line_groups = [task_line_group]
    from autonomie.forms.tasks.invoice import PaymentSchema
    request_with_config.context = invoice
    schema = PaymentSchema().bind(request=request_with_config)

    value = {
        'bank_remittance_id': '79.4',
        'amount': '12.53',
        'date': '2015-08-07',
        'bank_id': str(bank.id),
        'mode': mode.label,
        'resulted': True,
        'tva_id': str(tva.id),
    }
    expected_value = {
        'come_from': '',
        'bank_remittance_id': '79.4',
        'amount': 1253000,
        'date': datetime.date(2015, 8, 7),
        'bank_id': bank.id,
        'mode': mode.label,
        'resulted': True,
        'tva_id': tva.id,
    }
    assert schema.deserialize(value) == expected_value
示例#5
0
def test_deferred_total_validator(
    invoice,
    request_with_config,
    mode,
    bank,
    task_line,
    task_line_group,
    tva,
):
    invoice.line_groups = [task_line_group]
    task_line_group.lines = [task_line]
    from autonomie.forms.tasks.invoice import PaymentSchema
    request_with_config.context = invoice
    schema = PaymentSchema().bind(request=request_with_config)

    value = {
        'remittance_amount': '79.4',
        'amount': '20.0',
        'date': '2015-08-07',
        'bank_id': str(bank.id),
        'mode': mode.label,
        'resulted': True,
        'tva_id': str(tva.id),
    }
    expected_value = {
        'remittance_amount': '79.4',
        'amount': 15500000,
        'date': datetime.date(2015, 8, 7),
        'bank_id': str(bank.id),
        'mode': mode.label,
        'resulted': True,
        'tva_id': tva.id,
    }
    schema.deserialize(value) == expected_value

    value = {
        'remittance_amount': '79.4',
        'amount': '21',
        'date': '2015-08-07',
        'bank_id': str(bank.id),
        'mode': mode.label,
        'resulted': True,
        'tva_id': str(tva.id),
    }
    with pytest.raises(colander.Invalid):
        schema.deserialize(value)