Files correlati : ve,li Commento : - Corretto ordinamento lettere di intento nella mappa - Creata funzione make_key - Cambiato cast in ve0100
109 lines
3.7 KiB
C++
109 lines
3.7 KiB
C++
#ifndef __LILIB01_H
|
|
#define __LILIB01_H
|
|
|
|
#ifndef __DATE_H
|
|
#include <date.h>
|
|
#endif
|
|
|
|
#ifndef __RELATION_H
|
|
#include <relation.h>
|
|
#endif
|
|
|
|
#ifndef __VELIB04_H
|
|
#include "../ve/velib04.h"
|
|
#endif
|
|
|
|
#ifndef __REPUTILS_H
|
|
#include <reputils.h>
|
|
#endif
|
|
|
|
#include <map>
|
|
#include <unordered_map>
|
|
|
|
enum plafStruct { _planno, _plnumprot, _plimporto, _plchiusura, _plNC };
|
|
|
|
class TLi_manager : TObject
|
|
{
|
|
TToken_string tipi;
|
|
TToken_string stati;
|
|
bool validPlafond;
|
|
bool soluzione;
|
|
bool elabPR;
|
|
const char tipocf;
|
|
const long codcli;
|
|
|
|
TDate iniDicInt;
|
|
TDate finDicInt;
|
|
real plafond;
|
|
|
|
const TString codivaDef;
|
|
const TString codivaAlt;
|
|
// Elenco di plafond con eventuale
|
|
// Chiave ANNO|NUMERO(6)
|
|
std::map<TString, real> plafondi;
|
|
std::map<int, TString> modifiche; // Progressivo, TToken_string(chiave,stato);
|
|
void elabTipiStati(); // Preparo due token string con tipi[0] -> stati[0], ...
|
|
|
|
public:
|
|
// Getters
|
|
// Ritorno il plafond
|
|
const real getPlafond() { return plafond; }
|
|
// Ritorno se il plafond è valido
|
|
bool hasValidPlafond() { return validPlafond; }
|
|
// Ritorna se è una dichiarazione di tipo soluzione
|
|
bool isSoluzione() { return soluzione; }
|
|
|
|
// Funzione che unisce consPlaf e incrPlaf
|
|
const TToken_string& getUse(TDocumento& d, const bool write = false);
|
|
// "Consuma" il plafond
|
|
const TToken_string& consPlaf(real& plafUsed, const bool write = false);
|
|
// Da una nota credito passata incremento il plafond
|
|
const TToken_string& incrPlaf(TDocumento& d, real impNC = ZERO, const bool write = false);
|
|
// Storna un documento che riceve
|
|
const TToken_string& stornaDoc(const TDocumento& d, real impDC = ZERO, const bool write = false);
|
|
// Storna i documenti dopo a quello che riceve
|
|
//void stornaDocs(const TDocumento& d, const bool write = false);
|
|
// Ricalcola i documenti dopo quello che riceve
|
|
//bool recalcAfter(const TDocumento& d, TLog_report& lerr);
|
|
|
|
|
|
// Functions
|
|
// Vado a estrapolare il plafond
|
|
void elabPlafond();
|
|
// Testo se con i documenti passati supero il plafond
|
|
bool testPlafond(TLista_documenti& dout, TLog_report& lerr);
|
|
// Controllo se il codice iva è uguale a quello impostato per il calcolo del plafond
|
|
bool checkIva(TString cod) { return cod == codivaDef || cod == codivaAlt; }
|
|
|
|
// Controllo se il plafond che la NC passata rilascia non è già stato utilizzato
|
|
bool checkUtilizzo(TDocumento& d, real impNC = ZERO);
|
|
|
|
// Calcolo il rimanente del plafond
|
|
const real getPlaRes();
|
|
// Calcolo il rimanente del plafond su tipi e stati documento passati
|
|
const real getPlaRes(TToken_string tipi, TToken_string stati);
|
|
// Funzione che effettivamente effettua il calcolodalla data della dichiarazione alla data passata
|
|
const real elabPlaRes(TToken_string t = "", TToken_string s = "", TDate ad = 0L);
|
|
// Ritorna la quantità di plafond utilizzato dalla data della dichiarazione alla data passata
|
|
const real elabUtil(TToken_string tipi, TToken_string stati, TDate ad = 0L);
|
|
// Modifica una lettera e salva la modifica in "modifiche"
|
|
void changeStato(const TString& key, const bool stato);
|
|
// Controlla se ci sono delle modifiche da salvare nei plafonds
|
|
bool hasModifiche() { return !modifiche.empty(); }
|
|
// Annullo le modifiche
|
|
void revertModifiche();
|
|
// Vuoto le modifiche
|
|
void clearModifiche() { modifiche.clear(); }
|
|
|
|
// Costructors/Destructors
|
|
TLi_manager(const char t, const long c, TDate iniDic, TDate finDic);
|
|
TLi_manager(const char t, const long c, TDate finDic); // Sets iniDicInt as 01/01/finDic.year()
|
|
virtual ~TLi_manager() {}
|
|
};
|
|
|
|
static void createTipiStati(TToken_string& tipi, TToken_string& stati);
|
|
bool generaLiStorico(TDate dataIni);
|
|
bool popolaPlafond(TLista_documenti& din, const TDate& data_elab);
|
|
|
|
|
|
#endif |