212 lines
		
	
	
		
			6.9 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			212 lines
		
	
	
		
			6.9 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
 | 
						|
#ifndef __SC2401_H
 | 
						|
#define __SC2401_H
 | 
						|
 | 
						|
#include <printer.h>
 | 
						|
#include <form.h>
 | 
						|
 | 
						|
#include "../cg/saldacon.h"
 | 
						|
#include "sc2102.h"
 | 
						|
#include "sc2400a.h"
 | 
						|
#include "sc21pec.h"
 | 
						|
 | 
						|
#include <clifo.h>
 | 
						|
#include <causali.h>
 | 
						|
#include <pagsca.h>
 | 
						|
#include <scadenze.h>
 | 
						|
 | 
						|
#ifndef __SCSELECT_H
 | 
						|
#include "scselect.h"
 | 
						|
#endif
 | 
						|
 | 
						|
class TESSL_mask: public TSelection_mask
 | 
						|
 | 
						|
{
 | 
						|
  TRelation _ditta;
 | 
						|
  TString   _tmp;
 | 
						|
protected:
 | 
						|
  virtual void on_firm_change();
 | 
						|
  virtual void start_run();
 | 
						|
 | 
						|
  static bool lingua_handler(TMask_field& f, KEY k);
 | 
						|
  static bool codprof_handler(TMask_field& f, KEY k);
 | 
						|
 | 
						|
public:
 | 
						|
  const char *get_prof_base() const;
 | 
						|
  const TString &get_prof_code() const;
 | 
						|
  const char *get_prof_name() const;
 | 
						|
  const TString &get_prof_lang() const;  
 | 
						|
 | 
						|
  TESSL_mask(const char *name);
 | 
						|
  virtual ~TESSL_mask();
 | 
						|
};
 | 
						|
    
 | 
						|
class TESSL_form;    
 | 
						|
///////////////////////////////////////////////////////////
 | 
						|
// TESSL_row
 | 
						|
///////////////////////////////////////////////////////////
 | 
						|
 | 
						|
class TESSL_row : public TSortable
 | 
						|
 | 
						|
{                
 | 
						|
  TDate    _data;                // Data scadenza o pagamento
 | 
						|
  int      _riga;                // Riga della fattura
 | 
						|
  int      _rata;                // Numero rata o progrssivo
 | 
						|
 | 
						|
  TString  _causale;             // Codice causale
 | 
						|
  TString  _descrizione;         // Sua descrizione
 | 
						|
  
 | 
						|
  TDate    _data_doc;            // Data del documento
 | 
						|
  TString  _num_doc;             // Numero documento
 | 
						|
  long     _num_prot;            // Protocollo IVA
 | 
						|
  long     _num_reg;             // Numero registrazione
 | 
						|
  TImporto _importo;             // Importo in valuta
 | 
						|
  real     _importo_lire;        // Importo in lire
 | 
						|
  real     _scaduto;             // Importo scaduto
 | 
						|
  real     _esposto;             // Importo esposto
 | 
						|
  bool     _salvo_buon_fine;     // Importo esposto salvo buon fine
 | 
						|
  real     _totale;              // Totale documento
 | 
						|
  TValuta  _valuta;              // Codice valuta, data cambio e cambio  
 | 
						|
 | 
						|
protected: // TSortable
 | 
						|
  virtual int compare(const TSortable& s) const;
 | 
						|
  void set_imp(TForm_item& fi, const real& imp, bool valuta) const;
 | 
						|
 | 
						|
  TESSL_form& form() const;
 | 
						|
  
 | 
						|
public:                               
 | 
						|
  int riga() const { return _riga; }
 | 
						|
  int rata() const { return _rata; }
 | 
						|
 | 
						|
  void reset_uguali();
 | 
						|
  void descrizione(const char* s) { _descrizione = s; }
 | 
						|
  void importo(const TImporto& i) { _importo = i; }
 | 
						|
  void scaduto(const real& s) { _scaduto = s; }
 | 
						|
  void esposto(const real& e) { _esposto = e; }
 | 
						|
  void importo_in_lire(const real& il) { _importo_lire = il; }
 | 
						|
  void salvo_buon_fine(bool sbf) { _salvo_buon_fine = sbf; }
 | 
						|
  
 | 
						|
  const TString& causale() const { return _causale; }
 | 
						|
  const TString& descrizione() const { return _descrizione; }
 | 
						|
  long num_reg() const { return _num_reg; }
 | 
						|
  const TValuta& valuta() const { return _valuta; } 
 | 
						|
  const TImporto& importo() const { return _importo; }
 | 
						|
  real importo_in_lire() const { return _importo_lire; }
 | 
						|
  real scaduto() const { return _scaduto; }
 | 
						|
  real esposto() const { return _esposto; }
 | 
						|
  const TDate& data() const { return _data; }
 | 
						|
  bool in_valuta() const { return _valuta.in_valuta(); }
 | 
						|
  
 | 
						|
  void print_on(TPrint_section& body);
 | 
						|
  
 | 
						|
  TESSL_row(const TRiga_partite& row, const TDate& data, const TImporto& imp, int rata);
 | 
						|
  TESSL_row(const char* desc, const TImporto& imp, const TValuta& val);
 | 
						|
  virtual ~TESSL_row() {}
 | 
						|
};
 | 
						|
 | 
						|
///////////////////////////////////////////////////////////
 | 
						|
// TESSL_form: form speciale per estratti conto
 | 
						|
///////////////////////////////////////////////////////////
 | 
						|
 | 
						|
class TESSL_form : public TForm
 | 
						|
{                       
 | 
						|
  friend class TESSL_row;
 | 
						|
 | 
						|
  static TESSL_form* _form;
 | 
						|
                        
 | 
						|
  enum { MAXTOT = 16 };
 | 
						|
                        
 | 
						|
  TCursor*   _cursore;
 | 
						|
  TTotalizer _totali;
 | 
						|
  TDecoder _causali;           // Decodificatore dei codici causale
 | 
						|
  TDecoder _valute;            // Decodificatore dei codici valuta
 | 
						|
  TDecoder _movimenti;         // Decodificatore delle descrizioni dei movimenti 
 | 
						|
  
 | 
						|
  
 | 
						|
  TString _lingua;             
 | 
						|
  TDate _dlo, _dls, _dir;
 | 
						|
  int _giorni_rischio;
 | 
						|
  bool _in_valuta;
 | 
						|
  bool _stampa_esp;
 | 
						|
  int _fincatura;              // 0 = nessuna, 1 = testo, 2 = grafica
 | 
						|
  word _num_rip;               // numero di righe usate per i riporti
 | 
						|
  word _total_rows;            // numero di righe usate per i totali
 | 
						|
  word _maxtot;                // numero massimo di totali
 | 
						|
  char _who;
 | 
						|
 | 
						|
protected:
 | 
						|
  void init_header(const TMask& m);
 | 
						|
  word ordina_totali_per_valuta(THash_object* tot[MAXTOT]);
 | 
						|
  int find_magic(TString& s, TString& magic1, TString& magic2) const;
 | 
						|
  void change_magic_body(const TESSL_row& o, TString& s);
 | 
						|
  void change_magic_footer(const THash_object& o, TString& s);
 | 
						|
  void modify_picture(TForm_item& fi, TString_array& op, const bool in_valuta);
 | 
						|
  void print_total(int riga, const THash_object& o);
 | 
						|
  
 | 
						|
  void stampa_testata(TPrinter& p);
 | 
						|
  void stampa_pedata(TPrinter& p);
 | 
						|
  void stampa_riporti(TPrinter& p);
 | 
						|
 | 
						|
  static void header_handler(TPrinter& p);
 | 
						|
  static void footer_handler(TPrinter& p);
 | 
						|
  
 | 
						|
public:
 | 
						|
  TTotalizer& totali() { return _totali; }
 | 
						|
  TDecoder& causali() { return _causali; }
 | 
						|
  TDecoder& valute() { return _valute; }
 | 
						|
  TDecoder& movimenti() { return _movimenti; }
 | 
						|
 | 
						|
  const TDate& data_limite_operazione() const { return _dlo; }
 | 
						|
  const TDate& data_limite_scaduto() const    { return _dls; }
 | 
						|
  int giorni_rischio() const                  { return _giorni_rischio; }
 | 
						|
  const TDate& data_inizio_rischio() const    { return _dir; }
 | 
						|
 | 
						|
  const TString& lingua() const { return _lingua; }
 | 
						|
  bool in_valuta() const { return _in_valuta; }
 | 
						|
  const TString& describe(short id, char sez = 'H', pagetype pt = last_page) const;
 | 
						|
  const char sezione_normale() const { return _who == 'C' ? 'D' : 'A' ; }
 | 
						|
  
 | 
						|
  void azzera_totali();
 | 
						|
  void ultima_pagina();
 | 
						|
  virtual bool print_game(const TPartita& game);
 | 
						|
 | 
						|
  TESSL_form(const TESSL_mask& m, bool gesval, short id_datalim = 0 , short id_datascad = 0, short id_giorni_rischio = 0);      
 | 
						|
  virtual ~TESSL_form();
 | 
						|
};    
 | 
						|
 | 
						|
///////////////////////////////////////////////////////////
 | 
						|
// TESSL_array
 | 
						|
///////////////////////////////////////////////////////////
 | 
						|
 | 
						|
class TESSL_array : public TArray
 | 
						|
{   
 | 
						|
  TArray _scaduto;        // Array di importi scaduti
 | 
						|
  
 | 
						|
  const TESSL_form* _form;
 | 
						|
 | 
						|
protected:
 | 
						|
  TESSL_row& new_row(const TRiga_partite& row, const TDate& data, const TImporto& imp, int rata = 0);
 | 
						|
  void add_row(const TRiga_partite& row);
 | 
						|
 | 
						|
  const TESSL_form& form() const { return *_form; }
 | 
						|
  real calcola_scaduto(const TRiga_scadenze& rata, bool valuta);
 | 
						|
  
 | 
						|
  
 | 
						|
  TImporto* importo_riga_scaduto_ptr(int n) const { return (TImporto*)_scaduto.objptr(n); }
 | 
						|
  TImporto& importo_riga_scaduto(int n);
 | 
						|
 | 
						|
  TImporto importo(const TPartita& game, const TRectype& pag, bool valuta) const;
 | 
						|
 
 | 
						|
  static TPartita* _sort_game;
 | 
						|
  static int ordina_pag(const void* pag1, const void* pag2);
 | 
						|
  void arrange_scaduto(const TPartita& game);
 | 
						|
 | 
						|
public:    
 | 
						|
  TESSL_row& row(int r) const { return (TESSL_row&)operator[](r); }
 | 
						|
 | 
						|
  TESSL_array(const TPartita& game, const TESSL_form* f);
 | 
						|
  virtual ~TESSL_array() {}
 | 
						|
};
 | 
						|
 | 
						|
#endif // __SC2401_H
 |