campo-sirio/sc/sc2401.h

209 lines
6.8 KiB
C
Raw Normal View History

#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();
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