campo-sirio/src/sc/sc2401.h
bonazzi 2a32c54e5d Patch level : 12.0 336
Files correlati     : sc2.exe pec.frm sc2200a.msk sc2300a.msk

MODIFICA CRPA 

Possibilità di stampare il pagamento del cliente nella testata dell'estratti conto.
Aggiunto filtro per ulteriore classificazione nello scadenziario.
Possibilità di stampare le note delle scadenze nella stampa scaduto.
Possibiltà di stampare il flag di rata bloccata e il dati di analitica e di filtrare per dati analitica nei solleciti.

git-svn-id: svn://10.65.10.50/branches/R_10_00@23573 c028cbd2-c16b-5b4b-a496-9718f37d4682
2017-01-31 08:22:52 +00:00

244 lines
7.6 KiB
C++
Executable File

#ifndef __SC2401_H
#define __SC2401_H
#ifndef __FORM_H
#include <form.h>
#endif
#ifndef __CGSALDAC_H
#include "../cg/cgsaldac.h"
#endif
#ifndef __SC2102_H
#include "sc2102.h"
#endif
#ifndef __SC2400A_H
#include "sc2400a.h"
#endif
#ifndef __SC21PEC_H
#include "sc21pec.h"
#endif
#ifndef __SCSELECT_H
#include "scselect.h"
#endif
#ifndef __CLIFO_H
#include <clifo.h>
#endif
#ifndef __CAUSALI_H
#include <causali.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;
bool stampa_saldo() 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_euro; // Importo in euro
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
bool _bloccata; // Rata bloccata
TString _codici_analitica; // codici analitica corrispondenti alle fatture
protected: // TSortable
virtual int compare(const TSortable& s) const;
void set_imp(TForm_item& fi, const real& imp, const char* cod_val) 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_euro(const real& imp) { _importo_euro = imp; }
void salvo_buon_fine(bool sbf) { _salvo_buon_fine = sbf; }
void rata_bloccata(bool rb) { _bloccata = rb; }
void codici_analitica(const char * s) { _codici_analitica = s; }
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; }
const real& importo_in_euro() const { return _importo_euro; }
const real& scaduto() const { return _scaduto; }
const 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;
TString _lingua;
TDate _dlo, _dls, _dir;
int _fincatura; // 0 = nessuna, 1 = testo, 2 = grafica
char _who;
int _giorni_rischio;
word _maxtot; // numero massimo di totali
bool _in_valuta;
bool _stampa_esp;
bool _stampa_saldo; // Stampa il saldo di ogni partita
TToken_string _anal_filter;
word _num_rip; // numero di righe usate per i riporti
word _total_rows; // numero di righe usate per i totali
TDecoder _causali; // Decodificatore dei codici causale
TDecoder _movimenti; // Decodificatore delle descrizioni dei movimenti
TDecoder _valute; // Decodificatore dei codici valuta
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 stampa_saldo(bool ss = TRUE) { _stampa_saldo = ss; }
void anal_filter(const TToken_string & f) { _anal_filter = f; }
const TToken_string &get_anal_filter() const { return _anal_filter; }
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
TDecoder _anal;
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