File size: 3,493 Bytes
6f0c329
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
{
    "_comment_vendor": "Vendor validation configs",

    "validation.name_match_algorithm_version": "rapidfuzz.local.v1",

    "validation.vendor_match_require_high_tier_contexts": [
      "contract_match",
      "bank_validation",
      "approval_revalidation"
    ],

    "validation.rapidfuzz_high_threshold": 0.90,
    "validation.rapidfuzz_medium_threshold": 0.75,
    "validation.rapidfuzz_suggestion_threshold": 0.60,

    "_comment_tax_id": "Tax ID validation configs",
    "_comment_tax_id_handlers": "Built-in checksum handlers are implemented in Tax - ID validation.py (_BUILTIN_CHECKSUM_HANDLERS). They cover all families with a non-null checksum in the registry: gb_vat_mod97, de_vat_mod11, fr_vat_mod97, it_vat_luhn, es_nif, gstin_crc, abn_mod89, bn_luhn, sg_nric_fin. To override at runtime, supply a callable dict under validation.tax_id_checksum_handlers when building platform_configs.",

    "validation.tax_id_family_registry": {
        "VAT-GB":   {"pattern": "^(GB)?[0-9]{9}([0-9]{3})?$",                          "checksum": "gb_vat_mod97"},
        "VAT-DE":   {"pattern": "^(DE)?[0-9]{9}$",                                      "checksum": "de_vat_mod11"},
        "VAT-FR":   {"pattern": "^(FR)?[A-Z0-9]{2}[0-9]{9}$",                           "checksum": "fr_vat_mod97"},
        "VAT-IT":   {"pattern": "^(IT)?[0-9]{11}$",                                     "checksum": "it_vat_luhn"},
        "VAT-ES":   {"pattern": "^(ES)?[A-Z0-9][0-9]{7}[A-Z0-9]$",                     "checksum": "es_nif"},
        "VAT-NL":   {"pattern": "^(NL)?[0-9]{9}B[0-9]{2}$",                            "checksum": null},
        "GSTIN-IN": {"pattern": "^[0-9]{2}[A-Z]{5}[0-9]{4}[A-Z][1-9A-Z]Z[0-9A-Z]$",  "checksum": "gstin_crc"},
        "PAN-IN":   {"pattern": "^[A-Z]{5}[0-9]{4}[A-Z]$",                             "checksum": null},
        "EIN-US":   {"pattern": "^[0-9]{2}-?[0-9]{7}$",                                "checksum": null},
        "ABN-AU":   {"pattern": "^[0-9]{11}$",                                          "checksum": "abn_mod89"},
        "BN-CA":    {"pattern": "^[0-9]{9}([A-Z]{2}[0-9]{4})?$",                       "checksum": "bn_luhn"},
        "TIN-SG":   {"pattern": "^(?:[STFG][0-9]{7}[A-Z]|[0-9]{9}[A-Z])$",            "checksum": "sg_nric_fin"}
    },

    "_comment_bank": "Bank validation configs",

    "validation.iban_checksum_required": true,
    "validation.iban_accno_substring_exempt_countries": ["LC", "MT"],

    "_comment_date": "Date sanity configs",
    "validation.default_timezone": "Asia/Kolkata",
    "validation.max_invoice_age_days": 365,
    "validation.service_end_post_invoice_grace_days": 0,

    "_comment_payment": "Payment terms configs",
    "validation.payment_terms_tolerance_days": 2,

    "_comment_tax": "Tax configs",
    "validation.tax_rate_match_tolerance": "0.0001",
    "iso_currencies.minor_unit_value": {
        "USD": "0.01",
        "GBP": "0.01",
        "EUR": "0.01",
        "INR": "0.01",
        "JPY": "1",
        "BHD": "0.001"
    },
    "validation.eu_member_states": [
        "AT", "BE", "BG", "HR", "CY", "CZ", "DK", "EE", "FI", "FR",
        "DE", "GR", "HU", "IE", "IT", "LV", "LT", "LU", "MT", "NL",
        "PL", "PT", "RO", "SK", "SI", "ES", "SE"
    ],

    "_comment_completeness": "Completeness configs",
    "validation.solver_tolerance.cap_minor_units": 5,
    "validation.solver_tolerance.base_per_minor_unit": 1,
    "validation.solver_tolerance.per_line_minor_units": 1
}