Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[STG] Delivery mechanism digital wallet #3788

Merged
merged 51 commits into from
May 16, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
51 commits
Select commit Hold shift + click to select a range
f01de06
add new fields
pavlo-mk Apr 11, 2024
4633993
add usdc
pavlo-mk Apr 12, 2024
5a38168
add migrations
pavlo-mk Apr 12, 2024
822ab76
Merge branch 'develop' into delivery_mech_digital_wallet
pavlo-mk Apr 12, 2024
eba37a4
Merge branch 'develop' into delivery_mech_digital_wallet
pavlo-mk Apr 12, 2024
590a1b0
add validation
pavlo-mk Apr 12, 2024
878b9fd
Merge branch 'develop' into delivery_mech_digital_wallet
pavlo-mk Apr 15, 2024
271d3e2
update tests
pavlo-mk Apr 15, 2024
339b314
merge develop & resolve conflicts
pavlo-mk Apr 22, 2024
0c05224
Merge branch 'develop' into delivery_mech_digital_wallet
pavlo-mk Apr 22, 2024
9f5a6ca
Merge branch 'develop' into delivery_mech_digital_wallet
pavlo-mk Apr 22, 2024
c96d42b
resolve conflicts one more time
pavlo-mk Apr 23, 2024
e0a4657
add test_get_exchange_rate_for_usdc_crrency
pavlo-mk Apr 23, 2024
6cb533c
add more delivery mechanism in tests
pavlo-mk Apr 23, 2024
507e8e9
resolve conflicts
pavlo-mk Apr 24, 2024
27d36ac
resolve conflicts
pavlo-mk Apr 26, 2024
e226ff7
Merge branch 'develop' into delivery_mech_digital_wallet
pavlo-mk Apr 26, 2024
89a37db
add migrations & black
pavlo-mk Apr 26, 2024
2937c32
fix rdi merge new fields
pavlo-mk Apr 26, 2024
c95374c
add more tests
pavlo-mk Apr 29, 2024
c1a7b3f
Merge branch 'develop' into delivery_mech_digital_wallet
pavlo-mk Apr 29, 2024
b5da52b
add test_edit_payment_verification_plan_mutation
pavlo-mk Apr 29, 2024
3f690d2
Merge branch 'develop' into delivery_mech_digital_wallet
pavlo-mk May 6, 2024
6d85a55
merge develop
pavlo-mk May 6, 2024
8f79562
black
pavlo-mk May 6, 2024
94665f8
black
pavlo-mk May 6, 2024
b87438d
Merge branch 'develop' into delivery_mech_digital_wallet
pavlo-mk May 6, 2024
1f8d788
add snapshot mutation
pavlo-mk May 6, 2024
11fe1d0
update test
pavlo-mk May 6, 2024
d086792
add one more test
pavlo-mk May 7, 2024
fac5265
remove temp files
pavlo-mk May 7, 2024
44e6677
add more tests
pavlo-mk May 7, 2024
054fb37
update test
pavlo-mk May 7, 2024
f32bee5
upd gitignore
pavlo-mk May 7, 2024
18939bc
Merge branch 'develop' into delivery_mech_digital_wallet
pavlo-mk May 7, 2024
89ff009
resolve conflicts
pavlo-mk May 8, 2024
b48de4b
upd FE schema
pavlo-mk May 8, 2024
d80f72c
upd tests
pavlo-mk May 8, 2024
35fce31
add digital wallet info to individual
May 10, 2024
365512b
upd transaction_status_blockchain
pavlo-mk May 10, 2024
c6b9224
merge develop gitignore
pavlo-mk May 10, 2024
2ce961e
fix currency display in utils
May 11, 2024
2b143c1
add more test & cleanup
pavlo-mk May 11, 2024
4cf0a08
Merge remote-tracking branch 'origin/delivery_mech_digital_wallet' in…
pavlo-mk May 11, 2024
e85034a
Merge remote-tracking branch 'origin' into delivery_mech_digital_wallet
May 11, 2024
95de33a
upd test
pavlo-mk May 11, 2024
8cf0f99
Merge branch 'staging' into delivery_mech_digital_wallet
pavlo-mk May 14, 2024
cbec2ec
Merge branch 'staging' into delivery_mech_digital_wallet
pavlo-mk May 14, 2024
72b496a
review
pavlo-mk May 16, 2024
6ba0fe6
update test snapshot
pavlo-mk May 16, 2024
19db8ee
Merge branch 'staging' into delivery_mech_digital_wallet
pavlo-mk May 16, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Generated by Django 3.2.25 on 2024-05-08 11:01

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
('cash_assist_datahub', '0019_migration'),
]

operations = [
migrations.AlterField(
model_name='paymentrecord',
name='delivery_type',
field=models.CharField(choices=[('Cardless cash withdrawal', 'Cardless cash withdrawal'), ('Cash', 'Cash'), ('Cash by FSP', 'Cash by FSP'), ('Cheque', 'Cheque'), ('Deposit to Card', 'Deposit to Card'), ('Mobile Money', 'Mobile Money'), ('Pre-paid card', 'Pre-paid card'), ('Referral', 'Referral'), ('Transfer', 'Transfer'), ('Transfer to Account', 'Transfer to Account'), ('Voucher', 'Voucher'), ('Cash over the counter', 'Cash over the counter'), ('Transfer to Digital Wallet', 'Transfer to Digital Wallet'), ('ATM Card', 'ATM Card')], default='Cash', max_length=32, null=True),
),
]
2 changes: 1 addition & 1 deletion backend/hct_mis_api/apps/cash_assist_datahub/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -138,7 +138,7 @@ class PaymentRecord(SessionModel):
delivery_type = models.CharField(
choices=InternalPaymentRecord.DELIVERY_TYPE_CHOICE,
default=InternalPaymentRecord.DELIVERY_TYPE_CASH,
max_length=24,
max_length=32,
null=True,
)
currency = models.CharField(max_length=4, null=True)
Expand Down
6 changes: 6 additions & 0 deletions backend/hct_mis_api/apps/core/currencies.py
Original file line number Diff line number Diff line change
Expand Up @@ -144,6 +144,7 @@
UAH = "UAH"
UGX = "UGX"
USD = "USD"
USDC = "USDC"
UYU = "UYU"
UYW = "UYW"
UZS = "UZS"
Expand Down Expand Up @@ -325,4 +326,9 @@
(ZAR, _("South African rand")),
(ZMW, _("Zambian kwacha")),
(ZWL, _("Zimbabwean dollar")),
(USDC, _("USD Coin")),
)

# TODO: add in future in case to have more 'digital currency' method for checking currency have a type/flag digital
# currency like is_digital_currency(currency: str) -> bool
# For now only USDC is digital currency
Original file line number Diff line number Diff line change
Expand Up @@ -1814,6 +1814,45 @@
"xlsx_field": "index_id",
"scope": [Scope.XLSX_PEOPLE],
},
{
"id": "15b7b623-0dee-4212-a32a-a6d6f6877b4e",
"type": TYPE_STRING,
"name": "wallet_name",
"lookup": "wallet_name",
"label": {"English(EN)": "Wallet Name"},
"hint": "",
"required": False,
"choices": [],
"associated_with": _INDIVIDUAL,
"xlsx_field": "wallet_name_i_c",
"scope": [Scope.XLSX, Scope.INDIVIDUAL_UPDATE],
},
{
"id": "0010bc3e-0a4a-452b-a776-2cc4b760a0fd",
"type": TYPE_STRING,
"name": "blockchain_name",
"lookup": "blockchain_name",
"label": {"English(EN)": "Blockchain Name"},
"hint": "",
"required": False,
"choices": [],
"associated_with": _INDIVIDUAL,
"xlsx_field": "blockchain_name_i_c",
"scope": [Scope.XLSX, Scope.INDIVIDUAL_UPDATE],
},
{
"id": "15d35efa-8f36-4a40-b9ed-a7812a665e01",
"type": TYPE_STRING,
"name": "wallet_address",
"lookup": "wallet_address",
"label": {"English(EN)": "Wallet Address"},
"hint": "",
"required": False,
"choices": [],
"associated_with": _INDIVIDUAL,
"xlsx_field": "wallet_address_i_c",
"scope": [Scope.XLSX, Scope.INDIVIDUAL_UPDATE],
},
{
"id": "8ef6fd85-032f-42cf-8f1f-3398f88316af",
"type": TYPE_STRING,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53372,6 +53372,16 @@
],
'value': 'TMT'
},
{
'labelEn': 'USD Coin',
'labels': [
{
'label': 'USD Coin',
'language': 'English(EN)'
}
],
'value': 'USDC'
},
{
'labelEn': 'Ugandan shilling',
'labels': [
Expand Down
Binary file not shown.
Binary file not shown.
33 changes: 33 additions & 0 deletions backend/hct_mis_api/apps/household/migrations/0175_migration.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# Generated by Django 3.2.25 on 2024-04-26 15:13

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
('household', '0174_migration'),
]

operations = [
migrations.AddField(
model_name='individual',
name='blockchain_name',
field=models.CharField(blank=True, default='', max_length=64),
),
migrations.AddField(
model_name='individual',
name='wallet_address',
field=models.CharField(blank=True, default='', max_length=128),
),
migrations.AddField(
model_name='individual',
name='wallet_name',
field=models.CharField(blank=True, default='', max_length=64),
),
migrations.AlterField(
model_name='household',
name='currency',
field=models.CharField(choices=[('', 'None'), ('AED', 'United Arab Emirates dirham'), ('AFN', 'Afghan afghani'), ('ALL', 'Albanian lek'), ('AMD', 'Armenian dram'), ('ANG', 'Netherlands Antillean guilder'), ('AOA', 'Angolan kwanza'), ('ARS', 'Argentine peso'), ('AUD', 'Australian dollar'), ('AWG', 'Aruban florin'), ('AZN', 'Azerbaijani manat'), ('BAM', 'Bosnia and Herzegovina convertible mark'), ('BBD', 'Barbados dollar'), ('BDT', 'Bangladeshi taka'), ('BGN', 'Bulgarian lev'), ('BHD', 'Bahraini dinar'), ('BIF', 'Burundian franc'), ('BMD', 'Bermudian dollar'), ('BND', 'Brunei dollar'), ('BOB', 'Boliviano'), ('BOV', 'Bolivian Mvdol (funds code)'), ('BRL', 'Brazilian real'), ('BSD', 'Bahamian dollar'), ('BTN', 'Bhutanese ngultrum'), ('BWP', 'Botswana pula'), ('BYN', 'Belarusian ruble'), ('BZD', 'Belize dollar'), ('CAD', 'Canadian dollar'), ('CDF', 'Congolese franc'), ('CHF', 'Swiss franc'), ('CLP', 'Chilean peso'), ('CNY', 'Chinese yuan'), ('COP', 'Colombian peso'), ('CRC', 'Costa Rican colon'), ('CUC', 'Cuban convertible peso'), ('CUP', 'Cuban peso'), ('CVE', 'Cape Verdean escudo'), ('CZK', 'Czech koruna'), ('DJF', 'Djiboutian franc'), ('DKK', 'Danish krone'), ('DOP', 'Dominican peso'), ('DZD', 'Algerian dinar'), ('EGP', 'Egyptian pound'), ('ERN', 'Eritrean nakfa'), ('ETB', 'Ethiopian birr'), ('EUR', 'Euro'), ('FJD', 'Fiji dollar'), ('FKP', 'Falkland Islands pound'), ('GBP', 'Pound sterling'), ('GEL', 'Georgian lari'), ('GHS', 'Ghanaian cedi'), ('GIP', 'Gibraltar pound'), ('GMD', 'Gambian dalasi'), ('GNF', 'Guinean franc'), ('GTQ', 'Guatemalan quetzal'), ('GYD', 'Guyanese dollar'), ('HKD', 'Hong Kong dollar'), ('HNL', 'Honduran lempira'), ('HRK', 'Croatian kuna'), ('HTG', 'Haitian gourde'), ('HUF', 'Hungarian forint'), ('IDR', 'Indonesian rupiah'), ('ILS', 'Israeli new shekel'), ('INR', 'Indian rupee'), ('IQD', 'Iraqi dinar'), ('IRR', 'Iranian rial'), ('ISK', 'Icelandic króna'), ('JMD', 'Jamaican dollar'), ('JOD', 'Jordanian dinar'), ('JPY', 'Japanese yen'), ('KES', 'Kenyan shilling'), ('KGS', 'Kyrgyzstani som'), ('KHR', 'Cambodian riel'), ('KMF', 'Comoro franc'), ('KPW', 'North Korean won'), ('KRW', 'South Korean won'), ('KWD', 'Kuwaiti dinar'), ('KYD', 'Cayman Islands dollar'), ('KZT', 'Kazakhstani tenge'), ('LAK', 'Lao kip'), ('LBP', 'Lebanese pound'), ('LKR', 'Sri Lankan rupee'), ('LRD', 'Liberian dollar'), ('LSL', 'Lesotho loti'), ('LYD', 'Libyan dinar'), ('MAD', 'Moroccan dirham'), ('MDL', 'Moldovan leu'), ('MGA', 'Malagasy ariary'), ('MKD', 'Macedonian denar'), ('MMK', 'Myanmar kyat'), ('MNT', 'Mongolian tögrög'), ('MOP', 'Macanese pataca'), ('MRU', 'Mauritanian ouguiya'), ('MUR', 'Mauritian rupee'), ('MVR', 'Maldivian rufiyaa'), ('MWK', 'Malawian kwacha'), ('MXN', 'Mexican peso'), ('MYR', 'Malaysian ringgit'), ('MZN', 'Mozambican metical'), ('NAD', 'Namibian dollar'), ('NGN', 'Nigerian naira'), ('NIO', 'Nicaraguan córdoba'), ('NOK', 'Norwegian krone'), ('NPR', 'Nepalese rupee'), ('NZD', 'New Zealand dollar'), ('OMR', 'Omani rial'), ('PAB', 'Panamanian balboa'), ('PEN', 'Peruvian sol'), ('PGK', 'Papua New Guinean kina'), ('PHP', 'Philippine peso'), ('PKR', 'Pakistani rupee'), ('PLN', 'Polish złoty'), ('PYG', 'Paraguayan guaraní'), ('QAR', 'Qatari riyal'), ('RON', 'Romanian leu'), ('RSD', 'Serbian dinar'), ('RUB', 'Russian ruble'), ('RWF', 'Rwandan franc'), ('SAR', 'Saudi riyal'), ('SBD', 'Solomon Islands dollar'), ('SCR', 'Seychelles rupee'), ('SDG', 'Sudanese pound'), ('SEK', 'Swedish krona/kronor'), ('SGD', 'Singapore dollar'), ('SHP', 'Saint Helena pound'), ('SLL', 'Sierra Leonean leone'), ('SOS', 'Somali shilling'), ('SRD', 'Surinamese dollar'), ('SSP', 'South Sudanese pound'), ('STN', 'São Tomé and Príncipe dobra'), ('SVC', 'Salvadoran colón'), ('SYP', 'Syrian pound'), ('SZL', 'Swazi lilangeni'), ('THB', 'Thai baht'), ('TJS', 'Tajikistani somoni'), ('TMT', 'Turkmenistan manat'), ('TND', 'Tunisian dinar'), ('TOP', 'Tongan paʻanga'), ('TRY', 'Turkish lira'), ('TTD', 'Trinidad and Tobago dollar'), ('TWD', 'New Taiwan dollar'), ('TZS', 'Tanzanian shilling'), ('UAH', 'Ukrainian hryvnia'), ('UGX', 'Ugandan shilling'), ('USD', 'United States dollar'), ('UYU', 'Uruguayan peso'), ('UYW', 'Unidad previsional[14]'), ('UZS', 'Uzbekistan som'), ('VES', 'Venezuelan bolívar soberano'), ('VND', 'Vietnamese đồng'), ('VUV', 'Vanuatu vatu'), ('WST', 'Samoan tala'), ('XAF', 'CFA franc BEAC'), ('XAG', 'Silver (one troy ounce)'), ('XAU', 'Gold (one troy ounce)'), ('XCD', 'East Caribbean dollar'), ('XOF', 'CFA franc BCEAO'), ('XPF', 'CFP franc (franc Pacifique)'), ('YER', 'Yemeni rial'), ('ZAR', 'South African rand'), ('ZMW', 'Zambian kwacha'), ('ZWL', 'Zimbabwean dollar'), ('USDC', 'USD Coin')], default='', max_length=250),
),
]
3 changes: 3 additions & 0 deletions backend/hct_mis_api/apps/household/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -1012,6 +1012,9 @@ class Individual(
preferred_language = models.CharField(max_length=6, choices=Languages.get_tuple(), null=True, blank=True)
relationship_confirmed = models.BooleanField(default=False)
age_at_registration = models.PositiveSmallIntegerField(null=True, blank=True)
wallet_name = models.CharField(max_length=64, blank=True, default="")
blockchain_name = models.CharField(max_length=64, blank=True, default="")
wallet_address = models.CharField(max_length=128, blank=True, default="")

program = models.ForeignKey(
"program.Program", null=True, blank=True, db_index=True, related_name="individuals", on_delete=models.SET_NULL
Expand Down
19 changes: 19 additions & 0 deletions backend/hct_mis_api/apps/payment/migrations/0127_migration.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# Generated by Django 3.2.25 on 2024-04-26 15:13

from django.db import migrations, models
import hct_mis_api.apps.account.models


class Migration(migrations.Migration):

dependencies = [
('payment', '0126_migration'),
]

operations = [
migrations.AlterField(
model_name='financialserviceproviderxlsxtemplate',
name='core_fields',
field=hct_mis_api.apps.account.models.HorizontalChoiceArrayField(base_field=models.CharField(blank=True, choices=[('age', 'Age (calculated)'), ('residence_status', 'Residence status'), ('consent', 'Do you consent?'), ('consent_sign', 'Do you consent?'), ('country_origin', 'Country of Origin'), ('country', 'Country of registration'), ('address', 'Address'), ('zip_code', 'Zip code'), ('admin1', 'Household resides in which admin1?'), ('admin2', 'Household resides in which admin2?'), ('admin3', 'Household resides in which admin3?'), ('admin4', 'Household resides in which admin4?'), ('geopoint', 'Geolocation'), ('unhcr_id', 'UNHCR Case ID'), ('returnee', 'Is this a returnee Household?'), ('size', 'What is the Household size?'), ('fchild_hoh', 'Child is female and Head of Household'), ('child_hoh', 'Child is Head of Household'), ('relationship', 'Relationship to Head of Household'), ('full_name', 'Full name'), ('given_name', 'Given name'), ('middle_name', 'Middle name(s)'), ('family_name', 'Family name'), ('sex', 'Gender'), ('birth_date', 'Birth date'), ('estimated_birth_date', 'Estimated birth date?'), ('photo', "Individual's photo"), ('marital_status', 'Marital status'), ('phone_no', 'Phone number'), ('who_answers_phone', 'Who answers this phone?'), ('phone_no_alternative', 'Alternative phone number'), ('who_answers_alt_phone', 'Who answers this (alt) phone?'), ('registration_method', 'Method of collection (e.g. HH survey, Community, etc.)'), ('collect_individual_data', 'Will you be collecting all member Individual data?'), ('currency', 'Which currency will be used for financial questions?'), ('birth_certificate_no', 'Birth certificate number'), ('birth_certificate_issuer', 'Issuing country of birth certificate'), ('birth_certificate_photo', 'Birth certificate photo'), ('tax_id_no', 'Tax identification number'), ('tax_id_issuer', 'Issuing country of tax identification'), ('tax_id_photo', 'Tax identification photo'), ('drivers_license_no', "Driver's license number"), ('drivers_license_issuer', "Issuing country of driver's license"), ('drivers_license_photo', "Driver's license photo"), ('electoral_card_no', 'Electoral card number'), ('electoral_card_issuer', 'Issuing country of electoral card'), ('electoral_card_photo', 'Electoral card photo'), ('unhcr_id_no', 'UNHCR ID number'), ('unhcr_id_issuer', 'Issuing entity of UNHCR ID'), ('unhcr_id_photo', 'UNHCR ID photo'), ('national_passport', 'National passport number'), ('national_passport_issuer', 'Issuing country of national passport'), ('national_passport_photo', 'National passport photo'), ('national_id_no', 'National ID number'), ('national_id_issuer', 'Issuing country of national ID'), ('national_id_photo', 'National ID photo'), ('scope_id_no', 'WFP Scope ID number'), ('scope_id_issuer', 'Issuing entity of SCOPE ID'), ('scope_id_photo', 'WFP Scope ID photo'), ('other_id_type', 'If other type of ID, specify the type'), ('other_id_no', 'Other ID number'), ('other_id_issuer', 'Issuing country of other ID'), ('other_id_photo', 'ID photo'), ('female_age_group_0_5_count', 'Females Age 0 - 5'), ('female_age_group_6_11_count', 'Females Age 6 - 11'), ('female_age_group_12_17_count', 'Females Age 12 - 17'), ('female_age_group_18_59_count', 'Females Age 18 - 59'), ('female_age_group_60_count', 'Females Age 60 +'), ('pregnant_count', 'Pregnant count'), ('male_age_group_0_5_count', 'Males Age 0 - 5'), ('male_age_group_6_11_count', 'Males Age 6 - 11'), ('male_age_group_12_17_count', 'Males Age 12 - 17'), ('male_age_group_18_59_count', 'Males Age 18 - 59'), ('male_age_group_60_count', 'Males Age 60 +'), ('female_age_group_0_5_disabled_count', 'Females age 0 - 5 with disability'), ('female_age_group_6_11_disabled_count', 'Females age 6 - 11 with disability'), ('female_age_group_12_17_disabled_count', 'Females age 12 - 17 with disability'), ('female_age_group_18_59_disabled_count', 'Females Age 18 - 59 with disability'), ('female_age_group_60_disabled_count', 'Female members with Disability age 60 +'), ('male_age_group_0_5_disabled_count', 'Males age 0 - 5 with disability'), ('male_age_group_6_11_disabled_count', 'Males age 6 - 11 with disability'), ('male_age_group_12_17_disabled_count', 'Males age 12 - 17 with disability'), ('male_age_group_18_59_disabled_count', 'Males Age 18 - 59 with disability'), ('male_age_group_60_disabled_count', 'Male members with Disability age 60 +'), ('pregnant', 'Is the Individual pregnant?'), ('work_status', 'Does the Individual have paid employment in the current month?'), ('observed_disability', 'Does the Individual have disability?'), ('seeing_disability', 'If the Individual has difficulty seeing, what is the severity?'), ('hearing_disability', 'If the Individual has difficulty hearing, what is the severity?'), ('physical_disability', 'If the Individual has difficulty walking or climbing steps, what is the severity?'), ('memory_disability', 'If the Individual has difficulty remembering or concentrating, what is the severity?'), ('selfcare_disability', 'Do you have difficulty (with self-care such as) washing all over or dressing'), ('comms_disability', 'If the Individual has difficulty communicating, what is the severity?'), ('fchild_hoh', 'Female child headed Household'), ('child_hoh', 'Child headed Household'), ('village', 'Village'), ('deviceid', 'Device ID'), ('name_enumerator', 'Name of the enumerator'), ('org_enumerator', 'Organization of the enumerator'), ('consent_sharing', 'Which organizations may we share your information with?'), ('org_name_enumerator', 'Name of partner organization'), ('disability', 'Individual is disabled?'), ('first_registration_date', 'First Individual registration date'), ('first_registration_date', 'First Household registration date'), ('number_of_children', 'What is the number of children in the Household?'), ('has_phone_number', 'Has phone number?'), ('has_tax_id_number', 'Has tax ID number?'), ('has_the_bank_account_number', 'Has the bank account number?'), ('role', 'Role'), ('registration_data_import', 'Registration Data Import'), ('registration_data_import', 'Registration Data Import'), ('unicef_id', 'Household unicef id'), ('unicef_id', 'Individual unicef id'), ('admin_area_title', 'Household resides in which admin area?'), ('start', 'Data collection start date'), ('end', 'Data collection end date'), ('primary_collector_id', 'List of primary collectors ids, separated by a semicolon'), ('alternate_collector_id', 'List of alternate collectors ids, separated by a semicolon'), ('household_id', 'Household ID'), ('household_id', 'Household ID'), ('email', 'Individual email'), ('preferred_language', 'Preferred language'), ('age_at_registration', 'Age at registration'), ('account_holder_name', 'Account holder name'), ('bank_branch_name', 'Bank branch name'), ('index_id', 'Index ID'), ('wallet_name', 'Wallet Name'), ('blockchain_name', 'Blockchain Name'), ('wallet_address', 'Wallet Address'), ('registration_id', 'Program registration id'), ('bank_name', 'Bank name'), ('bank_account_number', 'Bank account number'), ('debit_card_issuer', 'Debit Card Issuer'), ('debit_card_number', 'Debit card number'), ('payment_delivery_phone_no', 'Payment delivery phone number')], max_length=255), blank=True, default=list, size=None),
),
]
Loading
Loading