示例#1
0
def invoice_number_template_validator(node, value):
    from autonomie.models.services.invoice_sequence_number import (
        InvoiceNumberService, )
    try:
        InvoiceNumberService.validate_template(value)
    except ValueError as e:
        raise colander.Invalid(node, str(e))
示例#2
0
def invoice_number_template_validator(node, value):
    from autonomie.models.services.invoice_sequence_number import (
        InvoiceNumberService,
    )
    try:
        InvoiceNumberService.validate_template(value)
    except ValueError as e:
        raise colander.Invalid(node, str(e))
示例#3
0
def test_invoice_number_service_validation():
    InvoiceNumberService.validate_template('')
    InvoiceNumberService.validate_template('aaa')
    InvoiceNumberService.validate_template('@{SEQGLOBAL}-{YYYY}')

    with pytest.raises(ValueError):
        InvoiceNumberService.validate_template('@{DONOTEXIST}')
示例#4
0
def _set_invoice_number(request, task, **kw):
    """
    Set a official number on invoices (or cancelinvoices)

    :param obj request: The current pyramid request
    :param obj task: The current context
    """
    template = Config.get_value('invoice_number_template', None)
    assert template is not None, \
        'invoice_number_template setting should be set'

    if task.official_number is None:
        InvoiceNumberService.assign_number(
            task,
            template,
        )
    return task
示例#5
0
def _set_invoice_number(request, task, **kw):
    """
    Set a official number on invoices (or cancelinvoices)

    :param obj request: The current pyramid request
    :param obj task: The current context
    """
    template = Config.get_value('invoice_number_template', None)
    assert template is not None, \
        'invoice_number_template setting should be set'

    if task.official_number is None:
        InvoiceNumberService.assign_number(
            task,
            template,
        )
    return task
def test_invoice_number_service_generation(invoice_20170707, invoice_20170808):
    tpl = 'FC-{YYYY}{MM}-{SEQGLOBAL}'

    InvoiceNumberService.assign_number(invoice_20170707, tpl)
    InvoiceNumberService.assign_number(invoice_20170808, tpl)
    assert invoice_20170707.official_number == 'FC-201707-1'
    assert invoice_20170808.official_number == 'FC-201707-2'

    # Will not re-assign
    with pytest.raises(ValueError):
        InvoiceNumberService.assign_number(invoice_20170707, tpl)
示例#7
0
def test_invoice_number_service_generation(invoice_20170707, invoice_20170808):
    tpl = 'FC-{YYYY}{MM}-{SEQGLOBAL}'

    InvoiceNumberService.assign_number(invoice_20170707, tpl)
    InvoiceNumberService.assign_number(invoice_20170808, tpl)
    assert invoice_20170707.official_number == 'FC-201707-1'
    assert invoice_20170808.official_number == 'FC-201707-2'

    # Will not re-assign
    with pytest.raises(ValueError):
        InvoiceNumberService.assign_number(invoice_20170707, tpl)
def test_invoice_number_collision_avoidance(
        invoice_20170707,
        invoice_2018,
        dbsession,
):
    # goes back to zero and conflicts with other years invoices
    # but that was how autonomie was configured by default before 4.2
    tpl = '{SEQYEAR}'

    # They will get the same official_number
    InvoiceNumberService.assign_number(invoice_20170707, tpl)

    with pytest.raises(ValueError):
        InvoiceNumberService.assign_number(invoice_2018, tpl)

    # With legacy tag, we want to allow that historic conflicts.
    invoice_20170707.legacy_number = True
    dbsession.merge(invoice_20170707)

    # Just check it raises nothing
    InvoiceNumberService.assign_number(invoice_2018, tpl)
示例#9
0
def test_invoice_number_collision_avoidance(
    invoice_20170707,
    invoice_2018,
    dbsession,
):
    # goes back to zero and conflicts with other years invoices
    # but that was how autonomie was configured by default before 4.2
    tpl = '{SEQYEAR}'

    # They will get the same official_number
    InvoiceNumberService.assign_number(invoice_20170707, tpl)

    with pytest.raises(ValueError):
        InvoiceNumberService.assign_number(invoice_2018, tpl)

    # With legacy tag, we want to allow that historic conflicts.
    invoice_20170707.legacy_number = True
    dbsession.merge(invoice_20170707)

    # Just check it raises nothing
    InvoiceNumberService.assign_number(invoice_2018, tpl)
def test_invoice_number_service_validation():
    with pytest.raises(ValueError):
        InvoiceNumberService.validate_template('@{DONOTEXIST}{{SEQGLOBAL}}')

    with pytest.raises(ValueError):
        InvoiceNumberService.validate_template('')

    with pytest.raises(ValueError):
        InvoiceNumberService.validate_template('aaa')

    # global
    InvoiceNumberService.validate_template('{SEQGLOBAL}-{YYYY}')
    InvoiceNumberService.validate_template('{SEQGLOBAL}')

    # year
    InvoiceNumberService.validate_template('{SEQYEAR}-{YYYY}')
    InvoiceNumberService.validate_template('{SEQYEAR}-{YY}')
    InvoiceNumberService.validate_template('{SEQYEAR}-{SEQMONTH}-{YY}')
    with pytest.raises(ValueError):
        InvoiceNumberService.validate_template('{SEQYEAR}')

    # month
    InvoiceNumberService.validate_template('{SEQMONTH}-{MM}-{YY}')
    with pytest.raises(ValueError):
        InvoiceNumberService.validate_template('{SEQMONTH}-{MM}')
        InvoiceNumberService.validate_template('{SEQMONTH}-{YY}')

    # month+company
    InvoiceNumberService.validate_template('{SEQMONTHANA}-{MM}-{YY}-{ANA}')
    with pytest.raises(ValueError):
        InvoiceNumberService.validate_template('{SEQMONTH}-{MM}-{YY}')
        InvoiceNumberService.validate_template('{SEQMONTH}-{MM}-{ANA}')
示例#11
0
def test_invoice_number_service_validation():
    with pytest.raises(ValueError):
        InvoiceNumberService.validate_template('@{DONOTEXIST}{{SEQGLOBAL}}')

    with pytest.raises(ValueError):
        InvoiceNumberService.validate_template('')

    with pytest.raises(ValueError):
        InvoiceNumberService.validate_template('aaa')

    # global
    InvoiceNumberService.validate_template('{SEQGLOBAL}-{YYYY}')
    InvoiceNumberService.validate_template('{SEQGLOBAL}')

    # year
    InvoiceNumberService.validate_template('{SEQYEAR}-{YYYY}')
    InvoiceNumberService.validate_template('{SEQYEAR}-{YY}')
    InvoiceNumberService.validate_template('{SEQYEAR}-{SEQMONTH}-{YY}')
    with pytest.raises(ValueError):
        InvoiceNumberService.validate_template('{SEQYEAR}')

    # month
    InvoiceNumberService.validate_template('{SEQMONTH}-{MM}-{YY}')
    with pytest.raises(ValueError):
        InvoiceNumberService.validate_template('{SEQMONTH}-{MM}')
        InvoiceNumberService.validate_template('{SEQMONTH}-{YY}')

    # month+company
    InvoiceNumberService.validate_template('{SEQMONTHANA}-{MM}-{YY}-{ANA}')
    with pytest.raises(ValueError):
        InvoiceNumberService.validate_template('{SEQMONTH}-{MM}-{YY}')
        InvoiceNumberService.validate_template('{SEQMONTH}-{MM}-{ANA}')