// ************************************************************************
// Stampa anagrafiche (ba6 -0)
// Settaggio stampe
// ************************************************************************

#include "ba6100.h"
static const char sep[] = 
"-----------------------------------------------------------------" 
"-----------------------------------------------------------------" ;

void TAnaprint_app::set_scheda_anagiu()
{
  set_row(1,"SCHEDA SOCIETA'");
  set_row(2,"");
  set_row(3,"@bCodice@r@15g@u@pn@25g@r@bRag.Sociale @r@u@50s",
          FLD(LF_ANAG,"CODANAGR","@@@@@"),
          FLD(LF_ANAG,"RAGSOC"));
  set_row(4,"@25g@bEvent. sigla@r@40g@u@20s",
          FLD(LF_ANAGGIU,"SIGLA"));
  set_row(5,"Oggetto soc.@15g@60s",
          FLD(LF_ANAGGIU,"OGGSOC"));
  set_row(6,"Codice Fiscale@20g@16s@46gPartita IVA @12s", 
          FLD(LF_ANAG,"COFI"),
          FLD(LF_ANAG,"PAIV"));
  set_row(7,"Riferimento@15g@20s", FLD(LF_ANAGGIU,"PERRIF"));
  set_row(8,"");

  set_row(9,"Sede legale@20gIndirizzo @35s",
          FLD(LF_ANAG,"INDRES"));
  TString com = current_cursor()->curr(LF_ANAG).get("COMRES");
  TRectype& cc = look_com(com);

  TString a = cc.get("DENCOM");
  TString b = cc.get("CAPCOM");
  TString c = cc.get("PROVCOM");
  set_row(10,"@20gComune    %-24s@53gProvincia %2s@68gCAP %5s",
          (const char*)a,
          (const char*)c,
          (const char*)b);
  
  set_row(11,"@20gTelefono  @u@10s@r/@u@30s@r",
          FLD(LF_ANAG,"PTELRF"),
          FLD(LF_ANAG,"TELRF"));
  set_row(12,"");

  set_row(13,"Domicilio fiscale@20gIndirizzo @35s",
          FLD(LF_ANAG,"INDRF"));  
  com = current_cursor()->curr(LF_ANAG).get("COMRF");
  cc = look_com(com);
  a = cc.get("DENCOM");
  b = cc.get("CAPCOM");
  c = cc.get("PROVCOM");
  set_row(14,"@20gComune    %-24s@53gProvincia %2s@68gCAP %5s",
          (const char*)a,
          (const char*)c,
          (const char*)b);
  
  set_row(15,"");
  set_row(16,"Corrispondenza@20gIndirizzo @35s @35s",
          FLD(LF_ANAG,"INDCORR"), FLD(LF_ANAG, "LOCCORR"));
  
  com = current_cursor()->curr(LF_ANAG).get("COMCORR");
  cc = look_com(com);
  a = cc.get("DENCOM");
  b = cc.get("CAPCOM");
  c = cc.get("PROVCOM");
  
  set_row(17,"@20gComune    %-24s@53gProvincia %2s@68gCAP %5s",
          (const char*)a,
          (const char*)c,
          (const char*)b);
  
  com = current_cursor()->curr(LF_ANAG).get("STATOCORR");
  if (com.empty()) 
    a = "Italia";
  else { a = look_tab("%STA",com,"S0"); }

  set_row(18,"@20gStato     %s",(const char*)a);
  set_row(19,"");
  set_row(20,"Telex@20g@u@10s@r/@u@30s@r",
          FLD(LF_ANAG,"PTLEXRF"),
          FLD(LF_ANAG,"TLEXRFX"));
  set_row(21,"Telefax@20g@u@10s@r/@u@30s@r",
          FLD(LF_ANAG,"PFAXRF"),
          FLD(LF_ANAG,"FAXRF"));
  set_row(22,"");
  set_row(23,"Ufficio imposte@20gNumero   @pn",
          FLD(LF_ANAG,"UFFIIDD","@@@"));

  com = current_cursor()->curr(LF_ANAG).get("UFFIIDD");
  a = look_tab("%UID",com,"S6");
  c = look_tab("%UID",com,"S4");
  cc = look_com(a);
  a = cc.get("DENCOM");
  b = cc.get("PROVCOM");

  set_row(24,"@20gComune   %-24s@53gProvincia %2s",
          (const char*)a,
          (const char*)b);
  set_row(25,"");
  set_row(26,"Esattoria@20gC/C n.   %-20s",(const char*)c);
  set_row(27,"@20gComune   %-24s@53gProvincia %2s",
          (const char*)a,
          (const char*)b);
  set_row(28,"@20gCodice contribuente  @10s",
          FLD(LF_ANAG,"CODCONTR"));
  set_row(29,""); set_row(30,"");
  
  // dati atto costitutivo etc
  set_row(31,"Dati atto costitutivo e statuto"); set_row(32,"");
  set_row(33,"Estremi@20g@60s", FLD(LF_ANAGGIU,"ESTROMOL"));
  set_row(34,"Omologa@25g@ld@41gData iscrizione@70g@ld",
          FLD(LF_ANAGGIU,"DATAOMOL"),
          FLD(LF_ANAGGIU,"DATAISCRIZ"));
  set_row(35,"Data costituzione@25g@ld@41gDurata sino@70g@ld",
          FLD(LF_ANAGGIU,"DATACOST"),
          FLD(LF_ANAGGIU,"DATASCAD"));
  set_row(36,"Termine appr. bilancio@25g@d@41gApprovazione bilancio@70g@d",
          FLD(LF_ANAGGIU,"DATATAPPBI"),
          FLD(LF_ANAGGIU,"DATAAPPBIL"));
  set_row(37,"Scad.org.amministrativo@25g@d@41gScadenza collegio "
          "sindacale@70g@d",
          FLD(LF_ANAGGIU,"DATASORAMM"),
          FLD(LF_ANAGGIU,"DATASCSIND"));
  //  set_row(38,"Fine esercizio@25g@d", FLD(LF_ANAGGIU,"???"));
  set_row(39,"");
  set_row(40,"@5gCapit.sociale@24gCapit.versato@47g"
          "Fatturato@65gN.azioni@74gValore");
  set_row(41,"@pn @pn @pn @61g@n @pn",
          FLD(LF_ANAGGIU,"CAPSOC","###.###.###.###.###"),
          FLD(LF_ANAGGIU,"CAPVER","###.###.###.###.###"),
          FLD(LF_ANAGGIU,"FATT","###.###.###.###.###"),
          FLD(LF_ANAGGIU,"NAZIONI"),
          FLD(LF_ANAGGIU,"VALNOM","###.###.###.###"));
  set_row(42,"");

  set_row(43,"Dati Statistici@20gNon residente@61g@f",
          FLD(LF_ANAG,"SOGGNRES"));
  set_row(44,"@20gEventi naturali eccezionali@61g@s",
          FLD(LF_ANAG,"EVECC"));
  set_row(45,"@20gResidente in zone terremotate@61g@f",
          FLD(LF_ANAG,"RESZTERR"));
  // *TBI* traduzione natura giuridica
  set_row(46,"@20gNatura giuridica@61g@s",
          FLD(LF_ANAGGIU,"NATGIU"));
  set_row(47,"@20gStato societa'@51g@20,rt",
          FLD(LF_ANAGGIU,"STATOSOC"));
  set_row(48,"@20gSituazione societa'@51g@20,rt",
          FLD(LF_ANAGGIU,"SITSOC"));
  
  set_row(49,"");
  a = look_tab("%SST",current_cursor()->curr(LF_ANAG).get("CODSTAT1"),"S0");
  set_row(50,"@20gSigla stat.1 @pn %-50s",
          FLD(LF_ANAG,"CODSTAT1","@@@@@@@"), (const char*)a); 
  a = look_tab("%SST",current_cursor()->curr(LF_ANAG).get("CODSTAT2"),"S0");
  set_row(51,"@20gSigla stat.2 @pn %-50s",
          FLD(LF_ANAG,"CODSTAT2","@@@@@@@"), (const char*)a); 
  a = look_tab("%SST",current_cursor()->curr(LF_ANAG).get("CODSTAT3"),"S0");
  set_row(52,"@20gSigla stat.3 @pn %-50s",
          FLD(LF_ANAG,"CODSTAT3","@@@@@@@"), (const char*)a); 

  // NOTE
  set_row(53,"");
  set_row(54,"Note attivato storico");
  set_row(55,"@6g@70s",FLD(LF_ANAGGIU,"NOTE1"));
  set_row(56,"@6g@70s",FLD(LF_ANAGGIU,"NOTE2"));
  set_row(57,"@6g@70s",FLD(LF_ANAGGIU,"NOTE3"));
  set_row(58,"@6g@70s",FLD(LF_ANAGGIU,"NOTE4"));
  set_row(59,"@6g@70s",FLD(LF_ANAGGIU,"NOTE5"));
  
  for (int i = 60; i <= printer().formlen(); i++)
    set_row(i, "");
}

void TAnaprint_app::set_scheda_anafis()
{
  set_row(1,"SCHEDA PERSONA FISICA");
  set_row(2,"");
  set_row(3,"@bCodice  @r@u@pn@20g@r@bCognome @r@u@S",
          FLD(LF_ANAG,"CODANAGR","@@@@@"),
          FLD(LF_ANAG,"RAGSOC",0,29));
  set_row(4,"@20g@bNome    @r@u@s",
          FLD(LF_ANAG,"RAGSOC",30,50));
  set_row(5,"");
  set_row(6,"Codice Fiscale@20g@s@46gPartita IVA @s", 
          FLD(LF_ANAG,"COFI"),
          FLD(LF_ANAG,"PAIV"));
  set_row(7,"Data di nascita@20g@ld@32g@t@46gNazionalita' @s",
          FLD(LF_ANAGFIS,"DATANASC"),
          FLD(LF_ANAGFIS,"SESSO"),
          FLD(LF_ANAGFIS,"NAZION"));
  set_row(8,"");
  set_row(9,"Residenza@20gIndirizzo @s",
          FLD(LF_ANAG,"INDRES"));

  TString com = current_cursor()->curr(LF_ANAG).get("COMRES");
  TRectype& cc = look_com(com);
  TString a = cc.get("DENCOM");
  TString b = cc.get("CAPCOM");
  TString c = cc.get("PROVCOM");

  set_row(10,"@20gComune    %s@53gProvincia %s@68gCAP %s",
          (const char*)a,
          (const char*)c,
          (const char*)b
          );
  
  set_row(11,"@20gTelefono  @u@s@r/@u@s@r",
          FLD(LF_ANAG,"PTELRF"),
          FLD(LF_ANAG,"TELRF"));
  set_row(12,"");
  set_row(13,"Domicilio fiscale@20gIndirizzo @s",
          FLD(LF_ANAG,"INDRF"));
  
  com = current_cursor()->curr(LF_ANAG).get("COMRF");
  cc = look_com(com);
  a = cc.get("DENCOM");
  b = cc.get("CAPCOM");
  c = cc.get("PROVCOM");
  
  set_row(14,"@20gComune    %s@53gProvincia %s@68gCAP %s",
          (const char*)a,
          (const char*)c,
          (const char*)b
          );
  
  set_row(15,"");
  set_row(16,"Corrispondenza@20gIndirizzo @s  @s",
          FLD(LF_ANAG,"INDCORR"), FLD(LF_ANAG, "LOCCORR"));
  
  com = current_cursor()->curr(LF_ANAG).get("COMCORR");
  cc = look_com(com);
  a = cc.get("DENCOM");
  b = cc.get("CAPCOM");
  c = cc.get("PROVCOM");
  
  set_row(17,"@20gComune    %s@53gProvincia %s@68gCAP %s",
          (const char*)a,
          (const char*)c,
          (const char*)b
          );
  
  com = current_cursor()->curr(LF_ANAG).get("STATOCORR");
  if (com.empty()) 
    a = "Italia";
  else { a = look_tab("%STA",com,"S0"); }

  set_row(18,"@20gStato     %s",(const char*)a);
  set_row(19,"");
  set_row(20,"Telex@20g@u@s@r/@u@s@r",
          FLD(LF_ANAG,"PTLEXRF"),
          FLD(LF_ANAG,"TLEXRFX"));
  set_row(21,"Telefax@20g@u@s@r/@u@s@r",
          FLD(LF_ANAG,"PFAXRF"),
          FLD(LF_ANAG,"FAXRF"));
  set_row(22,"");
  set_row(23,"Ufficio imposte@20gNumero   @pn",
          FLD(LF_ANAG,"UFFIIDD","@@@"));

  com = current_cursor()->curr(LF_ANAG).get("UFFIIDD");
  a = look_tab("%UID",com,"S6");
  c = look_tab("%UID",com,"S4");
  cc = look_com(a);
  a = cc.get("DENCOM");
  b = cc.get("PROVCOM");

  set_row(24,"@20gComune   %s@53gProvincia %s",
          (const char*)a,
          (const char*)b);
  set_row(25,"");
  set_row(26,"Esattoria@20gC/C n.   %s",(const char*)c);
  set_row(27,"@20gComune   %s@53gProvincia %s",
          (const char*)a,
          (const char*)b);
  set_row(28,"@20gCodice contribuente  @s",
          FLD(LF_ANAG,"CODCONTR"));
  set_row(29,"");
  
  // cerca coniuge
  com = current_cursor()->curr(LF_ANAGFIS).get("CODCONIUGE");
  TLocalisamfile& af = current_cursor()->file(LF_ANAG);
  TRecnotype last = af.recno();
  int k = af.getkey();

  if (!com.empty())
  {
    af.curr().zero();
    af.setkey(1);
    af.put("CODANAGR",com);
    af.put("TIPOA","F");
    af.read();
  }
  a = af.get("RAGSOC");
  if (!com.empty())
  {
    af.setkey(k);
    af.readat(last);
    b = a.sub(30); a = a.left(20);
  }
  else { a = ""; b = ""; }
  
  set_row(30,"Coniuge   @pn@20gCognome  %s",
          FLD(LF_ANAGFIS,"CODCONIUGE","@@@@@"),
          (const char*)a);
  set_row(31,"@20gNome     %s", (const char*)b);


  set_row(32,"Dati Statistici@20gNon residente@53g@f",
          FLD(LF_ANAG,"SOGGNRES"));
  set_row(33,"@20gEventi naturali eccezionali@53g@s",
          FLD(LF_ANAG,"EVECC"));
  set_row(34,"@20gResidente in zone terremotate@53g@f",
          FLD(LF_ANAG,"RESZTERR"));
  set_row(35,"@20gStato civile@53g@t",
          FLD(LF_ANAGFIS,"STATCIV"));
  set_row(36,"@20gData variazione stato civile@53g@D",
          FLD(LF_ANAGFIS,"DVARSCIV"));
  set_row(37,"@20gTitolo di studio@53g@t",
          FLD(LF_ANAGFIS,"TITSTU"));
  //  set_row(37,"@20gProvincia lavoro dipendente@61g@s");  
  set_row(38,""); set_row(39,""); set_row(40,""); set_row(41,"");
  
  a = look_tab("%SST",
               current_cursor()->curr(LF_ANAG).get("CODSTAT1"),"S0");
  set_row(42,"@20gSigla stat.1 @pn %s",
          FLD(LF_ANAG,"CODSTAT1","@@@@@@@"), (const char*)a); 
  a = look_tab("%SST",current_cursor()->curr(LF_ANAG).get("CODSTAT2"),"S0");
  set_row(43,"@20gSigla stat.2 @pn ",
          FLD(LF_ANAG,"CODSTAT2","@@@@@@@"), (const char*)a); 
  a = look_tab("%SST",current_cursor()->curr(LF_ANAG).get("CODSTAT3"),"S0");
  set_row(44,"@20gSigla stat.3 @pn ",
          FLD(LF_ANAG,"CODSTAT3","@@@@@@@"), (const char*)a); 
  
  for (int i = 45; i <= printer().formlen(); i++)
    set_row(i, "");
}

void TAnaprint_app::set_scheda_ditta()
{
  set_row(1,"@bSCHEDA DITTA  @r@u@pn@r@20g@bDenominaz. sociale  @r@u@s",
          FLD(LF_NDITTE,"CODDITTA","@@@@@"),
          FLD(LF_NDITTE,"RAGSOC"));
  set_row(2,"Albo artigiani@20gIscrizione all'albo  @f@55gnum. @s",
          FLD(LF_NDITTE,"ARTIG"),
          FLD(LF_NDITTE,"NISCRAA"));
  TString a = 
    look_com(current_cursor()->curr(LF_NDITTE).get("COMAA")).get("DENCOM");
  set_row(3,"@20gLocalita'  %s@55gData @D", 
          (const char*)a,
          FLD(LF_NDITTE,"DATAISCRAA"));
  set_row(4,"Attivita'");

  a = look_tab("%AIS",current_cursor()->
               curr(LF_NDITTE).get("CODATTPREV")); // TBC
  
  set_row(5,"prevalente@20gCod. @pn    Desc. %s",
          FLD(LF_NDITTE,"CODATTPREV","@@@@@"), 
          (const char*)a);
  //  set_row(6,"@20gGestione piu' attivita'");
  set_row(6,"@20gFrequenza versamenti@54g@t",
          FLD(LF_NDITTE,"FREQVIVA"));
  set_row(7,"@20gTenuta contabilita' ordinaria@54g@f",
          FLD(LF_NDITTE,"CONTORD"));
  set_row(8,"@20gDatore di lavoro@54g@t",
          FLD(LF_NDITTE,"DATLAV"));
  set_row(9,"@20gData inizio attivita'@54g@D",
          FLD(LF_NDITTE,"DINIZIOATT"));
  set_row(10,"Altri dati@20gRiferimento @u@s@r  @54gTel. @u@4S@r/@u@S@r",
          FLD(LF_NDITTE,"PERRIF"),
          FLD(LF_NDITTE,"PTEL"),
          FLD(LF_NDITTE,"TEL"));
  set_row(11,"@20gGestione magazzino   @f",
          FLD(LF_NDITTE,"REGMAG"));
  set_row(12,"@20gNumero unita' locali @n@54gNum.enasarco @s",
          FLD(LF_NDITTE,"NULC"),
          FLD(LF_NDITTE,"NENASARCO"));
  set_row(13,"");
  /* TBI: banca di appoggio */
  set_row(14,"Stato@20g@t",FLD(LF_NDITTE,"STATOSOC"));
  set_row(15,""); set_row(16,"");
}

void TAnaprint_app::set_scheda_attiv()
{
  TString dio = look_tab("%AIS",current_cursor()->
                         curr(LF_ATTIV).get("CODATT"),"S0");
  
  set_row(1,"@bATTIVITA'@r   @pn@20g@bDescrizione:@r     %s",
          FLD(LF_ATTIV,"CODATT","@@@@@"), (const char*)dio);
  
  set_row(2,"@20gRegime agricolo@67g@f",
          FLD(LF_ATTIV,"REGAGR"));
  set_row(3,"@20gRegime speciale agenzie di viaggio (art.74ter)@67g@f",
          FLD(LF_ATTIV,"REG74TER"));
  set_row(4,"@20gAttivita' stagionale@67g@f",
          FLD(LF_ATTIV,"ATTSTAG"));
  set_row(5,"@20gAttivita' esercitata in piu' luoghi@67g@f",
          FLD(LF_ATTIV,"ESLUOGHID"));
  set_row(6,"@20gData inizio attivita'@60g@D",
          FLD(LF_NDITTE,"DINIZIOATT"));
  set_row(7,"@20gData variazione attivita'@60g@D",
          FLD(LF_ATTIV,"DATAVARIVA"));
  set_row(8,"@20gData cessazione attivita'@60g@D",
          FLD(LF_ATTIV,"DCESSATT"));
  set_row(9,"@20g@bCONSERVAZIONE SCRITTURE CONTABILI@r");

  // cerca depositario
  TString com = get_field(LF_ATTIV,"CODANGRDS");
  TString a   = get_field(LF_ATTIV,"TIPOADS");
  TLocalisamfile& af = current_cursor()->file(LF_ANAG);
  TRecnotype last = af.recno();
  af.curr().zero();
  int k = af.getkey();
  af.setkey(1);
  af.curr().put("CODANAGR",com);
  af.curr().put("TIPOA",a);

  TString b = af.curr().get("RAGSOC");
  com = af.curr().get("INDRF");
  if (com.empty()) com = af.curr().get("INDRES");
  TString c = af.curr().get("COMRF");
  if (c.empty) c = af.curr().get("COMRES");
  TRectype& cm = look_com(a);
  af.readat(last);
  af.setkey(k);

  set_row(10,"Depositario@20gCodice @pn (%s): %s",
          FLD(LF_ATTIV,"CODANGRDS"),
          c == 'F' ? "p.f." : "p.g.",
          (const char*)b);
  set_row(11,"@20gIndirizzo %s", (const char*)c);
  a = cm.get("DENCOM"); b = cm.get("PROVCOM"); c = cm.get("CAPCOM");
  set_row(12,"@20gComune    %s@53gProvincia %s@68gC.a.p. %s",
          (const char*)a, (const char*)b, (const char*)c);
  set_row(13,"@20gTenuta scritture parziali@68g@f",
          FLD(LF_ATTIV,"TSCRPARZ"));
  set_row(14,"Luogo@20gIndirizzo @s @s",
          FLD(LF_ATTIV,"INDCS"),
          FLD(LF_ATTIV,"CAPCS"));
  cm = look_com(get_field(LF_ATTIV,"COMCS"));
  a = cm.get("DENCOM"); b = cm.get("PROVCOM"); c = cm.get("CAPCOM");
  set_row(15,"@20gComune    %s@53gProvincia %s@68gC.a.p. %s",
          (const char*)a, (const char*)b, (const char*)c);
  set_row(16,"@20gTelefono  ");
  set_row(17,""); set_row(18,"");
}

void TAnaprint_app::set_scheda_registro()
{
  /* TBI */
}

void TAnaprint_app::set_scheda_unloc()
{
  set_row(1,"@bUNITA' LOCALE@20gCodice    @r@u@pn@r",
          FLD(LF_UNLOC,"CODULC","@@@"));
  set_row(2,"@20g@bIndirizzo@r@u @s@r@68g@bNumero @r@u@s",
          FLD(LF_UNLOC,"INDULC"),
          FLD(LF_UNLOC,"CIVULC"));
  TRectype& cc = look_com(get_field(LF_UNLOC,"COMULC"));
  TString a = cc.get("DENCOM");
  TString b = cc.get("PROVCOM");
  TString c = cc.get("CAPCOM");
  set_row(3,"@20g@bComune@r@4j@u%s@r@53g@bProvincia@r @u%s@r@68g@b"
          "C.a.p.@r @u%s",
          (const char*)a, (const char*)b, (const char*)c);
  set_row(4,""); 
  set_row(5,"C.C.I.A.A.@20gNumero@30g@pn",
          FLD(LF_UNLOC,"NUMCCIAA","@@@@@@@"));
  cc = look_com(get_field(LF_UNLOC,"COMCCIAA"));
  a  = cc.get("DENCOM");
  set_row(6,"@20gComune@30g%s@53gN. Meccanografico @n",
          (const char*)a,
          FLD(LF_UNLOC,"NUMMECC"));
  set_row(7,"@20gData iscrizione  @D@48gData ultima variazione  @D",
          FLD(LF_UNLOC,"DATAICCIAA"),
          FLD(LF_UNLOC,"DATAVCCIAA"));
  set_row(8,"");
  set_row(9,"Autorizzazioni@20gN. R.E.C. @30g@pn@41gComunale n. @pn "
          "PS n. @pn Altre @s",
          FLD(LF_UNLOC,"NUMREC","@@@@@@@"),
          FLD(LF_UNLOC,"AUTCOM","@@@@@"),
          FLD(LF_UNLOC,"AUTPS","@@@@@@@"),
          FLD(LF_UNLOC,"ALTAUT"));
  set_row(10,"");
  set_row(11,"Posizioni@20gINPS n.@30g@s INAIL n. @s",
          FLD(LF_UNLOC,"POSINPS"),
          FLD(LF_UNLOC,"POSINAIL"));
  set_row(12,"");
  set_row(13,"Tribunale@20gRegistro@30g@pn@44gVolume@52g@pn@64gFascicolo @pn",
          FLD(LF_UNLOC,"REGTRIB","@@@@@@@@@"),
          FLD(LF_UNLOC,"VOLTRIB","@@@@@@@"),
          FLD(LF_UNLOC,"FASCTRIB","@@@@@"));
  set_row(14,"");
  set_row(15,"Locali destinati");
  set_row(16,"all'attivita'@20gMq.Locali @pn  Di cui a magazzino  @pn",
          FLD(LF_UNLOC,"MQULC","@@@@@"),
          FLD(LF_UNLOC,"MQULCMAG","@@@@@"));
  set_row(17,""); set_row(18,"");
}

void TAnaprint_app::set_scheda_socio()
{
  int rw;
  TString b1, b2, b3;

  TLocalisamfile& ana = current_cursor()->file(LF_ANAG);
  TLocalisamfile& soc = current_cursor()->file(LF_SOCI);
  TRecnotype      rno = ana.recno();
  int k               = ana.getkey();

  ana.zero();
  ana.put("TIPOA",soc.get("TIPOASOC"));
  ana.put("CODANAGR",soc.get("CODANAGRSO"));
  ana.read();

  TString codconiuge = "";
  TLocalisamfile* anaf;    

  if (soc.get("TIPOASOC") == "F")
  {
    TRecnotype rn = 0; int kk = 1;

    if (_pr_what == anafis)
    {
      anaf = &current_cursor()->file(LF_ANAGFIS);
      rn  = anaf->recno();
      kk  = anaf->getkey();
    }
    else
    { 
      anaf = new TLocalisamfile(LF_ANAGFIS);
    }

    anaf->zero();
    anaf->put("CODANAGR",soc.get("CODANAGRSO"));
    anaf->read();
    TRectype& com = look_com(anaf->get("COMNASC"));

    set_row(1,"@bSOCIO@r  @s / @pn@20g@bCognome@r @s",
            FLD(LF_SOCI,"TIPOASOC"),
            FLD(LF_SOCI,"CODANAGRSO","@@@@@"),
            FLD(LF_ANAG,"RAGSOC",0,29));
    set_row(2,"@20g@bNome@r    @s@53g@bCod.fisc.@r @s",
            FLD(LF_ANAG,"RAGSOC",30,50),
            FLD(LF_ANAG,"COFI"));
    set_row(3,"");

    b1 = anaf->get_date("DATANASC").string(full);
    b2 = anaf->get("SESSO");
    b3 = anaf->get("STATONASC").empty() ? 
      "Italiana" : anaf->get("STATONASC");

    set_row(4,"Nascita@20gData@30g%S@42gSesso %S@53gCittadinanza %S",
            (const char*)b1,
            (const char*)b2,
            (const char*)b3);

    b1 = com.get("DENCOM");
    b2 = com.get("PROVCOM");
    
    set_row(5,"@20gComune@30g%S@53gProvincia %S",
            (const char*)b1,
            (const char*)b2);
    rw = 6;

    codconiuge = "Cod.coniuge ";
    codconiuge << anaf->get("CODCONIUGE");
    
    if (_pr_what == anafis)
    { anaf->setkey(kk); anaf->readat(rn); }
    else delete anaf;
  }
  else 
  {
    set_row(1,"@bSOCIO@r  @S / @pN@20gR.soc. @s");
    set_row(2,"@20gCod.fisc. @s @P.IVA @s");
    rw = 3;
  }
  set_row(rw,"");
  
  TRectype& com = look_com(ana.get("COMRES"));

  b1 = com.get("DENCOM");
  b2 = com.get("PROVCOM");
  b3 = com.get("CAPCOM");

  set_row(rw+1,"Residenza@20gIndirizzo @S", FLD(LF_ANAG,"INDRES"));
  set_row(rw+2,"@20gComune    %S@53gProvincia %S@68gC.a.p. %S",
          (const char*)b1,
          (const char*)b2,
          (const char*)b3);

  set_row(rw+3,"");
  
  TString car = look_tab("%CRS",soc.get("CODCAR"));

  set_row(rw+4,"Carica@20gCod. @pN@30g%s@62gScadenza @lD",
          FLD(LF_SOCI,"CODCAR","@@"),
          (const char*)car,
          FLD(LF_SOCI,"SCADCAR"));

  set_row(rw+5,"Azioni@20gN.quote @N = @7.3N%% Redd. @7.3N%% Perd. @7.3N%%",
          FLD(LF_SOCI,"NQUOTEAZ"),
          FLD(LF_SOCI,"PERCQUAZ"),
          FLD(LF_SOCI,"PERCAZREDD"),
          FLD(LF_SOCI,"PERCAZPERD"));
  set_row(rw+6,"@20gTitolo proprieta' @S Emolumento @pN",
          FLD(LF_SOCI,"TITPROP"),
          FLD(LF_SOCI,"EMOLUMENTO","###.###.###.###"));
  set_row(rw+7,"%% rit.su dividendi @7.3n%%  Tipo azione  @s  "
          "Partecipaz. assemblea @f",
          FLD(LF_SOCI,"PERCRITDIV"),
          FLD(LF_SOCI,"TIPOAZ"),
          FLD(LF_SOCI,"PARTASS"));
  set_row(rw+8,"Modello 740 @s @57g%s",
          FLD(LF_SOCI,"Q740"),
          (const char*)codconiuge);
  set_row(rw+9,"Attiv. prevalente  @f@37gQuadro 750 @s @53g"
          "Mesi lavorati art.120 c1 @2n",
          FLD(LF_SOCI,"ATTPREV"),
          FLD(LF_SOCI,"QUATTPREV"),
          FLD(LF_SOCI,"MLAV120C1"));

  set_row(rw+10,"@20gRichiesta qualifica @s@53gMesi lavorati art.120 c2 @2n",
          FLD(LF_SOCI,"RICQUAL"),
          FLD(LF_SOCI,"MLAV120C2"));
  set_row(rw+11,"Note@20g@s", FLD(LF_SOCI,"NOTE"));
  set_row(rw+12,"Data ultimo agg. @20gAnagrafica @d @53gSocio @d",
          FLD(LF_ANAG,"DATAAGG"),
          FLD(LF_SOCI,"DATAAGG"));
  set_row(rw+13,""); set_row(rw+14,"");

  ana.setkey(k);
  ana.readat(rno);
}


void TAnaprint_app::set_rubriche()
{
  // preprocess_page will fill the vars
  set_row(2,"@32g@35S", FLD(LF_ANAG,"INDRES"));
  set_row(3,"@32g#-24T CAP #5T  PR #2T", &_com, &_cap, &_prov);
  set_row(4,"@32gTel. #-36T", &_phone);
  set_row(5,"");

  if (_pr_what == nditte)
  {
    set_row(1,"@b$[r]@pN@r$[n]@3j@50S", 
            FLD(LF_NDITTE,"CODDITTA","@@@@@"),
            FLD(LF_NDITTE,"RAGSOC"));
  }
  else if (_pr_what == anafis) 
  {
    set_row(1,"@b$[b]@pN$[n]@r@3j@S @S",  FLD(LF_ANAG,"CODANAGR","@@@@@"),
            FLD(LF_ANAG,"RAGSOC",0,29), FLD(LF_ANAG,"RAGSOC",30,50));
  }
  else
  {
    set_row(1,"@b$[b]@pN$[n]@r@3j@50S", FLD(LF_ANAG,"CODANAGR","@@@@@"),
            FLD(LF_ANAG,"RAGSOC"));
    set_row(4,"@56g Rif @12S", FLD(LF_ANAGGIU,"PERRIF"));
  }
}



void TAnaprint_app::set_elenco()
{
  switch(_pr_what)
  {
  case anafis:
  case anagiu:
    if (_pr_what == anafis)
    {
      if (_inclditte)
        set_row(1,"$[b]@pN$[n]@4j@S @S@55g$[r]@pN$[n]@66g@S", 
                FLD(LF_ANAG,"CODANAGR","@@@@@"), 
                FLD(LF_ANAG,"RAGSOC",0,29),
                FLD(LF_ANAG,"RAGSOC",30,50),
                FLD(LF_NDITTE,"CODDITTA","@@@@@"),
                FLD(LF_NDITTE,"RAGSOC"));
      else
        set_row(1,"$[b]@pN$[n]@4j@S @S", 
                FLD(LF_ANAG,"CODANAGR","@@@@@"), 
                FLD(LF_ANAG,"RAGSOC",0,29),
                FLD(LF_ANAG,"RAGSOC",30,50));
    }
    else 
    {
      if (_inclditte)
        set_row(1,"$[b]@pN$[n]@4j@50S@55g$[r]@pN$[n]@66g@S", 
                FLD(LF_ANAG,"CODANAGR","@@@@@"), 
                FLD(LF_ANAG,"RAGSOC"),
                FLD(LF_NDITTE,"CODDITTA","@@@@@"),
                FLD(LF_NDITTE,"RAGSOC"));
      
      else
        set_row(1,"$[b]@pN$[n]@4j@50S", 
                FLD(LF_ANAG,"CODANAGR","@@@@@"), 
                FLD(LF_ANAG,"RAGSOC"));
    }
    break;
  case nditte:
    set_row(1,"$[r]@pN$[n]@10g@S@50g@S @pN@3j@S",
            FLD(LF_NDITTE,"CODDITTA","@@@@"),
            FLD(LF_NDITTE,"RAGSOC"),
            FLD(LF_NDITTE,"TIPOA"),
            FLD(LF_ANAG,  "CODANAGR", "@@@@@"),
            FLD(LF_ANAG,  "RAGSOC"));
    break;
  }
  set_row(2,"");
}

void TAnaprint_app::set_schede()
{
  switch(_pr_what)
  {
  case anafis: set_scheda_anafis(); break;
             case anagiu: set_scheda_anagiu(); break;
             case nditte: set_scheda_ditta(); break;
             }
}


void TAnaprint_app::set_headers()
{
  reset_header();
  set_background();
  if (_pr_type == elenco)
  {
    switch(_pr_what)
    {
    case anafis:
    case anagiu: 
#if XVT_OS != XVT_OS_SCOUNIX                     
      set_background("W1l{1 2 132 2}W4l{1 5 132 5}");
#else
      set_header(2,(const char*)sep);
      set_header(5,(const char*)sep);
#endif
      set_header(1,"@bELENCO PERSONE %s@82gStudio@96gData"
                 "@101g @< @110g Pag. @#", _pr_what == anafis ? "FISICHE" :
                 "GIURIDICHE");
      set_header(3,"@iCodice@55gCodice");
      set_header(4,"@iAnagr.   Ragione sociale/cognome e nome@55gDitta"
                 "@66gDenominazione sociale");
      set_header(6,"");
      break;
    case nditte:
#if XVT_OS != XVT_OS_SCOUNIX                     
      set_background("W1l{1 2 132 2}W4l{1 5 132 5}");
#else
      set_header(2,(const char*)sep);
      set_header(5,(const char*)sep);
#endif
      set_header(1,"@bELENCO DITTE@82gStudio@96gData"
                 "@101g @< @110 @#");
      set_header(3,"@iCodice@50gT");
      set_header(4,"@iAnagr.   Denominazione sociale@50gP Codice"
                 "@61gRagione sociale/Cognome e nome");
      set_header(6,"");
    }
  }
  else if (_pr_type == rubriche)
  {
    switch (_pr_what)
    {
    case anafis:
    case anagiu:
#if XVT_OS != XVT_OS_SCOUNIX                     
      set_background("W1l{1 2 132 2}W4l{1 4 132 4}");
#else
      set_header(2,(const char*)sep);
      set_header(4,(const char*)sep);
#endif
      set_header(1,"@bRUBRICA PERSONE %s@40gStudio@53gData @<   pag. @#", 
                 _pr_what == anagiu ? "GIURIDICHE" : "FISICHE");
      set_header(3,"@iCodice  Cognome e nome");
      set_header(5,"");
      break;
    case nditte:
#if XVT_OS != XVT_OS_SCOUNIX                     
      set_background("W1l{1 2 132 2}W4l{1 4 132 4}");
#else
      set_header(2,(const char*)sep);
      set_header(4,(const char*)sep);
#endif
      set_header(1,"@bRUBRICA DITTE@40gStudio@53gData @<   pag. @#");
      set_header(3,"@iCodice  Cognome e nome");
      set_header(5,"");
      break;
    }  
  }
  else if (_pr_type == schede)
  {
    set_header(1,"");
  }
}


void TAnaprint_app::set_etichette()
{
  int namerow = 0;

  for (int i = 2; i <= _rows_et; i++)
    set_row(i, "");

  if (_is_piv)
  { 
    set_row(_piv_row, TString(format("@%dg#t", _piv_col)), &_cofi);
    _frpos[_piv_row - 1] = TRUE;
  }
  if (_is_cod)
  {
    set_row(_cod_row, TString(format("@%dg#t", _cod_col)), &_cod);
    _frpos[_cod_row - 1] = TRUE;
  }
  
  // name goes in first free row
  for (i = 0; i < _rows_et; i++) 
  {
    if (!_frpos[i]) 
    { if (namerow == 0) namerow = i; }
  }
  
  namerow++; reset_row(namerow);
  
  if (_pr_what == anagiu)
    set_row(namerow,TString(format("@%dg#t",_ind_col)), &_name);
  else
  {                                    
    set_row(namerow,TString(format("@%dg#t #t #t",_ind_col)), &_sex, &_name, &_surname);
  }

  set_row(_ind_row,TString(format("@%dg#t #t", _ind_col)), &_address, &_civ);
  set_row(_ind_row+1, TString(format("@%dg#t #t #t #t", _ind_col)), 
          &_loc, &_cap, &_com, &_prov);
  
  if (!_stato.empty())
  {
    // print state on first free row
    for (i = _ind_row+1; i < _rows_et; i++)
      if (!_frpos[i] && i != (namerow - 1))
        set_row(i+1, TString(format("@%dg#t", _ind_col)), &_stato);   
  }  

}
