export interface TemplateVariable {
  nameEn: string;
  nameNp: string;
  templateName: string;
  key: string;
  foreignKey: string | false;
  type: 'string' | 'number' | 'datetime' | 'image' | 'block';
  lang: 'np' | 'en';
  config?: string;
  required: boolean;
}

export interface TemplateVariableGroup {
  labelEn: string;
  labelNp: string;
  variables: Record<string, TemplateVariable>;
}

export const TEMPLATE_VARIABLES: Record<string, TemplateVariableGroup> = {

  date_fields: {
    labelEn: 'Date & Time',
    labelNp: 'मिति र समय',
    variables: {
      TodayYear:     { nameEn: 'Today Year (BS)',       nameNp: 'आजको बर्ष',       templateName: 'TodayYear',     key: '', foreignKey: false, type: 'string', lang: 'np', required: false },
      TodayMonth:    { nameEn: 'Today Month No (BS)',   nameNp: 'आजको महिना नं',   templateName: 'TodayMonth',    key: '', foreignKey: false, type: 'string', lang: 'np', required: false },
      TodayMonthName:{ nameEn: 'Today Month Name (BS)', nameNp: 'आजको महिना',      templateName: 'TodayMonthName',key: '', foreignKey: false, type: 'string', lang: 'np', required: false },
      TodayDate:     { nameEn: 'Today Date (BS)',       nameNp: 'आजको गते',        templateName: 'TodayDate',     key: '', foreignKey: false, type: 'string', lang: 'np', required: false },
      TodayFullDate: { nameEn: 'Today Full Date (BS)',  nameNp: 'आजको पूर्ण मिति', templateName: 'TodayFullDate', key: '', foreignKey: false, type: 'string', lang: 'np', required: false },
      TodayDayName:  { nameEn: 'Today Day Name',        nameNp: 'आजको वार',        templateName: 'TodayDayName',  key: '', foreignKey: false, type: 'string', lang: 'np', required: false },
      TodayDayNum:   { nameEn: 'Today Day Number',      nameNp: 'आजको वार नं',     templateName: 'TodayDayNum',   key: '', foreignKey: false, type: 'string', lang: 'np', required: false },
      CurrentTime:   { nameEn: 'Current Time',          nameNp: 'वर्तमान समय',     templateName: 'CurrentTime',   key: '', foreignKey: false, type: 'string', lang: 'np', required: false },
    },
  },

  office_fields: {
    labelEn: 'Office / Cooperative Info',
    labelNp: 'कार्यालय / सहकारी जानकारी',
    variables: {
      SahakariNameEn:          { nameEn: 'Cooperative Name (English)',   nameNp: 'सहकारीको नाम अंग्रेजी',          templateName: 'SahakariNameEn',          key: 'nameEn',         foreignKey: false,      type: 'string', lang: 'en', required: false },
      SahakariNameNP:          { nameEn: 'Cooperative Name (Nepali)',    nameNp: 'सहकारीको नाम नेपाली',            templateName: 'SahakariNameNP',          key: 'nameNp',         foreignKey: false,      type: 'string', lang: 'np', required: false },
      RegisterNikaye:          { nameEn: 'Register Nikaye',             nameNp: 'दर्ता निकाए',                    templateName: 'RegisterNikaye',          key: 'registerNikaye', foreignKey: false,      type: 'string', lang: 'np', required: false },
      HeadOffice:              { nameEn: 'Head Office Name',            nameNp: 'प्रधान कार्यालय',                templateName: 'HeadOffice',              key: 'headOffice',     foreignKey: false,      type: 'string', lang: 'np', required: false },
      SahakariDartaNo:         { nameEn: 'Cooperative Registration No', nameNp: 'सहकारीको दर्ता नं',              templateName: 'SahakariDartaNo',         key: 'dartaNo',        foreignKey: false,      type: 'string', lang: 'np', required: false },
      SahakariDartaDate:       { nameEn: 'Cooperative Reg. Date (AD)',  nameNp: 'सहकारीको दर्ता मिति',            templateName: 'SahakariDartaDate',       key: 'dartaDate',      foreignKey: false,      type: 'string', lang: 'np', required: false },
      SahakariDartaDateBS:     { nameEn: 'Cooperative Reg. Date (BS)', nameNp: 'सहकारीको दर्ता मिति (वि.सं.)',   templateName: 'SahakariDartaDateBS',     key: 'dartaDateBs',    foreignKey: false,      type: 'string', lang: 'np', required: false },
      SAddressProvince:        { nameEn: 'Cooperative Province',       nameNp: 'सहकारी रहेको प्रदेश',            templateName: 'SAddressProvince',        key: 'province',       foreignKey: 'province', type: 'number', lang: 'np', required: false },
      SAddressDistrict:        { nameEn: 'Cooperative District',       nameNp: 'सहकारी रहेको जिल्ला',            templateName: 'SAddressDistrict',        key: 'district',       foreignKey: 'district', type: 'number', lang: 'np', required: false },
      SAddressLocalGovt:       { nameEn: 'Cooperative Local Govt',     nameNp: 'सहकारी रहेको स्थानीय तह',        templateName: 'SAddressLocalGovt',       key: 'localgovt',      foreignKey: 'localgovt',type: 'number', lang: 'np', required: false },
      SAddressWard:            { nameEn: 'Cooperative Ward',           nameNp: 'सहकारी रहेको वडा',               templateName: 'SAddressWard',            key: 'ward',           foreignKey: false,      type: 'string', lang: 'np', required: false },
      SAddressTole:            { nameEn: 'Cooperative Tole',           nameNp: 'सहकारी रहेको टोल',               templateName: 'SAddressTole',            key: 'tole',           foreignKey: false,      type: 'string', lang: 'np', required: false },
      FormerAddress:           { nameEn: 'Former Address',             nameNp: 'साविक ठेगाना',                   templateName: 'FormerAddress',           key: 'formerAddress',  foreignKey: false,      type: 'string', lang: 'np', required: false },
      SahakariBranchName:      { nameEn: 'Branch Name',               nameNp: 'सेवाकेन्द्र नाम',                templateName: 'SahakariBranchName',      key: 'branchName',     foreignKey: false,      type: 'string', lang: 'np', required: false },
      SahakariPresidentName:   { nameEn: 'President Name',            nameNp: 'सहकारीको अध्यक्षको नाम',         templateName: 'SahakariPresidentName',   key: 'presidentName',  foreignKey: false,      type: 'string', lang: 'np', required: false },
      SahakariVicePresidentName:{ nameEn: 'Vice President Name',      nameNp: 'सहकारीको उपाध्यक्षको नाम',       templateName: 'SahakariVicePresidentName',key:'vicePresidentName',foreignKey: false,      type: 'string', lang: 'np', required: false },
      SahakariSecretaryName:   { nameEn: 'Secretary Name',            nameNp: 'सहकारीको सचिवको नाम',            templateName: 'SahakariSecretaryName',   key: 'secretaryName',  foreignKey: false,      type: 'string', lang: 'np', required: false },
      SahakariTreasurerName:   { nameEn: 'Treasurer Name',            nameNp: 'सहकारीको कोषाध्यक्षको नाम',      templateName: 'SahakariTreasurerName',   key: 'treasurerName',  foreignKey: false,      type: 'string', lang: 'np', required: false },
      SahakariManagerCEO:      { nameEn: 'Manager / CEO Name',        nameNp: 'सहकारीको व्यवस्थापक / CEO',      templateName: 'SahakariManagerCEO',      key: 'managerCeo',     foreignKey: false,      type: 'string', lang: 'np', required: false },
      LoanCoordinatorName:     { nameEn: 'Loan Coordinator Name',     nameNp: 'ऋण संयोजकको नाम',               templateName: 'LoanCoordinatorName',     key: 'loanCoordinator',foreignKey: false,      type: 'string', lang: 'np', required: false },
      LoanMember1Name:         { nameEn: 'Loan Committee Member 1',   nameNp: 'ऋण सदस्यको नाम (१)',            templateName: 'LoanMember1Name',         key: 'loanMember1',    foreignKey: false,      type: 'string', lang: 'np', required: false },
      LoanMember2Name:         { nameEn: 'Loan Committee Member 2',   nameNp: 'ऋण सदस्यको नाम (२)',            templateName: 'LoanMember2Name',         key: 'loanMember2',    foreignKey: false,      type: 'string', lang: 'np', required: false },
      SahakariPhone:           { nameEn: 'Cooperative Phone',         nameNp: 'सहकारीको फोन',                  templateName: 'SahakariPhone',           key: 'phone',          foreignKey: false,      type: 'string', lang: 'np', required: false },
      SahakariEmail:           { nameEn: 'Cooperative Email',         nameNp: 'सहकारीको ईमेल',                 templateName: 'SahakariEmail',           key: 'email',          foreignKey: false,      type: 'string', lang: 'np', required: false },
      Slogan:                  { nameEn: 'Slogan',                    nameNp: 'नारा',                           templateName: 'Slogan',                  key: 'slogan',         foreignKey: false,      type: 'string', lang: 'np', required: false },
      RegisterOffice:          { nameEn: 'Register Office',           nameNp: 'रजिष्ट्रर कार्यालय',            templateName: 'RegisterOffice',          key: 'registerOffice', foreignKey: false,      type: 'string', lang: 'np', required: false },
      HeadOfficeAddress:       { nameEn: 'Head Office Full Address',  nameNp: 'प्रधान कार्यालयको ठेगाना',       templateName: 'HeadOfficeAddress',       key: '',               foreignKey: false,      type: 'string', lang: 'np', required: false },
      SahakariPan:             { nameEn: 'Cooperative PAN No.',       nameNp: 'सहकारीको प्यान नं.',             templateName: 'SahakariPan',             key: '',               foreignKey: false,      type: 'string', lang: 'np', required: false },
      OfficeLogo:              { nameEn: 'Office Logo (Image)',       nameNp: 'लोगो',                           templateName: 'OfficeLogo',              key: 'logo',           foreignKey: false,      type: 'image',  lang: 'np', required: false },
      HeaderLogo:              { nameEn: 'Header Logo (Image)',       nameNp: 'हेडर लोगो',                      templateName: 'HeaderLogo',              key: 'header',         foreignKey: false,      type: 'image',  lang: 'np', required: false },
      FooterLogo:              { nameEn: 'Footer Logo (Image)',       nameNp: 'फुटर लोगो',                      templateName: 'FooterLogo',              key: 'footer',         foreignKey: false,      type: 'image',  lang: 'np', required: false },
      ExpirationDate:          { nameEn: 'License Expiry Date (AD)',  nameNp: 'इजाजत म्याद समाप्त हुने मिति',  templateName: 'ExpirationDate',          key: 'expirationDate', foreignKey: false,      type: 'string', lang: 'np', required: false },
      ExpirationDateBS:        { nameEn: 'License Expiry Date (BS)', nameNp: 'इजाजत म्याद समाप्त हुने मिति',  templateName: 'ExpirationDateBS',        key: 'expirationDateBs',foreignKey: false,     type: 'string', lang: 'np', required: false },
      OfficeLoanPolicyStatement:{ nameEn: 'Loan Policy Statement',   nameNp: 'ऋण नीति विवरण',                  templateName: 'OfficeLoanPolicyStatement',key: 'loanPolicyStatement',foreignKey: false,  type: 'string', lang: 'np', required: false },
      OfficeSavingPolicyStatement:{ nameEn: 'Saving Policy Statement',nameNp: 'बचत नीति विवरण',                templateName: 'OfficeSavingPolicyStatement',key:'savingPolicyStatement',foreignKey: false,type: 'string', lang: 'np', required: false },
    },
  },

  member_details: {
    labelEn: 'Member / Borrower Details',
    labelNp: 'सदस्य / ऋणी विवरण',
    variables: {
      SubscriptionId:                  { nameEn: 'Subscription ID',                    nameNp: 'सदस्यता नं.',                          templateName: 'SubscriptionId',                  key: 'subscriptionId',           foreignKey: false,           type: 'string', lang: 'np', required: false },
      SubscriptionDate:                { nameEn: 'Subscription Date (AD)',             nameNp: 'सदस्य बनेको मिति',                     templateName: 'SubscriptionDate',                key: 'subscriptionDate',         foreignKey: false,           type: 'string', lang: 'np', required: false },
      SubscriptionDateBs:              { nameEn: 'Subscription Date (BS)',             nameNp: 'सदस्य बनेको मिति (वि.सं.)',            templateName: 'SubscriptionDateBs',              key: 'subscriptionDateBs',       foreignKey: false,           type: 'string', lang: 'np', required: false },
      AccountNumber:                   { nameEn: 'Account Number',                     nameNp: 'खाता नं.',                             templateName: 'AccountNumber',                   key: 'accountNumber',            foreignKey: false,           type: 'string', lang: 'np', required: false },
      AccountBalance:                  { nameEn: 'Account Balance',                    nameNp: 'खातामा रहेको रकम',                     templateName: 'AccountBalance',                  key: 'accountBalance',           foreignKey: false,           type: 'number', lang: 'np', required: false },
      ShareAmount:                     { nameEn: 'Share Amount',                       nameNp: 'शेयर रकम',                             templateName: 'ShareAmount',                     key: 'shareAmount',              foreignKey: false,           type: 'number', lang: 'np', required: false },
      TotalShareKitta:                 { nameEn: 'Total Share Kitta',                  nameNp: 'शेयर कित्ता',                          templateName: 'TotalShareKitta',                 key: 'totalShareKitta',          foreignKey: false,           type: 'number', lang: 'np', required: false },
      BorrowerName:                    { nameEn: 'Borrower Full Name (Nepali)',         nameNp: 'ऋण लिनेको पूरा नाम',                  templateName: 'BorrowerName',                    key: 'name',                     foreignKey: false,           type: 'string', lang: 'np', required: true  },
      BorrowerNameEn:                  { nameEn: 'Borrower Full Name (English)',        nameNp: 'ऋण लिनेको पूरा नाम (अंग्रेजी)',       templateName: 'BorrowerNameEn',                  key: 'nameEn',                   foreignKey: false,           type: 'string', lang: 'en', required: false },
      Photo:                           { nameEn: 'Borrower Photo (Image)',             nameNp: 'आवेदकको फोटो',                         templateName: 'Photo',                           key: 'photoUrl',                 foreignKey: false,           type: 'image',  lang: 'np', required: false },
      Signature:                       { nameEn: 'Borrower Signature (Image)',         nameNp: 'आवेदकको हस्ताक्षर',                   templateName: 'Signature',                       key: 'signatureUrl',             foreignKey: false,           type: 'image',  lang: 'np', required: false },
      BorrowerGender:                  { nameEn: 'Gender',                             nameNp: 'लिंग',                                 templateName: 'BorrowerGender',                  key: 'gender',                   foreignKey: 'gender',        type: 'string', lang: 'np', required: false },
      BorrowerDateofBirth:             { nameEn: 'Date of Birth (AD)',                 nameNp: 'जन्म मिति',                            templateName: 'BorrowerDateofBirth',             key: 'dob',                      foreignKey: false,           type: 'string', lang: 'np', required: false },
      BorrowerDateofBirthBS:           { nameEn: 'Date of Birth (BS)',                 nameNp: 'जन्म मिति (वि.सं.)',                  templateName: 'BorrowerDateofBirthBS',           key: 'dobBs',                    foreignKey: false,           type: 'string', lang: 'np', required: false },
      BorrowerAge:                     { nameEn: 'Age',                                nameNp: 'उमेर',                                 templateName: 'BorrowerAge',                     key: 'age',                      foreignKey: false,           type: 'string', lang: 'np', required: false },
      BorrowerEduQualification:        { nameEn: 'Education Qualification',            nameNp: 'शैक्षिक योग्यता',                      templateName: 'BorrowerEduQualification',        key: 'eduQualification',         foreignKey: 'eduQualification',type: 'string', lang: 'np', required: false },
      BorrowerCaste:                   { nameEn: 'Caste / Ethnicity',                  nameNp: 'जात / जाति',                           templateName: 'BorrowerCaste',                   key: 'casteCode',                foreignKey: 'casteCode',     type: 'string', lang: 'np', required: false },
      BorrowerMaritalStatus:           { nameEn: 'Marital Status',                     nameNp: 'वैवाहिक स्थिति',                       templateName: 'BorrowerMaritalStatus',           key: 'maritalStatus',            foreignKey: 'maritalStatus', type: 'string', lang: 'np', required: false },
      Nationality:                     { nameEn: 'Nationality',                        nameNp: 'राष्ट्रियता',                          templateName: 'Nationality',                     key: 'nationality',              foreignKey: false,           type: 'string', lang: 'np', required: false },
      Religion:                        { nameEn: 'Religion',                           nameNp: 'धर्म',                                 templateName: 'Religion',                        key: 'religion',                 foreignKey: false,           type: 'string', lang: 'np', required: false },
      Email:                           { nameEn: 'Email',                              nameNp: 'ईमेल',                                 templateName: 'Email',                           key: 'email',                    foreignKey: false,           type: 'string', lang: 'en', required: false },
      ContactNumber:                   { nameEn: 'Contact Number',                     nameNp: 'सम्पर्क नं.',                          templateName: 'ContactNumber',                   key: 'contactNumber',            foreignKey: false,           type: 'string', lang: 'np', required: false },
      BorrowerFatherName:              { nameEn: 'Father / Husband Name',              nameNp: 'बाबु / पतिको नाम',                    templateName: 'BorrowerFatherName',              key: 'fatherName',               foreignKey: false,           type: 'string', lang: 'np', required: false },
      SpouseName:                      { nameEn: 'Spouse Name',                        nameNp: 'पति / पत्नीको नाम',                   templateName: 'SpouseName',                      key: 'spouseName',               foreignKey: false,           type: 'string', lang: 'np', required: false },
      BorrowerGrandFatherName:         { nameEn: 'Grand Father Name',                  nameNp: 'बाजेको नाम',                           templateName: 'BorrowerGrandFatherName',         key: 'grandFatherName',          foreignKey: false,           type: 'string', lang: 'np', required: false },
      Generations2:                    { nameEn: 'Generation 2 (बाजे/ससुरा)',          nameNp: 'बाजे/ससुराको नाम',                     templateName: 'Generations2',                    key: 'secondGeneration',         foreignKey: false,           type: 'string', lang: 'np', required: false },
      SonOf:                           { nameEn: 'Son Of',                             nameNp: 'छोराको नाम',                           templateName: 'SonOf',                           key: 'secondGenerationName',     foreignKey: false,           type: 'string', lang: 'np', required: false },
      Generations3:                    { nameEn: 'Generation 3 (बाजे/ससुरा)',          nameNp: 'बाजे/ससुराको नाम (३ पुस्ता)',         templateName: 'Generations3',                    key: 'thirdGeneration',          foreignKey: false,           type: 'string', lang: 'np', required: false },
      GrandSonOf:                      { nameEn: 'Grand Son Of',                       nameNp: 'नातिनातिनीको नाम',                     templateName: 'GrandSonOf',                      key: 'thirdGenerationName',      foreignKey: false,           type: 'string', lang: 'np', required: false },
      BorrowerOccupation:              { nameEn: 'Occupation',                         nameNp: 'पेशा / व्यवसाय',                       templateName: 'BorrowerOccupation',              key: 'occupation',               foreignKey: 'occupation',    type: 'string', lang: 'np', required: false },
      BorrowerOccupationTitle:         { nameEn: 'Occupation Title',                   nameNp: 'पेशाको शीर्षक',                        templateName: 'BorrowerOccupationTitle',         key: 'occupationTitle',          foreignKey: false,           type: 'string', lang: 'np', required: false },
      BorrowerOccupationLocation:      { nameEn: 'Occupation Location',                nameNp: 'पेशाको ठाउँ',                          templateName: 'BorrowerOccupationLocation',      key: 'occupationLocation',       foreignKey: false,           type: 'string', lang: 'np', required: false },
      BorrowerPermanentProvince:       { nameEn: 'Permanent Province',                 nameNp: 'स्थायी प्रदेश',                        templateName: 'BorrowerPermanentProvince',       key: 'pProvince',                foreignKey: 'province',      type: 'number', lang: 'np', required: false },
      BorrowerPermanentDistrict:       { nameEn: 'Permanent District',                 nameNp: 'स्थायी जिल्ला',                        templateName: 'BorrowerPermanentDistrict',       key: 'pDistrict',                foreignKey: 'district',      type: 'number', lang: 'np', required: false },
      BorrowerPermanentLocalGovt:      { nameEn: 'Permanent Local Govt',               nameNp: 'स्थायी स्थानीय तह',                    templateName: 'BorrowerPermanentLocalGovt',      key: 'pLocalgovt',               foreignKey: 'localgovt',     type: 'number', lang: 'np', required: false },
      BorrowerPermanentWard:           { nameEn: 'Permanent Ward',                     nameNp: 'स्थायी वडा',                           templateName: 'BorrowerPermanentWard',           key: 'pWard',                    foreignKey: false,           type: 'string', lang: 'np', required: false },
      BorrowerPermanentTole:           { nameEn: 'Permanent Tole',                     nameNp: 'स्थायी टोल',                           templateName: 'BorrowerPermanentTole',           key: 'pTole',                    foreignKey: false,           type: 'string', lang: 'np', required: false },
      BorrowerTemporaryProvince:       { nameEn: 'Temporary Province',                 nameNp: 'अस्थायी प्रदेश',                       templateName: 'BorrowerTemporaryProvince',       key: 'tProvince',                foreignKey: 'province',      type: 'number', lang: 'np', required: false },
      BorrowerTemporaryDistrict:       { nameEn: 'Temporary District',                 nameNp: 'अस्थायी जिल्ला',                       templateName: 'BorrowerTemporaryDistrict',       key: 'tDistrict',                foreignKey: 'district',      type: 'number', lang: 'np', required: false },
      BorrowerTemporaryLocalGovt:      { nameEn: 'Temporary Local Govt',               nameNp: 'अस्थायी स्थानीय तह',                   templateName: 'BorrowerTemporaryLocalGovt',      key: 'tLocalgovt',               foreignKey: 'localgovt',     type: 'number', lang: 'np', required: false },
      BorrowerTemporaryWard:           { nameEn: 'Temporary Ward',                     nameNp: 'अस्थायी वडा',                          templateName: 'BorrowerTemporaryWard',           key: 'tWard',                    foreignKey: false,           type: 'string', lang: 'np', required: false },
      BorrowerTemporaryTole:           { nameEn: 'Temporary Tole',                     nameNp: 'अस्थायी टोल',                          templateName: 'BorrowerTemporaryTole',           key: 'tTole',                    foreignKey: false,           type: 'string', lang: 'np', required: false },
      CitizenshipNumber:               { nameEn: 'Citizenship Number',                 nameNp: 'नागरिकता नं.',                         templateName: 'CitizenshipNumber',               key: 'citizenshipNumber',        foreignKey: false,           type: 'string', lang: 'np', required: false },
      CitizenshipIssueDate:            { nameEn: 'Citizenship Issue Date (AD)',         nameNp: 'नागरिकता जारी मिति',                   templateName: 'CitizenshipIssueDate',            key: 'citizenshipIssueDate',     foreignKey: false,           type: 'string', lang: 'np', required: false },
      CitizenshipIssueDateBS:          { nameEn: 'Citizenship Issue Date (BS)',         nameNp: 'नागरिकता जारी मिति (वि.सं.)',         templateName: 'CitizenshipIssueDateBS',          key: 'citizenshipIssueDateBs',   foreignKey: false,           type: 'string', lang: 'np', required: false },
      CitizenshipIssueDistrict:        { nameEn: 'Citizenship Issue District',          nameNp: 'नागरिकता जारी जिल्ला',                templateName: 'CitizenshipIssueDistrict',        key: 'citizenshipIssueDistrict', foreignKey: 'district',      type: 'number', lang: 'np', required: false },
      CitizenshipFormerAddress:        { nameEn: 'Citizenship Former Address',          nameNp: 'नागरिकतामा उल्लेखित साविक ठेगाना',    templateName: 'CitizenshipFormerAddress',         key: 'citizenshipFormerAddress', foreignKey: false,           type: 'string', lang: 'np', required: false },
      PanNo:                           { nameEn: 'PAN Number',                         nameNp: 'पान नं.',                              templateName: 'PanNo',                           key: 'panNo',                    foreignKey: false,           type: 'string', lang: 'np', required: false },
      PanIssueDate:                    { nameEn: 'PAN Issue Date (AD)',                 nameNp: 'पान जारी मिति',                        templateName: 'PanIssueDate',                    key: 'panIssueDate',             foreignKey: false,           type: 'string', lang: 'np', required: false },
      PanIssueDateBS:                  { nameEn: 'PAN Issue Date (BS)',                 nameNp: 'पान जारी मिति (वि.सं.)',              templateName: 'PanIssueDateBS',                  key: 'panIssueDateBs',           foreignKey: false,           type: 'string', lang: 'np', required: false },
      PanIssusePlace:                  { nameEn: 'PAN Issue Place',                    nameNp: 'पान जारी ठाउँ',                        templateName: 'PanIssusePlace',                  key: 'panIssuePlace',            foreignKey: 'district',      type: 'number', lang: 'np', required: false },
      NationalIDNo:                    { nameEn: 'National ID Number',                 nameNp: 'राष्ट्रिय परिचय पत्र नं.',            templateName: 'NationalIDNo',                    key: 'nationalIdNo',             foreignKey: false,           type: 'string', lang: 'np', required: false },
      NationalIDIssueDate:             { nameEn: 'National ID Issue Date (AD)',        nameNp: 'राष्ट्रिय परिचय पत्र जारी मिति',      templateName: 'NationalIDIssueDate',             key: 'nationalIdIssueDate',      foreignKey: false,           type: 'string', lang: 'np', required: false },
      NationalIDIssueDateBS:           { nameEn: 'National ID Issue Date (BS)',        nameNp: 'राष्ट्रिय परिचय पत्र जारी मिति (वि.सं.)',templateName: 'NationalIDIssueDateBS',        key: 'nationalIdIssueDateBs',    foreignKey: false,           type: 'string', lang: 'np', required: false },
      NationalIDIssusePlace:           { nameEn: 'National ID Issue Place',           nameNp: 'राष्ट्रिय परिचय पत्र जारी जिल्ला',    templateName: 'NationalIDIssusePlace',           key: 'nationalIdIssuePlace',     foreignKey: 'district',      type: 'number', lang: 'np', required: false },
      MonthlyIncome:                   { nameEn: 'Monthly Income',                    nameNp: 'मासिक आम्दानी',                         templateName: 'MonthlyIncome',                   key: 'monthlyIncome',            foreignKey: false,           type: 'number', lang: 'np', required: false },
      MonthlyExpenses:                 { nameEn: 'Monthly Expenses',                  nameNp: 'मासिक खर्च',                           templateName: 'MonthlyExpenses',                 key: 'monthlyExpenses',          foreignKey: false,           type: 'number', lang: 'np', required: false },
      MonthlySaving:                   { nameEn: 'Monthly Saving',                    nameNp: 'मासिक बचत',                            templateName: 'MonthlySaving',                   key: 'monthlySaving',            foreignKey: false,           type: 'number', lang: 'np', required: false },
      BorrowerBusinessRegisterNumber:  { nameEn: 'Business Register Number',          nameNp: 'व्यवसाय दर्ता नं.',                    templateName: 'BorrowerBusinessRegisterNumber',  key: 'businessRegisterNumber',   foreignKey: false,           type: 'string', lang: 'np', required: false },
      BorrowerBusinessPanVatNumber:    { nameEn: 'Business PAN/VAT Number',           nameNp: 'व्यवसाय पान/भ्याट नं.',               templateName: 'BorrowerBusinessPanVatNumber',    key: 'businessVatNumber',        foreignKey: false,           type: 'string', lang: 'np', required: false },
      BorrowerBusinessRegisterDateBs:  { nameEn: 'Business Register Date (BS)',       nameNp: 'व्यवसाय दर्ता मिति (वि.सं.)',          templateName: 'BorrowerBusinessRegisterDateBs',  key: 'businessRegisterDateBs',   foreignKey: false,           type: 'string', lang: 'np', required: false },
      BorrowerBusinessRegisterOffice:  { nameEn: 'Business Register Office',          nameNp: 'व्यवसाय दर्ता गरेको निकाय',           templateName: 'BorrowerBusinessRegisterOffice',  key: 'businessRegisterOffice',   foreignKey: false,           type: 'string', lang: 'np', required: false },
      BorrowerBusinessNature:          { nameEn: 'Business Nature',                   nameNp: 'व्यवसायको प्रकृति',                    templateName: 'BorrowerBusinessNature',          key: 'businessNature',           foreignKey: false,           type: 'string', lang: 'np', required: false },
      BorrowerBusinessRegistrationType:{ nameEn: 'Business Registration Type',       nameNp: 'व्यवसायको प्रकार',                     templateName: 'BorrowerBusinessRegistrationType',key: 'businessRegistrationType', foreignKey: false,           type: 'string', lang: 'np', required: false },
      BorrowerBusinessEstimatedCost:   { nameEn: 'Business Estimated Annual Income',  nameNp: 'अनुमानित वार्षिक आम्दानी',            templateName: 'BorrowerBusinessEstimatedCost',   key: 'businessEstimateAnnualIncome',foreignKey: false,        type: 'string', lang: 'np', required: false },
    },
  },

  applicant_details: {
    labelEn: 'Application Details',
    labelNp: 'आवेदन विवरण',
    variables: {
      ApplicationCode:             { nameEn: 'Application Code',                nameNp: 'आवेदक दर्ता नं.',             templateName: 'ApplicationCode',             key: 'applicationCode',          foreignKey: false,  type: 'string', lang: 'np', required: false },
      ApplicantDartaNumber:        { nameEn: 'Applicant Darta/Chalani No.',     nameNp: 'आवेदक दर्ता/चलानी नं.',      templateName: 'ApplicantDartaNumber',        key: 'dartaNumber',              foreignKey: false,  type: 'string', lang: 'np', required: false },
      ApplicationProfileId:        { nameEn: 'Application Profile ID',          nameNp: 'आवेदन प्रोफाइल नं.',          templateName: 'ApplicationProfileId',        key: 'id',                       foreignKey: false,  type: 'string', lang: 'np', required: false },
      LoanApplyDate:               { nameEn: 'Loan Apply Date (AD)',            nameNp: 'ऋण दर्ता मिति',               templateName: 'LoanApplyDate',               key: 'loanApplyDate',            foreignKey: false,  type: 'string', lang: 'np', required: false },
      LoanApplyDateBS:             { nameEn: 'Loan Apply Date (BS)',            nameNp: 'ऋण दर्ता मिति (वि.सं.)',      templateName: 'LoanApplyDateBS',             key: 'loanApplyDateBs',          foreignKey: false,  type: 'string', lang: 'np', required: false },
      MeetingDate:                 { nameEn: 'Meeting Date (AD)',               nameNp: 'बैठक मिति',                   templateName: 'MeetingDate',                 key: 'meetingDate',              foreignKey: false,  type: 'string', lang: 'np', required: false },
      MeetingDateBS:               { nameEn: 'Meeting Date (BS)',               nameNp: 'बैठक मिति (वि.सं.)',           templateName: 'MeetingDateBS',               key: 'meetingDateBs',            foreignKey: false,  type: 'string', lang: 'np', required: false },
      MeetingNumber:               { nameEn: 'Meeting Number',                  nameNp: 'बैठक नं.',                    templateName: 'MeetingNumber',               key: 'meetingNumber',            foreignKey: false,  type: 'string', lang: 'np', required: false },
      RecommendationMeetingDate:   { nameEn: 'Recommendation Meeting Date (AD)',nameNp: 'सिफारिस बैठक मिति',           templateName: 'RecommendationMeetingDate',   key: 'recommendationMeetingDate',foreignKey: false,  type: 'string', lang: 'np', required: false },
      RecommendationMeetingDateBS: { nameEn: 'Recommendation Meeting Date (BS)',nameNp: 'सिफारिस बैठक मिति (वि.सं.)', templateName: 'RecommendationMeetingDateBS', key: 'recommendationMeetingDateBs',foreignKey: false,type: 'string', lang: 'np', required: false },
      RecommendationMeetingNumber: { nameEn: 'Recommendation Meeting Number',   nameNp: 'सिफारिस बैठक नं.',            templateName: 'RecommendationMeetingNumber', key: 'recommendationMeetingNumber',foreignKey: false,type: 'string', lang: 'np', required: false },
      CollateralType:              { nameEn: 'Collateral Type',                  nameNp: 'धितोको प्रकार',               templateName: 'CollateralType',              key: 'collateralType',           foreignKey: false,  type: 'string', lang: 'np', required: false },
      LoanDemandAmount:            { nameEn: 'Loan Demand Amount',              nameNp: 'माग गरेको ऋण रकम',            templateName: 'LoanDemandAmount',            key: 'loanDemandAmount',         foreignKey: false,  type: 'number', lang: 'np', required: false },
      EntryUserName:               { nameEn: 'Entry User Name',                 nameNp: 'दर्ता गर्ने व्यक्तिको नाम',   templateName: 'EntryUserName',               key: 'writerBy',                 foreignKey: 'writer_by',  type: 'string', lang: 'np', required: false },
      EntryUserSignature:          { nameEn: 'Entry User Signature (Image)',    nameNp: 'दर्ता गर्नेको हस्ताक्षर',     templateName: 'EntryUserSignature',          key: 'writerSignature',          foreignKey: false,  type: 'image',  lang: 'np', required: false },
      EntryUserPosition:           { nameEn: 'Entry User Position',             nameNp: 'दर्ता गर्नेको पद',            templateName: 'EntryUserPosition',           key: 'writerBy',                 foreignKey: 'writer_position',type: 'number', lang: 'np', required: false },
      EntryUserCode:               { nameEn: 'Entry User Code',                 nameNp: 'दर्ता गर्नेको कोड',           templateName: 'EntryUserCode',               key: 'writerCode',               foreignKey: false,  type: 'string', lang: 'np', required: false },
      ReviewUserName:              { nameEn: 'Review User Name',                nameNp: 'रुजु गर्नेको नाम',             templateName: 'ReviewUserName',              key: 'reviewBy',                 foreignKey: 'review_by', type: 'string', lang: 'np', required: false },
      ReviewUserSignature:         { nameEn: 'Review User Signature (Image)',   nameNp: 'रुजु गर्नेको हस्ताक्षर',      templateName: 'ReviewUserSignature',         key: 'reviewSignature',          foreignKey: false,  type: 'image',  lang: 'np', required: false },
      ReviewUserPosition:          { nameEn: 'Review User Position',            nameNp: 'रुजु गर्नेको पद',             templateName: 'ReviewUserPosition',          key: 'reviewBy',                 foreignKey: 'review_position',type: 'number', lang: 'np', required: false },
      ReviewUserCode:              { nameEn: 'Review User Code',                nameNp: 'रुजु गर्नेको कोड',            templateName: 'ReviewUserCode',              key: 'reviewCode',               foreignKey: false,  type: 'string', lang: 'np', required: false },
      ApprovedUserName:            { nameEn: 'Approved User Name',              nameNp: 'प्रमाणित गर्नेको नाम',        templateName: 'ApprovedUserName',            key: 'approvedBy',               foreignKey: 'approved_by',type: 'string', lang: 'np', required: false },
      ApprovedUserSignature:       { nameEn: 'Approved User Signature (Image)', nameNp: 'प्रमाणित गर्नेको हस्ताक्षर', templateName: 'ApprovedUserSignature',        key: 'approvedSignature',        foreignKey: false,  type: 'image',  lang: 'np', required: false },
      ApprovedUserPosition:        { nameEn: 'Approved User Position',          nameNp: 'प्रमाणित गर्नेको पद',         templateName: 'ApprovedUserPosition',        key: 'approvedBy',               foreignKey: 'approved_position',type: 'number', lang: 'np', required: false },
      ApprovedUserCode:            { nameEn: 'Approved User Code',              nameNp: 'प्रमाणित गर्नेको कोड',        templateName: 'ApprovedUserCode',            key: 'approvedCode',             foreignKey: false,  type: 'string', lang: 'np', required: false },
    },
  },

  loan_details: {
    labelEn: 'Loan Details',
    labelNp: 'ऋण विवरण',
    variables: {
      LoanAccountNumber:   { nameEn: 'Loan Account Number',        nameNp: 'ऋण खाता नं.',              templateName: 'LoanAccountNumber',   key: 'loanAccountNumber',   foreignKey: false,          type: 'string', lang: 'np', required: false },
      TotalLoanAmount:     { nameEn: 'Total Loan Amount',          nameNp: 'कुल ऋण रकम',               templateName: 'TotalLoanAmount',     key: 'totalLoanAmount',     foreignKey: false,          type: 'number', lang: 'np', required: false },
      TotalLoanAmountInWord:{ nameEn: 'Total Loan Amount (Words)', nameNp: 'कुल ऋण रकम (अक्षरमा)',     templateName: 'TotalLoanAmountInWord',key: 'totalLoanAmountInWord',foreignKey: false,         type: 'string', lang: 'np', required: false },
      LoanAmount:          { nameEn: 'Loan Amount',                nameNp: 'ऋण रकम',                   templateName: 'LoanAmount',          key: 'loanAmount',          foreignKey: false,          type: 'number', lang: 'np', required: false },
      LoanAmountInWord:    { nameEn: 'Loan Amount (Words)',        nameNp: 'ऋण रकम (अक्षरमा)',         templateName: 'LoanAmountInWord',    key: 'loanAmountInWord',    foreignKey: false,          type: 'string', lang: 'np', required: false },
      Loantitle:           { nameEn: 'Loan Title',                 nameNp: 'ऋण शीर्षक',                templateName: 'Loantitle',           key: 'loanTitle',           foreignKey: 'loan_title',   type: 'number', lang: 'np', required: false },
      LoanTitleCode:       { nameEn: 'Loan Title Code',            nameNp: 'ऋण शीर्षक कोड',           templateName: 'LoanTitleCode',       key: 'loanTitleCode',       foreignKey: false,          type: 'string', lang: 'np', required: false },
      LoanPurpose:         { nameEn: 'Loan Purpose',               nameNp: 'ऋण उद्देश्य',               templateName: 'LoanPurpose',         key: 'loanPurpose',         foreignKey: 'loan_purpose', type: 'number', lang: 'np', required: false },
      LoanInterestRate:    { nameEn: 'Interest Rate (%)',          nameNp: 'ब्याजदर (%)',               templateName: 'LoanInterestRate',    key: 'loanInterestRate',    foreignKey: false,          type: 'string', lang: 'np', required: false },
      LoanInterestRateInWord:{ nameEn: 'Interest Rate (Words)',    nameNp: 'ब्याजदर (शब्दमा)',          templateName: 'LoanInterestRateInWord',key:'',                   foreignKey: false,          type: 'string', lang: 'np', required: false },
      LoanPeriod:          { nameEn: 'Loan Period',                nameNp: 'ऋण अवधि',                  templateName: 'LoanPeriod',          key: 'loanPeriod',          foreignKey: false,          type: 'string', lang: 'np', required: false },
      LoanPeriodType:      { nameEn: 'Loan Period Type',           nameNp: 'ऋण अवधिको प्रकार',         templateName: 'LoanPeriodType',      key: 'loanPeriodType',      foreignKey: false,          type: 'string', lang: 'np', required: false },
      GracePeriod:         { nameEn: 'Grace Period',               nameNp: 'ग्रेस अवधि',               templateName: 'GracePeriod',         key: 'gracePeriod',         foreignKey: false,          type: 'string', lang: 'np', required: false },
      GraceType:           { nameEn: 'Grace Type',                 nameNp: 'ग्रेस प्रकार',             templateName: 'GraceType',           key: 'graceType',           foreignKey: false,          type: 'string', lang: 'np', required: false },
      InterestType:        { nameEn: 'Interest Type',              nameNp: 'ब्याज प्रकार',             templateName: 'InterestType',        key: 'interestType',        foreignKey: false,          type: 'string', lang: 'np', required: false },
      PaymentAmount:       { nameEn: 'Installment Amount',         nameNp: 'किस्ता रकम',               templateName: 'PaymentAmount',       key: 'paymentAmount',       foreignKey: false,          type: 'number', lang: 'np', required: false },
      PaymentType:         { nameEn: 'Payment Type',               nameNp: 'भुक्तानी प्रकार',          templateName: 'PaymentType',         key: 'paymentType',         foreignKey: false,          type: 'string', lang: 'np', required: false },
      KistaTotal:          { nameEn: 'Total Installments',         nameNp: 'कुल किस्ता संख्या',         templateName: 'KistaTotal',          key: 'kistaTotal',          foreignKey: false,          type: 'number', lang: 'np', required: false },
      LoanInvestmentDate:  { nameEn: 'Investment Date (AD)',        nameNp: 'लगानी मिति',               templateName: 'LoanInvestmentDate',  key: 'investmentDate',      foreignKey: false,          type: 'string', lang: 'np', required: false },
      LoanInvestmentDateBS:{ nameEn: 'Investment Date (BS)',        nameNp: 'लगानी मिति (वि.सं.)',      templateName: 'LoanInvestmentDateBS',key: 'investmentDateBs',    foreignKey: false,          type: 'string', lang: 'np', required: false },
      LoanExpiryDate:      { nameEn: 'Loan Expiry Date (AD)',       nameNp: 'ऋण म्याद समाप्त मिति',    templateName: 'LoanExpiryDate',      key: 'expirationDate',      foreignKey: false,          type: 'string', lang: 'np', required: false },
      LoanExpiryDateBS:    { nameEn: 'Loan Expiry Date (BS)',       nameNp: 'ऋण म्याद (वि.सं.)',        templateName: 'LoanExpiryDateBS',    key: 'expirationDateBs',    foreignKey: false,          type: 'string', lang: 'np', required: false },
      LoanRepaymentDate:   { nameEn: 'Loan Pass Date (AD)',         nameNp: 'ऋण पास मिति',              templateName: 'LoanRepaymentDate',   key: 'loanPassDate',        foreignKey: false,          type: 'string', lang: 'np', required: false },
      LoanRepaymentDateBs: { nameEn: 'Loan Pass Date (BS)',         nameNp: 'ऋण पास मिति (वि.सं.)',     templateName: 'LoanRepaymentDateBs', key: 'loanPassDateBs',      foreignKey: false,          type: 'string', lang: 'np', required: false },
      PaymentVoucherNumber:{ nameEn: 'Payment Voucher Number',      nameNp: 'भुक्तानी भौचर नं.',        templateName: 'PaymentVoucherNumber',key: 'paymentVoucherNumber',foreignKey: false,          type: 'string', lang: 'np', required: false },
      TamsukWriter:        { nameEn: 'Tamsuk Writer',               nameNp: 'तमसुक लेख्ने',             templateName: 'TamsukWriter',        key: 'tamsukWriter',        foreignKey: false,          type: 'string', lang: 'np', required: false },
      TamsukApprovedBy:    { nameEn: 'Tamsuk Approved By',          nameNp: 'तमसुक स्वीकृत गर्ने',      templateName: 'TamsukApprovedBy',    key: 'tamsukApprovedBy',    foreignKey: false,          type: 'string', lang: 'np', required: false },
      Recommendator:       { nameEn: 'Recommendator',               nameNp: 'सिफारिस गर्ने',            templateName: 'Recommendator',       key: 'recommendator',       foreignKey: false,          type: 'string', lang: 'np', required: false },
      TamsukProvenBy:      { nameEn: 'Tamsuk Proven By',            nameNp: 'तमसुक प्रमाणित गर्ने',     templateName: 'TamsukProvenBy',      key: 'tamsukProvenBy',      foreignKey: false,          type: 'string', lang: 'np', required: false },
    },
  },

  guarantor_details: {
    labelEn: 'Guarantor Details',
    labelNp: 'जमानतदार विवरण',
    variables: {
      G_photo:                       { nameEn: 'Guarantor Photo (Image)',          nameNp: 'जमानतदारको फोटो',             templateName: 'G_photo',                       key: 'photoUrl',                 foreignKey: false,      type: 'image',  lang: 'np', required: false },
      GuarantorName:                 { nameEn: 'Guarantor Name',                   nameNp: 'जमानतदारको नाम',              templateName: 'GuarantorName',                 key: 'guarantorName',            foreignKey: false,      type: 'string', lang: 'np', required: false },
      GuarantorFatherName:           { nameEn: 'Guarantor Father Name',            nameNp: 'जमानतदारको बाबुको नाम',       templateName: 'GuarantorFatherName',           key: 'guarantorFatherName',      foreignKey: false,      type: 'string', lang: 'np', required: false },
      GuarantorGenerations2:         { nameEn: 'Guarantor Generation 2',           nameNp: 'जमानतदारको बाजे/ससुरा',       templateName: 'GuarantorGenerations2',         key: 'guarantorSecondGeneration',foreignKey: false,      type: 'string', lang: 'np', required: false },
      GuarantorSonOf:                { nameEn: 'Guarantor Son Of',                 nameNp: 'जमानतदारको छोराको नाम',       templateName: 'GuarantorSonOf',                key: 'guarantorSonOf',           foreignKey: false,      type: 'string', lang: 'np', required: false },
      GuarantorGenerations3:         { nameEn: 'Guarantor Generation 3',           nameNp: 'जमानतदारको ३ पुस्ता',         templateName: 'GuarantorGenerations3',         key: 'guarantorThirdGeneration', foreignKey: false,      type: 'string', lang: 'np', required: false },
      GuarantorGrandSonOf:           { nameEn: 'Guarantor Grand Son Of',           nameNp: 'जमानतदारको नातिनातिनी',       templateName: 'GuarantorGrandSonOf',           key: 'guarantorGrandSonOf',      foreignKey: false,      type: 'string', lang: 'np', required: false },
      GuarantorGrandFatherName:      { nameEn: 'Guarantor Grand Father Name',      nameNp: 'जमानतदारको बाजेको नाम',       templateName: 'GuarantorGrandFatherName',      key: 'guarantorGrandFatherName', foreignKey: false,      type: 'string', lang: 'np', required: false },
      GuarantorSpouseName:           { nameEn: 'Guarantor Spouse Name',            nameNp: 'जमानतदारको पति/पत्नीको नाम', templateName: 'GuarantorSpouseName',           key: 'guarantorSpouseName',      foreignKey: false,      type: 'string', lang: 'np', required: false },
      GuarantorRelation:             { nameEn: 'Guarantor Relation with Borrower', nameNp: 'ऋणीसँग सम्बन्ध',             templateName: 'GuarantorRelation',             key: 'relation',                 foreignKey: false,      type: 'string', lang: 'np', required: false },
      GuarantorSubscriptionId:       { nameEn: 'Guarantor Subscription ID',        nameNp: 'जमानतदारको सदस्यता नं.',      templateName: 'GuarantorSubscriptionId',       key: 'guarantorSubscriptionId',  foreignKey: false,      type: 'string', lang: 'np', required: false },
      GuarantorDOB:                  { nameEn: 'Guarantor DOB (AD)',               nameNp: 'जमानतदारको जन्म मिति',        templateName: 'GuarantorDOB',                  key: 'guarantorDob',             foreignKey: false,      type: 'string', lang: 'np', required: false },
      GuarantorDOBBS:                { nameEn: 'Guarantor DOB (BS)',               nameNp: 'जमानतदारको जन्म मिति (वि.सं.)',templateName: 'GuarantorDOBBS',               key: 'guarantorDobBs',           foreignKey: false,      type: 'string', lang: 'np', required: false },
      GuarantorAge:                  { nameEn: 'Guarantor Age',                    nameNp: 'जमानतदारको उमेर',             templateName: 'GuarantorAge',                  key: 'guarantorAge',             foreignKey: false,      type: 'string', lang: 'np', required: false },
      GuarantorContactNumber:        { nameEn: 'Guarantor Contact Number',         nameNp: 'जमानतदारको सम्पर्क नं.',      templateName: 'GuarantorContactNumber',        key: 'guarantorContactNumber',   foreignKey: false,      type: 'string', lang: 'np', required: false },
      GuarantorCitizenshipNumber:    { nameEn: 'Guarantor Citizenship Number',     nameNp: 'जमानतदारको नागरिकता नं.',     templateName: 'GuarantorCitizenshipNumber',    key: 'guarantorCitizenshipNumber',foreignKey: false,     type: 'string', lang: 'np', required: false },
      GuarantorCitizenshipIssueDate: { nameEn: 'Guarantor Citizenship Issue Date (AD)',nameNp: 'जमानतदारको नागरिकता जारी मिति',templateName: 'GuarantorCitizenshipIssueDate', key: 'guarantorCitizenshipIssueDate',foreignKey: false,type: 'string', lang: 'np', required: false },
      GuarantorCitizenshipIssueDateBS:{ nameEn: 'Guarantor Citizenship Issue Date (BS)',nameNp: 'जमानतदारको नागरिकता जारी मिति (वि.सं.)',templateName: 'GuarantorCitizenshipIssueDateBS',key:'guarantorCitizenshipIssueDateBs',foreignKey: false,type: 'string', lang: 'np', required: false },
      GuarantorCitizenshipIssueDistrict:{ nameEn: 'Guarantor Citizenship Issue District',nameNp: 'जमानतदारको नागरिकता जारी जिल्ला',templateName: 'GuarantorCitizenshipIssueDistrict',key:'guarantorCitizenshipIssueDistrict',foreignKey: 'district',type: 'number', lang: 'np', required: false },
      GuarantorFormerAddress:        { nameEn: 'Guarantor Former Address',         nameNp: 'जमानतदारको साविक ठेगाना',    templateName: 'GuarantorFormerAddress',        key: 'guarantorFormerAddress',   foreignKey: false,      type: 'string', lang: 'np', required: false },
      GuarantorPermanentProvince:    { nameEn: 'Guarantor Permanent Province',     nameNp: 'जमानतदारको स्थायी प्रदेश',   templateName: 'GuarantorPermanentProvince',    key: 'guarantorPProvince',       foreignKey: 'province', type: 'number', lang: 'np', required: false },
      GuarantorPermanentDistrict:    { nameEn: 'Guarantor Permanent District',     nameNp: 'जमानतदारको स्थायी जिल्ला',   templateName: 'GuarantorPermanentDistrict',    key: 'guarantorPDistrict',       foreignKey: 'district', type: 'number', lang: 'np', required: false },
      GuarantorPermanentLocalGovt:   { nameEn: 'Guarantor Permanent Local Govt',   nameNp: 'जमानतदारको स्थायी स्थानीय तह',templateName: 'GuarantorPermanentLocalGovt',  key: 'guarantorPLocalgovt',      foreignKey: 'localgovt',type: 'number', lang: 'np', required: false },
      GuarantorPermanentWard:        { nameEn: 'Guarantor Permanent Ward',         nameNp: 'जमानतदारको स्थायी वडा',       templateName: 'GuarantorPermanentWard',        key: 'guarantorPWard',           foreignKey: false,      type: 'string', lang: 'np', required: false },
      GuarantorPermanentTole:        { nameEn: 'Guarantor Permanent Tole',         nameNp: 'जमानतदारको स्थायी टोल',       templateName: 'GuarantorPermanentTole',        key: 'guarantorPTole',           foreignKey: false,      type: 'string', lang: 'np', required: false },
      GuarantorTemporaryProvince:    { nameEn: 'Guarantor Temporary Province',     nameNp: 'जमानतदारको अस्थायी प्रदेश',  templateName: 'GuarantorTemporaryProvince',    key: 'guarantorTProvince',       foreignKey: 'province', type: 'number', lang: 'np', required: false },
      GuarantorTemporaryDistrict:    { nameEn: 'Guarantor Temporary District',     nameNp: 'जमानतदारको अस्थायी जिल्ला',  templateName: 'GuarantorTemporaryDistrict',    key: 'guarantorTDistrict',       foreignKey: 'district', type: 'number', lang: 'np', required: false },
      GuarantorTemporaryLocalGovt:   { nameEn: 'Guarantor Temporary Local Govt',   nameNp: 'जमानतदारको अस्थायी स्थानीय तह',templateName: 'GuarantorTemporaryLocalGovt', key: 'guarantorTLocalgovt',      foreignKey: 'localgovt',type: 'number', lang: 'np', required: false },
      GuarantorTemporaryWard:        { nameEn: 'Guarantor Temporary Ward',         nameNp: 'जमानतदारको अस्थायी वडा',     templateName: 'GuarantorTemporaryWard',        key: 'guarantorTWard',           foreignKey: false,      type: 'string', lang: 'np', required: false },
      GuarantorTemporaryTole:        { nameEn: 'Guarantor Temporary Tole',         nameNp: 'जमानतदारको अस्थायी टोल',     templateName: 'GuarantorTemporaryTole',        key: 'guarantorTTole',           foreignKey: false,      type: 'string', lang: 'np', required: false },
      GuarantorSubscriptionNumber:   { nameEn: 'Guarantor Subscription Number',    nameNp: 'जमानतदारको सदस्यता नम्बर',   templateName: 'GuarantorSubscriptionNumber',   key: 'guarantorSubscriptionNumber',foreignKey: false,    type: 'string', lang: 'np', required: false },
    },
  },

  family_details: {
    labelEn: 'Family / Relations',
    labelNp: 'परिवार / नाताबाट',
    variables: {
      FamilyRelation:                 { nameEn: 'Family Relation',                 nameNp: 'पारिवारिक सम्बन्ध',  templateName: 'FamilyRelation',                 key: 'relation',                foreignKey: false, type: 'string', lang: 'np', required: false },
      FamilyName:                     { nameEn: 'Family Member Name',              nameNp: 'परिवार सदस्यको नाम', templateName: 'FamilyName',                     key: 'name',                    foreignKey: false, type: 'string', lang: 'np', required: false },
      FamilyPhoneNo:                  { nameEn: 'Family Contact Number',           nameNp: 'परिवार सदस्यको फोन', templateName: 'FamilyPhoneNo',                  key: 'contactNumber',           foreignKey: false, type: 'string', lang: 'np', required: false },
      FamilyCitizenshipNo:            { nameEn: 'Family Citizenship Number',       nameNp: 'परिवारको नागरिकता नं.',templateName: 'FamilyCitizenshipNo',           key: 'citizenshipNo',           foreignKey: false, type: 'string', lang: 'np', required: false },
      FamilyCitizenshipIssueDistrict: { nameEn: 'Family Citizenship Issue District',nameNp: 'परिवारको नागरिकता जारी जिल्ला',templateName: 'FamilyCitizenshipIssueDistrict',key:'citizenshipIssueDistrict',foreignKey: 'district', type: 'number', lang: 'np', required: false },
      FamilyCitizenshipIssueDate:     { nameEn: 'Family Citizenship Issue Date',   nameNp: 'परिवारको नागरिकता जारी मिति',templateName: 'FamilyCitizenshipIssueDate',  key: 'citizenshipIssueDate',    foreignKey: false, type: 'string', lang: 'np', required: false },
    },
  },

  taketa_patras: {
    labelEn: 'Taketa Patra (Loan Demand Notice)',
    labelNp: 'टाकेटा पत्र',
    variables: {
      RemainingCapital:                { nameEn: 'Remaining Capital (साँवा)',       nameNp: 'साँवा बाँकी',                  templateName: 'RemainingCapital',                key: 'capital',                       foreignKey: false, type: 'string', lang: 'np', required: false },
      RemainingInterest:               { nameEn: 'Remaining Interest (व्याज)',      nameNp: 'व्याज बाँकी',                  templateName: 'RemainingInterest',               key: 'interest',                      foreignKey: false, type: 'string', lang: 'np', required: false },
      RemainingTotal:                  { nameEn: 'Remaining Total',                 nameNp: 'जम्मा बाँकी',                  templateName: 'RemainingTotal',                  key: 'total',                         foreignKey: false, type: 'string', lang: 'np', required: false },
      LetterType:                      { nameEn: 'Letter Type',                     nameNp: 'पत्र किसिम',                   templateName: 'LetterType',                      key: 'letterType',                    foreignKey: false, type: 'string', lang: 'np', required: false },
      LastInstallmentSubmissionDate:   { nameEn: 'Last Installment Date (AD)',       nameNp: 'अन्तिम किस्ता भुक्तानी मिति', templateName: 'LastInstallmentSubmissionDate',   key: 'lastInstallmentDate',           foreignKey: false, type: 'string', lang: 'np', required: false },
      LastInstallmentSubmissionDateBS: { nameEn: 'Last Installment Date (BS)',       nameNp: 'अन्तिम किस्ता भुक्तानी मिति (वि.सं.)',templateName: 'LastInstallmentSubmissionDateBS',key:'lastInstallmentDateBs',   foreignKey: false, type: 'string', lang: 'np', required: false },
      TaketaPatrasLoanAmountDue:       { nameEn: 'Loan Amount Due',                 nameNp: 'तिर्न बाँकी किस्ता रकम',      templateName: 'TaketaPatrasLoanAmountDue',       key: 'loanAmountDue',                 foreignKey: false, type: 'number', lang: 'np', required: false },
      RemainingInstallmentAmount:      { nameEn: 'Remaining Installment Amount',    nameNp: 'तिर्न बाँकी किस्ता रकम',      templateName: 'RemainingInstallmentAmount',      key: 'remainingInstallmentAmount',    foreignKey: false, type: 'number', lang: 'np', required: false },
      TaketaPatrasWriterBy:            { nameEn: 'Taketa Patra Writer',             nameNp: 'तयार गर्ने',                   templateName: 'TaketaPatrasWriterBy',            key: 'writerBy',                      foreignKey: 'writer_by', type: 'number', lang: 'np', required: false },
      TaketaPatrasWriterPosition:      { nameEn: 'Taketa Patra Writer Position',    nameNp: 'तयार गर्नेको पद',              templateName: 'TaketaPatrasWriterPosition',      key: 'writerBy',                      foreignKey: 'writer_position', type: 'number', lang: 'np', required: false },
      TaketaPatrasReviewBy:            { nameEn: 'Taketa Patra Review By',          nameNp: 'रुजु गर्ने',                   templateName: 'TaketaPatrasReviewBy',            key: 'reviewBy',                      foreignKey: 'review_by', type: 'number', lang: 'np', required: false },
      TaketaPatrasReviewPosition:      { nameEn: 'Taketa Patra Review Position',    nameNp: 'रुजु गर्नेको पद',              templateName: 'TaketaPatrasReviewPosition',      key: 'reviewBy',                      foreignKey: 'review_position', type: 'number', lang: 'np', required: false },
      TaketaPatrasApprovedBy:          { nameEn: 'Taketa Patra Approved By',        nameNp: 'प्रमाणित गर्ने',               templateName: 'TaketaPatrasApprovedBy',          key: 'approvedBy',                    foreignKey: 'approved_by', type: 'number', lang: 'np', required: false },
      TaketaPatrasApprovedPosition:    { nameEn: 'Taketa Patra Approved Position',  nameNp: 'प्रमाणित गर्नेको पद',          templateName: 'TaketaPatrasApprovedPosition',    key: 'approvedBy',                    foreignKey: 'approved_position', type: 'number', lang: 'np', required: false },
    },
  },

  credit_renew: {
    labelEn: 'Credit Renew',
    labelNp: 'ऋण नवीकरण',
    variables: {
      RenewLoanAmount:        { nameEn: 'Renew Loan Amount',       nameNp: 'नवीकरण ऋण रकम',        templateName: 'RenewLoanAmount',        key: 'loanAmount',     foreignKey: false, type: 'number', lang: 'np', required: false },
      RenewLoanAmountWords:   { nameEn: 'Renew Loan Amount Words', nameNp: 'नवीकरण ऋण रकम (अक्षरमा)',templateName: 'RenewLoanAmountWords',  key: 'loanAmountWords',foreignKey: false, type: 'string', lang: 'np', required: false },
      RenewInterestRate:      { nameEn: 'Renew Interest Rate',     nameNp: 'नवीकरण ब्याजदर',        templateName: 'RenewInterestRate',      key: 'interestRate',   foreignKey: false, type: 'string', lang: 'np', required: false },
      RenewLoanPeriod:        { nameEn: 'Renew Loan Period',       nameNp: 'नवीकरण अवधि',           templateName: 'RenewLoanPeriod',        key: 'loanPeriod',     foreignKey: false, type: 'string', lang: 'np', required: false },
      RenewPaymentAmount:     { nameEn: 'Renew Payment Amount',    nameNp: 'किस्ता भुक्तानी रकम',   templateName: 'RenewPaymentAmount',     key: 'paymentAmount',  foreignKey: false, type: 'string', lang: 'np', required: false },
      RenewPaymentAmountWords:{ nameEn: 'Renew Payment Amount (Words)',nameNp: 'किस्ता भुक्तानी रकम अक्षरमा',templateName: 'RenewPaymentAmountWords',key: 'paymentAmountWords',foreignKey: false, type: 'string', lang: 'np', required: false },
      RenewPaymentType:       { nameEn: 'Renew Payment Type',      nameNp: 'किस्ता भुक्तानी तरिका', templateName: 'RenewPaymentType',       key: 'paymentType',    foreignKey: false, type: 'string', lang: 'np', required: false },
    },
  },

  mortage_appraisal: {
    labelEn: 'Mortgage Appraisal (धितो मूल्यांकन)',
    labelNp: 'धितो मूल्यांकन',
    variables: {
      TotalLandNHouseDV:                  { nameEn: 'Total Land & House DV',         nameNp: 'कुल जग्गा घर DV',                 templateName: 'TotalLandNHouseDV',                  key: 'totalAssessmentValue',    foreignKey: false,  type: 'number', lang: 'np', required: false },
      MortageAppraisalObservationStaff:   { nameEn: 'Observation Staff',             nameNp: 'धितो परियोजना अवलोकन गर्ने',      templateName: 'MortageAppraisalObservationStaff',   key: 'observationStaff',        foreignKey: false,  type: 'string', lang: 'np', required: false },
      MortageAppraisalViewDateBs:         { nameEn: 'Mortage View Date (BS)',         nameNp: 'धितो अवलोकन मिति (वि.सं.)',        templateName: 'MortageAppraisalViewDateBs',         key: 'mortageViewDateBs',       foreignKey: false,  type: 'string', lang: 'np', required: false },
      MortageAppraisalViewDate:           { nameEn: 'Mortage View Date (AD)',         nameNp: 'धितो अवलोकन मिति',                 templateName: 'MortageAppraisalViewDate',           key: 'mortageViewDate',         foreignKey: false,  type: 'string', lang: 'np', required: false },
      MortageAppraisalProvince:           { nameEn: 'Province',                       nameNp: 'प्रदेश',                            templateName: 'MortageAppraisalProvince',           key: 'province',                foreignKey: 'province', type: 'number', lang: 'np', required: false },
      MortageAppraisalDistrict:           { nameEn: 'District',                       nameNp: 'जिल्ला',                            templateName: 'MortageAppraisalDistrict',           key: 'district',                foreignKey: 'district', type: 'number', lang: 'np', required: false },
      MortageAppraisalLocalGovt:          { nameEn: 'Local Govt',                     nameNp: 'स्थानीय तह',                        templateName: 'MortageAppraisalLocalGovt',          key: 'localgovt',               foreignKey: 'localgovt',type: 'number', lang: 'np', required: false },
      MortageAppraisalWard:               { nameEn: 'Ward',                           nameNp: 'वडा',                               templateName: 'MortageAppraisalWard',               key: 'ward',                    foreignKey: false,  type: 'string', lang: 'np', required: false },
      MortageAppraisalTole:               { nameEn: 'Tole',                           nameNp: 'टोल',                               templateName: 'MortageAppraisalTole',               key: 'tole',                    foreignKey: false,  type: 'string', lang: 'np', required: false },
      MortageAppraisalDescriptionBusinessProject:{ nameEn: 'Business Project Description',nameNp: 'व्यवसाय/परियोजनाको संक्षिप्त विवरण',templateName: 'MortageAppraisalDescriptionBusinessProject',key:'descriptionBusinessProject',foreignKey: false, type: 'string', lang: 'np', required: false },
      MortageAppraisalPerformancePreviousLoan:{ nameEn: 'Previous Loan Performance', nameNp: 'अघिल्लो कर्जाको प्रदर्शन',         templateName: 'MortageAppraisalPerformancePreviousLoan',key:'performancePreviousLoan',foreignKey: false,type: 'string', lang: 'np', required: false },
      MortageAppraisalFinancingAbility:   { nameEn: 'Financing Ability',             nameNp: 'वित्तीय भुक्तानी क्षमता',           templateName: 'MortageAppraisalFinancingAbility',   key: 'financingAbility',        foreignKey: false,  type: 'string', lang: 'np', required: false },
      MortageAppraisalConclusionOpinion:  { nameEn: 'Conclusion / Opinion',          nameNp: 'निष्कर्ष / राय',                    templateName: 'MortageAppraisalConclusionOpinion',  key: 'conclusionOpinion',       foreignKey: false,  type: 'string', lang: 'np', required: false },
      MortageAppraisalLandCalculation:    { nameEn: 'Land Calculation',              nameNp: 'भूमि गणना',                          templateName: 'MortageAppraisalLandCalculation',    key: 'landCalculation',         foreignKey: false,  type: 'string', lang: 'np', required: false },
      MortageAppraisalHouseCalculation:   { nameEn: 'House Calculation',             nameNp: 'घर गणना',                            templateName: 'MortageAppraisalHouseCalculation',   key: 'houseCalculation',        foreignKey: false,  type: 'string', lang: 'np', required: false },
      MortageAppraisalWriterBy:           { nameEn: 'Writer By',                     nameNp: 'तयार गर्ने',                          templateName: 'MortageAppraisalWriterBy',           key: 'writerBy',                foreignKey: 'writer_by', type: 'number', lang: 'np', required: false },
      MortageAppraisalWriterPosition:     { nameEn: 'Writer Position',               nameNp: 'तयार गर्नेको पद',                    templateName: 'MortageAppraisalWriterPosition',     key: 'writerBy',                foreignKey: 'writer_position', type: 'number', lang: 'np', required: false },
      MortageAppraisalReviewBy:           { nameEn: 'Review By',                     nameNp: 'रुजु गर्ने',                          templateName: 'MortageAppraisalReviewBy',           key: 'reviewBy',                foreignKey: 'review_by', type: 'number', lang: 'np', required: false },
      MortageAppraisalReviewPosition:     { nameEn: 'Review Position',               nameNp: 'रुजु गर्नेको पद',                    templateName: 'MortageAppraisalReviewPosition',     key: 'reviewBy',                foreignKey: 'review_position', type: 'number', lang: 'np', required: false },
      MortageAppraisalApprovedBy:         { nameEn: 'Approved By',                   nameNp: 'प्रमाणित गर्ने',                      templateName: 'MortageAppraisalApprovedBy',         key: 'approvedBy',              foreignKey: 'approved_by', type: 'number', lang: 'np', required: false },
      MortageAppraisalApprovedPosition:   { nameEn: 'Approved Position',             nameNp: 'प्रमाणित गर्नेको पद',                templateName: 'MortageAppraisalApprovedPosition',   key: 'approvedBy',              foreignKey: 'approved_position', type: 'number', lang: 'np', required: false },
    },
  },

  valuation_home: {
    labelEn: 'Home Valuation (घर मूल्यांकन)',
    labelNp: 'घर मूल्यांकन',
    variables: {
      ValuationHomeKittaNumber:      { nameEn: 'House Kitta Number',          nameNp: 'घरको कित्ता नं.',          templateName: 'ValuationHomeKittaNumber',      key: 'kittaNumber',              foreignKey: false, type: 'string', lang: 'np', required: false },
      ValuationHomeAreaType:         { nameEn: 'Area Type',                   nameNp: 'घरको क्षेत्रफलको प्रकार',  templateName: 'ValuationHomeAreaType',         key: 'areaTypes',                foreignKey: false, type: 'string', lang: 'np', required: false },
      ValuationHomeArea:             { nameEn: 'Area (No. of Floors)',        nameNp: 'घरको क्षेत्रफल',           templateName: 'ValuationHomeArea',             key: 'noOfFloor',                foreignKey: false, type: 'string', lang: 'np', required: false },
      ValuationHouseCompletedDateBs: { nameEn: 'House Completed Date (BS)',   nameNp: 'घर सम्पन्न मिति (वि.सं.)', templateName: 'ValuationHouseCompletedDateBs', key: 'homeCompletedDateBs',      foreignKey: false, type: 'string', lang: 'np', required: false },
      ValuationHouseCompletedDate:   { nameEn: 'House Completed Date (AD)',   nameNp: 'घर सम्पन्न मिति',          templateName: 'ValuationHouseCompletedDate',   key: 'homeCompletedDate',        foreignKey: false, type: 'string', lang: 'np', required: false },
      ValuatioHomeCost:              { nameEn: 'Home Cost Per Floor',         nameNp: 'घरको प्रति तला लागत',      templateName: 'ValuatioHomeCost',              key: 'pricePerFloor',            foreignKey: false, type: 'number', lang: 'np', required: false },
      ValuatioHomeActualCost:        { nameEn: 'Home Actual Value',           nameNp: 'घरको वास्तविक मुल्य',      templateName: 'ValuatioHomeActualCost',        key: 'homeActualValue',          foreignKey: false, type: 'number', lang: 'np', required: false },
      ValuatioDeductedAmountPercentage:{ nameEn: 'Deducted Amount (%)',       nameNp: 'ह्रास कट्टी (%)',           templateName: 'ValuatioDeductedAmountPercentage',key:'deductedAmountPercentage', foreignKey: false, type: 'number', lang: 'np', required: false },
    },
  },

};

export function getAllTemplateVariables(): Array<TemplateVariable & { group: string; groupLabelEn: string; groupLabelNp: string }> {
  const result: Array<TemplateVariable & { group: string; groupLabelEn: string; groupLabelNp: string }> = [];
  for (const [group, groupData] of Object.entries(TEMPLATE_VARIABLES)) {
    for (const variable of Object.values(groupData.variables)) {
      result.push({ ...variable, group, groupLabelEn: groupData.labelEn, groupLabelNp: groupData.labelNp });
    }
  }
  return result;
}
