commit 11b63a55ac14ab49badb525dea87e790b2f0a4c8
parent 6d59f8e0105d50d1ad0fcf141ef3afec5fc528cc
Author: Christian Grothoff <christian@grothoff.org>
Date: Thu, 10 Apr 2025 18:27:47 +0200
match scripts to TOPS spec
Diffstat:
1 file changed, 29 insertions(+), 773 deletions(-)
diff --git a/src/kyclogic/taler-exchange-helper-measure-tops-address-check b/src/kyclogic/taler-exchange-helper-measure-tops-address-check
@@ -1,7 +1,7 @@
#!/bin/bash
#
# This file is part of TALER
-# Copyright (C) 2024 Taler Systems SA
+# Copyright (C) 2024, 2025 Taler Systems SA
#
# TALER is free software; you can redistribute it and/or modify it under the
# terms of the GNU General Public License as published by the Free Software
@@ -34,9 +34,8 @@ do
case "$OPTION" in
a)
# Address data is required.
- echo "ADDRESS_STREET_NAME"
- echo "ADDRESS_ZIPCODE"
- echo "ADDRESS_COUNTRY_CC"
+ echo "ADDRESS_LINES"
+ echo "ADDRESS_COUNTRY"
exit 0
;;
c)
@@ -67,7 +66,7 @@ do
exit 0
;;
v)
- echo "$0 v0.0.0"
+ echo "$0 v0.0.1"
exit 0
;;
V)
@@ -91,781 +90,38 @@ fi
INPUTS=$(jq '{"current_rules":.current_rules,"attributes":.attributes}')
# Get address data
-ADDRESS_NAME=$(echo "$INPUTS" | jq '.attributes.PERSON_FULL_NAME // .attributes.BUSINESS_DISPLAY_NAME // null')
-# FIXME:
-# Set 'name' to either of the two above, whichever one is non-null!
-
-ADDRESS_STREET_NAME=$(echo "$INPUTS" | jq '.attributes.ADDRESS_STREET_NAME // .attributes.ADDRESS_BUILDING_NAME // null')
-ADDRESS_STREET_NUMBER=$(echo "$INPUTS" | jq '.attributes.ADDRESS_STREET_NUMBER // .attributes.ADDRESS_BUILDING_NUMBER // null')
-ADDRESS_LINES=$(echo "$INPUTS" | jq '.attributes.ADDRESS_LINES // null')
-ADDRESS_ZIPCODE=$(echo "$INPUTS" | jq '.attributes.ADDRESS_ZIPCODE // null')
-ADDRESS_TOWN=$(echo "$INPUTS" | jq '.attributes.ADDRESS_TOWN_DISTRICT // .attributes.ADDRESS_TOWN_LOCATION // null')
-ADDRESS_COUNTRY_SUBDIVISION=$(echo "$INPUTS" | jq '.attributes.ADDRESS_COUNTRY_SUBDIVISION // null')
-ADDRESS_COUNTRY_CC=$(echo "$INPUTS" | jq '.attributes.ADDRESS_COUNTRY_CC // null')
-
-case "$ADDRESS_COUNTRY_CC"
+CUSTOMER_TYPE=$(echo "$INPUTS" | jq '.attributes.CUSTOMER_TYPE // null')
+case "$CUSTOMER_TYPE"
in
- AF)
- COUNTRY='Afghanistan'
- ;;
- AX)
- COUNTRY='Åland Islands'
- ;;
- AL)
- COUNTRY='Albania'
- ;;
- DZ)
- COUNTRY='Algeria'
- ;;
- AS)
- COUNTRY='American Samoa'
- ;;
- AD)
- COUNTRY='Andorra'
- ;;
- AO)
- COUNTRY='Angola'
- ;;
- AI)
- COUNTRY='Anguilla'
- ;;
- AQ)
- COUNTRY='Antarctica'
- ;;
- AG)
- COUNTRY='Antigua & Barbuda'
- ;;
- AR)
- COUNTRY='Argentina'
- ;;
- AM)
- COUNTRY='Armenia'
- ;;
- AW)
- COUNTRY='Aruba'
- ;;
- AU)
- COUNTRY='Australia'
- ;;
- AT)
- COUNTRY='Austria'
- ;;
- AZ)
- COUNTRY='Azerbaijan'
- ;;
- BS)
- COUNTRY='Bahamas'
- ;;
- BH)
- COUNTRY='Bahrain'
- ;;
- BD)
- COUNTRY='Bangladesh'
- ;;
- BB)
- COUNTRY='Barbados'
- ;;
- BY)
- COUNTRY='Belarus'
- ;;
- BE)
- COUNTRY='Belgium'
- ;;
- BZ)
- COUNTRY='Belize'
- ;;
- BJ)
- COUNTRY='Benin'
- ;;
- BM)
- COUNTRY='Bermuda'
- ;;
- BT)
- COUNTRY='Bhutan'
- ;;
- BO)
- COUNTRY='Bolivia'
- ;;
- BA)
- COUNTRY='Bosnia & Herzegovina'
- ;;
- BW)
- COUNTRY='Botswana'
- ;;
- BV)
- COUNTRY='Bouvet Island'
- ;;
- BR)
- COUNTRY='Brazil'
- ;;
- IO)
- COUNTRY='British Indian Ocean Territory'
- ;;
- VG)
- COUNTRY='British Virgin Islands'
- ;;
- BN)
- COUNTRY='Brunei'
- ;;
- BG)
- COUNTRY='Bulgaria'
- ;;
- BF)
- COUNTRY='Burkina Faso'
- ;;
- BI)
- COUNTRY='Burundi'
- ;;
- KH)
- COUNTRY='Cambodia'
- ;;
- CM)
- COUNTRY='Cameroon'
- ;;
- CA)
- COUNTRY='Canada'
- ;;
- CV)
- COUNTRY='Cape Verde'
- ;;
- BQ)
- COUNTRY='Caribbean Netherlands'
- ;;
- KY)
- COUNTRY='Cayman Islands'
- ;;
- CF)
- COUNTRY='Central African Republic'
- ;;
- TD)
- COUNTRY='Chad'
- ;;
- CL)
- COUNTRY='Chile'
- ;;
- CN)
- COUNTRY='China'
- ;;
- CX)
- COUNTRY='Christmas Island'
- ;;
- CC)
- COUNTRY='Cocos'
- ;;
- CO)
- COUNTRY='Colombia'
- ;;
- KM)
- COUNTRY='Comoros'
- ;;
- CG)
- COUNTRY='Congo - Brazzaville'
- ;;
- CD)
- COUNTRY='Congo - Kinshasa'
- ;;
- CK)
- COUNTRY='Cook Islands'
- ;;
- CR)
- COUNTRY='Costa Rica'
- ;;
- CI)
- COUNTRY='Côte d’Ivoire'
- ;;
- HR)
- COUNTRY='Croatia'
- ;;
- CU)
- COUNTRY='Cuba'
- ;;
- CW)
- COUNTRY='Curaçao'
- ;;
- CY)
- COUNTRY='Cyprus'
- ;;
- CZ)
- COUNTRY='Czechia'
- ;;
- DK)
- COUNTRY='Denmark'
- ;;
- DJ)
- COUNTRY='Djibouti'
- ;;
- DM)
- COUNTRY='Dominica'
- ;;
- DO)
- COUNTRY='Dominican Republic'
- ;;
- EC)
- COUNTRY='Ecuador'
- ;;
- EG)
- COUNTRY='Egypt'
- ;;
- SV)
- COUNTRY='El Salvador'
- ;;
- GQ)
- COUNTRY='Equatorial Guinea'
- ;;
- ER)
- COUNTRY='Eritrea'
- ;;
- EE)
- COUNTRY='Estonia'
- ;;
- SZ)
- COUNTRY='Eswatini'
- ;;
- ET)
- COUNTRY='Ethiopia'
- ;;
- FK)
- COUNTRY='Falkland Islands'
- ;;
- FO)
- COUNTRY='Faroe Islands'
- ;;
- FJ)
- COUNTRY='Fiji'
- ;;
- FI)
- COUNTRY='Finland'
- ;;
- FR)
- COUNTRY='France'
- ;;
- GF)
- COUNTRY='French Guiana'
- ;;
- PF)
- COUNTRY='French Polynesia'
- ;;
- TF)
- COUNTRY='French Southern Territories'
- ;;
- GA)
- COUNTRY='Gabon'
- ;;
- GM)
- COUNTRY='Gambia'
- ;;
- GE)
- COUNTRY='Georgia'
- ;;
- DE)
- COUNTRY='Germany'
- ;;
- GH)
- COUNTRY='Ghana'
- ;;
- GI)
- COUNTRY='Gibraltar'
- ;;
- GR)
- COUNTRY='Greece'
- ;;
- GL)
- COUNTRY='Greenland'
- ;;
- GD)
- COUNTRY='Grenada'
- ;;
- GP)
- COUNTRY='Guadeloupe'
- ;;
- GU)
- COUNTRY='Guam'
- ;;
- GT)
- COUNTRY='Guatemala'
- ;;
- GG)
- COUNTRY='Guernsey'
- ;;
- GN)
- COUNTRY='Guinea'
- ;;
- GW)
- COUNTRY='Guinea-Bissau'
- ;;
- GY)
- COUNTRY='Guyana'
- ;;
- HT)
- COUNTRY='Haiti'
- ;;
- HM)
- COUNTRY='Heard & McDonald Islands'
- ;;
- HN)
- COUNTRY='Honduras'
- ;;
- HK)
- COUNTRY='Hong Kong SAR China'
- ;;
- HU)
- COUNTRY='Hungary'
- ;;
- IS)
- COUNTRY='Iceland'
- ;;
- IN)
- COUNTRY='India'
- ;;
- ID)
- COUNTRY='Indonesia'
- ;;
- IR)
- COUNTRY='Iran'
- ;;
- IQ)
- COUNTRY='Iraq'
- ;;
- IE)
- COUNTRY='Ireland'
- ;;
- IM)
- COUNTRY='Isle of Man'
- ;;
- IL)
- COUNTRY='Israel'
- ;;
- IT)
- COUNTRY='Italy'
- ;;
- JM)
- COUNTRY='Jamaica'
- ;;
- JP)
- COUNTRY='Japan'
- ;;
- JE)
- COUNTRY='Jersey'
- ;;
- JO)
- COUNTRY='Jordan'
- ;;
- KZ)
- COUNTRY='Kazakhstan'
- ;;
- KE)
- COUNTRY='Kenya'
- ;;
- KI)
- COUNTRY='Kiribati'
- ;;
- KW)
- COUNTRY='Kuwait'
- ;;
- KG)
- COUNTRY='Kyrgyzstan'
- ;;
- LA)
- COUNTRY='Laos'
- ;;
- LV)
- COUNTRY='Latvia'
- ;;
- LB)
- COUNTRY='Lebanon'
- ;;
- LS)
- COUNTRY='Lesotho'
- ;;
- LR)
- COUNTRY='Liberia'
- ;;
- LY)
- COUNTRY='Libya'
- ;;
- LI)
- COUNTRY='Liechtenstein'
- ;;
- LT)
- COUNTRY='Lithuania'
- ;;
- LU)
- COUNTRY='Luxembourg'
- ;;
- MO)
- COUNTRY='Macao SAR China'
- ;;
- MG)
- COUNTRY='Madagascar'
- ;;
- MW)
- COUNTRY='Malawi'
- ;;
- MY)
- COUNTRY='Malaysia'
- ;;
- MV)
- COUNTRY='Maldives'
- ;;
- ML)
- COUNTRY='Mali'
- ;;
- MT)
- COUNTRY='Malta'
- ;;
- MH)
- COUNTRY='Marshall Islands'
- ;;
- MQ)
- COUNTRY='Martinique'
- ;;
- MR)
- COUNTRY='Mauritania'
- ;;
- MU)
- COUNTRY='Mauritius'
- ;;
- YT)
- COUNTRY='Mayotte'
- ;;
- MX)
- COUNTRY='Mexico'
- ;;
- FM)
- COUNTRY='Micronesia'
- ;;
- MD)
- COUNTRY='Moldova'
- ;;
- MC)
- COUNTRY='Monaco'
- ;;
- MN)
- COUNTRY='Mongolia'
- ;;
- ME)
- COUNTRY='Montenegro'
- ;;
- MS)
- COUNTRY='Montserrat'
- ;;
- MA)
- COUNTRY='Morocco'
- ;;
- MZ)
- COUNTRY='Mozambique'
- ;;
- MM)
- COUNTRY='Myanmar'
- ;;
- NA)
- COUNTRY='Namibia'
- ;;
- NR)
- COUNTRY='Nauru'
- ;;
- NP)
- COUNTRY='Nepal'
- ;;
- NL)
- COUNTRY='Netherlands'
- ;;
- NC)
- COUNTRY='New Caledonia'
- ;;
- NZ)
- COUNTRY='New Zealand'
- ;;
- NI)
- COUNTRY='Nicaragua'
- ;;
- NE)
- COUNTRY='Niger'
- ;;
- NG)
- COUNTRY='Nigeria'
- ;;
- NU)
- COUNTRY='Niue'
- ;;
- NF)
- COUNTRY='Norfolk Island'
- ;;
- KP)
- COUNTRY='North Korea'
- ;;
- MK)
- COUNTRY='North Macedonia'
- ;;
- MP)
- COUNTRY='Northern Mariana Islands'
- ;;
- NO)
- COUNTRY='Norway'
- ;;
- OM)
- COUNTRY='Oman'
- ;;
- PK)
- COUNTRY='Pakistan'
- ;;
- PW)
- COUNTRY='Palau'
- ;;
- PS)
- COUNTRY='Palestinian Territories'
- ;;
- PA)
- COUNTRY='Panama'
- ;;
- PG)
- COUNTRY='Papua New Guinea'
- ;;
- PY)
- COUNTRY='Paraguay'
- ;;
- PE)
- COUNTRY='Peru'
- ;;
- PH)
- COUNTRY='Philippines'
- ;;
- PN)
- COUNTRY='Pitcairn Islands'
- ;;
- PL)
- COUNTRY='Poland'
- ;;
- PT)
- COUNTRY='Portugal'
- ;;
- PR)
- COUNTRY='Puerto Rico'
- ;;
- QA)
- COUNTRY='Qatar'
- ;;
- RE)
- COUNTRY='Réunion'
- ;;
- RO)
- COUNTRY='Romania'
- ;;
- RU)
- COUNTRY='Russia'
- ;;
- RW)
- COUNTRY='Rwanda'
- ;;
- WS)
- COUNTRY='Samoa'
- ;;
- SM)
- COUNTRY='San Marino'
- ;;
- ST)
- COUNTRY='São Tomé & Príncipe'
- ;;
- SA)
- COUNTRY='Saudi Arabia'
- ;;
- SN)
- COUNTRY='Senegal'
- ;;
- RS)
- COUNTRY='Serbia'
- ;;
- SC)
- COUNTRY='Seychelles'
- ;;
- SL)
- COUNTRY='Sierra Leone'
- ;;
- SG)
- COUNTRY='Singapore'
- ;;
- SX)
- COUNTRY='Sint Maarten'
- ;;
- SK)
- COUNTRY='Slovakia'
- ;;
- SI)
- COUNTRY='Slovenia'
- ;;
- SB)
- COUNTRY='Solomon Islands'
- ;;
- SO)
- COUNTRY='Somalia'
- ;;
- ZA)
- COUNTRY='South Africa'
- ;;
- GS)
- COUNTRY='South Georgia & South Sandwich Islands'
- ;;
- KR)
- COUNTRY='South Korea'
- ;;
- SS)
- COUNTRY='South Sudan'
- ;;
- ES)
- COUNTRY='Spain'
- ;;
- LK)
- COUNTRY='Sri Lanka'
- ;;
- BL)
- COUNTRY='St. Barthélemy'
- ;;
- SH)
- COUNTRY='St. Helena'
- ;;
- KN)
- COUNTRY='St. Kitts & Nevis'
- ;;
- LC)
- COUNTRY='St. Lucia'
- ;;
- MF)
- COUNTRY='St. Martin'
- ;;
- PM)
- COUNTRY='St. Pierre & Miquelon'
- ;;
- VC)
- COUNTRY='St. Vincent & Grenadines'
- ;;
- SD)
- COUNTRY='Sudan'
- ;;
- SR)
- COUNTRY='Suriname'
- ;;
- SJ)
- COUNTRY='Svalbard & Jan Mayen'
- ;;
- SE)
- COUNTRY='Sweden'
- ;;
- CH)
- COUNTRY='Switzerland'
- ;;
- SY)
- COUNTRY='Syria'
- ;;
- TW)
- COUNTRY='Taiwan'
- ;;
- TJ)
- COUNTRY='Tajikistan'
- ;;
- TZ)
- COUNTRY='Tanzania'
- ;;
- TH)
- COUNTRY='Thailand'
- ;;
- TL)
- COUNTRY='Timor-Leste'
- ;;
- TG)
- COUNTRY='Togo'
- ;;
- TK)
- COUNTRY='Tokelau'
- ;;
- TO)
- COUNTRY='Tonga'
- ;;
- TT)
- COUNTRY='Trinidad & Tobago'
- ;;
- TN)
- COUNTRY='Tunisia'
- ;;
- TR)
- COUNTRY='Turkey'
- ;;
- TM)
- COUNTRY='Turkmenistan'
- ;;
- TC)
- COUNTRY='Turks & Caicos Islands'
- ;;
- TV)
- COUNTRY='Tuvalu'
- ;;
- UM)
- COUNTRY='U.S. Outlying Islands'
- ;;
- VI)
- COUNTRY='U.S. Virgin Islands'
- ;;
- UG)
- COUNTRY='Uganda'
- ;;
- UA)
- COUNTRY='Ukraine'
- ;;
- AE)
- COUNTRY='United Arab Emirates'
- ;;
- GB)
- COUNTRY='United Kingdom'
- ;;
- US)
- COUNTRY='United States'
- ;;
- UY)
- COUNTRY='Uruguay'
- ;;
- UZ)
- COUNTRY='Uzbekistan'
- ;;
- VU)
- COUNTRY='Vanuatu'
- ;;
- VA)
- COUNTRY='Vatican City'
- ;;
- VE)
- COUNTRY='Venezuela'
- ;;
- VN)
- COUNTRY='Vietnam'
- ;;
- WF)
- COUNTRY='Wallis & Futuna'
- ;;
- EH)
- COUNTRY='Western Sahara'
- ;;
- YE)
- COUNTRY='Yemen'
- ;;
- ZM)
- COUNTRY='Zambia'
- ;;
- ZW)
- COUNTRY='Zimbabwe'
- ;;
+ "NATURAL_PERSON")
+ CONTACT_NAME=$(echo "$INPUTS" | jq '.attributes.FULL_NAME')
+ ;;
+ "LEGAL_ENTITY")
+ BUSINESS_NAME=$(echo "$INPUTS" | jq '.attributes.COMPANY_NAME')
+ CONTACT_PERSON=$(echo "$INPUTS" | jq '.attributes.CONTACT_PERSON_NAME // null')
+ if [ "null" != "$CONTACT_PERSON" ]
+ then
+ CONTACT_NAME=$(echo -en "${BUSINESS_NAME}\nAttn. ${CONTACT_PERSON_NAME}")
+ else
+ CONTACT_NAME="$BUSINESS_NAME"
+ fi
+ ;;
+ "OTHER")
*)
- echo "ERROR: Country code '${ADDRESS_COUNTRY_CC}' not recognized" 1>&2
- COUNTRY="${ADDRESS_COUNTRY_CC}"
+ # Strange, we don't know. Let's try everything...
+ CONTACT_NAME=$(echo "$INPUTS" | jq '.attributes.CONTACT_NAME // attributes.FULL_NAME // .attributes.COMPANY_NAME')
;;
esac
+ADDRESS_LINES=$(echo "$INPUTS" | jq '.attributes.DOMICILE_ADDRESS')
+ADDRESS_COUNTRY=$(echo "$INPUTS" | jq '.attributes.ADDRESS_COUNTRY')
+
# Convert address data to Challenger format as best we can.
ADDRESS=$(jq \
- --argjson full_name "$ADDRESS_NAME $ADDRESS_LINES" \
- --argjson street "$ADDRESS_STREET_NAME $ADDRESS_STREET_NUMBER" \
- --argjson city "$ADDRESS_TOWN" \
- --argjson postcode "$ADDRESS_ZIPCODE" \
- --argjson country "$COUNTRY" \
- '{"full_name":$full_name,"street":$street,"city":$city,"postcode":$postcode,"country":$country}')
+ --argjson contact_name "$CONTACT_NAME" \
+ --argjson address_lines "$ADDRESS_LINES" \
+ --argjson address_country "$ADDRESS_COUNTRY" \
+ '{"contact_name":$contact_name,"address_lines":$address_lines,"address_country":$address_country}')
# Get current rules.
CURRENT_RULES=$(echo "$INPUTS" | jq '.current_rules // null')