Files correlati : Ricompilazione Demo : [ ] Commento : Riportata la versione 1.7 patch 054 sul main trunk git-svn-id: svn://10.65.10.50/trunk@9658 c028cbd2-c16b-5b4b-a496-9718f37d4682
		
			
				
	
	
		
			4202 lines
		
	
	
		
			123 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			4202 lines
		
	
	
		
			123 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
#include <execp.h>
 | 
						|
#include <mailbox.h>
 | 
						|
#include <msksheet.h>
 | 
						|
#include <printapp.h>
 | 
						|
#include <tabutil.h>
 | 
						|
#include <utility.h>
 | 
						|
 | 
						|
#include <clifo.h>
 | 
						|
#include <pconti.h>
 | 
						|
#include <mov.h>
 | 
						|
#include <rmov.h>
 | 
						|
#include <comuni.h>
 | 
						|
#include <saldi.h>
 | 
						|
#include <causali.h>
 | 
						|
#include <nditte.h>
 | 
						|
#include <unloc.h>
 | 
						|
 | 
						|
#include "cgp1.h"
 | 
						|
#include "cgp1100.h"
 | 
						|
#include "cglib02.h"
 | 
						|
#include "cglib03.h"
 | 
						|
 | 
						|
#define RMOV_ALIAS 501
 | 
						|
 | 
						|
class TMastrini_application : public TPrintapp
 | 
						|
{
 | 
						|
  static bool data_inizio (TMask_field& f, KEY k);
 | 
						|
  static bool data_fine   (TMask_field& f, KEY k);
 | 
						|
  static bool gruppo_hnd  (TMask_field& f, KEY k);
 | 
						|
  static bool contoi_hnd  (TMask_field& f, KEY k);
 | 
						|
  static bool contof_hnd  (TMask_field& f, KEY k);
 | 
						|
  static bool sottoc_handler_ini  (TMask_field& f, KEY k); 
 | 
						|
  static bool sottoc_handler_fine (TMask_field& f, KEY k);
 | 
						|
  static bool movcas_cdc_handler  (TMask_field& f, KEY k);
 | 
						|
  
 | 
						|
  static bool memorizza_handler(TMask_field& f, KEY k);
 | 
						|
  static bool scelte_notify(TSheet_field& s, int r, KEY k);
 | 
						|
 | 
						|
  TDociva_array      _b;
 | 
						|
  TRelation*         _rel1,*_rel2;
 | 
						|
  TMask*             _msk;
 | 
						|
  TTable*            _tabivd, * _tabtpd, * _tabreg;
 | 
						|
  TLocalisamfile*    _mov;
 | 
						|
  TLocalisamfile*    _nditte;
 | 
						|
  TLocalisamfile*    _unloc;
 | 
						|
  TLocalisamfile*    _comuni;
 | 
						|
  TLocalisamfile*    _clifo;
 | 
						|
  TLocalisamfile*    _caus;
 | 
						|
  TExternisamfile*   _movcas;
 | 
						|
  TSaldo*            _sld;
 | 
						|
  TParagraph_string* _d18,* _d23,* _d30;
 | 
						|
  TArray             _riga, _lista;
 | 
						|
  
 | 
						|
  TDate _data_ini,_data_fine,_data_finese,_data_finesesucc,_ultima_data_reg;
 | 
						|
  TDate _datareg,_datadoc,_data_inizioese,_datareg_stampa,_inizioes;
 | 
						|
  int _cur1,_cur2,_gruppo,_conto,_numcarat,_stampanum,_numivd,_annoiva;
 | 
						|
  int _numrig,_natdoc,_tipo,_tipostampa,_g_prec,_c_prec,_numrivd_int;
 | 
						|
  real _progredare,_progreavere,_totprogre_dare_al,_totprogre_avere_al;
 | 
						|
  real _totprogre_dare,_totprogre_avere,_importo;
 | 
						|
  real _riporto_dare,_riporto_avere,_riporto_parziale_dare,_riporto_parziale_avere;
 | 
						|
  real _totale_periodo_dare,_totale_periodo_avere,_totale_prima_dare,_totale_prima_avere;
 | 
						|
  real _saldo_periodo,_saldo_progre,_saldo_progre_al,_saldo_progre_prec;
 | 
						|
  real _saldo_movimenti,_saldo_progressivi,_totale_saldo,_riporto_footer_dare,_riporto_footer_avere;
 | 
						|
  TString _ragsoc,_indulc,_civulc,_capulc,_com,_prov,_comulc;
 | 
						|
  long _codice_ditta,_s_prec;
 | 
						|
  TString _tipodoc,_codcaus,_descrcaus,_descrdociva,_regiva,_g_contr,_c_contr,_s_contr,_centrodicosto;
 | 
						|
  char    _sezivd,_lettivd; 
 | 
						|
  TString _descrizione,_sezione,_numdoc,_descrizionemov,_numrivd,_descr;
 | 
						|
  TString _dataregs, _datadocs;
 | 
						|
  int     _gruppocontr,_contocontr,_nummast,_pagina;
 | 
						|
  long    _sottocontocontr;
 | 
						|
 | 
						|
  bool _stampaprogre,_stampatotiva,_stampatot,_prima_volta,_stampa_mov_prov;
 | 
						|
  bool _stampato,_devi_stampare_footer;
 | 
						|
  bool _movcas_print;
 | 
						|
 
 | 
						|
  int  _annomsk,_annoesmsk,_annoes,_annomsksucc,_tipo_mask,_anno_ghost;
 | 
						|
  int  _anno_corrente,_anno_precedente,_indbil,_numero_pag;
 | 
						|
  long _sottoc,_numreg,_numgio,_protiva;
 | 
						|
  long _cdc;
 | 
						|
  bool _stampa_progressivi_si,_competenza,/*_inizio_stampa,*/_puoi_stampare,_stampa_footer_si;
 | 
						|
  bool _cambia_mastrino,_gia_stampata_intestazione;
 | 
						|
  char _tmcf,_tipo_contr; 
 | 
						|
 | 
						|
  TDate _dataregrmov;
 | 
						|
  int  _gruppof,_contof;
 | 
						|
  long _sottocf;
 | 
						|
  TString _dataregrmovstring,_importo_str,_saldo_movimenti_str,_saldo_progressivi_str;
 | 
						|
 | 
						|
  int  _rw, _conta_mastrini, _indice_array, _item, _item_lista, _indice_lista;
 | 
						|
  int  _ddociva_len;
 | 
						|
  
 | 
						|
  TString TMP;
 | 
						|
  TString _picture;
 | 
						|
  
 | 
						|
protected:
 | 
						|
  virtual bool user_create() ;
 | 
						|
  virtual bool user_destroy();
 | 
						|
  virtual bool set_print(int m);
 | 
						|
 
 | 
						|
  virtual bool preprocess_print(int file, int counter);
 | 
						|
  virtual bool preprocess_page (int,int);
 | 
						|
  virtual print_action postprocess_page (int,int);
 | 
						|
  virtual print_action postprocess_print(int,int);
 | 
						|
  virtual void preprocess_header();   
 | 
						|
  virtual void preprocess_footer();
 | 
						|
  virtual void set_page(int,int);
 | 
						|
  virtual void process_link(int id, const char* txt);
 | 
						|
      
 | 
						|
  void set_handlers(TMask* msk) const;
 | 
						|
  bool mask2sheet();
 | 
						|
  bool sheet2mask();
 | 
						|
 | 
						|
public:
 | 
						|
  //TDate _inizioEs,_fineEs;
 | 
						|
  
 | 
						|
  int  date2esc(const TDate& d);   
 | 
						|
  void ricerca_clifo();
 | 
						|
  void ricerca_gruppo();
 | 
						|
  int  ricerca_clifo(int riga);
 | 
						|
  int  ricerca_gruppo(int riga);
 | 
						|
 | 
						|
  void calcola_progressivi();
 | 
						|
  void calcola_progressivi_al(); 
 | 
						|
  void calcola_cdc_al(real& dare, real& avere);
 | 
						|
 | 
						|
  void stampa_progressivi();
 | 
						|
  int  stampa_progressivi(int start_riga);
 | 
						|
  void stampa_progre_riporto();
 | 
						|
  int  stampa_progre_riporto(int start_riga);
 | 
						|
  void documenti_iva();
 | 
						|
  void ricerca_regiva();
 | 
						|
  void descrizione_causale();
 | 
						|
  void saldi_zero();
 | 
						|
  int  crea_intestazione(int riga);
 | 
						|
  void crea_intestazione();
 | 
						|
  void fai_stampa132();
 | 
						|
  void fai_stampa198();
 | 
						|
  void stampa_totali132();
 | 
						|
  void stampa_totali198();      
 | 
						|
  void stampa_totali132_II();
 | 
						|
  void stampa_totali198_II();  
 | 
						|
  void carica_array_totali132();
 | 
						|
  void carica_array_totali198();  
 | 
						|
  void stampa_totaliiva();  
 | 
						|
  void ricerca_classe_IV(bool scelta);
 | 
						|
  void data_fine_esercizio(int);
 | 
						|
  const char* descrizione_gruppo();
 | 
						|
  const char* descrizione_conto();    
 | 
						|
  const char* descrizione_sottoconto();
 | 
						|
  const char* descrizione_classe(char,char,int,int);
 | 
						|
  bool almeno_un_record();
 | 
						|
  void ricerca_dati_ditta();
 | 
						|
  void conto(int,int,bool);                       
 | 
						|
  bool check_ordine(TMask_field& f, KEY k);
 | 
						|
  
 | 
						|
  void setta_riga (int r, TString riga);              
 | 
						|
  int  righe_rimaste_da_stampare();
 | 
						|
  
 | 
						|
  TMastrini_application() {}
 | 
						|
  virtual ~TMastrini_application() {}
 | 
						|
};
 | 
						|
 | 
						|
inline TMastrini_application& app() { return (TMastrini_application&)main_app(); }
 | 
						|
 | 
						|
int TMastrini_application::righe_rimaste_da_stampare()
 | 
						|
{  
 | 
						|
  int righe_rimaste = 0;
 | 
						|
                  
 | 
						|
  if (_nummast == 2)
 | 
						|
  { 
 | 
						|
    if (printer().rows_left() != 0)
 | 
						|
    {
 | 
						|
      if ( (_conta_mastrini % 2) != 0)
 | 
						|
      { 
 | 
						|
        if ( (printer().formlen() % 2) != 0)
 | 
						|
          righe_rimaste = printer().rows_left() - (printer().formlen() / 2) + 1; //- 33;
 | 
						|
        else
 | 
						|
          righe_rimaste = printer().rows_left() - (printer().formlen() / 2); 
 | 
						|
      }
 | 
						|
      else
 | 
						|
        righe_rimaste = printer().rows_left();
 | 
						|
    }
 | 
						|
    else
 | 
						|
    {
 | 
						|
      if ( (_conta_mastrini % 2) != 0)
 | 
						|
        righe_rimaste = printer().formlen() / 2; //32;
 | 
						|
      else 
 | 
						|
      {
 | 
						|
        if ( (printer().formlen() % 2) != 0)
 | 
						|
          righe_rimaste = (printer().formlen() / 2) + 1; //33;
 | 
						|
        else
 | 
						|
          righe_rimaste = printer().formlen / 2;
 | 
						|
      }
 | 
						|
    }
 | 
						|
  }
 | 
						|
 
 | 
						|
  return righe_rimaste;
 | 
						|
} 
 | 
						|
 | 
						|
void TMastrini_application::process_link(int id, const char* txt)
 | 
						|
{                                         
 | 
						|
  const char* const app = "cg2 -0";
 | 
						|
  TToken_string ss(10);
 | 
						|
  ss.add("1");
 | 
						|
  ss.add(txt);
 | 
						|
  
 | 
						|
  TMessage fs(cmd2name(app), MSG_LN, ss);
 | 
						|
  fs.send();             
 | 
						|
 | 
						|
  TExternal_app pn(app);
 | 
						|
  pn.run();
 | 
						|
} 
 | 
						|
 | 
						|
bool TMastrini_application::sottoc_handler_ini(TMask_field& f, KEY key)
 | 
						|
{
 | 
						|
  const short id  = f.dlg();  
 | 
						|
  bool warning = FALSE;
 | 
						|
                                  
 | 
						|
  const int  gruppo = f.mask().get_int(F_GRUPPOINI);
 | 
						|
                                    
 | 
						|
  int  conto;
 | 
						|
  if (id == F_SOTTOCINI_CONTO)
 | 
						|
    conto  = f.mask().get_int(F_CONTOINI_CONTO); 
 | 
						|
  else
 | 
						|
    if (id == F_SOTTOCINI_CLIENTE)
 | 
						|
      conto = f.mask().get_int(F_CONTOINI_CLIENTE);
 | 
						|
    else
 | 
						|
      if (id == F_SOTTOCINI_FORN)
 | 
						|
        conto = f.mask().get_int(F_CONTOINI_FORN);     
 | 
						|
 | 
						|
  const long sottoconto = f.mask().get_long(id);
 | 
						|
  
 | 
						|
  if ( key == K_ENTER )
 | 
						|
  {
 | 
						|
    if (sottoconto != 0 && conto == 0) 
 | 
						|
      return f.warning_box("Manca il CONTO");
 | 
						|
 | 
						|
    if (conto != 0 && gruppo == 0)
 | 
						|
      return f.warning_box("Manca il GRUPPO");
 | 
						|
  }
 | 
						|
                    
 | 
						|
  if (key == K_F2 /* key == K_TAB */ && f.mask().is_running())
 | 
						|
  {
 | 
						|
    TString ds;
 | 
						|
    if (id == F_SOTTOCINI_CONTO && (gruppo != 0 || conto != 0 || sottoconto != 0L))
 | 
						|
    {
 | 
						|
      TLocalisamfile pconti(LF_PCON);
 | 
						|
      pconti.zero();
 | 
						|
      pconti.put(PCN_GRUPPO, gruppo) ;
 | 
						|
      pconti.put(PCN_CONTO, conto);
 | 
						|
      pconti.put(PCN_SOTTOCONTO, sottoconto);
 | 
						|
      pconti.setkey(1);
 | 
						|
      pconti.read(_isequal, _nolock);
 | 
						|
      if (pconti.good())
 | 
						|
      {
 | 
						|
        ds = pconti.get(PCN_DESCR);
 | 
						|
        warning = FALSE;
 | 
						|
      }
 | 
						|
      else    
 | 
						|
      {
 | 
						|
        ds = "";
 | 
						|
        warning = TRUE;
 | 
						|
      }
 | 
						|
      
 | 
						|
      f.mask().set(F_DESCRINI_CONTO,   ds);
 | 
						|
      f.mask().set(F_DESCRINI_CLIENTE, ds);
 | 
						|
      f.mask().set(F_DESCRINI_FORN,    ds);              
 | 
						|
      
 | 
						|
      if (warning)
 | 
						|
        return f.warning_box("Sottoconto inesistente");
 | 
						|
    }
 | 
						|
    else
 | 
						|
      if (id == F_SOTTOCINI_CLIENTE || id == F_SOTTOCINI_FORN) 
 | 
						|
      {
 | 
						|
        TString rs;
 | 
						|
        char tipo = id == F_SOTTOCINI_CLIENTE ? 'C' : 'F';
 | 
						|
        TLocalisamfile clifo (LF_CLIFO);       
 | 
						|
        if (sottoconto != 0)
 | 
						|
        {
 | 
						|
          clifo.zero();
 | 
						|
          clifo.put(CLI_TIPOCF,tipo); 
 | 
						|
          clifo.put(CLI_CODCF, sottoconto) ;
 | 
						|
          clifo.setkey(1);
 | 
						|
          if (clifo.read(_isequal, _nolock) == NOERR)  
 | 
						|
          {
 | 
						|
            rs = clifo.get(CLI_RAGSOC);
 | 
						|
            warning = FALSE;
 | 
						|
          }
 | 
						|
          else
 | 
						|
          {
 | 
						|
            rs = "";
 | 
						|
            warning = TRUE;
 | 
						|
          }
 | 
						|
        
 | 
						|
          f.mask().set(F_DESCRINI_CLIENTE, rs);
 | 
						|
          f.mask().set(F_DESCRINI_FORN, rs);
 | 
						|
        
 | 
						|
          if (warning)
 | 
						|
            return f.warning_box("Anagrafica inesistente");
 | 
						|
        }
 | 
						|
      }
 | 
						|
  }
 | 
						|
  return TRUE;
 | 
						|
}
 | 
						|
 | 
						|
bool TMastrini_application::sottoc_handler_fine(TMask_field& f, KEY key)
 | 
						|
{
 | 
						|
  const short id  = f.dlg();                    
 | 
						|
  int  conto;
 | 
						|
  TString    ds;
 | 
						|
  TString80  rs;                                      
 | 
						|
  bool       warning;
 | 
						|
  
 | 
						|
  const int  gruppo = f.mask().get_int(F_GRUPPOFINE);
 | 
						|
 | 
						|
  if (id == F_SOTTOCFINE_CONTO)
 | 
						|
    conto  = f.mask().get_int(F_CONTOFINE_CONTO); 
 | 
						|
  else
 | 
						|
    if (id == F_SOTTOCFINE_CLIENTE)
 | 
						|
      conto = f.mask().get_int(F_CONTOFINE_CLIENTE);
 | 
						|
    else
 | 
						|
      if (id == F_SOTTOCFINE_FORN)
 | 
						|
        conto = f.mask().get_int(F_CONTOFINE_FORN);   
 | 
						|
 | 
						|
  const long sottoconto = f.mask().get_long(id);          
 | 
						|
 | 
						|
  if ( key == K_ENTER )
 | 
						|
  {
 | 
						|
    if (sottoconto != 0 && conto == 0) 
 | 
						|
      return f.warning_box("Manca il CONTO");
 | 
						|
 | 
						|
    if (conto != 0 && gruppo == 0)
 | 
						|
      return f.warning_box("Manca il GRUPPO");
 | 
						|
      
 | 
						|
    if (!app().check_ordine(f,key))
 | 
						|
      return FALSE;  
 | 
						|
  }    
 | 
						|
 | 
						|
  if ( key == K_TAB && f.mask().is_running())
 | 
						|
  {
 | 
						|
    if (id == F_SOTTOCFINE_CONTO && (gruppo != 0 || conto != 0 || sottoconto != 0L))
 | 
						|
    {
 | 
						|
      TLocalisamfile pconti (LF_PCON);
 | 
						|
      pconti.zero();
 | 
						|
      pconti.put(PCN_GRUPPO, gruppo) ;
 | 
						|
      pconti.put(PCN_CONTO, conto);
 | 
						|
      pconti.put(PCN_SOTTOCONTO, sottoconto);
 | 
						|
      pconti.setkey(1);
 | 
						|
      pconti.read(_isequal, _nolock);
 | 
						|
      if (pconti.good())
 | 
						|
      {
 | 
						|
        ds = pconti.get(PCN_DESCR);
 | 
						|
        warning = FALSE;
 | 
						|
      }
 | 
						|
      else 
 | 
						|
      {
 | 
						|
        ds = "";
 | 
						|
        warning = TRUE;
 | 
						|
      }
 | 
						|
        
 | 
						|
      f.mask().set(F_DESCRFINE_CONTO,   ds);
 | 
						|
      f.mask().set(F_DESCRFINE_CLIENTE, ds);
 | 
						|
      f.mask().set(F_DESCRFINE_FORN,    ds);
 | 
						|
      
 | 
						|
      if (warning)
 | 
						|
        return f.warning_box("Sottoconto inesistente");
 | 
						|
    }
 | 
						|
    else
 | 
						|
      if (id == F_SOTTOCFINE_CLIENTE || id == F_SOTTOCFINE_FORN) 
 | 
						|
      {
 | 
						|
        char tipo = id == F_SOTTOCFINE_CLIENTE ? 'C' : 'F';
 | 
						|
        TLocalisamfile clifo (LF_CLIFO);       
 | 
						|
        if (sottoconto != 0)
 | 
						|
        {
 | 
						|
          clifo.zero();
 | 
						|
          clifo.put(CLI_TIPOCF,tipo); 
 | 
						|
          clifo.put(CLI_CODCF, sottoconto) ;
 | 
						|
          clifo.setkey(1);
 | 
						|
          if (clifo.read(_isequal, _nolock) == NOERR)    
 | 
						|
          {
 | 
						|
            rs = clifo.get(CLI_RAGSOC);
 | 
						|
            warning = FALSE;
 | 
						|
          }
 | 
						|
          else 
 | 
						|
          {
 | 
						|
            rs = "";
 | 
						|
            warning = TRUE;
 | 
						|
          }
 | 
						|
          
 | 
						|
          f.mask().set(F_DESCRFINE_CLIENTE, rs);
 | 
						|
          f.mask().set(F_DESCRFINE_FORN,    rs);
 | 
						|
        
 | 
						|
          if (warning)
 | 
						|
            return f.warning_box("Anagrafica inesistente");
 | 
						|
        }
 | 
						|
      }
 | 
						|
  }
 | 
						|
  return TRUE;
 | 
						|
}
 | 
						|
 | 
						|
bool TMastrini_application::gruppo_hnd (TMask_field& f, KEY k)
 | 
						|
{  
 | 
						|
  if (k == K_ENTER)
 | 
						|
  {
 | 
						|
    int gruppof = f.mask().get_int(F_GRUPPOFINE);
 | 
						|
    
 | 
						|
    if (gruppof == 0)
 | 
						|
      return TRUE;
 | 
						|
      
 | 
						|
    int gruppoi = f.mask().get_int(F_GRUPPOINI);
 | 
						|
    
 | 
						|
    if (gruppoi > gruppof)
 | 
						|
      return f.error_box("Il gruppo di partenza deve essere inferiore o uguale al gruppo di arrivo");
 | 
						|
  }   
 | 
						|
  
 | 
						|
  return TRUE;
 | 
						|
}
 | 
						|
 | 
						|
bool TMastrini_application::contoi_hnd (TMask_field& f, KEY k)
 | 
						|
{ 
 | 
						|
  if (k == K_TAB && f.focusdirty())
 | 
						|
  { 
 | 
						|
    TMask& m = f.mask();
 | 
						|
    TLocalisamfile pconti (LF_PCON);
 | 
						|
    TString ds;                 
 | 
						|
    const short id        = f.dlg();  
 | 
						|
    const int gruppo      = m.get_int(F_GRUPPOINI);
 | 
						|
    const int conto       = m.get_int(id);
 | 
						|
    
 | 
						|
    if (gruppo != 0 && conto != 0)
 | 
						|
    {    
 | 
						|
      bool warning;       
 | 
						|
      
 | 
						|
      char tipomsk = m.get(F_TIPOCF_INI)[0];
 | 
						|
        
 | 
						|
      pconti.zero();
 | 
						|
      pconti.put(PCN_GRUPPO, gruppo) ;
 | 
						|
      pconti.put(PCN_CONTO,  conto);
 | 
						|
      pconti.setkey(1);
 | 
						|
      pconti.read(_isequal, _nolock);
 | 
						|
      if (pconti.good())
 | 
						|
      {                          
 | 
						|
        char tipo = pconti.get_char(PCN_TMCF);
 | 
						|
        if (tipomsk != tipo)
 | 
						|
          return f.warning_box("Conto inesistente");
 | 
						|
          
 | 
						|
        ds = pconti.get(PCN_DESCR);
 | 
						|
        warning = FALSE;
 | 
						|
      }
 | 
						|
      else
 | 
						|
      {
 | 
						|
        ds = "";        
 | 
						|
        warning = TRUE;
 | 
						|
      }
 | 
						|
            
 | 
						|
      m.set(F_DESCRINI_CLIENTE, ds);
 | 
						|
      m.set(F_DESCRINI_FORN, ds);
 | 
						|
      m.set(F_DESCRINI_CONTO, ds);  
 | 
						|
          
 | 
						|
      if (warning)
 | 
						|
        return f.warning_box("Conto inesistente");
 | 
						|
    }
 | 
						|
    else
 | 
						|
    {
 | 
						|
      ds = "";
 | 
						|
      m.set(F_DESCRINI_CLIENTE, ds);
 | 
						|
      m.set(F_DESCRINI_FORN, ds);
 | 
						|
      m.set(F_DESCRINI_CONTO, ds);  
 | 
						|
    }  
 | 
						|
  }  
 | 
						|
  
 | 
						|
  return TRUE;
 | 
						|
}
 | 
						|
 | 
						|
bool TMastrini_application::contof_hnd (TMask_field& f, KEY k)
 | 
						|
{
 | 
						|
  const short id  = f.dlg();  
 | 
						|
   
 | 
						|
  if (k == K_ENTER)
 | 
						|
  {
 | 
						|
    int gruppof = f.mask().get_int(F_GRUPPOFINE);
 | 
						|
    
 | 
						|
    if (gruppof == 0)
 | 
						|
      return TRUE;
 | 
						|
      
 | 
						|
    int gruppoi = f.mask().get_int(F_GRUPPOINI);
 | 
						|
    
 | 
						|
    if (gruppoi < gruppof)
 | 
						|
      return TRUE;
 | 
						|
      
 | 
						|
    int contof = f.mask().get_int(id);
 | 
						|
    int contoi; 
 | 
						|
    
 | 
						|
    char tipo = f.mask().get(F_TIPOCF_INI)[0];
 | 
						|
    
 | 
						|
    if (tipo == '\0')
 | 
						|
      contoi = f.mask().get_int(F_CONTOINI_CONTO);
 | 
						|
    else
 | 
						|
      if (tipo == 'C')
 | 
						|
        contoi = f.mask().get_int(F_CONTOINI_CLIENTE);
 | 
						|
      else
 | 
						|
        if (tipo == 'F')
 | 
						|
          contoi = f.mask().get_int(F_CONTOINI_FORN);
 | 
						|
    
 | 
						|
      
 | 
						|
    if (contoi > contof)
 | 
						|
      return f.error_box("Il conto di partenza deve essere inferiore o uguale al conto di arrivo");
 | 
						|
  }
 | 
						|
  
 | 
						|
  if (k == K_TAB && f.focusdirty() && f.mask().is_running())
 | 
						|
  {  
 | 
						|
    TLocalisamfile pconti (LF_PCON);
 | 
						|
    TString ds;                       
 | 
						|
    int gruppo = f.mask().get_int(F_GRUPPOFINE);
 | 
						|
    int conto  = f.mask().get_int(id);
 | 
						|
    if (gruppo != 0 && conto != 0)
 | 
						|
    {    
 | 
						|
      bool warning;
 | 
						|
      
 | 
						|
      char tipomsk = f.mask().get(F_TIPOCF_FINE)[0];        
 | 
						|
      
 | 
						|
      pconti.zero();
 | 
						|
      pconti.put(PCN_GRUPPO, gruppo) ;
 | 
						|
      pconti.put(PCN_CONTO,  conto);
 | 
						|
      pconti.setkey(1);
 | 
						|
      pconti.read(_isequal, _nolock);
 | 
						|
      if (pconti.good())
 | 
						|
      {           
 | 
						|
        char tipo = pconti.get_char(PCN_TMCF);
 | 
						|
        if (tipomsk != tipo)
 | 
						|
          return f.warning_box("Conto inesistente");
 | 
						|
          
 | 
						|
        ds = pconti.get(PCN_DESCR);
 | 
						|
        warning = FALSE;
 | 
						|
      }
 | 
						|
      else
 | 
						|
      {
 | 
						|
        ds = "";        
 | 
						|
        warning = TRUE;
 | 
						|
      }
 | 
						|
            
 | 
						|
      f.mask().set(F_DESCRFINE_CLIENTE, ds);
 | 
						|
      f.mask().set(F_DESCRFINE_FORN, ds);
 | 
						|
      f.mask().set(F_DESCRFINE_CONTO, ds);  
 | 
						|
          
 | 
						|
      if (warning)
 | 
						|
        return f.warning_box("Conto inesistente");
 | 
						|
    }
 | 
						|
    else
 | 
						|
    {
 | 
						|
      ds = "";
 | 
						|
      f.mask().set(F_DESCRFINE_CLIENTE, ds);
 | 
						|
      f.mask().set(F_DESCRFINE_FORN, ds);
 | 
						|
      f.mask().set(F_DESCRFINE_CONTO, ds);  
 | 
						|
    }  
 | 
						|
 | 
						|
  }  
 | 
						|
  
 | 
						|
  return TRUE;
 | 
						|
}
 | 
						|
 | 
						|
bool TMastrini_application::check_ordine(TMask_field& f, KEY k)
 | 
						|
{
 | 
						|
  const int gruppof = f.mask().get_int(F_GRUPPOFINE);
 | 
						|
    
 | 
						|
  if (gruppof == 0)
 | 
						|
    return TRUE;
 | 
						|
      
 | 
						|
  const int gruppoi = f.mask().get_int(F_GRUPPOINI);
 | 
						|
    
 | 
						|
  if (gruppoi < gruppof)
 | 
						|
    return TRUE;
 | 
						|
    
 | 
						|
  int contof = f.mask().get_int(F_CONTOFINE_CONTO);
 | 
						|
  int contoi = f.mask().get_int(F_CONTOINI_CONTO);
 | 
						|
    
 | 
						|
  if (contoi < contof)
 | 
						|
    return TRUE;
 | 
						|
    
 | 
						|
  long sottocf = f.mask().get_long(F_SOTTOCFINE_CONTO);
 | 
						|
  long sottoci = f.mask().get_long(F_SOTTOCINI_CONTO);
 | 
						|
        
 | 
						|
  if (sottoci > sottocf)
 | 
						|
    return f.error_box("Il sottoconto di partenza deve essere inferiore o uguale al sottoconto di arrivo");
 | 
						|
  
 | 
						|
  return TRUE;
 | 
						|
}
 | 
						|
 | 
						|
bool TMastrini_application::memorizza_handler(TMask_field& f, KEY k)
 | 
						|
{
 | 
						|
  if (k == K_SPACE)
 | 
						|
  {
 | 
						|
    if (app().mask2sheet())
 | 
						|
    {
 | 
						|
      TMask& m = f.mask();
 | 
						|
      m.reset(-9);
 | 
						|
      m.set_focus_field(F_TIPOCF_INI);
 | 
						|
    }
 | 
						|
  }
 | 
						|
  return TRUE;
 | 
						|
}
 | 
						|
 | 
						|
bool TMastrini_application::movcas_cdc_handler(TMask_field& f, KEY key)
 | 
						|
{
 | 
						|
  const bool to_check = (f.dlg() == F_CDC ? key == K_TAB : key == K_SPACE) && f.focusdirty();
 | 
						|
  if (to_check)
 | 
						|
  {
 | 
						|
    TMask& m = f.mask();
 | 
						|
    const bool movcas = m.get_bool(F_MOVCAS);
 | 
						|
    const bool cdc    = m.get(F_CDC).not_empty();
 | 
						|
    m.reset(F_STAMPAPROGRE);
 | 
						|
    m.enable(F_STAMPAPROGRE, !movcas && !cdc);
 | 
						|
  }
 | 
						|
  return TRUE;
 | 
						|
}
 | 
						|
 | 
						|
bool TMastrini_application::scelte_notify(TSheet_field& s, int r, KEY k)
 | 
						|
{
 | 
						|
  bool ok = TRUE;
 | 
						|
  if (k == K_INS)
 | 
						|
    return ok = FALSE;
 | 
						|
  return ok;
 | 
						|
}
 | 
						|
 | 
						|
int TMastrini_application::date2esc(const TDate& d)
 | 
						|
{                   
 | 
						|
  TEsercizi_contabili esc;
 | 
						|
  return esc.date2esc(d);
 | 
						|
}
 | 
						|
 | 
						|
//Questa funzione restituisce vero se il record su piano dei conti ha almeno un
 | 
						|
//record figlio (e che soddisfa la condizione riguardante la data di registr.).
 | 
						|
//Viene successivamente utilizzata per stampare l'intestazione (e i totali)
 | 
						|
//oppure no
 | 
						|
 | 
						|
bool TMastrini_application::almeno_un_record()
 | 
						|
{
 | 
						|
  bool  trovato=FALSE;
 | 
						|
  long  record;
 | 
						|
  TDate datareg, datacomp;
 | 
						|
  TLocalisamfile& rmov = current_cursor()->file(-RMOV_ALIAS);
 | 
						|
 
 | 
						|
  if (current_cursor()->is_first_match(-RMOV_ALIAS))
 | 
						|
  {
 | 
						|
    record = rmov.recno();
 | 
						|
    rmov.zero();
 | 
						|
    rmov.put(RMV_GRUPPO,     _gruppo);
 | 
						|
    rmov.put(RMV_CONTO,      _conto);
 | 
						|
    rmov.put(RMV_SOTTOCONTO, _sottoc);
 | 
						|
    for (rmov.read(); !rmov.eof() ;rmov.next())
 | 
						|
    {
 | 
						|
      const int gruppo = rmov.get_int(RMV_GRUPPO);
 | 
						|
      const int conto = rmov.get_int(RMV_CONTO);
 | 
						|
      const long sottoc = rmov.get_long(RMV_SOTTOCONTO);
 | 
						|
      if ((gruppo != _gruppo)||(conto != _conto)||(sottoc != _sottoc))
 | 
						|
        break;
 | 
						|
 | 
						|
      if (_cdc != 0)
 | 
						|
      {
 | 
						|
        const long cdc = rmov.get_long(RMV_CDC);
 | 
						|
        if (_cdc != cdc)
 | 
						|
          continue;
 | 
						|
      }
 | 
						|
      
 | 
						|
      int  annoes = rmov.get_int (RMV_ANNOES);
 | 
						|
      long numreg = rmov.get_long(RMV_NUMREG);
 | 
						|
 | 
						|
      _mov->setkey(1);
 | 
						|
      _mov->curr().zero();
 | 
						|
      _mov->curr().put(MOV_NUMREG,numreg);
 | 
						|
      _mov->read();
 | 
						|
      if (_mov->bad())
 | 
						|
        _mov->zero();
 | 
						|
      // Se sono stati selezionati i movimenti di cassa considera la data di competenza e registrazione su di essi
 | 
						|
      datacomp = !_movcas_print ? (_mov->curr().get(MOV_DATACOMP)) : rmov.get(RMV_DATAREG);
 | 
						|
      TString provvis (_mov->curr().get(MOV_PROVVIS));
 | 
						|
        
 | 
						|
      if (_annomsk == 0)
 | 
						|
        datareg = rmov.get_date(RMV_DATAREG);
 | 
						|
      else
 | 
						|
        datareg = datacomp;
 | 
						|
 | 
						|
      if ( ((annoes==_annomsk) || (_annomsk==0)) && ((datareg>=_data_ini) && (datareg<=_data_fine)) && (_stampa_mov_prov || provvis.trim().empty()))
 | 
						|
      {
 | 
						|
        trovato = TRUE;
 | 
						|
        break;
 | 
						|
      }
 | 
						|
    }
 | 
						|
    rmov.readat(record);
 | 
						|
  }
 | 
						|
  return trovato;
 | 
						|
}
 | 
						|
 | 
						|
bool TMastrini_application::data_inizio(TMask_field& f, KEY k)
 | 
						|
{
 | 
						|
  const TDate data = f.mask().get    (F_DATAINI);
 | 
						|
  const int anno = f.mask().get_int(F_ANNO);
 | 
						|
  app()._annomsk = anno;
 | 
						|
  
 | 
						|
  if (k == K_ENTER)
 | 
						|
  {
 | 
						|
    if (anno != 0)
 | 
						|
    {
 | 
						|
      app().data_fine_esercizio(anno);
 | 
						|
 | 
						|
      if (data.ok())
 | 
						|
      {
 | 
						|
        if (data < app()._data_inizioese || data > app()._data_finese)
 | 
						|
        {
 | 
						|
          f.error_box("La data non appartiene all'esercizio indicato");
 | 
						|
              return FALSE;
 | 
						|
        }
 | 
						|
        else
 | 
						|
          app()._data_ini = data;
 | 
						|
      }    
 | 
						|
    }
 | 
						|
    else
 | 
						|
    {
 | 
						|
      if (data == botime)
 | 
						|
        return f.error_box("La data deve essere obbligatoriamente indicata");
 | 
						|
 | 
						|
      if (app().date2esc(data) == 0)
 | 
						|
        return f.error_box("La data indicata non appartiene ad alcun esercizio");
 | 
						|
      else
 | 
						|
        app()._data_ini = data;
 | 
						|
    }  
 | 
						|
  }  
 | 
						|
  return TRUE;
 | 
						|
}
 | 
						|
 | 
						|
bool TMastrini_application::data_fine(TMask_field& f, KEY k)
 | 
						|
{
 | 
						|
  int   annoes;
 | 
						|
  TDate data, data_ini;
 | 
						|
 | 
						|
  annoes   = f.mask().get_int(F_ANNO);
 | 
						|
  data     = f.mask().get    (F_DATAFINE);
 | 
						|
  data_ini = f.mask().get    (F_DATAINI);
 | 
						|
  app()._annomsk = annoes;
 | 
						|
  
 | 
						|
  if (k == K_ENTER)
 | 
						|
  {
 | 
						|
    if (annoes != 0)
 | 
						|
    {                  
 | 
						|
      app().data_fine_esercizio(annoes);
 | 
						|
      
 | 
						|
      if (data.ok())
 | 
						|
      {
 | 
						|
        if (data < app()._data_inizioese || data > app()._data_finese)
 | 
						|
        {
 | 
						|
          f.error_box("La data non appartiene all'esercizio indicato");
 | 
						|
          return FALSE;
 | 
						|
        }
 | 
						|
        else
 | 
						|
          app()._data_fine = data;
 | 
						|
      }
 | 
						|
    }
 | 
						|
    else
 | 
						|
      {
 | 
						|
        if (data == botime)
 | 
						|
          return f.error_box("La data deve essere obbligatoriamente indicata");
 | 
						|
 | 
						|
        app()._anno_ghost = app().date2esc(data_ini); 
 | 
						|
        
 | 
						|
        if (app()._anno_ghost == 0)
 | 
						|
          return f.error_box("La data indicata non appartiene ad alcun esercizio");
 | 
						|
        //app()._inizioes = app()._inizioEs;
 | 
						|
 | 
						|
        //if (data < app()._inizioEs || data > app()._fineEs)
 | 
						|
        //{
 | 
						|
        //  f.error_box("La data non appartiene all'esercizio indicato");
 | 
						|
        //  return FALSE;
 | 
						|
        //}
 | 
						|
        //else
 | 
						|
        app()._data_fine = data;
 | 
						|
      }
 | 
						|
 | 
						|
    if (data < data_ini)
 | 
						|
    {
 | 
						|
      f.error_box("La data finale non puo' essere inferiore alla data di partenza");
 | 
						|
      return FALSE;
 | 
						|
    }
 | 
						|
 | 
						|
    
 | 
						|
  } 
 | 
						|
  return TRUE;
 | 
						|
}
 | 
						|
 | 
						|
void TMastrini_application::saldi_zero()
 | 
						|
{
 | 
						|
  TLocalisamfile& rmov = current_cursor()->file(-RMOV_ALIAS);
 | 
						|
  real saldo_dare, saldo_avere;
 | 
						|
  long record;
 | 
						|
 | 
						|
  saldo_dare = saldo_avere = 0.0;
 | 
						|
 | 
						|
  if (current_cursor()->is_first_match(-RMOV_ALIAS))
 | 
						|
  {
 | 
						|
    record = rmov.recno();
 | 
						|
  
 | 
						|
    while (!rmov.eof())
 | 
						|
    {
 | 
						|
      long numreg = rmov.get_long(RMV_NUMREG);
 | 
						|
      _mov->setkey(1);
 | 
						|
      _mov->curr().zero();
 | 
						|
      _mov->curr().put(MOV_NUMREG,numreg);
 | 
						|
      _mov->read();
 | 
						|
      if (_mov->bad())
 | 
						|
        _mov->zero();
 | 
						|
      char provvis = _mov->curr().get_char(MOV_PROVVIS);
 | 
						|
      int gruppo = atoi(rmov.get(RMV_GRUPPO));
 | 
						|
      int conto = atoi(rmov.get(RMV_CONTO));
 | 
						|
      long sottoc = atol(rmov.get(RMV_SOTTOCONTO));
 | 
						|
 | 
						|
      if ((gruppo == _gruppo)&&(conto == _conto)&&(sottoc == _sottoc)) 
 | 
						|
      {
 | 
						|
        if (_stampa_mov_prov || provvis <= ' ')
 | 
						|
        {
 | 
						|
          char sezione = rmov.curr().get(RMV_SEZIONE)[0];
 | 
						|
          real importo = rmov.curr().get_real(RMV_IMPORTO);
 | 
						|
          if (sezione == 'D')
 | 
						|
            saldo_dare += importo;
 | 
						|
          else
 | 
						|
            saldo_avere += importo;
 | 
						|
        }                 
 | 
						|
      }
 | 
						|
      else break;
 | 
						|
      rmov.next();
 | 
						|
    }
 | 
						|
    rmov.readat(record);
 | 
						|
  }
 | 
						|
  _totale_saldo = saldo_dare - saldo_avere;
 | 
						|
}
 | 
						|
 | 
						|
void TMastrini_application::fai_stampa132()
 | 
						|
{ 
 | 
						|
  if (_nummast == 1 || _nummast == 3)
 | 
						|
    _rw = 1;
 | 
						|
  else
 | 
						|
    if (_nummast == 2)
 | 
						|
    {  
 | 
						|
      int riga;
 | 
						|
              
 | 
						|
      if ( (_conta_mastrini % 2) != 0 )
 | 
						|
        riga = (printer().formlen() / 2);    //-1
 | 
						|
      else
 | 
						|
        riga = printer().formlen();          //-1;
 | 
						|
        
 | 
						|
      int app1    = printer().formlen();
 | 
						|
      int app2    = printer().rows_left();
 | 
						|
      int cur_row = (app1 - app2);
 | 
						|
          
 | 
						|
      if (cur_row == riga) 
 | 
						|
      {
 | 
						|
        //_rw += 2;
 | 
						|
        _rw = crea_intestazione(_rw);
 | 
						|
        _rw = stampa_progre_riporto(_rw);
 | 
						|
        
 | 
						|
        if (_item != 0)  
 | 
						|
        {
 | 
						|
          for (int i = _indice_array; i < _item; i++)
 | 
						|
          {
 | 
						|
            TString& data = (TString&)_riga[i];
 | 
						|
    
 | 
						|
            int g1 = data.find("g",1);
 | 
						|
            int c1 = data.find("@",g1);
 | 
						|
            int g2 = data.find("g",c1);
 | 
						|
              
 | 
						|
            TString fmt1 = "";
 | 
						|
            TString fmt2 = "";
 | 
						|
            TString str1,str2;
 | 
						|
              
 | 
						|
            if (g1 != -1)
 | 
						|
            {
 | 
						|
              fmt1 = data.sub(0,g1+1);
 | 
						|
              fmt1 << "%s";
 | 
						|
              str1 = data.sub(g1+1,c1);
 | 
						|
            }  
 | 
						|
            if (c1 != -1)
 | 
						|
            {
 | 
						|
              fmt2 = data.sub(c1,g2+1);
 | 
						|
              fmt2 << "%s";
 | 
						|
              str2 = data.sub(g2+1);
 | 
						|
            }
 | 
						|
              
 | 
						|
            if (fmt1 != "")
 | 
						|
              set_row (_rw,fmt1,(const char*) str1);
 | 
						|
            if (fmt2 != "")
 | 
						|
              set_row (_rw,fmt2,(const char*) str2);
 | 
						|
              
 | 
						|
            _rw++;
 | 
						|
          }  
 | 
						|
        }  
 | 
						|
      }
 | 
						|
      else
 | 
						|
        _rw = 1;
 | 
						|
      
 | 
						|
      if (_item != 0)  
 | 
						|
        _riga.destroy();
 | 
						|
    }
 | 
						|
    
 | 
						|
  set_row (_rw,"@0g#t",  &_dataregs);
 | 
						|
  if (_stampanum == 1)
 | 
						|
    set_row (_rw,"@11g$[r]#7d$[n]", &_numreg);
 | 
						|
  else
 | 
						|
    if (_stampanum == 2)
 | 
						|
    {
 | 
						|
      set_row (_rw,"@11g#7d", &_numgio);
 | 
						|
    }            
 | 
						|
    
 | 
						|
  set_row (_rw,"@19g#t", &_datadocs);
 | 
						|
  set_row (_rw,"@30g#7t", &_numdoc);
 | 
						|
  set_row (_rw,"@38g#3t", &_codcaus);
 | 
						|
 | 
						|
  set_row (_rw,"@77g#7t", &_centrodicosto);
 | 
						|
  set_row (_rw,"@117g#3t", &_g_contr);
 | 
						|
  set_row (_rw,"@120g#3t", &_c_contr);
 | 
						|
  set_row (_rw,"@123g#6t", &_s_contr);
 | 
						|
}
 | 
						|
 | 
						|
void TMastrini_application::fai_stampa198()
 | 
						|
{            
 | 
						|
  if (_nummast == 1 || _nummast == 3)
 | 
						|
    _rw = 1;
 | 
						|
  else
 | 
						|
    if (_nummast == 2)
 | 
						|
    {            
 | 
						|
      int riga;
 | 
						|
              
 | 
						|
      if ( (_conta_mastrini % 2) != 0 )
 | 
						|
        riga = (printer().formlen() / 2);    //-1
 | 
						|
      else
 | 
						|
        riga = printer().formlen();          //-1;
 | 
						|
 | 
						|
      int app1    = printer().formlen();
 | 
						|
      int app2    = printer().rows_left();
 | 
						|
      int cur_row = (app1 - app2);
 | 
						|
          
 | 
						|
      if (cur_row == riga) 
 | 
						|
      {
 | 
						|
        //_rw += 2;
 | 
						|
        _rw = crea_intestazione(_rw);
 | 
						|
        _rw = stampa_progre_riporto(_rw);
 | 
						|
        
 | 
						|
        if (_item != 0)
 | 
						|
        {
 | 
						|
          for (int i = _indice_array; i < _item; i++)
 | 
						|
          {
 | 
						|
            TString& data = (TString&)_riga[i];
 | 
						|
    
 | 
						|
            int g1 = data.find("g",1);
 | 
						|
            int c1 = data.find("@",g1);
 | 
						|
            int g2 = data.find("g",c1);
 | 
						|
              
 | 
						|
            TString fmt1 = "";
 | 
						|
            TString fmt2 = "";
 | 
						|
            TString str1,str2;
 | 
						|
              
 | 
						|
            if (g1 != -1)
 | 
						|
            {
 | 
						|
              fmt1 = data.sub(0,g1+1);
 | 
						|
              fmt1 << "%s";
 | 
						|
              str1 = data.sub(g1+1,c1);
 | 
						|
            }  
 | 
						|
            if (c1 != -1)
 | 
						|
            {
 | 
						|
              fmt2 = data.sub(c1,g2+1);
 | 
						|
              fmt2 << "%s";
 | 
						|
              str2 = data.sub(g2+1);
 | 
						|
            }
 | 
						|
              
 | 
						|
            if (fmt1 != "")
 | 
						|
              set_row (_rw,fmt1,(const char*) str1);
 | 
						|
            if (fmt2 != "")
 | 
						|
              set_row (_rw,fmt2,(const char*) str2);
 | 
						|
              
 | 
						|
            _rw++;
 | 
						|
          }
 | 
						|
        }
 | 
						|
      }
 | 
						|
      else
 | 
						|
        _rw = 1;
 | 
						|
         
 | 
						|
      if (_item != 0)   
 | 
						|
        _riga.destroy();  
 | 
						|
    }
 | 
						|
 | 
						|
  set_row (_rw,"@0g#t", &_dataregs);
 | 
						|
  if (_stampanum == 1)            
 | 
						|
  {
 | 
						|
    set_row (_rw,"@11g$[r]#7d$[n]", &_numreg);
 | 
						|
    set_row (_rw,"@18g/#3d", &_numrig);
 | 
						|
  }
 | 
						|
  else if (_stampanum == 2)
 | 
						|
     set_row (_rw,"@11g#7d", &_numgio);
 | 
						|
     
 | 
						|
  set_row (_rw,"@23g#t", &_datadocs);
 | 
						|
  set_row (_rw,"@34g#7t", &_numdoc);
 | 
						|
  set_row (_rw,"@42g#3t", &_codcaus);
 | 
						|
 | 
						|
  set_row (_rw,"@93g#7t", &_centrodicosto);
 | 
						|
// Stampa saldo movimenti
 | 
						|
 | 
						|
  set_row (_rw,"@149g#t", &_saldo_movimenti_str);
 | 
						|
 | 
						|
  set_row (_rw,"@165g#3t", &_g_contr);
 | 
						|
  set_row (_rw,"@169g#3t", &_c_contr);
 | 
						|
  set_row (_rw,"@173g#6t", &_s_contr);
 | 
						|
}
 | 
						|
 | 
						|
void TMastrini_application::stampa_totali132()
 | 
						|
{
 | 
						|
  TString sep(132);
 | 
						|
 | 
						|
  if (_nummast == 1 || _nummast == 3)
 | 
						|
    _rw = 2;
 | 
						|
      
 | 
						|
  sep.fill('-');                            //Stampa 132 - (sep(132))      
 | 
						|
  set_row(_rw++,"@0g%s", (const char *) sep);
 | 
						|
 | 
						|
  _totprogre_dare=_progredare+_totale_periodo_dare;
 | 
						|
  _totprogre_avere=_progreavere+_totale_periodo_avere;
 | 
						|
  _saldo_periodo = _totale_periodo_dare - _totale_periodo_avere;
 | 
						|
  _saldo_progre = _totprogre_dare - _totprogre_avere;
 | 
						|
  _saldo_progre_al = _totprogre_dare_al - _totprogre_avere_al;
 | 
						|
  TString string = _saldo_periodo.string(_picture);
 | 
						|
  set_row (_rw,"@32gTOTALI PERIODO@69g%15s", (const char*)string);
 | 
						|
  string = _totale_periodo_dare.string(_picture);
 | 
						|
  set_row (_rw,"@85g%15s", (const char*)string);   
 | 
						|
  string = _totale_periodo_avere.string(_picture);
 | 
						|
  set_row (_rw++,"@101g%15s", (const char*)string);
 | 
						|
  string = _saldo_progre.string(_picture);
 | 
						|
  set_row (_rw,"@32gTOTALI PROGRESSIVI@69g%15s", (const char*)string);
 | 
						|
  string = _totprogre_dare.string(_picture);
 | 
						|
  set_row (_rw,"@85g%15s", (const char*)string);
 | 
						|
  string = _totprogre_avere.string(_picture);
 | 
						|
  set_row (_rw++,"@101g%15s", (const char*)string);
 | 
						|
  if (_stampaprogre)                         //Progressivi attuali
 | 
						|
  {                                            
 | 
						|
    TString str = _saldo_progre_al.string(_picture);
 | 
						|
    set_row (_rw,"@32gTOTALI PROGRESSIVI AL@55g%s",(const char*)_ultima_data_reg.string());
 | 
						|
    set_row (_rw,"@69g%15s", (const char*)str);
 | 
						|
    str = _totprogre_dare_al.string(_picture);
 | 
						|
    set_row (_rw,"@85g%15s", (const char*)str);
 | 
						|
    str = _totprogre_avere_al.string(_picture);
 | 
						|
    set_row (_rw,"@101g%15s", (const char*)str);
 | 
						|
  }                        
 | 
						|
  _devi_stampare_footer = FALSE;
 | 
						|
}
 | 
						|
 | 
						|
void TMastrini_application::carica_array_totali132()
 | 
						|
{
 | 
						|
  TString sep(132);
 | 
						|
  TToken_string r(255); 
 | 
						|
  
 | 
						|
  if (_nummast == 2)
 | 
						|
    _rw = 1;
 | 
						|
 | 
						|
  _totprogre_dare=_progredare+_totale_periodo_dare;
 | 
						|
  _totprogre_avere=_progreavere+_totale_periodo_avere;
 | 
						|
  _saldo_periodo = _totale_periodo_dare - _totale_periodo_avere;
 | 
						|
  _saldo_progre = _totprogre_dare - _totprogre_avere;
 | 
						|
  _saldo_progre_al = _totprogre_dare_al - _totprogre_avere_al;
 | 
						|
 | 
						|
  sep.fill(' ');
 | 
						|
  r.add("@0g%s");
 | 
						|
  r.add(sep);  
 | 
						|
  _lista.add(r);  
 | 
						|
  r = "";
 | 
						|
  
 | 
						|
  sep.fill('-');                            //Stampa 132 - (sep(132))      
 | 
						|
  r.add("@0g%s");
 | 
						|
  r.add(sep);
 | 
						|
  _lista.add(r);
 | 
						|
  r = "";
 | 
						|
 | 
						|
  r.add("@32gTOTALI PERIODO@69g%15s@85g%15s@101g%15s");
 | 
						|
  r.add(_saldo_periodo.string(_picture));     
 | 
						|
  r.add(_totale_periodo_dare.string(_picture));
 | 
						|
  r.add(_totale_periodo_avere.string(_picture));
 | 
						|
  _lista.add(r);  
 | 
						|
  r = "";
 | 
						|
 | 
						|
  r.add("@32gTOTALI PROGRESSIVI@69g%15s@85g%15s@101g%15s");
 | 
						|
  r.add(_saldo_progre.string(_picture));       
 | 
						|
  r.add(_totprogre_dare.string(_picture));
 | 
						|
  r.add(_totprogre_avere.string(_picture));
 | 
						|
  _lista.add(r);
 | 
						|
  r = "";
 | 
						|
  
 | 
						|
  if (_stampaprogre)                         //Progressivi attuali
 | 
						|
  {
 | 
						|
    r.add("@32gTOTALI PROGRESSIVI AL@55g%s@69g%15s@85g%15s@101g%15s");
 | 
						|
    r.add(_ultima_data_reg.string());
 | 
						|
    r.add(_saldo_progre_al.string(_picture));
 | 
						|
    r.add(_totprogre_dare_al.string(_picture));
 | 
						|
    r.add(_totprogre_avere_al.string(_picture));
 | 
						|
    _lista.add(r);
 | 
						|
    r = "";
 | 
						|
  } 
 | 
						|
 | 
						|
  if (_stampatotiva)
 | 
						|
  {         
 | 
						|
    real totale;
 | 
						|
    
 | 
						|
    sep.fill(' ');
 | 
						|
    r.add("@0g%s");
 | 
						|
    r.add(sep);  
 | 
						|
    _lista.add(r);  
 | 
						|
    r = "";
 | 
						|
 | 
						|
    TString fmt ("@0g%s");
 | 
						|
    TString fmt1(format("@%dg", _ddociva_len));
 | 
						|
    fmt << fmt1 << "%15s";
 | 
						|
 | 
						|
    for (int j = 0; j < _b.items(); j++)
 | 
						|
    {
 | 
						|
      TDociva& riga = (TDociva&)_b[j];
 | 
						|
      r.add(fmt);
 | 
						|
      r.add(riga._descrdoc);   
 | 
						|
      totale = riga._totdociva;
 | 
						|
      r.add(totale.string(_picture));
 | 
						|
      _lista.add(r);
 | 
						|
      r = "";
 | 
						|
    }
 | 
						|
 | 
						|
    _b.destroy();
 | 
						|
  }
 | 
						|
  
 | 
						|
  _indice_lista = 0;
 | 
						|
}
 | 
						|
 | 
						|
void TMastrini_application::stampa_totali132_II()
 | 
						|
{                              
 | 
						|
  int riga,cur_row,diff;
 | 
						|
  int lim = 0;
 | 
						|
  
 | 
						|
  _item_lista = _lista.items();
 | 
						|
  
 | 
						|
  if ( (_conta_mastrini % 2) != 0 )
 | 
						|
  {
 | 
						|
    riga    = (printer().formlen() / 2);    //- 1;
 | 
						|
    cur_row = printer().formlen() - printer().rows_left();
 | 
						|
    diff    = riga - cur_row;
 | 
						|
  }
 | 
						|
  else
 | 
						|
  {
 | 
						|
    riga    = printer().formlen();          //- 1;
 | 
						|
    cur_row = printer().formlen() - printer().rows_left();
 | 
						|
    diff    = riga - cur_row;
 | 
						|
  }
 | 
						|
 | 
						|
  if (_indice_lista == 0 && diff != 0)
 | 
						|
  {
 | 
						|
    if (_item_lista > diff)
 | 
						|
      lim = diff;
 | 
						|
    else
 | 
						|
      lim = _item_lista;
 | 
						|
  }
 | 
						|
  else  
 | 
						|
  {
 | 
						|
    lim = _item_lista;
 | 
						|
    _rw = 1;
 | 
						|
    _rw = crea_intestazione(_rw);
 | 
						|
    _rw = stampa_progre_riporto(_rw);          
 | 
						|
    if ( (_conta_mastrini % 2) != 0 )
 | 
						|
    {
 | 
						|
      riga    = (printer().formlen() / 2);    //- 1;
 | 
						|
      cur_row = _rw;
 | 
						|
      diff    = riga - cur_row;
 | 
						|
    }
 | 
						|
    else
 | 
						|
    {
 | 
						|
      riga    = printer().formlen();          //- 1;
 | 
						|
      cur_row = _rw + (printer().formlen() / 2); //32;
 | 
						|
      diff    = riga - cur_row;
 | 
						|
    }
 | 
						|
  }
 | 
						|
            
 | 
						|
  for (int i = _indice_lista; i < lim; i++)
 | 
						|
  {
 | 
						|
    TToken_string& data = (TToken_string&)_lista[i];
 | 
						|
  
 | 
						|
    TString fmt  (data.get(0));
 | 
						|
    TString arg1 (data.get(1));
 | 
						|
    TString arg2 (data.get(2));
 | 
						|
    TString arg3 (data.get(3));
 | 
						|
    TString arg4 (data.get(4));
 | 
						|
    
 | 
						|
    set_row(_rw++,fmt, (const char*) arg1, (const char*) arg2, (const char*) arg3, (const char*) arg4);         
 | 
						|
    
 | 
						|
    _indice_lista++;
 | 
						|
  }                  
 | 
						|
  
 | 
						|
  if (_item_lista <= diff)
 | 
						|
    _lista.destroy();
 | 
						|
  
 | 
						|
  _devi_stampare_footer = FALSE;  
 | 
						|
}
 | 
						|
 | 
						|
void TMastrini_application::stampa_totali198()
 | 
						|
{
 | 
						|
  TString sep(198);
 | 
						|
 | 
						|
  if (_nummast == 1 || _nummast == 3)
 | 
						|
    _rw = 1;
 | 
						|
 | 
						|
  sep.fill('-');                            //Stampa 198 - (sep(198))      
 | 
						|
  set_row(_rw++,"@0g%s", (const char *) sep);
 | 
						|
 | 
						|
  _totprogre_dare=_progredare+_totale_periodo_dare;
 | 
						|
  _totprogre_avere=_progreavere+_totale_periodo_avere;
 | 
						|
  TString string = _totale_periodo_dare.string(_picture);
 | 
						|
  set_row (_rw,"@32gTOTALI PERIODO@101g%15s", (const char*)string);
 | 
						|
  string = _totale_periodo_avere.string(_picture);
 | 
						|
  set_row (_rw,"@117g%15s", (const char*)string);
 | 
						|
  string = _saldo_movimenti.string(_picture);
 | 
						|
  set_row (_rw++,"@149g%15s", (const char*)string);
 | 
						|
  string = _totprogre_dare.string(_picture);
 | 
						|
  set_row (_rw,"@32gTOTALI PROGRESSIVI@101g%15s",(const char*)string);
 | 
						|
  string = _totprogre_avere.string(_picture);
 | 
						|
  set_row (_rw,"@117g%15s", (const char*)string);
 | 
						|
  string = _saldo_progressivi.string(_picture);     
 | 
						|
  set_row (_rw++,"@133g%15s", (const char*)string);
 | 
						|
  if (_stampaprogre)                          //Progressivi attuali
 | 
						|
  {
 | 
						|
    set_row(_rw,"@32gTOTALI PROGRESSIVI AL@55g%s",(const char*)_ultima_data_reg.string());
 | 
						|
    TString str = _totprogre_dare_al.string(_picture);
 | 
						|
    set_row (_rw,"@101g%15s", (const char*)str);
 | 
						|
    str = _totprogre_avere_al.string(_picture);
 | 
						|
    set_row (_rw,"@117g%15s", (const char*)str); 
 | 
						|
    str = _saldo_progressivi.string(_picture);    
 | 
						|
    set_row (_rw,"@133g%15s", (const char*)str);
 | 
						|
  }                             
 | 
						|
  _devi_stampare_footer = FALSE;
 | 
						|
}
 | 
						|
 | 
						|
void TMastrini_application::carica_array_totali198()
 | 
						|
{
 | 
						|
  TString sep(198);
 | 
						|
  TToken_string r(255); 
 | 
						|
  
 | 
						|
  if (_nummast == 2)
 | 
						|
    _rw = 1;
 | 
						|
            
 | 
						|
  sep.fill(' ');                            //Stampa 132 - (sep(132))      
 | 
						|
  r.add("@0g%s");
 | 
						|
  r.add(sep);
 | 
						|
  _lista.add(r);
 | 
						|
  r = "";
 | 
						|
 | 
						|
  sep.fill('-');                            //Stampa 132 - (sep(132))      
 | 
						|
  r.add("@0g%s");
 | 
						|
  r.add(sep);
 | 
						|
  _lista.add(r);
 | 
						|
  r = "";
 | 
						|
 | 
						|
  _totprogre_dare=_progredare+_totale_periodo_dare;
 | 
						|
  _totprogre_avere=_progreavere+_totale_periodo_avere;
 | 
						|
 | 
						|
  r.add("@32gTOTALI PERIODO@101g%15s@117g%15s@149g%15s");
 | 
						|
  r.add(_totale_periodo_dare.string(_picture));
 | 
						|
  r.add(_totale_periodo_avere.string(_picture));
 | 
						|
  r.add(_saldo_movimenti.string(_picture));
 | 
						|
  _lista.add(r);
 | 
						|
  r = "";
 | 
						|
 | 
						|
  r.add("@32gTOTALI PROGRESSIVI@101g%15s@117g%15s@133g%15s");
 | 
						|
  r.add(_totprogre_dare.string(_picture));
 | 
						|
  r.add(_totprogre_avere.string(_picture));
 | 
						|
  r.add(_saldo_progressivi.string(_picture));     
 | 
						|
  _lista.add(r);
 | 
						|
  r = "";
 | 
						|
  
 | 
						|
  if (_stampaprogre)                          //Progressivi attuali
 | 
						|
  {
 | 
						|
    r.add("@32gTOTALI PROGRESSIVI AL@55g%s@101g%15s@117g%15s@133g%15s");
 | 
						|
    r.add(_ultima_data_reg.string());
 | 
						|
    r.add(_totprogre_dare_al.string(_picture));
 | 
						|
    r.add(_totprogre_avere_al.string(_picture));
 | 
						|
    r.add(_saldo_progressivi.string(_picture));    
 | 
						|
    _lista.add(r);
 | 
						|
    r = "";
 | 
						|
  }                 
 | 
						|
 | 
						|
  if (_stampatotiva)
 | 
						|
  { 
 | 
						|
    real totale;
 | 
						|
    
 | 
						|
    sep.fill(' ');
 | 
						|
    r.add("@0g%s");
 | 
						|
    r.add(sep);  
 | 
						|
    _lista.add(r);  
 | 
						|
    r = "";
 | 
						|
    
 | 
						|
    TString fmt ("@0g%s");
 | 
						|
    TString fmt1(format("@%dg", _ddociva_len));
 | 
						|
    fmt << fmt1 << "%15s";
 | 
						|
    
 | 
						|
    for (int j = 0; j < _b.items(); j++)
 | 
						|
    {
 | 
						|
      TDociva& riga = (TDociva&)_b[j];
 | 
						|
      r.add(fmt);
 | 
						|
      r.add(riga._descrdoc);   
 | 
						|
      totale = riga._totdociva;
 | 
						|
      r.add(totale.string(_picture));
 | 
						|
      _lista.add(r);
 | 
						|
      r = "";
 | 
						|
    }
 | 
						|
 | 
						|
    _b.destroy();
 | 
						|
  }
 | 
						|
  
 | 
						|
  _indice_lista = 0;
 | 
						|
}
 | 
						|
 | 
						|
void TMastrini_application::stampa_totali198_II()
 | 
						|
{
 | 
						|
  int riga,cur_row,diff;
 | 
						|
  int lim = 0;
 | 
						|
  
 | 
						|
  _item_lista = _lista.items();
 | 
						|
  
 | 
						|
  if ( (_conta_mastrini % 2) != 0 )
 | 
						|
  {
 | 
						|
    riga    = (printer().formlen() / 2);    //- 1;
 | 
						|
    cur_row = printer().formlen() - printer().rows_left();
 | 
						|
    diff    = riga - cur_row;
 | 
						|
  }
 | 
						|
  else
 | 
						|
  {
 | 
						|
    riga    = printer().formlen();          //- 1;
 | 
						|
    cur_row = printer().formlen() - printer().rows_left();
 | 
						|
    diff    = riga - cur_row;
 | 
						|
  }
 | 
						|
 | 
						|
  if (_indice_lista == 0 && diff != 0)
 | 
						|
  {
 | 
						|
    if (_item_lista > diff)
 | 
						|
      lim = diff;
 | 
						|
    else
 | 
						|
      lim = _item_lista;
 | 
						|
  }
 | 
						|
  else  
 | 
						|
  {
 | 
						|
    lim = _item_lista;
 | 
						|
    _rw = 1;
 | 
						|
    _rw = crea_intestazione(_rw);
 | 
						|
    _rw = stampa_progre_riporto(_rw);          
 | 
						|
    if ( (_conta_mastrini % 2) != 0 )
 | 
						|
    {
 | 
						|
      riga    = (printer().formlen() / 2);    //- 1;
 | 
						|
      cur_row = _rw;
 | 
						|
      diff    = riga - cur_row;
 | 
						|
    }
 | 
						|
    else
 | 
						|
    {
 | 
						|
      riga    = printer().formlen();          //- 1;
 | 
						|
      cur_row = _rw + (printer().formlen() / 2);  //32;
 | 
						|
      diff    = riga - cur_row;
 | 
						|
    }
 | 
						|
  }
 | 
						|
            
 | 
						|
  for (int i = _indice_lista; i < lim; i++)
 | 
						|
  {
 | 
						|
    TToken_string& data = (TToken_string&)_lista[i];
 | 
						|
  
 | 
						|
    TString fmt  (data.get(0));
 | 
						|
    TString arg1 (data.get(1));
 | 
						|
    TString arg2 (data.get(2));
 | 
						|
    TString arg3 (data.get(3));
 | 
						|
    TString arg4 (data.get(4));
 | 
						|
    
 | 
						|
    set_row(_rw++,fmt, (const char*) arg1, (const char*) arg2, (const char*) arg3, (const char*) arg4);         
 | 
						|
    
 | 
						|
    _indice_lista++;
 | 
						|
  }                  
 | 
						|
  
 | 
						|
  if (_item_lista <= diff)
 | 
						|
    _lista.destroy();           
 | 
						|
    
 | 
						|
  _devi_stampare_footer = FALSE;
 | 
						|
}
 | 
						|
 | 
						|
void TMastrini_application::setta_riga (int r, TString riga)
 | 
						|
{                         
 | 
						|
  TString *p = (TString*)_riga.objptr(r);
 | 
						|
  if (!p)
 | 
						|
  {
 | 
						|
    p = new TString;
 | 
						|
    _riga.add (p);
 | 
						|
  }
 | 
						|
  *p << riga;
 | 
						|
}
 | 
						|
 | 
						|
bool TMastrini_application::preprocess_page(int file, int counter)
 | 
						|
{ 
 | 
						|
  TLocalisamfile & rmov = current_cursor()->file(-RMOV_ALIAS);
 | 
						|
  long    rec;
 | 
						|
  TDate   datasucc;
 | 
						|
  TString datasuccstring,dataregrmovstring;
 | 
						|
  int     gruppof,contof;
 | 
						|
  long    sottocf;
 | 
						|
  TString provvis = "";
 | 
						|
  int     annoes;
 | 
						|
 | 
						|
  if (counter)
 | 
						|
    return TRUE;
 | 
						|
  
 | 
						|
  switch (file)
 | 
						|
  {
 | 
						|
    case LF_SALDI:
 | 
						|
 | 
						|
// Usati in crea_intestazione()
 | 
						|
      
 | 
						|
      _devi_stampare_footer = TRUE;
 | 
						|
       
 | 
						|
      if (_nummast == 3 || _nummast == 2)
 | 
						|
      {
 | 
						|
        _rw = 0;
 | 
						|
        _rw++;
 | 
						|
      }
 | 
						|
       
 | 
						|
      _gruppo = atoi(current_cursor()->curr(LF_SALDI).get(SLD_GRUPPO));
 | 
						|
      _conto  = atoi(current_cursor()->curr(LF_SALDI).get(SLD_CONTO));
 | 
						|
      _sottoc = atol(current_cursor()->curr(LF_SALDI).get(SLD_SOTTOCONTO)); 
 | 
						|
      
 | 
						|
      _cambia_mastrino = TRUE;
 | 
						|
      
 | 
						|
      annoes  = atoi(current_cursor()->curr(LF_SALDI).get(SLD_ANNOES));  
 | 
						|
      conto(_gruppo,_conto,TRUE);
 | 
						|
 | 
						|
      if (annoes != _anno_corrente && annoes != _anno_precedente)
 | 
						|
        return FALSE;
 | 
						|
 | 
						|
      if (_g_prec == _gruppo && _c_prec == _conto && _s_prec == _sottoc)
 | 
						|
        return FALSE;
 | 
						|
 | 
						|
      _g_prec = _gruppo;
 | 
						|
      _c_prec = _conto;
 | 
						|
      _s_prec = _sottoc;
 | 
						|
 | 
						|
      _saldo_periodo = ZERO;
 | 
						|
      _totale_periodo_dare = ZERO;
 | 
						|
      _totale_periodo_avere = ZERO;
 | 
						|
      _saldo_progre = ZERO;
 | 
						|
      _totprogre_dare = ZERO;
 | 
						|
      _totprogre_avere = ZERO;
 | 
						|
      _saldo_progre_al = ZERO;
 | 
						|
      _totprogre_dare_al = ZERO;
 | 
						|
      _totprogre_avere_al = ZERO;
 | 
						|
      _progredare = ZERO;
 | 
						|
      _progreavere = ZERO;
 | 
						|
      _totale_prima_dare = ZERO;
 | 
						|
      _totale_prima_avere = ZERO;
 | 
						|
      _saldo_movimenti = ZERO;
 | 
						|
      _saldo_progressivi = ZERO;
 | 
						|
      _saldo_progre_prec = ZERO;
 | 
						|
      if (_tipostampa == 2)
 | 
						|
      {
 | 
						|
        calcola_progressivi();
 | 
						|
        _totale_saldo = _totprogre_dare_al - _totprogre_avere_al;
 | 
						|
      }
 | 
						|
                      
 | 
						|
      if ((_tipostampa == 1) || (_tipostampa == 2))
 | 
						|
      {  
 | 
						|
        if ((_tipostampa == 1 && almeno_un_record()) ||
 | 
						|
            (_tipostampa == 2 && _totale_saldo != ZERO))
 | 
						|
        {                                
 | 
						|
          _puoi_stampare = TRUE;  
 | 
						|
          
 | 
						|
          if (_nummast == 3 || _nummast == 2)  
 | 
						|
          {                           
 | 
						|
            int cur_row = printer().formlen() - printer().rows_left();
 | 
						|
            int diff = printer().formlen() - cur_row;
 | 
						|
            if (diff <= 13 && diff != 0)
 | 
						|
              printer().formfeed();
 | 
						|
              
 | 
						|
            _rw = crea_intestazione(_rw);
 | 
						|
            calcola_progressivi();
 | 
						|
            _saldo_progressivi += _saldo_progre_prec;          
 | 
						|
            _rw = stampa_progre_riporto(_rw);
 | 
						|
          }
 | 
						|
        }  
 | 
						|
        else
 | 
						|
        {
 | 
						|
          _puoi_stampare = FALSE; 
 | 
						|
          return FALSE;
 | 
						|
        }                      
 | 
						|
      }
 | 
						|
      else
 | 
						|
        if (_tipostampa == 3) 
 | 
						|
        {  
 | 
						|
          calcola_progressivi();
 | 
						|
          if (_progredare == ZERO && _progreavere == ZERO && !almeno_un_record())  
 | 
						|
          { 
 | 
						|
            _puoi_stampare = FALSE;
 | 
						|
            return FALSE;
 | 
						|
          }
 | 
						|
          else               
 | 
						|
          {                                
 | 
						|
            _puoi_stampare = TRUE; 
 | 
						|
            
 | 
						|
            if (_nummast == 3 || _nummast == 2)
 | 
						|
            {                                                        
 | 
						|
              int cur_row = printer().formlen() - printer().rows_left();            
 | 
						|
              int diff = printer().formlen() - cur_row;
 | 
						|
              if (diff <= 13 && diff != 0)
 | 
						|
                printer().formfeed();
 | 
						|
                
 | 
						|
              _rw = crea_intestazione(_rw);
 | 
						|
              _saldo_progressivi += _saldo_progre_prec;
 | 
						|
              _rw = stampa_progre_riporto(_rw);
 | 
						|
            }
 | 
						|
          }
 | 
						|
        }    
 | 
						|
      break;
 | 
						|
 | 
						|
    case -RMOV_ALIAS:
 | 
						|
    {
 | 
						|
     //Il flag _gia_stampata_intestazione serve nella stampa in continuo, xche'
 | 
						|
     //sono costretto a richiamare l'intestazione sia nella preprocess_page (per
 | 
						|
     //i mastrini con intestazione a meta' pagina), sia nella preprocess_header
 | 
						|
     //per i mastrini che si trovano a cavallo fra una pagina e quella successiva.
 | 
						|
     //In quest'ultimo caso infatti quando vado a pagina nuova devo stampare l'intestazione
 | 
						|
     //ma senza il flag rischio di stamparla due volte.
 | 
						|
     
 | 
						|
     if (_nummast == 3)
 | 
						|
        _gia_stampata_intestazione = FALSE;  
 | 
						|
      
 | 
						|
      if (_nummast == 1 || _nummast == 3)
 | 
						|
        _rw = 1;
 | 
						|
        
 | 
						|
      // Ricerca la contropartita di quel movimento
 | 
						|
      
 | 
						|
      TLocalisamfile&  rmov = current_cursor()->file(-RMOV_ALIAS);
 | 
						|
           
 | 
						|
      _numreg = atol(rmov.get(RMV_NUMREG));
 | 
						|
      _numrig = atoi(rmov.get(RMV_NUMRIG));
 | 
						|
 | 
						|
      _gruppocontr     = rmov.get_int (RMV_GRUPPOC);
 | 
						|
      _contocontr      = rmov.get_int (RMV_CONTOC);
 | 
						|
      _sottocontocontr = rmov.get_long(RMV_SOTTOCONTOC);  
 | 
						|
      _g_contr = rmov.get(RMV_GRUPPOC);
 | 
						|
      _c_contr = rmov.get(RMV_CONTOC);
 | 
						|
      _s_contr = rmov.get(RMV_SOTTOCONTOC);
 | 
						|
      _centrodicosto = rmov.get(RMV_CDC);
 | 
						|
 | 
						|
     // Se non ha il richiesto numero di centro di costo salta la stampa di questa riga di movimento
 | 
						|
     if (_cdc != 0L && _cdc != atol(_centrodicosto))
 | 
						|
       return FALSE;
 | 
						|
     
 | 
						|
    // Stampa solo quelli che hanno anno esercizio uguale a quello specificato
 | 
						|
    // nella maschera. Se non viene specificato li stampa tutti
 | 
						|
 | 
						|
      _importo = current_cursor()->curr(-RMOV_ALIAS).get_real(RMV_IMPORTO);
 | 
						|
      _importo_str = _importo.string(_picture);
 | 
						|
      _mov->setkey(1);
 | 
						|
      _mov->curr().zero();
 | 
						|
      _mov->curr().put(MOV_NUMREG,_numreg);
 | 
						|
      _mov->read();
 | 
						|
      if (_mov->bad())
 | 
						|
        _mov->zero();
 | 
						|
      _annoes  = _mov->get_int(MOV_ANNOES);
 | 
						|
      _regiva  = _mov->curr().get(MOV_REG);   
 | 
						|
      _annoiva = _mov->curr().get_int(MOV_ANNOIVA);
 | 
						|
 | 
						|
      // Controlla se saldo e' diverso da 0
 | 
						|
 | 
						|
      if (((_annoes == _annomsk) || (_annomsk == 0)) && (_totale_saldo != 0.0))
 | 
						|
      { 
 | 
						|
        _sezione = current_cursor()->curr(-RMOV_ALIAS).get(RMV_SEZIONE);     
 | 
						|
 | 
						|
        if (_annomsk == 0)
 | 
						|
        {
 | 
						|
          // Se sono stati selezionati i movimenti di cassa considera la data di competenza e registrazione su di essi
 | 
						|
          _datareg = !_movcas_print ? (_mov->curr().get(MOV_DATAREG)) : rmov.get(RMV_DATAREG);
 | 
						|
          _datareg_stampa = _datareg;
 | 
						|
        }
 | 
						|
        else
 | 
						|
          if (_annomsk != 0)
 | 
						|
          {
 | 
						|
            // Se sono stati selezionati i movimenti di cassa considera la data di competenza e registrazione su di essi
 | 
						|
            _datareg = !_movcas_print ? _mov->curr().get(MOV_DATACOMP) : rmov.get(RMV_DATAREG);
 | 
						|
            _datareg_stampa = !_movcas_print ? _mov->curr().get(MOV_DATAREG) : rmov.get(RMV_DATAREG);
 | 
						|
          }
 | 
						|
 | 
						|
        provvis  =  _mov->curr().get(MOV_PROVVIS);
 | 
						|
  
 | 
						|
        _dataregs = _datareg_stampa.string();
 | 
						|
 | 
						|
        if ((_stampa_mov_prov)||((!_stampa_mov_prov)&&(provvis.trim().empty())))
 | 
						|
        {
 | 
						|
          if ((_datareg >= _data_ini) && (_datareg <= _data_fine))
 | 
						|
          {   
 | 
						|
            // Determino l' anno di competenza dell' operazione in esame          
 | 
						|
            int anno = date2esc(_datareg_stampa);
 | 
						|
            if (anno != _annoes)
 | 
						|
              if (_numcarat == 1)
 | 
						|
                set_row (_rw, "@131g*");
 | 
						|
              else
 | 
						|
                if (_numcarat == 2)
 | 
						|
                  set_row (_rw, "@197g*");
 | 
						|
 | 
						|
            if (_stampa_mov_prov  && provvis.trim().not_empty()) 
 | 
						|
              if (_numcarat == 1)
 | 
						|
                set_row(_rw, "@129gP"); 
 | 
						|
              else
 | 
						|
                if (_numcarat == 2)
 | 
						|
                  set_row(_rw, "@195gP");
 | 
						|
                
 | 
						|
            _codcaus = _mov->curr().get(MOV_CODCAUS);
 | 
						|
            _tipodoc = _mov->curr().get(MOV_TIPODOC);
 | 
						|
            if (_stampatotiva && (_tmcf == 'C' || _tmcf == 'F'))
 | 
						|
            {  
 | 
						|
              if (_tipodoc != "")
 | 
						|
              {
 | 
						|
                documenti_iva();
 | 
						|
                _b.add_riga(_descrdociva,_importo, _natdoc);     
 | 
						|
                if (_descrdociva.len() > _ddociva_len)
 | 
						|
                  _ddociva_len = _descrdociva.len();
 | 
						|
              }
 | 
						|
            }
 | 
						|
            _datadoc = (_mov->curr().get(MOV_DATADOC));
 | 
						|
            _datadocs = _datadoc.string();
 | 
						|
            _numdoc = _mov->curr().get(MOV_NUMDOC);
 | 
						|
            descrizione_causale();
 | 
						|
            _descrizionemov = _mov->curr().get(MOV_DESCR);
 | 
						|
            _numgio = atol(_mov->curr().get(MOV_NUMGIO));
 | 
						|
 | 
						|
            _descrizione = current_cursor()->curr(-RMOV_ALIAS).get(RMV_DESCR);
 | 
						|
          
 | 
						|
            if (_nummast == 1 || _nummast == 3)
 | 
						|
            {
 | 
						|
              if (_numcarat == 1)     // Stampa 132 caratteri
 | 
						|
              {
 | 
						|
                if (_descrizione != "")
 | 
						|
                {
 | 
						|
                  *_d23 = (const char*) _descrizione;
 | 
						|
                  if (_descrizionemov != "")
 | 
						|
                  {                                    
 | 
						|
                    *_d18 = (const char*) _descrizionemov;
 | 
						|
                    set_row(_rw, "@42g#a", _d18);
 | 
						|
                    set_row(_rw, "@58g#a", _d23);
 | 
						|
                  }
 | 
						|
                  else if (_descrizionemov == "")
 | 
						|
                  { 
 | 
						|
                    *_d18 = (const char*) _descrcaus;
 | 
						|
                    set_row(_rw, "@42g#a", _d18);
 | 
						|
                    set_row(_rw, "@58g#a", _d23);
 | 
						|
                  }
 | 
						|
                }
 | 
						|
                else if (_descrizione == "")
 | 
						|
                       if (_descrizionemov != "")
 | 
						|
                       {
 | 
						|
                         *_d23 = (const char*) _descrizionemov;
 | 
						|
                         *_d18 = (const char*) _descrcaus;
 | 
						|
                         set_row (_rw,"@42g#a", _d18); 
 | 
						|
                         set_row (_rw,"@58g#a", _d23);
 | 
						|
                       }
 | 
						|
                       else
 | 
						|
                         if (_descrizionemov == "")
 | 
						|
                         {
 | 
						|
                           conto(_gruppocontr,_contocontr,FALSE);
 | 
						|
                           TConto tc (_gruppocontr,_contocontr,_sottocontocontr,_tipo_contr);
 | 
						|
                           TString80 descr_contr = tc.descrizione();    
 | 
						|
                           //set_row (1,"@42g%.18s", (const char*) _descrcaus); 
 | 
						|
                           //if (descr_contr != "Sconosciuto")
 | 
						|
                           //  set_row (1,"@61g%.23s", (const char*) descr_contr);
 | 
						|
                           *_d18 = (const char*) _descrcaus;
 | 
						|
                           set_row (_rw,"@42g#a", _d18); 
 | 
						|
                           if (descr_contr != "Sconosciuto")
 | 
						|
                           {
 | 
						|
                             *_d23 = (const char*) descr_contr;
 | 
						|
                             set_row (_rw,"@58g#a", _d23);
 | 
						|
                           }
 | 
						|
                         }  
 | 
						|
              }
 | 
						|
              else
 | 
						|
                if (_numcarat == 2)     // Stampa 198 caratteri
 | 
						|
                {
 | 
						|
                  if (_descrizione != "")
 | 
						|
                  {
 | 
						|
                    *_d30 = (const char*) _descrizione;
 | 
						|
                    if (_descrizionemov != "")
 | 
						|
                    {                                    
 | 
						|
                      *_d23 = (const char*) _descrizionemov;
 | 
						|
                      set_row (_rw,"@46g#a", _d23);
 | 
						|
                      set_row (_rw,"@65g#a", _d30);
 | 
						|
                    }
 | 
						|
                    else if (_descrizionemov == "")
 | 
						|
                    { 
 | 
						|
                      //set_row (1,"@46g%.23s", (const char*) _descrcaus);  
 | 
						|
                      //set_row (1,"@70g%.30s", (const char*) _descrizione); 
 | 
						|
                      *_d23 = (const char*) _descrcaus;
 | 
						|
                      set_row(_rw, "@46g#a", _d23);
 | 
						|
                      set_row(_rw, "@65g#a", _d30);
 | 
						|
                    }
 | 
						|
                  }
 | 
						|
                  else if (_descrizione == "") 
 | 
						|
                         if (_descrizionemov != "")
 | 
						|
                         {
 | 
						|
                           //set_row (1,"@46g%.23s", (const char*) _descrcaus); 
 | 
						|
                           //set_row (1,"@70g%.30s", (const char*) _descrizionemov);
 | 
						|
                           *_d30 = (const char*) _descrizionemov;
 | 
						|
                           *_d23 = (const char*) _descrcaus;
 | 
						|
                           set_row (_rw,"@46g#a", _d23); 
 | 
						|
                           set_row (_rw,"@65g#a", _d30);
 | 
						|
                         }
 | 
						|
                         else
 | 
						|
                           if (_descrizionemov == "")
 | 
						|
                           {
 | 
						|
                             conto(_gruppocontr,_contocontr,FALSE);
 | 
						|
                             TConto tc (_gruppocontr,_contocontr,_sottocontocontr,_tipo_contr);
 | 
						|
                             TString descr_contr = tc.descrizione();
 | 
						|
                             //set_row (1,"@46g%.23s", (const char*) _descrcaus); 
 | 
						|
                             //if (descr_contr != "Sconosciuto")
 | 
						|
                             //  set_row (1,"@70g%.30s", (const char*) descr_contr);                       
 | 
						|
                             *_d23 = (const char*) _descrcaus;
 | 
						|
                             set_row (_rw,"@46g#a", _d23); 
 | 
						|
                             if (descr_contr != "Sconosciuto")
 | 
						|
                             {
 | 
						|
                              *_d30 = (const char*) descr_contr;
 | 
						|
                              set_row (_rw,"@65g#a", _d30);
 | 
						|
                             }
 | 
						|
                           }
 | 
						|
                }
 | 
						|
            }  //if (_nummast == 1 || _nummast == 3)
 | 
						|
          
 | 
						|
            if (_nummast == 2)
 | 
						|
            {                       
 | 
						|
              TString d18,d23,d30;
 | 
						|
            
 | 
						|
              if (_numcarat == 1)     // Stampa 132 caratteri
 | 
						|
              {
 | 
						|
                if (_descrizione != "")
 | 
						|
                {
 | 
						|
                  d23 = _descrizione;
 | 
						|
                  if (_descrizionemov != "")
 | 
						|
                    d18 = _descrizionemov;
 | 
						|
                  else if (_descrizionemov == "")
 | 
						|
                    d18 = _descrcaus;
 | 
						|
                }
 | 
						|
                else if (_descrizione == "")
 | 
						|
                       if (_descrizionemov != "")
 | 
						|
                       {
 | 
						|
                         d23 = _descrizionemov;
 | 
						|
                         d18 = _descrcaus;
 | 
						|
                       }
 | 
						|
                       else
 | 
						|
                         if (_descrizionemov == "")
 | 
						|
                         {
 | 
						|
                           conto(_gruppocontr,_contocontr,FALSE);
 | 
						|
                           TConto tc (_gruppocontr,_contocontr,_sottocontocontr,_tipo_contr);
 | 
						|
                           TString80 descr_contr = tc.descrizione();    
 | 
						|
                           d18 = _descrcaus;
 | 
						|
                           if (descr_contr != "Sconosciuto")
 | 
						|
                             d23 = descr_contr;
 | 
						|
                         }  
 | 
						|
                        
 | 
						|
                TParagraph_string d_18 (d18,18);
 | 
						|
                int i = 0;  
 | 
						|
                const char* str;
 | 
						|
                while ( (str = d_18.get()) != NULL)
 | 
						|
                { 
 | 
						|
                  TString stringa = "";
 | 
						|
                  stringa << "@42g" << str;
 | 
						|
                  setta_riga(i,stringa);
 | 
						|
                  i++;
 | 
						|
                }
 | 
						|
                
 | 
						|
                TParagraph_string d_23 (d23,23);
 | 
						|
                i = 0;
 | 
						|
                while ( (str = d_23.get()) != NULL)
 | 
						|
                {
 | 
						|
                  TString stringa = "";
 | 
						|
                  stringa << "@58g" << str;
 | 
						|
                  setta_riga(i,stringa);
 | 
						|
                  i++;
 | 
						|
                }           
 | 
						|
              }
 | 
						|
              else
 | 
						|
                if (_numcarat == 2)     // Stampa 198 caratteri
 | 
						|
                {
 | 
						|
                  if (_descrizione != "")
 | 
						|
                  {
 | 
						|
                    d30 = _descrizione;
 | 
						|
                    if (_descrizionemov != "")
 | 
						|
                      d23 = _descrizionemov;
 | 
						|
                    else if (_descrizionemov == "")
 | 
						|
                      d23 = _descrcaus;
 | 
						|
                  }
 | 
						|
                  else if (_descrizione == "") 
 | 
						|
                         if (_descrizionemov != "")
 | 
						|
                         {
 | 
						|
                           d30 = _descrizionemov;
 | 
						|
                           d23 = _descrcaus;
 | 
						|
                         }
 | 
						|
                         else
 | 
						|
                           if (_descrizionemov == "")
 | 
						|
                           {
 | 
						|
                             conto(_gruppocontr,_contocontr,FALSE);
 | 
						|
                             TConto tc (_gruppocontr,_contocontr,_sottocontocontr,_tipo_contr);
 | 
						|
                             TString descr_contr = tc.descrizione();
 | 
						|
                             d23 = _descrcaus;
 | 
						|
                             if (descr_contr != "Sconosciuto")
 | 
						|
                              d30 = descr_contr;
 | 
						|
                           }
 | 
						|
                         
 | 
						|
                  TParagraph_string d_23 (d23,23);
 | 
						|
                  int i = 0;
 | 
						|
                  const char* str;
 | 
						|
                  while ( (str = d_23.get()) != NULL)
 | 
						|
                  { 
 | 
						|
                    TString stringa = "";
 | 
						|
                    stringa << "@46g" << str;
 | 
						|
                    setta_riga(i,stringa);
 | 
						|
                    i++;
 | 
						|
                  }
 | 
						|
                
 | 
						|
                  TParagraph_string d_30 (d30,30);
 | 
						|
                  i = 0;
 | 
						|
                  while ( (str = d_30.get()) != NULL)
 | 
						|
                  {                     
 | 
						|
                    TString stringa = "";
 | 
						|
                    stringa << "@65g" << str;
 | 
						|
                    setta_riga(i,stringa);
 | 
						|
                    i++;
 | 
						|
                  }
 | 
						|
                }
 | 
						|
             
 | 
						|
              _item = _riga.items();
 | 
						|
              int riga,cur_row,diff;
 | 
						|
            
 | 
						|
              if ( (_conta_mastrini % 2) != 0 )
 | 
						|
              {   
 | 
						|
                int app = 0;
 | 
						|
                riga    = (printer().formlen() / 2);
 | 
						|
                if (printer().rows_left() == 0)
 | 
						|
                  app = printer().formlen() - _rw;
 | 
						|
                else    
 | 
						|
                  app = printer().rows_left();
 | 
						|
                cur_row = printer().formlen() - app;  
 | 
						|
                diff    = riga - cur_row;
 | 
						|
              }
 | 
						|
              else
 | 
						|
              {
 | 
						|
                riga    = printer().formlen();          
 | 
						|
                cur_row = printer().formlen() - printer().rows_left();
 | 
						|
                diff    = riga - cur_row;
 | 
						|
              }
 | 
						|
               
 | 
						|
              bool stampa_riporti;
 | 
						|
               
 | 
						|
              int lim = 0;
 | 
						|
              if (_item >= diff)  
 | 
						|
              { 
 | 
						|
                lim = diff - 1;
 | 
						|
                stampa_riporti = TRUE;
 | 
						|
              }
 | 
						|
              else 
 | 
						|
              {
 | 
						|
                lim = _item;   
 | 
						|
                stampa_riporti = FALSE;
 | 
						|
              }
 | 
						|
            
 | 
						|
              _indice_array = 0;
 | 
						|
            
 | 
						|
              int k = _rw;
 | 
						|
              
 | 
						|
              for (int i = 0; i < lim; i++)
 | 
						|
              {
 | 
						|
                TString& data = (TString&)_riga[i];
 | 
						|
              
 | 
						|
                int g1 = data.find("g",1);
 | 
						|
                int c1 = data.find("@",g1);
 | 
						|
                int g2 = data.find("g",c1);
 | 
						|
              
 | 
						|
                TString fmt1 = "";
 | 
						|
                TString fmt2 = "";
 | 
						|
                TString str1,str2;
 | 
						|
              
 | 
						|
                if (g1 != -1)
 | 
						|
                {
 | 
						|
                  fmt1 = data.sub(0,g1+1);
 | 
						|
                  fmt1 << "%s";
 | 
						|
                  str1 = data.sub(g1+1,c1);
 | 
						|
                }  
 | 
						|
                if (c1 != -1)
 | 
						|
                {
 | 
						|
                  fmt2 = data.sub(c1,g2+1);
 | 
						|
                  fmt2 << "%s";
 | 
						|
                  str2 = data.sub(g2+1);
 | 
						|
                }
 | 
						|
              
 | 
						|
                if (fmt1 != "")
 | 
						|
                  set_row (k,fmt1,(const char*) str1);
 | 
						|
                if (fmt2 != "")
 | 
						|
                  set_row (k,fmt2,(const char*) str2);
 | 
						|
              
 | 
						|
                k++;
 | 
						|
                _indice_array++;
 | 
						|
              }
 | 
						|
              if (stampa_riporti)
 | 
						|
              { 
 | 
						|
                _rw = k;        
 | 
						|
                if (lim == 0)
 | 
						|
                {
 | 
						|
                  if (_numcarat == 1)
 | 
						|
                  {  
 | 
						|
                    TString app (132);
 | 
						|
                    app.spaces(); 
 | 
						|
                    set_row (_rw, "@0g%s", (const char*) app);
 | 
						|
                  }
 | 
						|
                  else
 | 
						|
                  {  
 | 
						|
                    TString app (198);
 | 
						|
                    app.spaces(); 
 | 
						|
                    set_row (_rw, "@0g%s", (const char*) app);
 | 
						|
                  }
 | 
						|
                }
 | 
						|
                real dep_dare,dep_avere;
 | 
						|
                if (_stampa_footer_si)
 | 
						|
                {
 | 
						|
                  _riporto_footer_dare  = _progredare  + _riporto_parziale_dare;
 | 
						|
                  _riporto_footer_avere = _progreavere + _riporto_parziale_avere;
 | 
						|
      
 | 
						|
                  real imp_d,imp_a;
 | 
						|
                  imp_d = _sezione == "D" ? _importo : ZERO;
 | 
						|
                  imp_a = _sezione == "A" ? _importo : ZERO;   
 | 
						|
                  if (lim != 0)                   
 | 
						|
                  {
 | 
						|
                    _riporto_footer_dare  += imp_d;
 | 
						|
                    _riporto_footer_avere += imp_a;
 | 
						|
                  }
 | 
						|
                  dep_dare  = _riporto_footer_dare;
 | 
						|
                  dep_avere = _riporto_footer_avere;
 | 
						|
                  
 | 
						|
                  _stampa_footer_si = FALSE;
 | 
						|
                }                           
 | 
						|
                else
 | 
						|
                {
 | 
						|
                  _riporto_footer_dare  += _riporto_parziale_dare;
 | 
						|
                  _riporto_footer_avere += _riporto_parziale_avere;
 | 
						|
 | 
						|
                  real imp_d,imp_a;
 | 
						|
                  imp_d = _sezione == "D" ? _importo : ZERO;
 | 
						|
                  imp_a = _sezione == "A" ? _importo : ZERO;  
 | 
						|
                  if (lim != 0)
 | 
						|
                  {
 | 
						|
                    _riporto_footer_dare  += imp_d;
 | 
						|
                    _riporto_footer_avere += imp_a;
 | 
						|
                  }
 | 
						|
                  dep_dare  = _riporto_footer_dare;
 | 
						|
                  dep_avere = _riporto_footer_avere;
 | 
						|
                }
 | 
						|
                
 | 
						|
                if (_nummast != 3 || dep_dare != ZERO || dep_avere != ZERO)
 | 
						|
                {  
 | 
						|
                  TString dare  (dep_dare.string(_picture));
 | 
						|
                  TString avere (dep_avere.string(_picture));
 | 
						|
                  if (_numcarat == 1)                  
 | 
						|
                  {
 | 
						|
                    set_row (_rw,"@32gA RIPORTO@85g%s", (const char*) dare);
 | 
						|
                    set_row (_rw,"@101g%s", (const char*) avere);
 | 
						|
                  }  
 | 
						|
                  else
 | 
						|
                    if (_numcarat == 2) 
 | 
						|
                    {
 | 
						|
                      set_row (_rw,"@32gA RIPORTO@101g%s", (const char*) dare);
 | 
						|
                      set_row (_rw,"@117g%s", (const char*) avere);
 | 
						|
                    }        
 | 
						|
                }                          
 | 
						|
                if (lim == 0)
 | 
						|
                {
 | 
						|
                  rmov.prev();
 | 
						|
                  _riga.destroy();   
 | 
						|
                  _item = 0;        
 | 
						|
                  return TRUE;  
 | 
						|
                } 
 | 
						|
                _rw--;
 | 
						|
//                return TRUE;  
 | 
						|
              }
 | 
						|
              //_riga.destroy();
 | 
						|
            }  //if (_nummast == 2)
 | 
						|
 | 
						|
            if (_sezione == "D")
 | 
						|
            {
 | 
						|
              _totale_periodo_dare += _importo;
 | 
						|
              _riporto_parziale_dare += _importo;
 | 
						|
        
 | 
						|
              if (_numcarat == 1)    // Stampa 132 caratteri
 | 
						|
                set_row (_rw,"@85g%s", (const char*) _importo_str);
 | 
						|
              else
 | 
						|
                if (_numcarat == 2)  // Stampa 198 caratteri
 | 
						|
                {
 | 
						|
                  _saldo_progressivi += _importo;
 | 
						|
                  _saldo_movimenti += _importo;
 | 
						|
                  set_row (_rw,"@101g%s", (const char*) _importo_str);
 | 
						|
                }
 | 
						|
            }
 | 
						|
            else if (_sezione == "A")
 | 
						|
                 {
 | 
						|
                   _totale_periodo_avere += _importo;
 | 
						|
                   _riporto_parziale_avere += _importo;
 | 
						|
 | 
						|
                   if (_numcarat == 1)    // Stampa 132 caratteri
 | 
						|
                     set_row (_rw,"@101g%s", (const char*) _importo_str);
 | 
						|
                   else
 | 
						|
                     if (_numcarat == 2)  // Stampa 198 caratteri
 | 
						|
                     {
 | 
						|
                       _saldo_progressivi -= _importo;
 | 
						|
                       _saldo_movimenti -= _importo;
 | 
						|
                       set_row (_rw,"@117g%s", (const char*) _importo_str);
 | 
						|
                     }
 | 
						|
                 }
 | 
						|
           
 | 
						|
            const int righe_rimaste = printer().rows_left();
 | 
						|
            _stampato = righe_rimaste >= 1;
 | 
						|
            
 | 
						|
            _saldo_progressivi_str=_saldo_progressivi.string(_picture);
 | 
						|
            _saldo_movimenti_str=_saldo_movimenti.string(_picture);
 | 
						|
            if (_numcarat == 2)
 | 
						|
            {
 | 
						|
               ricerca_regiva();
 | 
						|
              _protiva = atol(_mov->curr().get(MOV_PROTIVA));
 | 
						|
              if (_protiva != 0)   
 | 
						|
                set_row (_rw,"@189g%5d", _protiva);
 | 
						|
          
 | 
						|
              if (_tipo < 3)
 | 
						|
                set_row (_rw,"@180g#t" , &_regiva);
 | 
						|
              _dataregrmov = current_cursor()->curr(-RMOV_ALIAS).get_date(RMV_DATAREG);
 | 
						|
              dataregrmovstring=_dataregrmov.string();
 | 
						|
 | 
						|
//Gestire la stampa di saldo_progressivi nella postprocess_page di RMOV
 | 
						|
 | 
						|
              rec = rmov.recno();
 | 
						|
              rmov.next();
 | 
						|
              gruppof = rmov.get_int(RMV_GRUPPO);
 | 
						|
              contof = rmov.get_int(RMV_CONTO);
 | 
						|
              sottocf = rmov.get_int(RMV_SOTTOCONTO);
 | 
						|
              datasucc = rmov.get_date(RMV_DATAREG);
 | 
						|
              datasuccstring=datasucc.string();
 | 
						|
              if (((gruppof!=_gruppo)||(contof!=_conto)||(sottocf!=_sottoc))||(rmov.eof()))
 | 
						|
                datasucc = ("");
 | 
						|
              if (datasucc != _dataregrmov)
 | 
						|
                set_row (_rw,"@133g#t", &_saldo_progressivi_str);
 | 
						|
              rmov.readat(rec);
 | 
						|
            } 
 | 
						|
            _rw = 1;
 | 
						|
          
 | 
						|
            return TRUE;
 | 
						|
          }
 | 
						|
          else
 | 
						|
            return FALSE;         
 | 
						|
        }
 | 
						|
        else
 | 
						|
          return FALSE;
 | 
						|
      }
 | 
						|
      else
 | 
						|
        return FALSE;
 | 
						|
    break; 
 | 
						|
    }
 | 
						|
    default:
 | 
						|
      break;   
 | 
						|
  }
 | 
						|
  return TRUE;
 | 
						|
}
 | 
						|
 | 
						|
void TMastrini_application::set_page(int file, int counter)
 | 
						|
{
 | 
						|
  switch (file)
 | 
						|
  {
 | 
						|
  case LF_SALDI:
 | 
						|
    reset_print();
 | 
						|
    break;
 | 
						|
 | 
						|
  case -RMOV_ALIAS:
 | 
						|
    reset_print();
 | 
						|
    if (_numcarat == 1)
 | 
						|
      fai_stampa132();
 | 
						|
    else if (_numcarat == 2)
 | 
						|
           fai_stampa198();
 | 
						|
    break;
 | 
						|
  default:
 | 
						|
    break;
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
print_action TMastrini_application::postprocess_page(int file, int counter)
 | 
						|
{                   
 | 
						|
  if (_nummast == 1 || _nummast == 3)
 | 
						|
  {
 | 
						|
    if (counter)
 | 
						|
    { 
 | 
						|
      if (_nummast == 1)      //Il salto pagina a rottura di mastrino viene
 | 
						|
        printer().formfeed(); //fatto solo quando seleziono un mastrino per pagina
 | 
						|
      
 | 
						|
      reset_print();     // per evitare che stampi di nuovo il totale prec.  
 | 
						|
      _stampa_progressivi_si  = TRUE;
 | 
						|
      _stampa_footer_si       = TRUE;
 | 
						|
      _riporto_dare           = ZERO;
 | 
						|
      _riporto_avere          = ZERO;   
 | 
						|
      _riporto_footer_dare    = ZERO;
 | 
						|
      _riporto_footer_avere   = ZERO;
 | 
						|
      _riporto_parziale_dare  = ZERO;
 | 
						|
      _riporto_parziale_avere = ZERO;
 | 
						|
      _ddociva_len            = 0;
 | 
						|
      
 | 
						|
      return NEXT_PAGE;
 | 
						|
    }
 | 
						|
  }
 | 
						|
  else
 | 
						|
    if (_nummast == 2)
 | 
						|
    { 
 | 
						|
      int item_lista = _lista.items();
 | 
						|
        
 | 
						|
      if (counter && item_lista == 0)
 | 
						|
      { 
 | 
						|
        reset_print();     // per evitare che stampi di nuovo il totale prec.  
 | 
						|
        _stampa_progressivi_si  = TRUE;  
 | 
						|
        _stampa_footer_si       = TRUE;
 | 
						|
        _riporto_dare           = ZERO;
 | 
						|
        _riporto_avere          = ZERO; 
 | 
						|
        _riporto_footer_dare    = ZERO;
 | 
						|
        _riporto_footer_avere   = ZERO;
 | 
						|
        _riporto_parziale_dare  = ZERO;
 | 
						|
        _riporto_parziale_avere = ZERO;
 | 
						|
        _ddociva_len            = 0;
 | 
						|
        
 | 
						|
        return NEXT_PAGE;
 | 
						|
      }
 | 
						|
    }
 | 
						|
 | 
						|
  switch (file)
 | 
						|
  {
 | 
						|
  case LF_SALDI:
 | 
						|
  { 
 | 
						|
    if (_nummast == 1 || _nummast == 3)
 | 
						|
    {
 | 
						|
      if (_tipostampa == 3)
 | 
						|
      {
 | 
						|
        reset_print();
 | 
						|
        if (_numcarat == 1)
 | 
						|
          stampa_totali132();
 | 
						|
        else if (_numcarat == 2)
 | 
						|
               stampa_totali198();
 | 
						|
 | 
						|
        if (_stampatotiva)     
 | 
						|
          stampa_totaliiva();
 | 
						|
      }
 | 
						|
      else if (_tipostampa == 2)
 | 
						|
           {
 | 
						|
             reset_print();
 | 
						|
             if ((_totale_saldo != 0.0) && (_puoi_stampare))
 | 
						|
               if (_numcarat == 1)
 | 
						|
                 stampa_totali132();
 | 
						|
               else if (_numcarat == 2)
 | 
						|
                      stampa_totali198();
 | 
						|
             if (_stampatotiva)      
 | 
						|
               stampa_totaliiva();
 | 
						|
       }
 | 
						|
       else if (_tipostampa == 1)
 | 
						|
            {
 | 
						|
              reset_print();
 | 
						|
              if (_puoi_stampare)
 | 
						|
                if (_numcarat == 1)
 | 
						|
                  stampa_totali132();
 | 
						|
                else if (_numcarat == 2)
 | 
						|
                       stampa_totali198();
 | 
						|
              if (_stampatotiva)     
 | 
						|
                stampa_totaliiva();
 | 
						|
            }
 | 
						|
    }
 | 
						|
    else
 | 
						|
      if (_nummast == 2)             
 | 
						|
      {                          
 | 
						|
        if (!counter)                                                                                   
 | 
						|
        { 
 | 
						|
          if (_numcarat == 1)
 | 
						|
            carica_array_totali132();
 | 
						|
          else
 | 
						|
            if (_numcarat == 2)
 | 
						|
              carica_array_totali198(); 
 | 
						|
        }
 | 
						|
        
 | 
						|
        if (_tipostampa == 3)
 | 
						|
        {
 | 
						|
          reset_print();
 | 
						|
          if (_numcarat == 1)
 | 
						|
            stampa_totali132_II();
 | 
						|
          else if (_numcarat == 2)
 | 
						|
                 stampa_totali198_II();
 | 
						|
        }
 | 
						|
        else if (_tipostampa == 2)
 | 
						|
             {
 | 
						|
               reset_print();
 | 
						|
               if ((_totale_saldo != 0.0) && (_puoi_stampare))
 | 
						|
                 if (_numcarat == 1)
 | 
						|
                   stampa_totali132_II();
 | 
						|
                 else if (_numcarat == 2)
 | 
						|
                        stampa_totali198_II();
 | 
						|
         }
 | 
						|
         else if (_tipostampa == 1)
 | 
						|
              {
 | 
						|
                reset_print();
 | 
						|
                if (_puoi_stampare)
 | 
						|
                  if (_numcarat == 1)
 | 
						|
                    stampa_totali132_II();
 | 
						|
                  else if (_numcarat == 2)
 | 
						|
                         stampa_totali198_II();
 | 
						|
              }
 | 
						|
              
 | 
						|
        int item_lista = _lista.items();   
 | 
						|
        
 | 
						|
        if (item_lista == 0)
 | 
						|
        {   
 | 
						|
          int righe_rimaste = righe_rimaste_da_stampare();
 | 
						|
             
 | 
						|
          righe_rimaste = righe_rimaste - _rw;  //_rw sono le righe dei totali gia' settate, mentre
 | 
						|
                                               //righe rimaste conteneva le righe senza quelle dei totali gia' settate
 | 
						|
          if (righe_rimaste > 0)
 | 
						|
          {                                
 | 
						|
            _rw++; //incremento la riga altrimenti copro l'ultimo totale settato con una riga bianca
 | 
						|
              
 | 
						|
            TString sep = " ";
 | 
						|
    
 | 
						|
            for (int i = 0; i < righe_rimaste; i++)
 | 
						|
              set_row(_rw++,"@0g%s", (const char*) sep);
 | 
						|
          }
 | 
						|
        }
 | 
						|
      }
 | 
						|
 | 
						|
//    _stampa_progressivi_si = TRUE;
 | 
						|
    _prima_volta = TRUE;
 | 
						|
    return REPEAT_PAGE;
 | 
						|
  }
 | 
						|
  case -RMOV_ALIAS:  
 | 
						|
    force_setpage();
 | 
						|
    break;
 | 
						|
  default:
 | 
						|
    break;
 | 
						|
  }
 | 
						|
  return NEXT_PAGE;
 | 
						|
}                                                 
 | 
						|
 | 
						|
print_action TMastrini_application::postprocess_print(int file, int counter)
 | 
						|
{
 | 
						|
  if (file == LF_SALDI)
 | 
						|
  {                                                             
 | 
						|
    _msk->reset(F_TIPOCF_INI);
 | 
						|
    
 | 
						|
    _msk->reset(F_GRUPPOINI);  
 | 
						|
    
 | 
						|
    _msk->reset(F_CONTOINI_CONTO);
 | 
						|
    _msk->reset(F_CONTOINI_CLIENTE);
 | 
						|
    _msk->reset(F_CONTOINI_FORN);
 | 
						|
    
 | 
						|
    _msk->reset(F_SOTTOCINI_CONTO);
 | 
						|
    _msk->reset(F_SOTTOCINI_CLIENTE);
 | 
						|
    _msk->reset(F_SOTTOCINI_FORN); 
 | 
						|
    
 | 
						|
    _msk->reset(F_DESCRINI_CONTO);
 | 
						|
    _msk->reset(F_DESCRINI_CLIENTE);
 | 
						|
    _msk->reset(F_DESCRINI_FORN);
 | 
						|
    
 | 
						|
    _msk->reset(F_TIPOCF_FINE);
 | 
						|
    
 | 
						|
    _msk->reset(F_GRUPPOFINE);  
 | 
						|
    
 | 
						|
    _msk->reset(F_CONTOFINE_CONTO);
 | 
						|
    _msk->reset(F_CONTOFINE_CLIENTE);
 | 
						|
    _msk->reset(F_CONTOFINE_FORN);
 | 
						|
    
 | 
						|
    _msk->reset(F_SOTTOCFINE_CONTO);
 | 
						|
    _msk->reset(F_SOTTOCFINE_CLIENTE);
 | 
						|
    _msk->reset(F_SOTTOCFINE_FORN);
 | 
						|
    
 | 
						|
    _msk->reset(F_DESCRFINE_CONTO);
 | 
						|
    _msk->reset(F_DESCRFINE_CLIENTE);
 | 
						|
    _msk->reset(F_DESCRFINE_FORN);
 | 
						|
  }     
 | 
						|
  return NEXT_PAGE;
 | 
						|
}
 | 
						|
// Stampa dei totali documenti iva se richiesta
 | 
						|
 | 
						|
void TMastrini_application::stampa_totaliiva()
 | 
						|
{
 | 
						|
  real totale;
 | 
						|
 | 
						|
  if (_nummast == 1 || _nummast == 3)
 | 
						|
  {
 | 
						|
    _rw = 7;                        
 | 
						|
    _ddociva_len++;     
 | 
						|
    TString fmt (format("@%dg", _ddociva_len));
 | 
						|
    fmt << "%15s";
 | 
						|
    
 | 
						|
    if (_stampatotiva)
 | 
						|
      for (int j = 0; j < _b.items(); j++)
 | 
						|
      {
 | 
						|
        TDociva& riga = (TDociva&)_b[j];
 | 
						|
        set_row(_rw+j, "@0g%s",(const char*) riga._descrdoc);   
 | 
						|
        totale = riga._totdociva;
 | 
						|
        TString string = totale.string(_picture);
 | 
						|
        set_row(_rw+j, fmt, (const char*)string);
 | 
						|
      }
 | 
						|
 | 
						|
    _b.destroy();
 | 
						|
  } 
 | 
						|
}
 | 
						|
 | 
						|
// Ricerca della descrizione relativa al codice causale di MOV.dta
 | 
						|
// sull'archivio CAUS.dta
 | 
						|
 | 
						|
void TMastrini_application::descrizione_causale()
 | 
						|
{
 | 
						|
  _caus->setkey(1);
 | 
						|
  _caus->curr().zero();
 | 
						|
  _caus->curr().put(CAU_CODCAUS, _codcaus);
 | 
						|
  _caus->read();
 | 
						|
  if (_caus->bad())
 | 
						|
    _caus->zero();
 | 
						|
  _descrcaus = _caus->curr().get(CAU_DESCR);
 | 
						|
}       
 | 
						|
 | 
						|
// Ricerca sulla tabella dei tipi documento, la descrizione e la natura del
 | 
						|
// documento, accedendovi tramite il tipo documento trovato su MOV.dta
 | 
						|
 | 
						|
void TMastrini_application::documenti_iva()
 | 
						|
{
 | 
						|
  TString dep;
 | 
						|
 
 | 
						|
  _tabtpd->curr().zero();
 | 
						|
  dep << format ("%2s",(const char*) _tipodoc);
 | 
						|
  _tabtpd->curr().put("CODTAB", (const char*) dep);
 | 
						|
  _tabtpd->read();
 | 
						|
  _descrdociva = _tabtpd->curr().get("S0");
 | 
						|
  _natdoc = atoi(_tabtpd->curr().get("I0"));
 | 
						|
}     
 | 
						|
 | 
						|
void TMastrini_application::ricerca_regiva()
 | 
						|
{
 | 
						|
  TString16 dep;
 | 
						|
 | 
						|
  _tabreg->curr().zero();
 | 
						|
  dep << format("%04d", _annoiva); 
 | 
						|
  dep << format("%3s" , (const char*) _regiva);
 | 
						|
  _tabreg->curr().put("CODTAB", (const char*) dep);
 | 
						|
  _tabreg->read();
 | 
						|
  _tipo = _tabreg->get_int("I0");
 | 
						|
}    
 | 
						|
 | 
						|
bool TMastrini_application::preprocess_print(int file, int counter) 
 | 
						|
{  
 | 
						|
  if (file == LF_SALDI)
 | 
						|
  {
 | 
						|
    _g_prec = 0;
 | 
						|
    _c_prec = 0;
 | 
						|
    _s_prec = 0; 
 | 
						|
    
 | 
						|
    _saldo_periodo = ZERO;
 | 
						|
    _totale_periodo_dare = ZERO;
 | 
						|
    _totale_periodo_avere = ZERO;
 | 
						|
    _saldo_progre = ZERO;
 | 
						|
    _totprogre_dare = ZERO;
 | 
						|
    _totprogre_avere = ZERO;
 | 
						|
    _saldo_progre_al = ZERO;
 | 
						|
    _totprogre_dare_al = ZERO;
 | 
						|
    _totprogre_avere_al = ZERO;
 | 
						|
    _progredare = ZERO;
 | 
						|
    _progreavere = ZERO;
 | 
						|
    _totale_prima_dare = ZERO;
 | 
						|
    _totale_prima_avere = ZERO;
 | 
						|
    _saldo_movimenti = ZERO;
 | 
						|
    _saldo_progressivi = ZERO;
 | 
						|
    _saldo_progre_prec = ZERO;
 | 
						|
    _riporto_parziale_dare = ZERO;
 | 
						|
    _riporto_parziale_avere = ZERO;
 | 
						|
    _protiva = 0;
 | 
						|
     
 | 
						|
    _prima_volta = TRUE;
 | 
						|
 
 | 
						|
    _stampa_progressivi_si = TRUE; 
 | 
						|
    _stampa_footer_si      = TRUE;
 | 
						|
  }
 | 
						|
  
 | 
						|
  return TRUE;
 | 
						|
}
 | 
						|
 | 
						|
bool TMastrini_application::set_print(int)
 | 
						|
{
 | 
						|
  if (TCurrency::get_firm_dec() == 0)
 | 
						|
  {
 | 
						|
    _picture = "###.###.###.###";
 | 
						|
    set_real_picture(_picture);
 | 
						|
  }
 | 
						|
  else
 | 
						|
  {
 | 
						|
    _picture = "####.###.###,@@";
 | 
						|
    set_real_picture(_picture);
 | 
						|
  }
 | 
						|
 | 
						|
  _puoi_stampare = TRUE;  
 | 
						|
  
 | 
						|
  // Simula l'immediata pressione del tasto stampa senza nemmeno lanciare la maschera
 | 
						|
  KEY tasto = K_ENTER;
 | 
						|
                   
 | 
						|
  // Controlla se esistono impostazioni di stampa in coda                 
 | 
						|
  if (!sheet2mask())
 | 
						|
  {  
 | 
						|
    tasto = _msk->run();
 | 
						|
    if (tasto == K_ENTER) 
 | 
						|
    {                                                          
 | 
						|
      // Se lo sheet e' vuoto allora usa solo la maschera corrente per la stampa,
 | 
						|
      // altrimenti estrae il primo elemento sovrascrivendo la maschera corrente.
 | 
						|
      // Questa figata cerca di correggere gli errori MI6185 e MI3592 in una botta
 | 
						|
      TSheet_field& sht = (TSheet_field&)_msk->field(F_SCELTE);
 | 
						|
      if (sht.items() != 0)
 | 
						|
        sheet2mask();     // Estrae la prima riga dalla coda di stampa
 | 
						|
    }  
 | 
						|
  }  
 | 
						|
 | 
						|
  if (tasto == K_ENTER)
 | 
						|
  {
 | 
						|
    _codice_ditta       = get_firm();
 | 
						|
    _annomsk            = _msk->get_int(F_ANNO);
 | 
						|
    
 | 
						|
    int gruppoini       = _msk->get_int(F_GRUPPOINI);
 | 
						|
    int contoini        = _msk->get_int(F_CONTOINI_CONTO);
 | 
						|
    long sottocontoini  = _msk->get_long(F_SOTTOCINI_CONTO);
 | 
						|
    int gruppofine      = _msk->get_int(F_GRUPPOFINE);
 | 
						|
    int contofine       = _msk->get_int(F_CONTOFINE_CONTO);
 | 
						|
    long sottocontofine = _msk->get_long(F_SOTTOCFINE_CONTO);
 | 
						|
 | 
						|
    _stampaprogre       = _msk->get_bool(F_STAMPAPROGRE);
 | 
						|
    _stampatotiva       = _msk->get_bool(F_STAMPATOTIVA);
 | 
						|
    _stampanum          = _msk->get_int(F_STAMPANUM);
 | 
						|
    _stampa_mov_prov    = _msk->get_bool(F_STAMPAMOVPROV); 
 | 
						|
    _tipostampa         = _msk->get_int(F_TIPOSTAMPA);
 | 
						|
    _movcas_print       = _msk->get_bool(F_MOVCAS);
 | 
						|
    _cdc                = _msk->get_long(F_CDC);
 | 
						|
 | 
						|
    _numcarat           = _msk->get_int(F_NUMCARAT);
 | 
						|
    _nummast            = _msk->get_int(F_NUMMAST);
 | 
						|
    _data_ini           = _msk->get_date(F_DATAINI);
 | 
						|
    _data_fine          = _msk->get_date(F_DATAFINE);
 | 
						|
 | 
						|
    TEsercizi_contabili esc;   
 | 
						|
  
 | 
						|
    if (_annomsk != 0)
 | 
						|
      _anno_corrente = _annomsk;
 | 
						|
    else               
 | 
						|
    {                                                        
 | 
						|
      _anno_ghost = esc.date2esc(_data_ini);
 | 
						|
      _anno_corrente = _anno_ghost;
 | 
						|
      _inizioes = esc[_anno_ghost].inizio();
 | 
						|
    }
 | 
						|
 | 
						|
    data_fine_esercizio(_anno_corrente); // Ricalcola _data_inizioese e _data_finese
 | 
						|
    if (!_data_ini.ok())  _data_ini  = _data_inizioese;
 | 
						|
    if (!_data_fine.ok()) _data_fine = _data_finese;
 | 
						|
       
 | 
						|
    _anno_precedente = esc.pred(_anno_corrente);
 | 
						|
 | 
						|
    ricerca_dati_ditta();
 | 
						|
 | 
						|
    int formato         = _msk->get_int(F_FORMATO);    // Molto scenografico!
 | 
						|
 | 
						|
    if (_nummast == 1 || _nummast == 3)
 | 
						|
      printer().footerlen(4);
 | 
						|
    else                               
 | 
						|
      printer().footerlen(2);
 | 
						|
      
 | 
						|
//Crea il cursore su gruppo, conto e sottoconto del file RMOV
 | 
						|
 | 
						|
    reset_files();         //resetta l'albero di stampa
 | 
						|
    add_file(LF_SALDI);
 | 
						|
    add_file(-RMOV_ALIAS,LF_SALDI);   // Funziona anche con gli alias, a patto che nelle varie funzioni
 | 
						|
                                      // set_page(), preprocess_page(), postprocess_page() ecc, si facciano
 | 
						|
                                      // le dovute discriminazioni con il "-" 
 | 
						|
    select_cursor(!_movcas_print ? _cur1 : _cur2);
 | 
						|
      
 | 
						|
    TRectype da(LF_SALDI), a(LF_SALDI);       
 | 
						|
    da.put(SLD_GRUPPO,gruppoini);        
 | 
						|
    da.put(SLD_CONTO,contoini);
 | 
						|
    da.put(SLD_SOTTOCONTO,sottocontoini);
 | 
						|
    a.put(SLD_GRUPPO,gruppofine);        
 | 
						|
    a.put(SLD_CONTO,contofine);
 | 
						|
    a.put(SLD_SOTTOCONTO,sottocontofine); 
 | 
						|
    current_cursor()->setregion(da, a);
 | 
						|
    if (_stampatotiva)   
 | 
						|
      _b.destroy();
 | 
						|
 | 
						|
    //_inizio_stampa   = TRUE;    
 | 
						|
    _numero_pag      = 1;
 | 
						|
    if (_nummast == 3)
 | 
						|
      _pagina = 0;
 | 
						|
    else      
 | 
						|
      _pagina          = 1;
 | 
						|
    _cambia_mastrino = FALSE; 
 | 
						|
    _rw              = 0;
 | 
						|
    _conta_mastrini  = 0;
 | 
						|
    _indice_lista    = 0; 
 | 
						|
    _ddociva_len     = 0;                                                           
 | 
						|
                                                               
 | 
						|
    _riga.destroy();
 | 
						|
    _lista.destroy();
 | 
						|
    
 | 
						|
    switch (_tipostampa)
 | 
						|
    {
 | 
						|
      case 1: _totale_saldo = 1.0;
 | 
						|
              break;
 | 
						|
      case 2: _totale_saldo = 0.0;
 | 
						|
              break;
 | 
						|
      case 3: _totale_saldo = 1.0;
 | 
						|
              break;
 | 
						|
      default: break;
 | 
						|
    }
 | 
						|
   
 | 
						|
    enable_print_menu();
 | 
						|
 | 
						|
    enable_link("Collegamento prima nota: ", 'r');
 | 
						|
   
 | 
						|
    return TRUE;
 | 
						|
  }
 | 
						|
  else
 | 
						|
    return FALSE;
 | 
						|
}
 | 
						|
 | 
						|
void TMastrini_application::data_fine_esercizio(int anno)
 | 
						|
{
 | 
						|
  TEsercizi_contabili esc;
 | 
						|
  _data_inizioese = esc[anno].inizio();
 | 
						|
  _data_finese    = esc[anno].fine();
 | 
						|
}
 | 
						|
 | 
						|
void TMastrini_application::preprocess_header()
 | 
						|
{                         
 | 
						|
  if (_nummast == 1)
 | 
						|
  {
 | 
						|
    if (_tipostampa == 3)
 | 
						|
      crea_intestazione();
 | 
						|
    else
 | 
						|
      if (_tipostampa == 2)
 | 
						|
      {
 | 
						|
        if ((_totale_saldo != 0.0) && (_puoi_stampare))
 | 
						|
          crea_intestazione();
 | 
						|
      }
 | 
						|
      else if (_tipostampa == 1)
 | 
						|
             if (_puoi_stampare)
 | 
						|
               crea_intestazione();
 | 
						|
  }                
 | 
						|
  else
 | 
						|
    if (_nummast == 3 && !_gia_stampata_intestazione)
 | 
						|
    {
 | 
						|
      if (_tipostampa == 3)
 | 
						|
        crea_intestazione();
 | 
						|
      else
 | 
						|
        if (_tipostampa == 2)
 | 
						|
        {
 | 
						|
          if ((_totale_saldo != 0.0) && (_puoi_stampare))
 | 
						|
            crea_intestazione();
 | 
						|
        }
 | 
						|
        else if (_tipostampa == 1)
 | 
						|
               if (_puoi_stampare)
 | 
						|
                 crea_intestazione();
 | 
						|
    }                
 | 
						|
}  
 | 
						|
 | 
						|
void TMastrini_application::preprocess_footer()
 | 
						|
{   
 | 
						|
  reset_footer();
 | 
						|
  
 | 
						|
  if (_nummast != 1 && _nummast != 3)
 | 
						|
    return;
 | 
						|
      
 | 
						|
  if (_devi_stampare_footer)
 | 
						|
  {                    
 | 
						|
    real dep_dare,dep_avere;
 | 
						|
      
 | 
						|
    if (_stampa_footer_si)
 | 
						|
    {
 | 
						|
      _riporto_footer_dare  = _progredare  + _riporto_parziale_dare;
 | 
						|
      _riporto_footer_avere = _progreavere + _riporto_parziale_avere;
 | 
						|
      
 | 
						|
      real imp_d,imp_a;
 | 
						|
      imp_d = _sezione == "D" ? _importo : ZERO;
 | 
						|
      imp_a = _sezione == "A" ? _importo : ZERO;
 | 
						|
      dep_dare  = _stampato ? _riporto_footer_dare  : _riporto_footer_dare - imp_d;
 | 
						|
      dep_avere = _stampato ? _riporto_footer_avere : _riporto_footer_avere - imp_a;
 | 
						|
      
 | 
						|
      _stampa_footer_si = FALSE;
 | 
						|
    }                           
 | 
						|
    else
 | 
						|
    {
 | 
						|
      _riporto_footer_dare  += _riporto_parziale_dare;
 | 
						|
      _riporto_footer_avere += _riporto_parziale_avere;
 | 
						|
 | 
						|
      real imp_d,imp_a;
 | 
						|
      imp_d = _sezione == "D" ? _importo : ZERO;
 | 
						|
      imp_a = _sezione == "A" ? _importo : ZERO;
 | 
						|
      dep_dare  = _stampato ? _riporto_footer_dare  : _riporto_footer_dare - imp_d;
 | 
						|
      dep_avere = _stampato ? _riporto_footer_avere : _riporto_footer_avere - imp_a;
 | 
						|
    }
 | 
						|
    
 | 
						|
    if (_nummast != 3 || dep_dare != ZERO || dep_avere != ZERO)
 | 
						|
    {     
 | 
						|
      TString dare  (dep_dare.string(_picture));
 | 
						|
      TString avere (dep_avere.string(_picture));
 | 
						|
      if (_numcarat == 1)                  
 | 
						|
      {
 | 
						|
        set_footer (2,"@32gA RIPORTO@85g%s", (const char*) dare);
 | 
						|
        set_footer (2,"@101g%s", (const char*) avere);
 | 
						|
      }  
 | 
						|
      else
 | 
						|
        if (_numcarat == 2) 
 | 
						|
        {
 | 
						|
          set_footer (2,"@32gA RIPORTO@101g%s", (const char*) dare);
 | 
						|
          set_footer (2,"@117g%s", (const char*) avere);
 | 
						|
        }  
 | 
						|
    }             
 | 
						|
  }                
 | 
						|
}  
 | 
						|
 | 
						|
void TMastrini_application::conto(int gruppo, int conto, bool no_contropartita)
 | 
						|
{
 | 
						|
  TLocalisamfile pconti(LF_PCON);
 | 
						|
 | 
						|
  pconti.setkey(1);
 | 
						|
  pconti.zero();
 | 
						|
  pconti.put(PCN_GRUPPO, gruppo);
 | 
						|
  pconti.put(PCN_CONTO , conto);
 | 
						|
  pconti.read();
 | 
						|
  if (pconti.bad())
 | 
						|
    pconti.zero();
 | 
						|
  
 | 
						|
  if (no_contropartita)
 | 
						|
  {
 | 
						|
    _indbil = pconti.get_int(PCN_INDBIL);
 | 
						|
    _tmcf   = pconti.get_char(PCN_TMCF);
 | 
						|
  }
 | 
						|
  else
 | 
						|
    _tipo_contr = pconti.get_char(PCN_TMCF);
 | 
						|
}
 | 
						|
 | 
						|
void TMastrini_application::ricerca_dati_ditta()
 | 
						|
{
 | 
						|
  long app;
 | 
						|
 | 
						|
  _nditte->setkey(1);
 | 
						|
  _nditte->curr().zero();
 | 
						|
  _nditte->curr().put(NDT_CODDITTA,_codice_ditta);
 | 
						|
  _nditte->read();
 | 
						|
  app=_nditte->curr().get_long(NDT_CODDITTA);
 | 
						|
  _ragsoc=_nditte->curr().get(NDT_RAGSOC);
 | 
						|
 
 | 
						|
  _unloc->setkey(1);
 | 
						|
  _unloc->curr().zero();
 | 
						|
  _unloc->curr().put(ULC_CODDITTA,app);
 | 
						|
  _unloc->curr().put(ULC_CODULC,"1");
 | 
						|
  _unloc->read();
 | 
						|
  _indulc=_unloc->curr().get(ULC_INDULC);
 | 
						|
  _civulc=_unloc->curr().get(ULC_CIVULC);   
 | 
						|
  int len = _indulc.len();
 | 
						|
  if (len <= 31)
 | 
						|
  {
 | 
						|
    if (len <= 26)
 | 
						|
      _indulc << " " << _civulc;
 | 
						|
    else
 | 
						|
      _indulc << " " << _civulc.mid(0,5);
 | 
						|
  }
 | 
						|
  else
 | 
						|
  {
 | 
						|
    _indulc = _indulc.mid(0,31);
 | 
						|
    _indulc << " " << _civulc.mid(0,5);
 | 
						|
  }
 | 
						|
  _capulc=_unloc->curr().get(ULC_CAPULC);
 | 
						|
  _comulc=_unloc->curr().get(ULC_COMULC);
 | 
						|
 
 | 
						|
  _comuni->setkey(1);
 | 
						|
  _comuni->zero();
 | 
						|
  _comuni->put(COM_COM,_comulc);
 | 
						|
  _comuni->read();
 | 
						|
  if  (_comuni->good())
 | 
						|
  {
 | 
						|
    _com=_comuni->get(COM_DENCOM);
 | 
						|
    _prov=_comuni->get(COM_PROVCOM);
 | 
						|
  }
 | 
						|
  else
 | 
						|
  {
 | 
						|
    _com="";
 | 
						|
    _prov="";
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
// Crea l'intestazione per la stampa a 132 e a 198 caratteri
 | 
						|
 | 
						|
void TMastrini_application::crea_intestazione()
 | 
						|
{
 | 
						|
  TString sep(132),sep1(198); 
 | 
						|
  sep = "";
 | 
						|
 | 
						|
  reset_header();
 | 
						|
  
 | 
						|
  int np = get_page_number();
 | 
						|
  
 | 
						|
  if (_cambia_mastrino)
 | 
						|
  { 
 | 
						|
    if (_nummast != 3)
 | 
						|
      _pagina = 1;
 | 
						|
    _cambia_mastrino = FALSE;
 | 
						|
  }
 | 
						|
  if (_numcarat == 1)
 | 
						|
  {
 | 
						|
    if (_nummast == 3)
 | 
						|
    {
 | 
						|
      if (_pagina != np)
 | 
						|
        sep << "Pag. @#";
 | 
						|
    }     
 | 
						|
    else
 | 
						|
      sep << "Pag. " << _pagina;
 | 
						|
    sep.right_just(132);
 | 
						|
    set_header(1,(const char*) sep);
 | 
						|
    sep ="";
 | 
						|
    set_header(2,"@1g%s",(const char*) sep);  
 | 
						|
    //set_header(1,"@126gPag. %2d", _numero_pag++);
 | 
						|
  }
 | 
						|
  else if (_numcarat == 2)
 | 
						|
       {
 | 
						|
         if (_nummast == 3)
 | 
						|
         {         
 | 
						|
           if (_pagina != np)
 | 
						|
            sep1 << "Pagina @#";
 | 
						|
         }             
 | 
						|
         else          
 | 
						|
           sep1 << "Pagina " << _pagina;
 | 
						|
         sep1.right_just(198);
 | 
						|
         set_header(1,(const char*) sep1);
 | 
						|
         sep1 ="";
 | 
						|
         set_header(2,"@1g%s",(const char*) sep1);       
 | 
						|
         //set_header(1,"@190gPagina %2d", _numero_pag++);
 | 
						|
       }
 | 
						|
  if (_nummast != 3)     
 | 
						|
    _pagina++;
 | 
						|
  
 | 
						|
  if (_nummast != 3 || _pagina != np)
 | 
						|
  {
 | 
						|
    set_header (1, "@0gDITTA@6g%5ld", _codice_ditta);
 | 
						|
    set_header (1, "@12g%-.45s", (const char*) _ragsoc);
 | 
						|
    set_header (1, "@59g%s", (const char*) _indulc);
 | 
						|
    //set_header (1, "@86g%-.9s", (const char*) _civulc);
 | 
						|
    set_header (1, "@97g%-.5s", (const char*) _capulc);
 | 
						|
    set_header (1, "@103g%-.18s", (const char*) _com);
 | 
						|
    set_header (1, "@122g%-.3s", (const char*) _prov);
 | 
						|
  }
 | 
						|
  if (_nummast == 3)
 | 
						|
  {
 | 
						|
    set_header (3, "@0gSottoconto@12g@b%d", _gruppo);
 | 
						|
    set_header (3, "@16g@b%d", _conto);
 | 
						|
    set_header (3, "@20g@b%ld", _sottoc);  
 | 
						|
  }
 | 
						|
  else
 | 
						|
  {
 | 
						|
    set_header (3, "@0gSottoconto@12g%d", _gruppo);
 | 
						|
    set_header (3, "@16g%d", _conto);
 | 
						|
    set_header (3, "@20g%ld", _sottoc); 
 | 
						|
  }
 | 
						|
 | 
						|
  if (_tmcf == 'C')                       
 | 
						|
    _tipo_mask = 1;                       
 | 
						|
    else if (_tmcf == 'F')                
 | 
						|
            _tipo_mask = 2;               
 | 
						|
            else if (_tmcf == '\0')        
 | 
						|
           _tipo_mask = 3;        
 | 
						|
  switch (_tipo_mask)
 | 
						|
  {
 | 
						|
    case 1: ricerca_clifo();
 | 
						|
              break;
 | 
						|
    case 2: ricerca_clifo();
 | 
						|
              break;
 | 
						|
    case 3: ricerca_gruppo();
 | 
						|
              break;
 | 
						|
    default:  break;
 | 
						|
  }
 | 
						|
  
 | 
						|
  int r = 6;
 | 
						|
  if (_movcas_print)
 | 
						|
    set_header(r++,"@65gMASTRINO DI CASSA");
 | 
						|
    
 | 
						|
  if (_numcarat == 1)
 | 
						|
  {
 | 
						|
    sep.fill('-');                            //Stampa 132 - (sep(132))      
 | 
						|
    set_header (r++, (const char *) sep);
 | 
						|
    set_header (r++,"Operazione@19gDocumento@117gContro@131gA");
 | 
						|
    if (_stampa_mov_prov)
 | 
						|
      set_header(r-1,"@129gM");
 | 
						|
    set_header (r,"Data");
 | 
						|
    if (_stampanum < 3)
 | 
						|
      set_header (r,"@11gnumero");
 | 
						|
    set_header (r++,"@19gData@30gNumero@38gCod.Causale@58gDescrizione@81gCDC@96gDare@111gAvere@117gPartita@131gC");
 | 
						|
    if (_stampa_mov_prov)
 | 
						|
      set_header(r-1,"@129gP");
 | 
						|
    sep.fill('-');
 | 
						|
    set_header (r++, (const char *) sep);
 | 
						|
  }
 | 
						|
  else if (_numcarat == 2)
 | 
						|
       {
 | 
						|
         sep1.fill('-');                    //Stampa 198 - (sep1(198))      
 | 
						|
         set_header (r++,"@0g%s", (const char *) sep1);
 | 
						|
         set_header (r++,"Operazione@23gData@34gNumero@169gContro@180gReg@188gNumero@197gA");
 | 
						|
         if (_stampa_mov_prov)
 | 
						|
           set_header(r-1,"@195gM");
 | 
						|
         set_header (r,"Data");
 | 
						|
         if (_stampanum < 3)
 | 
						|
           set_header (r,"@11gnumero");
 | 
						|
         set_header (r++,"@23gDocumento@42gCod.Causale@65gDescrizione@97gCDC@112gDare@127gAvere@135gSaldo progre.@152gSaldo movim.@169gPartita@180gIva@184gProtocollo@197gC");
 | 
						|
         if (_stampa_mov_prov)
 | 
						|
           set_header(r-1,"@195gP");
 | 
						|
         sep1.fill('-');
 | 
						|
         set_header (r++,"@0g%s", (const char *) sep1);
 | 
						|
       } 
 | 
						|
       
 | 
						|
  calcola_progressivi();
 | 
						|
  _saldo_progressivi += _saldo_progre_prec;          
 | 
						|
        
 | 
						|
  if (_stampa_progressivi_si)
 | 
						|
  {
 | 
						|
    if (_numcarat == 1)
 | 
						|
    { 
 | 
						|
      TString string = _saldo_progre_prec.string(_picture);
 | 
						|
      set_header (r,"@42gPROGRESSIVI PRECEDENTI@69g%15s",(const char*) string);
 | 
						|
      string = _progredare.string(_picture);
 | 
						|
      set_header (r,"@85g%15s",(const char*) string);
 | 
						|
      string = _progreavere.string(_picture);
 | 
						|
      set_header (r++,"@101g%15s",(const char*) string);
 | 
						|
    }
 | 
						|
    if (_numcarat == 2)
 | 
						|
    {
 | 
						|
      TString string = _progredare.string(_picture);
 | 
						|
      set_header (r,"@70gPROGRESSIVI PRECEDENTI@101g%15s",(const char*)string);
 | 
						|
      string = _progreavere.string(_picture);
 | 
						|
      set_header (r,"@117g%15s",(const char*) string);
 | 
						|
      string = _saldo_progre_prec.string(_picture);
 | 
						|
      set_header (r++,"@133g%15s",(const char*) string);
 | 
						|
    }
 | 
						|
    _riporto_dare = _progredare;
 | 
						|
    _riporto_avere = _progreavere;
 | 
						|
    _stampa_progressivi_si = FALSE;
 | 
						|
  }
 | 
						|
  else
 | 
						|
  {
 | 
						|
    _riporto_dare += _riporto_parziale_dare;
 | 
						|
    _riporto_avere += _riporto_parziale_avere;
 | 
						|
 | 
						|
    real dep_dare,dep_avere,imp_d,imp_a;
 | 
						|
    imp_d = _sezione == "D" ? _importo : ZERO;
 | 
						|
    imp_a = _sezione == "A" ? _importo : ZERO;
 | 
						|
    dep_dare = _stampato ? _riporto_dare : _riporto_dare - imp_d;
 | 
						|
    dep_avere = _stampato ? _riporto_avere : _riporto_avere - imp_a;
 | 
						|
 | 
						|
    if (_nummast != 3 || dep_dare != ZERO || dep_avere != 0)
 | 
						|
    {
 | 
						|
      if (_numcarat == 1)
 | 
						|
      {
 | 
						|
        TString string = dep_dare.string(_picture);
 | 
						|
        set_header (r,"@32gA RIPORTO@85g%15s",(const char*) string);
 | 
						|
        string = dep_avere.string(_picture);
 | 
						|
        set_header (r++,"@101g%15s",(const char*) string);
 | 
						|
      }
 | 
						|
      if (_numcarat == 2)
 | 
						|
      {
 | 
						|
        TString string = dep_dare.string(_picture);
 | 
						|
        set_header (r,"@32gA RIPORTO@101g%15s",(const char*) string);
 | 
						|
        string = dep_avere.string(_picture);
 | 
						|
        set_header (r++,"@117g%15s",(const char*) string);
 | 
						|
      }
 | 
						|
    }  
 | 
						|
    _riporto_parziale_dare = ZERO;
 | 
						|
    _riporto_parziale_avere = ZERO;
 | 
						|
  }
 | 
						|
  if (_numcarat == 1)
 | 
						|
  {
 | 
						|
    sep ="";
 | 
						|
    set_header(r,"@1g%s",(const char*) sep);
 | 
						|
  }
 | 
						|
  else if (_numcarat == 2)
 | 
						|
       {
 | 
						|
         sep1 ="";
 | 
						|
         set_header(r,"@1g%s",(const char*) sep1);
 | 
						|
       }
 | 
						|
  if (_pagina != np)
 | 
						|
    _pagina = np;       
 | 
						|
}
 | 
						|
 | 
						|
int TMastrini_application::crea_intestazione(int start_riga)
 | 
						|
{
 | 
						|
  TString   sep(132),sep1(198); 
 | 
						|
  int       r = start_riga + 2;
 | 
						|
  sep = "";
 | 
						|
 | 
						|
  reset_header();
 | 
						|
 | 
						|
  int np = get_page_number();
 | 
						|
    
 | 
						|
  _conta_mastrini++;
 | 
						|
    
 | 
						|
  if (_nummast == 3)
 | 
						|
    _gia_stampata_intestazione = TRUE;
 | 
						|
      
 | 
						|
  if (_nummast == 2)
 | 
						|
    if (_cambia_mastrino)
 | 
						|
    {
 | 
						|
      _numero_pag = 1;
 | 
						|
      _cambia_mastrino = FALSE;
 | 
						|
    }
 | 
						|
  if (_nummast == 3)
 | 
						|
  {
 | 
						|
    if (_pagina != np)
 | 
						|
    {
 | 
						|
      if (_numcarat == 1)
 | 
						|
      {
 | 
						|
        sep << "Pag. @#";
 | 
						|
        set_row(r,"@126g%s", (const char*) sep);
 | 
						|
      }     
 | 
						|
      else if (_numcarat == 2)
 | 
						|
      {
 | 
						|
        sep << "Pagina @#";
 | 
						|
        set_row(r,"@190g%s", (const char*) sep);
 | 
						|
      }       
 | 
						|
    }     
 | 
						|
  }          
 | 
						|
  else
 | 
						|
  {
 | 
						|
    if (_numcarat == 1)
 | 
						|
      set_row(r,"@126gPag. %2d", _numero_pag++);
 | 
						|
    else if (_numcarat == 2)
 | 
						|
           set_row(r,"@190gPagina %2d", _numero_pag++);
 | 
						|
  }              
 | 
						|
  if (_nummast != 3 || _pagina != np)
 | 
						|
  {
 | 
						|
    set_row (r, "@0gDITTA@6g%5ld", _codice_ditta);
 | 
						|
    set_row (r, "@12g%-45s", (const char*) _ragsoc);
 | 
						|
    set_row (r, "@59g%s", (const char*) _indulc);
 | 
						|
    //set_row (r, "@86g%-9s", (const char*) _civulc);
 | 
						|
    set_row (r, "@97g%-5s", (const char*) _capulc);
 | 
						|
    set_row (r, "@103g%-18s", (const char*) _com);
 | 
						|
    set_row (r, "@122g%-3s", (const char*) _prov);
 | 
						|
    r += 2;                 
 | 
						|
  }   
 | 
						|
  if (_nummast == 3)
 | 
						|
  {
 | 
						|
    set_row (r, "@0gSottoconto@12g@b%d", _gruppo);
 | 
						|
    set_row (r, "@16g@b%d", _conto);
 | 
						|
    set_row (r, "@20g@b%ld", _sottoc);  
 | 
						|
  }
 | 
						|
  else
 | 
						|
  {
 | 
						|
    set_row (r, "@0gSottoconto@12g%d", _gruppo);
 | 
						|
    set_row (r, "@16g%d", _conto);
 | 
						|
    set_row (r, "@20g%ld", _sottoc); 
 | 
						|
  }
 | 
						|
  
 | 
						|
  if (_tmcf == 'C')                       
 | 
						|
    _tipo_mask = 1;                       
 | 
						|
    else if (_tmcf == 'F')                
 | 
						|
            _tipo_mask = 2;               
 | 
						|
            else if (_tmcf == '\0')        
 | 
						|
           _tipo_mask = 3;        
 | 
						|
  switch (_tipo_mask)
 | 
						|
  {
 | 
						|
    case 1: r = ricerca_clifo(r);
 | 
						|
              break;
 | 
						|
    case 2: r = ricerca_clifo(r);
 | 
						|
              break;
 | 
						|
    case 3: r = ricerca_gruppo(r);
 | 
						|
              break;
 | 
						|
    default:  break;
 | 
						|
  }    
 | 
						|
  
 | 
						|
  r++;
 | 
						|
  
 | 
						|
  if (_movcas_print)
 | 
						|
    set_header(r++,"@65gMASTRINO DI CASSA");
 | 
						|
    
 | 
						|
  if (_numcarat == 1)
 | 
						|
  {
 | 
						|
    sep.fill('-');                            //Stampa 132 - (sep(132))      
 | 
						|
    set_row (r++,"@1g%s", (const char *) sep);
 | 
						|
    set_row (r++,"Operazione@19gDocumento@117gContro@131gA");
 | 
						|
    if (_stampa_mov_prov)
 | 
						|
      set_header(r-1,"@129gM");
 | 
						|
    set_row (r,"Data");
 | 
						|
    if (_stampanum < 3)
 | 
						|
      set_row (r,"@11gnumero");
 | 
						|
    set_row (r++,"@19gData@30gNumero@38gCod.Causale@58gDescrizione@81gCDC@96gDare@111gAvere@117gPartita@131gC");
 | 
						|
    if (_stampa_mov_prov)
 | 
						|
      set_header(r-1,"@129gP");
 | 
						|
    sep.fill('-');
 | 
						|
    set_row (r++,"@1g%s", (const char *) sep);
 | 
						|
  }
 | 
						|
  else if (_numcarat == 2)
 | 
						|
       {
 | 
						|
         sep1.fill('-');                    //Stampa 198 - (sep1(198))      
 | 
						|
         set_row (r++,"@0g%s", (const char *) sep1);
 | 
						|
         set_row (r++,"Operazione@23gData@34gNumero@169gContro@180gReg@188gNumero@197gA");
 | 
						|
         if (_stampa_mov_prov)
 | 
						|
           set_row(r-1,"@195gM");
 | 
						|
         set_row (r,"Data");
 | 
						|
         if (_stampanum < 3)
 | 
						|
           set_row (r,"@11gnumero");
 | 
						|
         set_row (r,"@23gDocumento@42gCod.Causale@65gDescrizione@97gCDC@112gDare@127gAvere");
 | 
						|
         set_row (r++,"@135gSaldo progre.@152gSaldo movim.@169gPartita@180gIva@184gProtocollo@197gC");
 | 
						|
         if (_stampa_mov_prov)
 | 
						|
           set_row (r-1,"@195gP");
 | 
						|
         sep1.fill('-');
 | 
						|
         set_row (r++,"@0g%s", (const char *) sep1);
 | 
						|
       }   
 | 
						|
  if (_pagina != np)
 | 
						|
    _pagina = np;       
 | 
						|
  return r;     
 | 
						|
}
 | 
						|
          
 | 
						|
void TMastrini_application::stampa_progre_riporto()
 | 
						|
{ 
 | 
						|
  TString sep(132),sep1(198);
 | 
						|
 | 
						|
  if (_nummast == 1 || _nummast == 3)
 | 
						|
    _rw = 1;
 | 
						|
             
 | 
						|
  if (_stampa_progressivi_si)
 | 
						|
  {
 | 
						|
    stampa_progressivi();
 | 
						|
    _riporto_dare = _progredare;
 | 
						|
    _riporto_avere = _progreavere;
 | 
						|
    _stampa_progressivi_si = FALSE;
 | 
						|
  }
 | 
						|
  else
 | 
						|
  {
 | 
						|
    _riporto_dare += _riporto_parziale_dare;
 | 
						|
    _riporto_avere += _riporto_parziale_avere;
 | 
						|
    
 | 
						|
    real dep_dare,dep_avere,imp_d,imp_a;
 | 
						|
    imp_d = _sezione == "D" ? _importo : ZERO;
 | 
						|
    imp_a = _sezione == "A" ? _importo : ZERO;
 | 
						|
    dep_dare = _stampato ? _riporto_dare : _riporto_dare - imp_d;
 | 
						|
    dep_avere = _stampato ? _riporto_avere : _riporto_avere - imp_a;
 | 
						|
    
 | 
						|
    if (_nummast != 3 || dep_dare != ZERO || dep_avere != 0)
 | 
						|
    {
 | 
						|
      if (_numcarat == 1)
 | 
						|
      {
 | 
						|
        TString string = dep_dare.string(_picture);
 | 
						|
        set_row (_rw,"@32gA RIPORTO@85g%15s",(const char*) string);
 | 
						|
        string = dep_avere.string(_picture);
 | 
						|
        set_row (_rw++,"@101g%15s",(const char*) string);
 | 
						|
      }
 | 
						|
      if (_numcarat == 2)
 | 
						|
      {
 | 
						|
        TString string = dep_dare.string(_picture);
 | 
						|
        set_row (_rw,"@32gA RIPORTO@101g%15s",(const char*) string);
 | 
						|
        string = dep_avere.string(_picture);
 | 
						|
        set_row (_rw++,"@117g%15s",(const char*) string);
 | 
						|
      }
 | 
						|
    }     
 | 
						|
    _riporto_parziale_dare = ZERO;
 | 
						|
    _riporto_parziale_avere = ZERO;
 | 
						|
  }
 | 
						|
  if (_numcarat == 1)
 | 
						|
  {
 | 
						|
    sep ="";
 | 
						|
    set_row(_rw,"@1g%s",(const char*) sep);
 | 
						|
  }
 | 
						|
  else if (_numcarat == 2)
 | 
						|
       {
 | 
						|
         sep1 ="";
 | 
						|
         set_row(_rw,"@1g%s",(const char*) sep1);
 | 
						|
       }
 | 
						|
} 
 | 
						|
 | 
						|
int TMastrini_application::stampa_progre_riporto(int start_riga)
 | 
						|
{ 
 | 
						|
  TString sep(132),sep1(198);                                  
 | 
						|
  int r = start_riga;
 | 
						|
  
 | 
						|
  if (_stampa_progressivi_si)
 | 
						|
  {
 | 
						|
    r = stampa_progressivi(r);
 | 
						|
    _riporto_dare = _progredare;
 | 
						|
    _riporto_avere = _progreavere;
 | 
						|
    _stampa_progressivi_si = FALSE;
 | 
						|
  }
 | 
						|
  else
 | 
						|
  {
 | 
						|
    _riporto_dare += _riporto_parziale_dare;
 | 
						|
    _riporto_avere += _riporto_parziale_avere;
 | 
						|
    
 | 
						|
    real dep_dare,dep_avere,imp_d,imp_a;
 | 
						|
    imp_d = _sezione == "D" ? _importo : ZERO;
 | 
						|
    imp_a = _sezione == "A" ? _importo : ZERO;
 | 
						|
    dep_dare = _stampato ? _riporto_dare : _riporto_dare - imp_d;
 | 
						|
    dep_avere = _stampato ? _riporto_avere : _riporto_avere - imp_a;
 | 
						|
 | 
						|
    if (_nummast != 3 || dep_dare != ZERO || dep_avere != ZERO)
 | 
						|
    {
 | 
						|
      if (_numcarat == 1)
 | 
						|
      {
 | 
						|
        TString string = dep_dare.string(_picture);
 | 
						|
        set_row (r,"@32gA RIPORTO@85g%15s",(const char*) string);
 | 
						|
        string = dep_avere.string(_picture);
 | 
						|
        set_row (r++,"@101g%15s",(const char*) string);
 | 
						|
      }
 | 
						|
      if (_numcarat == 2)
 | 
						|
      {
 | 
						|
        TString string = dep_dare.string(_picture);
 | 
						|
        set_row (r,"@32gA RIPORTO@101g%15s",(const char*) string);
 | 
						|
        string = dep_avere.string(_picture);
 | 
						|
        set_row (r++,"@117g%15s",(const char*) string);
 | 
						|
      }
 | 
						|
    }     
 | 
						|
    _riporto_parziale_dare = ZERO;
 | 
						|
    _riporto_parziale_avere = ZERO;
 | 
						|
  }
 | 
						|
  if (_numcarat == 1)
 | 
						|
  {
 | 
						|
    sep ="";
 | 
						|
    set_row(r++,"@1g%s",(const char*) sep);
 | 
						|
  }
 | 
						|
  else if (_numcarat == 2)
 | 
						|
       {
 | 
						|
         sep1 ="";
 | 
						|
         set_row(r++,"@1g%s",(const char*) sep1);
 | 
						|
       }            
 | 
						|
  return r;
 | 
						|
} 
 | 
						|
         
 | 
						|
void TMastrini_application::calcola_progressivi_al()
 | 
						|
{
 | 
						|
  long record,sottoc,annoes;
 | 
						|
  int  gruppo,conto;
 | 
						|
  TDate datareg, datacomp;
 | 
						|
  TLocalisamfile& rmov = current_cursor()->file(-RMOV_ALIAS);
 | 
						|
  char sezione;
 | 
						|
  real importo;       
 | 
						|
  TDate data;
 | 
						|
 | 
						|
  _totale_prima_dare  = ZERO;
 | 
						|
  _totale_prima_avere = ZERO;       
 | 
						|
  
 | 
						|
  _mov->zero();
 | 
						|
  
 | 
						|
  record = rmov.recno(); 
 | 
						|
  rmov.zero();
 | 
						|
  rmov.put(RMV_GRUPPO,     _gruppo);
 | 
						|
  rmov.put(RMV_CONTO,      _conto);
 | 
						|
  rmov.put(RMV_SOTTOCONTO, _sottoc);
 | 
						|
  for (rmov.read();!rmov.eof() ;rmov.next())
 | 
						|
  {
 | 
						|
    annoes      = rmov.get_int (RMV_ANNOES);
 | 
						|
    datareg     = rmov.get_date(RMV_DATAREG);
 | 
						|
    sezione     = rmov.get     (RMV_SEZIONE)[0];
 | 
						|
    importo     = rmov.get_real(RMV_IMPORTO);
 | 
						|
    long numreg = rmov.get_long(RMV_NUMREG);
 | 
						|
    
 | 
						|
    if (_mov->get_long(MOV_NUMREG) != numreg)
 | 
						|
    {
 | 
						|
      _mov->setkey(1);
 | 
						|
      _mov->put(MOV_NUMREG,numreg);
 | 
						|
      _mov->read();
 | 
						|
      if (_mov->bad())
 | 
						|
        _mov->zero();
 | 
						|
    }
 | 
						|
    
 | 
						|
    // Se sono stati selezionati i movimenti di cassa considera la data di competenza e registrazione su di essi
 | 
						|
    datacomp = !_movcas_print ? (_mov->curr().get(MOV_DATACOMP)) : rmov.get(RMV_DATAREG);
 | 
						|
    TString provvis (_mov->curr().get(MOV_PROVVIS));
 | 
						|
    
 | 
						|
    if ((_stampa_mov_prov) || ((!_stampa_mov_prov) && (provvis.trim().empty())))
 | 
						|
    {
 | 
						|
      if (_annomsk == 0)
 | 
						|
      {
 | 
						|
        datareg = rmov.get_date(RMV_DATAREG); 
 | 
						|
        data = _inizioes;
 | 
						|
      }
 | 
						|
      else
 | 
						|
      {
 | 
						|
        datareg = datacomp;
 | 
						|
        data = _data_inizioese;
 | 
						|
      }  
 | 
						|
 | 
						|
      gruppo = rmov.get_int(RMV_GRUPPO);
 | 
						|
      conto  = rmov.get_int(RMV_CONTO);
 | 
						|
      sottoc = rmov.get_long(RMV_SOTTOCONTO);
 | 
						|
      if ((gruppo != _gruppo)||(conto != _conto)||(sottoc != _sottoc))
 | 
						|
        break;
 | 
						|
      
 | 
						|
      if (_cdc != 0)  
 | 
						|
      {
 | 
						|
        const long cdc = rmov.get_long(RMV_CDC);
 | 
						|
        if (_cdc != cdc)
 | 
						|
          continue;
 | 
						|
      }
 | 
						|
 | 
						|
      //Legge movimenti con data < data iniziale
 | 
						|
      if (((annoes==_annomsk)||(_annomsk == 0))&&(datareg >= data)&&(datareg < _data_ini)) 
 | 
						|
      {
 | 
						|
        if (sezione == 'D')
 | 
						|
          _totale_prima_dare += importo;
 | 
						|
        else
 | 
						|
          _totale_prima_avere += importo;
 | 
						|
      }
 | 
						|
    } // if ((_stampa_mov_prov) || ((!_stampa_mov_prov) && (provvis.trim().empty())))              
 | 
						|
  }  
 | 
						|
  rmov.readat(record);
 | 
						|
}
 | 
						|
 | 
						|
void TMastrini_application::calcola_cdc_al(real& dare, real& avere)
 | 
						|
{
 | 
						|
  TLocalisamfile& rmov = current_cursor()->file(-RMOV_ALIAS);
 | 
						|
  const TRecnotype record = rmov.recno(); 
 | 
						|
  rmov.zero();
 | 
						|
  rmov.put(RMV_GRUPPO,     _gruppo);
 | 
						|
  rmov.put(RMV_CONTO,      _conto);
 | 
						|
  rmov.put(RMV_SOTTOCONTO, _sottoc);
 | 
						|
 | 
						|
  _mov->zero();
 | 
						|
  dare  = ZERO;
 | 
						|
  avere = ZERO;       
 | 
						|
  
 | 
						|
  for (rmov.read();!rmov.eof() ;rmov.next())
 | 
						|
  {
 | 
						|
    const int gruppo  = rmov.get_int(RMV_GRUPPO);
 | 
						|
    const int conto   = rmov.get_int(RMV_CONTO);
 | 
						|
    const long sottoc = rmov.get_long(RMV_SOTTOCONTO);
 | 
						|
    if ((gruppo != _gruppo)||(conto != _conto)||(sottoc != _sottoc))
 | 
						|
      break;
 | 
						|
 | 
						|
    const long cdc = rmov.get_long(RMV_CDC);
 | 
						|
    if (_cdc != cdc)
 | 
						|
      continue;
 | 
						|
 | 
						|
    const char sezione = rmov.get(RMV_SEZIONE)[0];
 | 
						|
    const real importo = rmov.get_real(RMV_IMPORTO);
 | 
						|
    const long numreg  = rmov.get_long(RMV_NUMREG);
 | 
						|
    TDate datareg      = rmov.get_date(RMV_DATAREG);
 | 
						|
    
 | 
						|
    if (_mov->get_long(MOV_NUMREG) != numreg)
 | 
						|
    {
 | 
						|
      _mov->setkey(1);
 | 
						|
      _mov->put(MOV_NUMREG,numreg);
 | 
						|
      _mov->read();
 | 
						|
      if (_mov->bad())
 | 
						|
        _mov->zero();
 | 
						|
    }
 | 
						|
    
 | 
						|
    const TString& provvis = _mov->curr().get(MOV_PROVVIS);
 | 
						|
    
 | 
						|
    if (_stampa_mov_prov || (!_stampa_mov_prov && provvis.blank()))
 | 
						|
    {
 | 
						|
      // Se sono stati selezionati i movimenti di cassa considera la data di competenza e registrazione su di essi
 | 
						|
      const TDate datacomp = !_movcas_print ? (_mov->curr().get(MOV_DATACOMP)) : rmov.get(RMV_DATAREG);
 | 
						|
 | 
						|
      TDate data;
 | 
						|
      if (_annomsk == 0)
 | 
						|
      {
 | 
						|
        datareg = rmov.get_date(RMV_DATAREG); 
 | 
						|
        data = _inizioes;
 | 
						|
      }
 | 
						|
      else
 | 
						|
      {
 | 
						|
        datareg = datacomp;
 | 
						|
        data = _data_inizioese;
 | 
						|
      }  
 | 
						|
 | 
						|
      //Legge movimenti con data >= data iniziale
 | 
						|
      if (datareg >= _data_ini && datareg <= _data_fine) 
 | 
						|
      {
 | 
						|
        if (sezione == 'D')
 | 
						|
          dare += importo;
 | 
						|
        else
 | 
						|
          avere += importo;
 | 
						|
      }
 | 
						|
    } // if ((_stampa_mov_prov) || ((!_stampa_mov_prov) && (provvis.trim().empty())))              
 | 
						|
  }  
 | 
						|
  rmov.readat(record);
 | 
						|
}
 | 
						|
 | 
						|
void TMastrini_application::calcola_progressivi()
 | 
						|
{
 | 
						|
   /* fv 20/3/96: aggiustato per nuova struttura saldi - modificata ricerca
 | 
						|
    * record scaricati e assegnazione dare/avere relativo - Controllare che
 | 
						|
    * non occorra considerare il saldo di chiusura (SALDOFIN) aggiunto al
 | 
						|
    * record */
 | 
						|
   
 | 
						|
 | 
						|
   TLocalisamfile saldi(LF_SALDI, FALSE);
 | 
						|
   real progdare_attuale,progavere_attuale,progdare_prec,progavere_prec;
 | 
						|
   real saldo,progredare_eseprec,progreavere_eseprec,pdarep,paverep,saldoini_attuale,saldofine_attuale;
 | 
						|
   char salini,salini_attuale,salfine_attuale;
 | 
						|
 | 
						|
   saldo         = ZERO;
 | 
						|
   pdarep        = ZERO;
 | 
						|
   paverep       = ZERO;
 | 
						|
 | 
						|
// Ricerca sull'archivio saldi dei record con gruppo,conto,sottoconto
 | 
						|
// uguali a quelli di rmov per il calcolo dei progressivi precedenti
 | 
						|
 | 
						|
   if (!_cdc && !_movcas_print) 
 | 
						|
   {
 | 
						|
     saldi.setkey(2);
 | 
						|
     saldi.zero();
 | 
						|
     saldi.put(SLD_GRUPPO,     _gruppo);
 | 
						|
     saldi.put(SLD_CONTO,      _conto);
 | 
						|
     saldi.put(SLD_SOTTOCONTO, _sottoc);
 | 
						|
  
 | 
						|
     TRectype record(saldi.curr());
 | 
						|
    
 | 
						|
     for (saldi.read(_isgteq); saldi.good() && saldi.curr() == record; saldi.next())
 | 
						|
     {             
 | 
						|
       if (!saldi.get_bool(SLD_FLSCA))
 | 
						|
       {
 | 
						|
         int annoes_saldi = saldi.curr().get_int(SLD_ANNOES);
 | 
						|
       
 | 
						|
  //Calcola i progressivi dell'esercizio attuale
 | 
						|
  
 | 
						|
         if (annoes_saldi == _anno_corrente)
 | 
						|
         {
 | 
						|
           progdare_attuale  = saldi.get_real(SLD_PDARE);
 | 
						|
           progavere_attuale = saldi.get_real(SLD_PAVERE);
 | 
						|
           saldo             = saldi.get_real(SLD_SALDO);
 | 
						|
           salini            = saldi.get(SLD_FLAGSALINI)[0]; 
 | 
						|
           _ultima_data_reg  = saldi.get_date(SLD_DATAULMOV);
 | 
						|
           saldoini_attuale  = saldi.get_real(SLD_SALDO);
 | 
						|
           salini_attuale    = saldi.get_char(SLD_FLAGSALINI); 
 | 
						|
           saldofine_attuale = saldi.get_real(SLD_SALDOFIN);
 | 
						|
           salfine_attuale   = saldi.get_char(SLD_FLAGSALFIN);
 | 
						|
         }
 | 
						|
  
 | 
						|
  //Calcola i progressivi dell'esercizio precedente
 | 
						|
  
 | 
						|
         if (annoes_saldi == _anno_precedente)
 | 
						|
         {
 | 
						|
           pdarep       = saldi.get_real(SLD_PDARE);
 | 
						|
           paverep      = saldi.get_real(SLD_PAVERE);
 | 
						|
           
 | 
						|
           if (_stampa_mov_prov)
 | 
						|
           {
 | 
						|
            progredare_eseprec = pdarep + saldi.get_real(SLD_PDAREPRO);
 | 
						|
            progreavere_eseprec = paverep + saldi.get_real(SLD_PAVEREPRO);
 | 
						|
           }
 | 
						|
    
 | 
						|
           // cerca eventuale record scaricati
 | 
						|
         }
 | 
						|
          
 | 
						|
  // Se il saldo dell'esercizio attuale e' diverso da 0 allora significa che
 | 
						|
  // quello corrisponde al saldo finale dell'esercizio precedente. Per ottenere
 | 
						|
  // i progressivi dell'esercizio precedente devo a questo punto sommare i
 | 
						|
  // progressivi dell'esercizio e i progressivi di quelli scaricati, tenendo
 | 
						|
  // conto del flag salini per sapere se il saldo e' dare oppure avere.
 | 
						|
  
 | 
						|
  /*
 | 
						|
       if (_annomsk != 0 && _anno_corrente == annoes_saldi)
 | 
						|
       {
 | 
						|
         if (saldo != ZERO)
 | 
						|
         {
 | 
						|
           if (salini == 'D')
 | 
						|
           {
 | 
						|
             progredare_eseprec  = saldo;// + pdarescap + pdarep;
 | 
						|
             progdare_prec = saldo;
 | 
						|
           }
 | 
						|
           else if (salini == 'A')
 | 
						|
                {
 | 
						|
                  progreavere_eseprec = saldo;// + paverescap + paverep;
 | 
						|
                  progavere_prec = saldo;
 | 
						|
                }
 | 
						|
         }
 | 
						|
       }
 | 
						|
  */   
 | 
						|
       }   // if (!saldi.get_bool(SLD_FLSCA))
 | 
						|
     }   // FOR
 | 
						|
     
 | 
						|
  //Se il saldo dell'esercizio attuale non e' diverso da zero, allora il saldo
 | 
						|
  // finale dell'esercizio precedente devo calcolarmelo tenendo conto dell'indbil
 | 
						|
                             
 | 
						|
     if (_annomsk != 0 /*&& saldo == ZERO*/)   // Guy: Non capisco perche' sia commentato!
 | 
						|
     {    
 | 
						|
       if ((_indbil == 1) || (_indbil == 2) || (_indbil == 5))
 | 
						|
       {           
 | 
						|
         const TRecnotype pos = saldi.recno();                                      
 | 
						|
         // W96SALDI del 18-07-96 saldofin_esprec usa il flag TRUE xche' deve
 | 
						|
         // considerare anche il saldo finale
 | 
						|
         saldo = _sld->saldofin_esprec(_anno_corrente,_gruppo,_conto,_sottoc,TRUE);
 | 
						|
         saldi.readat(pos);
 | 
						|
             
 | 
						|
         if (saldo >= ZERO)
 | 
						|
         {
 | 
						|
           progredare_eseprec  = saldo;
 | 
						|
           progdare_prec = saldo;
 | 
						|
         }
 | 
						|
         else
 | 
						|
         {
 | 
						|
           saldo = -saldo;
 | 
						|
           progreavere_eseprec = saldo;
 | 
						|
           progavere_prec = saldo;
 | 
						|
         }
 | 
						|
       }
 | 
						|
     }
 | 
						|
   } // If (!_movcas_print && !_cdc)
 | 
						|
   
 | 
						|
   calcola_progressivi_al();
 | 
						|
   
 | 
						|
   // Calcola il saldo fino a data_fin per centro di costo
 | 
						|
   if (_cdc)
 | 
						|
   {
 | 
						|
     saldoini_attuale = ZERO;
 | 
						|
     calcola_cdc_al(progdare_attuale, progavere_attuale);
 | 
						|
   }
 | 
						|
  
 | 
						|
//Calcolo dei progressivi precedenti: somma di tutti quei movimenti di rmov
 | 
						|
//che hanno la data di registrazione inferiore alla data di inizio stampa,
 | 
						|
//dei progressivi dell'anno esercizio precedente, e dei progressivi dei
 | 
						|
//movimenti scaricati dell'esercizio attuale.
 | 
						|
 | 
						|
   _progredare  = progredare_eseprec  + _totale_prima_dare;
 | 
						|
   _progreavere = progreavere_eseprec + _totale_prima_avere;
 | 
						|
   _saldo_progre_prec = _progredare - _progreavere;
 | 
						|
 | 
						|
//Calcolo dei progressivi al <ultima data registrazione>  
 | 
						|
 | 
						|
//Se sulla maschera e' stato selezionato il controllo competenza esercizio
 | 
						|
//Sommo i progressivi dell'esercizio precedente e quelli dell'esercizio attuale
 | 
						|
//altrimenti solo quelli dell'esercizio attuale
 | 
						|
 | 
						|
   if (_annomsk != 0)
 | 
						|
   {
 | 
						|
     _totprogre_dare_al     = progdare_attuale  + progdare_prec;
 | 
						|
     _totprogre_avere_al    = progavere_attuale + progavere_prec;  
 | 
						|
 | 
						|
     if (salini_attuale == 'D')
 | 
						|
       _totprogre_dare_al += saldoini_attuale;
 | 
						|
     else
 | 
						|
       _totprogre_avere_al += saldoini_attuale;
 | 
						|
     if (salfine_attuale == 'D')
 | 
						|
       _totprogre_dare_al += saldofine_attuale;
 | 
						|
     else
 | 
						|
       _totprogre_avere_al += saldofine_attuale;       
 | 
						|
   }
 | 
						|
   else
 | 
						|
   {
 | 
						|
     _totprogre_dare_al = progdare_attuale;
 | 
						|
     _totprogre_avere_al = progavere_attuale;
 | 
						|
 | 
						|
     if (salini_attuale == 'D')
 | 
						|
       _totprogre_dare_al += saldoini_attuale;
 | 
						|
     else
 | 
						|
       _totprogre_avere_al += saldoini_attuale;
 | 
						|
     if (salfine_attuale == 'D')
 | 
						|
       _totprogre_dare_al += saldofine_attuale;
 | 
						|
     else
 | 
						|
       _totprogre_avere_al += saldofine_attuale;       
 | 
						|
   } 
 | 
						|
}
 | 
						|
 | 
						|
void TMastrini_application::stampa_progressivi()
 | 
						|
{           
 | 
						|
  if (_nummast == 1 || _nummast == 3)
 | 
						|
    _rw = 1;
 | 
						|
 | 
						|
  if (_numcarat == 1)
 | 
						|
   { 
 | 
						|
     TString string = _saldo_progre_prec.string(_picture);
 | 
						|
     set_row (_rw,"@42gPROGRESSIVI PRECEDENTI@69g%15s",(const char*) string);
 | 
						|
     string = _progredare.string(_picture);
 | 
						|
     set_row (_rw,"@85g%15s",(const char*) string);
 | 
						|
     string = _progreavere.string(_picture);
 | 
						|
     set_row (_rw++,"@101g%15s",(const char*) string);
 | 
						|
   }
 | 
						|
  
 | 
						|
   if (_numcarat == 2)
 | 
						|
   {
 | 
						|
     TString string = _progredare.string(_picture);
 | 
						|
     set_row (_rw,"@70gPROGRESSIVI PRECEDENTI@101g%15s",(const char*)string);
 | 
						|
     string = _progreavere.string(_picture);
 | 
						|
     set_row (_rw,"@117g%15s",(const char*) string);
 | 
						|
     string = _saldo_progre_prec.string(_picture);  
 | 
						|
     set_row (_rw++,"@133g%15s",(const char*) string);
 | 
						|
   }
 | 
						|
}
 | 
						|
 | 
						|
int TMastrini_application::stampa_progressivi(int start_riga)
 | 
						|
{                                                           
 | 
						|
  int r = start_riga;
 | 
						|
  
 | 
						|
  if (_numcarat == 1)
 | 
						|
   { 
 | 
						|
     TString string = _saldo_progre_prec.string(_picture);
 | 
						|
     set_row (r,"@42gPROGRESSIVI PRECEDENTI@69g%15s",(const char*) string);
 | 
						|
     string = _progredare.string(_picture);
 | 
						|
     set_row (r,"@85g%15s",(const char*) string);
 | 
						|
     string = _progreavere.string(_picture);
 | 
						|
     set_row (r++,"@101g%15s",(const char*) string);
 | 
						|
   }
 | 
						|
  
 | 
						|
   if (_numcarat == 2)
 | 
						|
   {
 | 
						|
     TString string = _progredare.string(_picture);
 | 
						|
     set_row (r,"@70gPROGRESSIVI PRECEDENTI@101g%15s",(const char*)string);
 | 
						|
     string = _progreavere.string(_picture);
 | 
						|
     set_row (r,"@117g%15s",(const char*) string);
 | 
						|
     string = _saldo_progre_prec.string(_picture);
 | 
						|
     set_row (r++,"@133g%15s",(const char*) string);
 | 
						|
   }       
 | 
						|
         
 | 
						|
  return r;
 | 
						|
}
 | 
						|
 | 
						|
// Se la ricerca selezionata nella maschera e' per clienti, oppure fornitori,  // allora ricerco su CLIFO i relativi dati, e su PCON il relativo gruppo,conto,// sottoconto e IV direttiva CEE
 | 
						|
 | 
						|
void TMastrini_application::ricerca_clifo()
 | 
						|
{
 | 
						|
  TString ragsoc,paiv,cofi,indcf,capcf,ptel,tel,statocf,comcf,dencom,provcom,dep;
 | 
						|
  TLocalisamfile clifo(LF_CLIFO);
 | 
						|
  TLocalisamfile pconti(LF_PCON);
 | 
						|
  TString16 dataini,datafine; 
 | 
						|
  TString   descriz,descriz2;
 | 
						|
  int     numrivd;
 | 
						|
  
 | 
						|
  indcf = "";
 | 
						|
  
 | 
						|
  clifo.setkey(1);
 | 
						|
  clifo.zero();
 | 
						|
  clifo.put(CLI_TIPOCF, _tmcf);
 | 
						|
  clifo.put(CLI_CODCF,  _sottoc);
 | 
						|
  clifo.read();
 | 
						|
  if (clifo.bad())
 | 
						|
    clifo.zero();
 | 
						|
  TConto tc (_gruppo,_conto,_sottoc,_tmcf);
 | 
						|
  
 | 
						|
  ragsoc  = tc.descrizione();
 | 
						|
  paiv    = clifo.get(CLI_PAIV);
 | 
						|
  cofi    = clifo.get(CLI_COFI);
 | 
						|
  indcf   = clifo.get(CLI_INDCF);
 | 
						|
  indcf.trim();
 | 
						|
  indcf << " " << clifo.get(CLI_CIVCF);
 | 
						|
  capcf   = clifo.get(CLI_CAPCF);
 | 
						|
  ptel    = clifo.get(CLI_PTEL);
 | 
						|
  tel     = clifo.get(CLI_TEL);
 | 
						|
  statocf = clifo.get(CLI_STATOCF);
 | 
						|
  comcf   = clifo.get(CLI_COMCF);
 | 
						|
 | 
						|
  _comuni->setkey(1);
 | 
						|
  _comuni->zero();
 | 
						|
  _comuni->put(COM_STATO, statocf);
 | 
						|
  _comuni->put(COM_COM, comcf);
 | 
						|
  _comuni->read();
 | 
						|
  if (_comuni->good())
 | 
						|
  {
 | 
						|
    dencom = _comuni->get(COM_DENCOM);
 | 
						|
    provcom = _comuni->get(COM_PROVCOM);
 | 
						|
  }
 | 
						|
  else
 | 
						|
  {
 | 
						|
    //dencom="";
 | 
						|
    dencom = clifo.get(CLI_LOCCF);
 | 
						|
    provcom="";
 | 
						|
  }
 | 
						|
 | 
						|
  pconti.setkey(1);
 | 
						|
  pconti.zero();
 | 
						|
  pconti.put(PCN_GRUPPO,     _gruppo);
 | 
						|
  pconti.put(PCN_CONTO,      _conto);
 | 
						|
  pconti.read();
 | 
						|
  _sezivd  = pconti.get_char(PCN_SEZIVD);
 | 
						|
  _lettivd = pconti.get_char(PCN_LETTIVD);
 | 
						|
  numrivd  = pconti.get_int(PCN_NUMRIVD); 
 | 
						|
  _numrivd = itor(numrivd);
 | 
						|
  _numivd  = pconti.get_int(PCN_NUMIVD);
 | 
						|
 | 
						|
  descriz = descrizione_classe(_sezivd,_lettivd,numrivd,_numivd);    
 | 
						|
 
 | 
						|
  if (_numivd != 0)      //Ora devo stampare la descrizione del livello della
 | 
						|
  {                      //classe immediatamente precedente a quello appena
 | 
						|
   if (_numrivd != "")   //stampato
 | 
						|
     descriz2 = descrizione_classe(_sezivd,_lettivd,_numrivd_int,0);
 | 
						|
   else
 | 
						|
     descriz2 = descrizione_classe(_sezivd,_lettivd,0,0);
 | 
						|
  }
 | 
						|
  else
 | 
						|
    if (_numrivd != "")
 | 
						|
      descriz2 = descrizione_classe(_sezivd,_lettivd,0,0);   
 | 
						|
    else
 | 
						|
      descriz2 = "";
 | 
						|
 
 | 
						|
  set_header(3,"@27g%-.30s",(const char*) descrizione_gruppo());
 | 
						|
  set_header(3,"@59g%-.30s",(const char*) descrizione_conto());
 | 
						|
  set_header(3, "@91g%-.41s",(const char*) ragsoc);
 | 
						|
  if (_nummast == 3)
 | 
						|
    set_header(4, "@rClasse@8g@b%c", _lettivd);
 | 
						|
  else
 | 
						|
    set_header(4, "Classe@8g%c", _lettivd);  
 | 
						|
  set_header(4, "@10g%-8s", (const char*) _numrivd);
 | 
						|
  if (_numivd != 0)
 | 
						|
    set_header(4, "@19g%2d", _numivd);
 | 
						|
  if (descriz2 != "")                              
 | 
						|
  {
 | 
						|
    set_header(4,"@23g%-50s",(const char*) descriz2);
 | 
						|
    set_header(4,"@80g%-50s",(const char*) descriz);                                                  
 | 
						|
  }
 | 
						|
  else
 | 
						|
    set_header(4,"@23g%-50s",(const char*) descriz);
 | 
						|
                                       
 | 
						|
  dataini = _data_ini.string();   
 | 
						|
  datafine = _data_fine.string();
 | 
						|
 | 
						|
  if (_annomsk == 0)
 | 
						|
  {                         
 | 
						|
    if (_nummast == 3)
 | 
						|
    {
 | 
						|
      set_header (5, "@rPeriodo@10g@b%s", (const char*) dataini);
 | 
						|
      set_header (5, "@22g@b%s@r", (const char*) datafine);    
 | 
						|
    }
 | 
						|
    else
 | 
						|
    {
 | 
						|
      set_header (5, "Periodo@10g%s", (const char*) dataini);
 | 
						|
      set_header (5, "@22g%s", (const char*) datafine);
 | 
						|
    }
 | 
						|
  }
 | 
						|
  else
 | 
						|
  {                         
 | 
						|
    if (_nummast == 3)
 | 
						|
    {
 | 
						|
      set_header (5, "@rComp. da@9g@b%s", (const char*) dataini);
 | 
						|
      set_header (5, "@20g@ra@22g@b%s@r", (const char*) datafine);    
 | 
						|
    }
 | 
						|
    else
 | 
						|
    {
 | 
						|
      set_header (5, "Comp. da@9g%s", (const char*) dataini);
 | 
						|
      set_header (5, "@20ga@22g%s", (const char*) datafine);
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  set_header (5, "@33gP.I.@37g%-11s",(const char*) paiv);
 | 
						|
  set_header (5, "@49gCF@52g%-16s",(const char*) cofi);
 | 
						|
  set_header (5, "@69g%-.25s",(const char*) indcf);
 | 
						|
  set_header (5, "@95g%-5s",(const char*) capcf);
 | 
						|
  set_header (5, "@101g%-.24s",(const char*) dencom);
 | 
						|
  set_header (5, "@126g%-5s",(const char*) provcom);
 | 
						|
 
 | 
						|
  if (_numcarat == 2)
 | 
						|
  {
 | 
						|
    set_header (5,"@134g%-4s",(const char*) ptel);
 | 
						|
    if (tel != "")
 | 
						|
      set_header (5,"@138g/@139g%-10s",(const char*) tel);
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
int TMastrini_application::ricerca_clifo(int start)
 | 
						|
{
 | 
						|
  TString ragsoc,paiv,cofi,indcf,capcf,ptel,tel,statocf,comcf,dencom,provcom,dep;
 | 
						|
  TLocalisamfile clifo(LF_CLIFO);
 | 
						|
  TLocalisamfile pconti(LF_PCON);
 | 
						|
  TString16 dataini,datafine; 
 | 
						|
  TString   descriz,descriz2;
 | 
						|
  int     numrivd;
 | 
						|
  int   r = start;
 | 
						|
  
 | 
						|
  indcf = "";
 | 
						|
  
 | 
						|
  clifo.setkey(1);
 | 
						|
  clifo.zero();
 | 
						|
  clifo.put(CLI_TIPOCF, _tmcf);
 | 
						|
  clifo.put(CLI_CODCF,  _sottoc);
 | 
						|
  clifo.read();
 | 
						|
  if (clifo.bad())
 | 
						|
    clifo.zero();
 | 
						|
  TConto tc (_gruppo,_conto,_sottoc,_tmcf);
 | 
						|
  
 | 
						|
  ragsoc  = tc.descrizione();
 | 
						|
  paiv    = clifo.get(CLI_PAIV);
 | 
						|
  cofi    = clifo.get(CLI_COFI);
 | 
						|
  indcf   = clifo.get(CLI_INDCF);
 | 
						|
  indcf.trim();
 | 
						|
  indcf << " " << clifo.get(CLI_CIVCF);
 | 
						|
  capcf   = clifo.get(CLI_CAPCF);
 | 
						|
  ptel    = clifo.get(CLI_PTEL);
 | 
						|
  tel     = clifo.get(CLI_TEL);
 | 
						|
  statocf = clifo.get(CLI_STATOCF);
 | 
						|
  comcf   = clifo.get(CLI_COMCF);
 | 
						|
 | 
						|
  _comuni->setkey(1);
 | 
						|
  _comuni->zero();
 | 
						|
  _comuni->put(COM_STATO, statocf);
 | 
						|
  _comuni->put(COM_COM, comcf);
 | 
						|
  _comuni->read();
 | 
						|
  if (_comuni->good())
 | 
						|
  {
 | 
						|
    dencom = _comuni->get(COM_DENCOM);
 | 
						|
    provcom = _comuni->get(COM_PROVCOM);
 | 
						|
  }
 | 
						|
  else
 | 
						|
  {
 | 
						|
    //dencom="";
 | 
						|
    dencom=clifo.get(CLI_LOCCF);
 | 
						|
    provcom="";
 | 
						|
  }
 | 
						|
 | 
						|
  pconti.setkey(1);
 | 
						|
  pconti.zero();
 | 
						|
  pconti.put(PCN_GRUPPO,     _gruppo);
 | 
						|
  pconti.put(PCN_CONTO,      _conto);
 | 
						|
  pconti.read();
 | 
						|
  _sezivd  = pconti.get_char(PCN_SEZIVD);
 | 
						|
  _lettivd = pconti.get_char(PCN_LETTIVD);
 | 
						|
  numrivd  = pconti.get_int(PCN_NUMRIVD); 
 | 
						|
  _numrivd = itor(numrivd);
 | 
						|
  _numivd  = pconti.get_int(PCN_NUMIVD);
 | 
						|
 | 
						|
  descriz = descrizione_classe(_sezivd,_lettivd,numrivd,_numivd);    
 | 
						|
 
 | 
						|
  if (_numivd != 0)      //Ora devo stampare la descrizione del livello della
 | 
						|
  {                      //classe immediatamente precedente a quello appena
 | 
						|
   if (_numrivd != "")   //stampato
 | 
						|
     descriz2 = descrizione_classe(_sezivd,_lettivd,_numrivd_int,0);
 | 
						|
   else
 | 
						|
     descriz2 = descrizione_classe(_sezivd,_lettivd,0,0);
 | 
						|
  }
 | 
						|
  else
 | 
						|
    if (_numrivd != "")
 | 
						|
      descriz2 = descrizione_classe(_sezivd,_lettivd,0,0);   
 | 
						|
    else
 | 
						|
      descriz2 = "";
 | 
						|
 
 | 
						|
  set_row (r,"@27g%-30s",(const char*) descrizione_gruppo());
 | 
						|
  set_row (r,"@59g%-30s",(const char*) descrizione_conto());
 | 
						|
  set_row(r++, "@91g%-30s",(const char*) ragsoc);
 | 
						|
  if (_nummast == 3)                  
 | 
						|
    set_row(r, "@rClasse@8g@b%c", _lettivd);
 | 
						|
  else
 | 
						|
    set_row(r, "Classe@8g%c", _lettivd);
 | 
						|
  set_row(r, "@10g%-8s", (const char*) _numrivd);
 | 
						|
  if (_numivd != 0)
 | 
						|
    set_row(r, "@19g%2d", _numivd);
 | 
						|
  if (descriz2 != "")                              
 | 
						|
  {
 | 
						|
    set_row(r,"@23g%-50s",(const char*) descriz2);
 | 
						|
    set_row(r++,"@80g%-50s",(const char*) descriz);                                                  
 | 
						|
  }
 | 
						|
  else
 | 
						|
    set_row(r++,"@23g%-50s",(const char*) descriz);
 | 
						|
                                       
 | 
						|
  dataini = _data_ini.string();   
 | 
						|
  datafine = _data_fine.string();
 | 
						|
 | 
						|
  if (_annomsk == 0)
 | 
						|
  {                          
 | 
						|
    if (_nummast == 3)       
 | 
						|
    {
 | 
						|
      set_row (r, "@rPeriodo@10g@b%s", (const char*) dataini);
 | 
						|
      set_row (r, "@22g%s@r", (const char*) datafine);    
 | 
						|
    }
 | 
						|
    else
 | 
						|
    {
 | 
						|
      set_row (r, "Periodo@10g%s", (const char*) dataini);
 | 
						|
      set_row (r, "@22g%s", (const char*) datafine);
 | 
						|
    }
 | 
						|
  }
 | 
						|
  else
 | 
						|
  {                        
 | 
						|
    if (_nummast == 3)
 | 
						|
    {
 | 
						|
      set_row (r, "@rComp. da@9g@b%s", (const char*) dataini);
 | 
						|
      set_row (r, "@20g@ra@22g@b%s@r", (const char*) datafine);    
 | 
						|
    }
 | 
						|
    else
 | 
						|
    {
 | 
						|
      set_row (r, "Comp. da@9g%s", (const char*) dataini);
 | 
						|
      set_row (r, "@20ga@22g%s", (const char*) datafine);
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  set_row (r, "@33gP.I.@37g%-11s",(const char*) paiv);
 | 
						|
  set_row (r, "@49gCF@52g%-16s",(const char*) cofi);
 | 
						|
  set_row (r, "@69g%-.25s",(const char*) indcf);
 | 
						|
  set_row (r, "@95g%-5s",(const char*) capcf);
 | 
						|
  set_row (r, "@101g%-.24s",(const char*) dencom);
 | 
						|
  set_row (r, "@126g%-5s",(const char*) provcom);
 | 
						|
 
 | 
						|
  if (_numcarat == 2)
 | 
						|
  {
 | 
						|
    set_row (r,"@134g%-4s",(const char*) ptel);
 | 
						|
    if (tel != "")
 | 
						|
      set_row (r++,"@138g/@139g%-10s",(const char*) tel);
 | 
						|
  }
 | 
						|
  return r;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
// Se la ricerca selezionata sulla maschera e' per gruppo, conto, sottoconto
 | 
						|
// ricerca i corrispondenti su PCON, con relativa IV direttiva CEE
 | 
						|
 | 
						|
void TMastrini_application::ricerca_classe_IV(bool scelta)
 | 
						|
{
 | 
						|
  TLocalisamfile pconti(LF_PCON);
 | 
						|
  
 | 
						|
  pconti.setkey(1);
 | 
						|
  pconti.zero();
 | 
						|
  pconti.put(PCN_GRUPPO,     _gruppo);
 | 
						|
  pconti.put(PCN_CONTO,      _conto); 
 | 
						|
  if (scelta)
 | 
						|
    pconti.put(PCN_SOTTOCONTO, _sottoc);
 | 
						|
  pconti.read();
 | 
						|
  _sezivd  = pconti.get_char(PCN_SEZIVD);
 | 
						|
  _lettivd = pconti.get_char(PCN_LETTIVD);
 | 
						|
  _numrivd_int  = pconti.get_int (PCN_NUMRIVD); 
 | 
						|
  _numrivd = itor(_numrivd_int);
 | 
						|
  _numivd  = pconti.get_int (PCN_NUMIVD);
 | 
						|
}
 | 
						|
 
 | 
						|
void TMastrini_application::ricerca_gruppo()
 | 
						|
{ 
 | 
						|
  TString80 descr,descriz,descriz2,dep;
 | 
						|
  TString dataini,datafine;
 | 
						|
                           
 | 
						|
  ricerca_classe_IV (TRUE);    //Esiste a livello di sottoconto
 | 
						|
  
 | 
						|
  if (_sezivd == '0')           //Non esiste a livello di sottoconto
 | 
						|
    ricerca_classe_IV (FALSE);  //Allora la cerco a livello di conto
 | 
						|
                             
 | 
						|
  descriz = descrizione_classe(_sezivd,_lettivd,_numrivd_int,_numivd);
 | 
						|
  if (_numivd != 0)      //Ora devo stampare la descrizione del livello della
 | 
						|
  {                      //classe immediatamente precedente a quello appena
 | 
						|
   if (_numrivd != "")   //stampato
 | 
						|
     descriz2 = descrizione_classe(_sezivd,_lettivd,_numrivd_int,0);
 | 
						|
   else
 | 
						|
     descriz2 = descrizione_classe(_sezivd,_lettivd,0,0);
 | 
						|
  }
 | 
						|
  else
 | 
						|
    if (_numrivd != "")
 | 
						|
      descriz2 = descrizione_classe(_sezivd,_lettivd,0,0);   
 | 
						|
    else
 | 
						|
      descriz2 = "";
 | 
						|
 | 
						|
  set_header(3,"@27g%-.30s",(const char*) descrizione_gruppo());
 | 
						|
  set_header(3,"@59g%-.30s",(const char*) descrizione_conto());
 | 
						|
 | 
						|
  set_header(3,"@91g%-.41s",(const char*) descrizione_sottoconto());
 | 
						|
  if (_nummast == 3)
 | 
						|
    set_header(4, "@0g@rClasse@12g@b%c", _lettivd);
 | 
						|
  else
 | 
						|
    set_header(4, "@0gClasse@12g%c", _lettivd);
 | 
						|
  set_header(4, "@14g%-8s",(const char*) _numrivd); 
 | 
						|
  if (_numivd != 0)
 | 
						|
    set_header(4, "@23g%d", _numivd); 
 | 
						|
  if (descriz2 != "")
 | 
						|
  {
 | 
						|
    set_header(4,"@27g%-50s",(const char*) descriz2);
 | 
						|
    set_header(4,"@80g%-50s",(const char*) descriz);                                                  
 | 
						|
  }
 | 
						|
  else
 | 
						|
    set_header(4,"@27g%-50s",(const char*) descriz);
 | 
						|
  
 | 
						|
  dataini = _data_ini.string();
 | 
						|
  datafine = _data_fine.string();
 | 
						|
 | 
						|
  if (_annomsk == 0)
 | 
						|
  { 
 | 
						|
    if (_nummast == 3)
 | 
						|
    {
 | 
						|
      set_header (5, "@rPeriodo@12g@b%s", (const char*) dataini);
 | 
						|
      set_header (5, "@24g@b%s@r", (const char*) datafine);    
 | 
						|
    }
 | 
						|
    else
 | 
						|
    {
 | 
						|
      set_header (5, "Periodo@12g%s", (const char*) dataini);
 | 
						|
      set_header (5, "@24g%s", (const char*) datafine);
 | 
						|
    }
 | 
						|
  }
 | 
						|
  else
 | 
						|
  {                             
 | 
						|
    if (_nummast == 3)
 | 
						|
    {
 | 
						|
      set_header (5, "@rPeriodo di competenza@23g@b%s", (const char*) dataini);
 | 
						|
      set_header (5, "@35g%s@r", (const char*) datafine);    
 | 
						|
    }
 | 
						|
    else
 | 
						|
    {
 | 
						|
      set_header (5, "Periodo di competenza@23g%s", (const char*) dataini);
 | 
						|
      set_header (5, "@35g%s", (const char*) datafine);
 | 
						|
    }
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
int TMastrini_application::ricerca_gruppo(int start)
 | 
						|
{ 
 | 
						|
  TString80 descr,descriz,descriz2,dep;
 | 
						|
  TString dataini,datafine;
 | 
						|
  int   r = start;
 | 
						|
                           
 | 
						|
  ricerca_classe_IV (TRUE);    //Esiste a livello di sottoconto
 | 
						|
  
 | 
						|
  if (_sezivd == '0')           //Non esiste a livello di sottoconto
 | 
						|
    ricerca_classe_IV (FALSE);  //Allora la cerco a livello di conto
 | 
						|
                             
 | 
						|
  descriz = descrizione_classe(_sezivd,_lettivd,_numrivd_int,_numivd);
 | 
						|
  if (_numivd != 0)      //Ora devo stampare la descrizione del livello della
 | 
						|
  {                      //classe immediatamente precedente a quello appena
 | 
						|
   if (_numrivd != "")   //stampato
 | 
						|
     descriz2 = descrizione_classe(_sezivd,_lettivd,_numrivd_int,0);
 | 
						|
   else
 | 
						|
     descriz2 = descrizione_classe(_sezivd,_lettivd,0,0);
 | 
						|
  }
 | 
						|
  else
 | 
						|
    if (_numrivd != "")
 | 
						|
      descriz2 = descrizione_classe(_sezivd,_lettivd,0,0);   
 | 
						|
    else
 | 
						|
      descriz2 = "";
 | 
						|
 | 
						|
  set_row(r,"@27g%-.30s",(const char*) descrizione_gruppo());
 | 
						|
  set_row(r,"@59g%-.30s",(const char*) descrizione_conto());
 | 
						|
 | 
						|
  set_row(r++,"@91g%-.41s",(const char*) descrizione_sottoconto());
 | 
						|
  if (_nummast == 3)
 | 
						|
    set_row(r, "@0g@rClasse@12g@b%c", _lettivd);
 | 
						|
  else
 | 
						|
    set_row(r, "@0gClasse@12g%c", _lettivd);
 | 
						|
  set_row(r, "@14g%-8s",(const char*) _numrivd); 
 | 
						|
  if (_numivd != 0)
 | 
						|
    set_row(r, "@23g%d", _numivd); 
 | 
						|
  if (descriz2 != "")
 | 
						|
  {
 | 
						|
    set_row(r,"@27g%-50s",(const char*) descriz2);
 | 
						|
    set_row(r++,"@80g%-50s",(const char*) descriz);                                                  
 | 
						|
  }
 | 
						|
  else
 | 
						|
    set_row(r++,"@27g%-50s",(const char*) descriz);
 | 
						|
  
 | 
						|
  dataini = _data_ini.string();
 | 
						|
  datafine = _data_fine.string();
 | 
						|
 | 
						|
  if (_annomsk == 0)
 | 
						|
  {                              
 | 
						|
    if (_nummast == 3)
 | 
						|
    {
 | 
						|
      set_row (r, "@rPeriodo@12g@b%s", (const char*) dataini);
 | 
						|
      set_row (r, "@24g%s@r", (const char*) datafine);    
 | 
						|
    }
 | 
						|
    else
 | 
						|
    {
 | 
						|
      set_row (r, "Periodo@12g%s", (const char*) dataini);
 | 
						|
      set_row (r, "@24g%s", (const char*) datafine);
 | 
						|
    }
 | 
						|
  }
 | 
						|
  else
 | 
						|
  {                        
 | 
						|
    if (_nummast == 3)
 | 
						|
    {
 | 
						|
      set_row (r, "@rPeriodo di competenza@23g@b%s", (const char*) dataini);
 | 
						|
      set_row (r, "@35g%s@r", (const char*) datafine);    
 | 
						|
    }
 | 
						|
    else
 | 
						|
    {
 | 
						|
      set_row (r, "Periodo di competenza@23g%s", (const char*) dataini);
 | 
						|
      set_row (r, "@35g%s", (const char*) datafine);
 | 
						|
    }
 | 
						|
  }
 | 
						|
  return r;
 | 
						|
}
 | 
						|
 | 
						|
const char* TMastrini_application::descrizione_classe(char sezione, char lettera, int numr, int numero)
 | 
						|
{
 | 
						|
  TTable tabivd(TAB_IVD);
 | 
						|
  TString dep,dep2;
 | 
						|
 | 
						|
  tabivd.zero();   
 | 
						|
  if (numr == 0 && numero == 0)
 | 
						|
    dep = format("%c%c",sezione,lettera);
 | 
						|
  else                        
 | 
						|
    if (numero == 0)
 | 
						|
    {
 | 
						|
      if (numr != 0)
 | 
						|
        dep = format("%1c%1c%04d",sezione, lettera, numr);
 | 
						|
      else
 | 
						|
        dep = format("%c%c    ",sezione,lettera);
 | 
						|
     }
 | 
						|
     else                                         
 | 
						|
     {
 | 
						|
       if (numr != 0)
 | 
						|
         dep = format("%1c%1c%04d%02d",sezione, lettera, numr,numero);
 | 
						|
       else
 | 
						|
         dep = format("%c%c    %02d",sezione,lettera,numero);
 | 
						|
     }
 | 
						|
       
 | 
						|
  tabivd.put("CODTAB", dep);
 | 
						|
  tabivd.read();   
 | 
						|
  dep2 = tabivd.get("CODTAB");
 | 
						|
  if (dep == dep2)
 | 
						|
    TMP = tabivd.get("S0");
 | 
						|
  else
 | 
						|
    TMP = "";
 | 
						|
  return TMP;
 | 
						|
}     
 | 
						|
 | 
						|
//Ricerca la descrizione relativa al gruppo da stampare
 | 
						|
 | 
						|
const char* TMastrini_application::descrizione_gruppo()
 | 
						|
{  
 | 
						|
  TLocalisamfile pconti(LF_PCON);
 | 
						|
 | 
						|
  pconti.zero();
 | 
						|
  pconti.put(PCN_GRUPPO,_gruppo);
 | 
						|
  if (pconti.read() != NOERR) pconti.zero();
 | 
						|
  TMP = pconti.get(PCN_DESCR);
 | 
						|
  return TMP;
 | 
						|
}
 | 
						|
 | 
						|
// Ricerca la descrizione relativa al conto da stampare
 | 
						|
 | 
						|
const char* TMastrini_application::descrizione_conto()
 | 
						|
{ 
 | 
						|
  TLocalisamfile pconti(LF_PCON);
 | 
						|
 | 
						|
  pconti.zero();
 | 
						|
  pconti.put(PCN_GRUPPO,_gruppo);
 | 
						|
  pconti.put(PCN_CONTO,_conto);
 | 
						|
  if (pconti.read() != NOERR) pconti.zero();
 | 
						|
  TMP = pconti.get(PCN_DESCR);
 | 
						|
  return TMP;
 | 
						|
}
 | 
						|
 | 
						|
const char* TMastrini_application::descrizione_sottoconto()
 | 
						|
{ 
 | 
						|
  TLocalisamfile pconti(LF_PCON);
 | 
						|
 | 
						|
  pconti.zero();
 | 
						|
  pconti.put(PCN_GRUPPO,     _gruppo);
 | 
						|
  pconti.put(PCN_CONTO,      _conto);
 | 
						|
  pconti.put(PCN_SOTTOCONTO, _sottoc);
 | 
						|
  if (pconti.read() != NOERR) pconti.zero();
 | 
						|
  TMP = pconti.get(PCN_DESCR);
 | 
						|
  return TMP;
 | 
						|
}
 | 
						|
 | 
						|
// Funzione per settare tutti gli handlers della maschera principale
 | 
						|
// o di quella dello spreadsheet della seconda pagina
 | 
						|
void TMastrini_application::set_handlers(TMask* msk) const
 | 
						|
{
 | 
						|
  msk->set_handler(F_DATAINI,            data_inizio);
 | 
						|
  msk->set_handler(F_DATAFINE,           data_fine);
 | 
						|
  msk->set_handler(F_GRUPPOFINE,         gruppo_hnd);
 | 
						|
  msk->set_handler(F_CONTOINI_CONTO,     contoi_hnd);
 | 
						|
  msk->set_handler(F_CONTOINI_CLIENTE,   contoi_hnd);
 | 
						|
  msk->set_handler(F_CONTOINI_FORN,      contoi_hnd);  
 | 
						|
  msk->set_handler(F_CONTOFINE_CONTO,    contof_hnd);
 | 
						|
  msk->set_handler(F_CONTOFINE_CLIENTE,  contof_hnd);
 | 
						|
  msk->set_handler(F_CONTOFINE_FORN,     contof_hnd); 
 | 
						|
 | 
						|
  msk->set_handler(F_SOTTOCINI_CONTO,    sottoc_handler_ini);
 | 
						|
  msk->set_handler(F_SOTTOCINI_CLIENTE,  sottoc_handler_ini);
 | 
						|
  msk->set_handler(F_SOTTOCINI_FORN,     sottoc_handler_ini);
 | 
						|
  msk->set_handler(F_SOTTOCFINE_CONTO,   sottoc_handler_fine);
 | 
						|
  msk->set_handler(F_SOTTOCFINE_CLIENTE, sottoc_handler_fine);
 | 
						|
  msk->set_handler(F_SOTTOCFINE_FORN,    sottoc_handler_fine);
 | 
						|
  msk->set_handler(F_MOVCAS, movcas_cdc_handler);
 | 
						|
  msk->set_handler(F_CDC,    movcas_cdc_handler);
 | 
						|
}
 | 
						|
 | 
						|
// Copia i parametri della prima pagina in una nuova riga dello spreadsheet
 | 
						|
// a meno che non ci siano gia'
 | 
						|
bool TMastrini_application::mask2sheet()
 | 
						|
{ 
 | 
						|
  bool ok = _msk->check_fields();
 | 
						|
  
 | 
						|
  if (ok)
 | 
						|
  {
 | 
						|
    TToken_string row(120);
 | 
						|
    short id = F_ANNO;
 | 
						|
    for (int pos = _msk->id2pos(id); pos >= 0; pos = _msk->id2pos(++id))
 | 
						|
      row.add(_msk->fld(pos).get());
 | 
						|
    
 | 
						|
    if (!row.empty_items())
 | 
						|
    {
 | 
						|
      TSheet_field& sht = (TSheet_field&)_msk->field(F_SCELTE);
 | 
						|
      TString_array& rows = sht.rows_array();
 | 
						|
      ok = rows.find(row) < 0; // Aggiunge solo se non c'e' gia'
 | 
						|
      if (ok)              
 | 
						|
      {
 | 
						|
        rows.add(row);
 | 
						|
        sht.force_update();
 | 
						|
      }  
 | 
						|
    }
 | 
						|
  }
 | 
						|
  
 | 
						|
  return ok;  
 | 
						|
}
 | 
						|
 | 
						|
bool TMastrini_application::sheet2mask()
 | 
						|
{ 
 | 
						|
  TSheet_field& sht = (TSheet_field&)_msk->field(F_SCELTE);
 | 
						|
  bool ok = sht.items() > 0;
 | 
						|
  if (ok)
 | 
						|
  {
 | 
						|
    TString_array& rows = sht.rows_array();
 | 
						|
    TToken_string& row = rows.row(0);
 | 
						|
    row.restart();
 | 
						|
 | 
						|
    short id = F_ANNO;
 | 
						|
    for (int pos = _msk->id2pos(id); pos >= 0; pos = _msk->id2pos(++id))
 | 
						|
    {                                   
 | 
						|
      const char* val = row.get();        
 | 
						|
      // Scarta i listbox perche azzerano i conti!
 | 
						|
      if (id != F_TIPOCF_INI && id != F_TIPOCF_FINE)
 | 
						|
        _msk->fld(pos).set(val);
 | 
						|
    }
 | 
						|
 | 
						|
    rows.destroy(0, TRUE);
 | 
						|
  }
 | 
						|
  return ok;
 | 
						|
}
 | 
						|
 | 
						|
bool TMastrini_application::user_create()
 | 
						|
{
 | 
						|
  TToken_string exp;
 | 
						|
  
 | 
						|
  _rel1 = new TRelation (LF_SALDI);
 | 
						|
 | 
						|
  exp.add("GRUPPO=GRUPPO");
 | 
						|
  exp.add("CONTO=CONTO");
 | 
						|
  exp.add("SOTTOCONTO=SOTTOCONTO");
 | 
						|
  _rel1->add(LF_RMOV,exp,2,LF_SALDI,RMOV_ALIAS);
 | 
						|
 | 
						|
 | 
						|
//  _cur1=add_cursor(new TCursor(_rel,"FLSCA=\"F\"",2));
 | 
						|
  _cur1=add_cursor(new TCursor(_rel1,"FLSCA=\" \"",2)); 
 | 
						|
  
 | 
						|
  _movcas = new TExternisamfile("$movcas");
 | 
						|
  _rel2 = new TRelation(LF_SALDI);
 | 
						|
  _rel2->add(_movcas,exp,2,LF_SALDI,RMOV_ALIAS,FALSE);
 | 
						|
  _cur2=add_cursor(new TCursor(_rel2,"FLSCA=\" \"",2)); 
 | 
						|
  
 | 
						|
  _nditte = new TLocalisamfile (LF_NDITTE);
 | 
						|
  _unloc  = new TLocalisamfile (LF_UNLOC);
 | 
						|
  _comuni = new TLocalisamfile (LF_COMUNI);
 | 
						|
  _mov    = new TLocalisamfile (LF_MOV);
 | 
						|
  _clifo  = new TLocalisamfile (LF_CLIFO);
 | 
						|
  _caus   = new TLocalisamfile (LF_CAUSALI);
 | 
						|
  _tabivd = new TTable (TAB_IVD);
 | 
						|
  _tabtpd = new TTable (TAB_TPD);
 | 
						|
  _tabreg = new TTable (TAB_REG);
 | 
						|
  _sld    = new TSaldo ();
 | 
						|
  
 | 
						|
  _d18   = new TParagraph_string ("",15);
 | 
						|
  _d23   = new TParagraph_string ("",18);
 | 
						|
  _d30   = new TParagraph_string ("",27);
 | 
						|
  
 | 
						|
  _msk = new TMask("cgp1100a");     
 | 
						|
  set_handlers(_msk);
 | 
						|
  _msk->set_handler(F_MEMORIZZA, memorizza_handler);
 | 
						|
  
 | 
						|
  TSheet_field& sht = (TSheet_field&)_msk->field(F_SCELTE);
 | 
						|
  sht.set_notify(scelte_notify);
 | 
						|
  TMask& sm = sht.sheet_mask();
 | 
						|
  set_handlers(&sm);
 | 
						|
    
 | 
						|
  _gia_stampata_intestazione = FALSE;
 | 
						|
  
 | 
						|
  return TRUE;
 | 
						|
}
 | 
						|
 | 
						|
bool TMastrini_application::user_destroy()
 | 
						|
{
 | 
						|
  delete _msk;
 | 
						|
  delete _rel1;
 | 
						|
  delete _mov;
 | 
						|
  delete _nditte;
 | 
						|
  delete _unloc;
 | 
						|
  delete _comuni;
 | 
						|
  delete _clifo;
 | 
						|
  delete _caus;
 | 
						|
  delete _tabivd;
 | 
						|
  delete _tabtpd;
 | 
						|
  delete _tabreg;
 | 
						|
  delete _sld;
 | 
						|
  delete _d18;
 | 
						|
  delete _d23;
 | 
						|
  delete _d30;
 | 
						|
  
 | 
						|
  return TRUE;
 | 
						|
 
 | 
						|
}
 | 
						|
 | 
						|
int cgp1100(int argc, char** argv)
 | 
						|
{
 | 
						|
 | 
						|
  TMastrini_application a;
 | 
						|
 | 
						|
  a.run(argc, argv, "Stampa Mastrini");
 | 
						|
 | 
						|
  return 0;
 | 
						|
}
 | 
						|
 | 
						|
 |