Patch level : 12.0 972
Files correlati : f90.exe d181.des f181.dir/.trr f9ProspIntegr.rep masks f90104.sql Commento : - Rimosso controllo vendite in ogni caso. Incompatibilita' con diverse situazioni tra cui note di credito interne che non sono fatture elettroniche. - Rimosso flag check vendite e il suo utilizzo nel codice. - Aggiornamento stato estrazione solo dopo scrittura f9iva. - Migliorata e resa piu' sicura query per iva aggiungendo tipi diversi e controllo lunghezza colonna. - Corretti nomi campi, che venivano invertiti IVA_ANNPROT e IVA_NUMPROT. - Aggiunto controllo in apertura controllo estrazione solo se il pacchetto e' in errore diag. gest. - Spostata in una classe separata la maschera per l'apertura del pacchetto (Apri estr.). - Corretta modifica f9wa rimaneva vuoto il record in alcuni casi. - Aggiunta possibilita' di esclusione movimenti dall'Apri estr. - Aggiunto controllo esistenza categorie documentali, caricamento cat. doc. di default e controllo tipi documento duplicati.
This commit is contained in:
parent
ae847ee9f0
commit
e6f67932e1
@ -244,11 +244,6 @@ bool TEstrai_mask::estrai_handler(TMask_field& f, KEY key)
|
||||
TEstrai_mask& msk = (TEstrai_mask&)f.mask();
|
||||
TF9_app& app = f9_app();
|
||||
|
||||
// Controllo che esistano delle categorie documentali.
|
||||
TCategorie_doc catdoc;
|
||||
if(catdoc.get_array_rows().items() == 0)
|
||||
warning_box("");
|
||||
|
||||
// Estraggo
|
||||
const int stato = msk.estrai(); // Main function
|
||||
|
||||
@ -628,6 +623,23 @@ void TMonitor_mask::sel() const
|
||||
sf.show();
|
||||
}
|
||||
|
||||
TMonitor_mask::TMonitor_mask(): TAutomask("f90100a"), _inclusi_mask(nullptr)
|
||||
{
|
||||
// Controllo che esistano delle categorie documentali.
|
||||
TCategorie_doc catdoc;
|
||||
if (catdoc.get_array_rows().items() == 0 &&
|
||||
yesno_box("Attenzione non e' presente alcuna categoria documentale.\nPrecaricare le categorie di default?"))
|
||||
{
|
||||
TString p;
|
||||
p << "f90.exe -1 -d /u" << user();
|
||||
TExternal_app ext(p);
|
||||
ext.run();
|
||||
}
|
||||
fill();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/////////////////////////////////////////////
|
||||
// TControllo_mask
|
||||
|
@ -160,7 +160,7 @@ class TMonitor_mask : public TAutomask
|
||||
void sel() const;
|
||||
|
||||
public:
|
||||
TMonitor_mask() : TAutomask("f90100a"), _inclusi_mask(nullptr) { fill(); }
|
||||
TMonitor_mask();
|
||||
};
|
||||
|
||||
class TControllo_mask : public TAutomask
|
||||
|
@ -50,6 +50,7 @@ class TF9_categorie_doc_msk : public TAutomask
|
||||
bool on_key(KEY key) override;
|
||||
|
||||
void check_spell() const;
|
||||
void check_duplicate_tipodoc() const;
|
||||
void delete_annesso(const TString& catdoc_padre);
|
||||
void edit_annesso(const TString& catdoc_padre);
|
||||
void fill_annessi(const TString& catdoc);
|
||||
@ -143,6 +144,30 @@ void TF9_categorie_doc_msk::check_spell() const
|
||||
sf.show();
|
||||
}
|
||||
|
||||
void TF9_categorie_doc_msk::check_duplicate_tipodoc() const
|
||||
{
|
||||
TSheet_field& sf = sfield(S_CLASSDOC);
|
||||
map<TString, int> lookup_table;
|
||||
vector<TString> dup;
|
||||
FOR_EACH_SHEET_ROW(sf, nr, row)
|
||||
{
|
||||
if(TString(row->get(5)).empty()) // Se non ha specificato una causale
|
||||
{
|
||||
const char* tipodoc = row->get(6);
|
||||
auto it = lookup_table.find({ tipodoc });
|
||||
if (it == lookup_table.end()) // Se non lo trovo vuol dire che e' il primo.
|
||||
lookup_table.insert({ tipodoc, 0 });
|
||||
else
|
||||
{
|
||||
++it->second;
|
||||
dup.emplace_back(it->first);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!dup.empty())
|
||||
warning_box("Ci sono molteplici categorie con lo stesso tipo documento.\nPer una corretta assegnazione della categoria doc. si consiglia\ndi specificare il tipo di causale o rimuovere i duplicati.");
|
||||
}
|
||||
|
||||
void TF9_categorie_doc_msk::delete_annesso(const TString& catdoc_padre)
|
||||
{
|
||||
if (_annessi_sheet->items() > 0)
|
||||
@ -191,7 +216,6 @@ void TF9_categorie_doc_msk::load_table() const
|
||||
TSheet_field& sf = sfield(S_CLASSDOC);
|
||||
sf.hide();
|
||||
sf.destroy();
|
||||
|
||||
int idx = 0;
|
||||
while (true)
|
||||
{
|
||||
@ -203,6 +227,8 @@ void TF9_categorie_doc_msk::load_table() const
|
||||
}
|
||||
sf.show();
|
||||
sf.force_update();
|
||||
|
||||
check_duplicate_tipodoc();
|
||||
}
|
||||
|
||||
void TF9_categorie_doc_msk::new_annesso(const TString& catdoc_padre)
|
||||
@ -283,6 +309,7 @@ class TF9_categorie_doc : public TSkeleton_application
|
||||
{
|
||||
TString _log;
|
||||
void add_error_log(TString& query);
|
||||
static void precarica_tabella_default();
|
||||
void main_loop() override;
|
||||
|
||||
public:
|
||||
@ -295,9 +322,32 @@ void TF9_categorie_doc::add_error_log(TString& query)
|
||||
_log << "\n" << query << "\n" << fp_db().sq_get_text_error() << "\n" << fp_db().sq_get_string_error();
|
||||
}
|
||||
|
||||
void TF9_categorie_doc::precarica_tabella_default()
|
||||
{
|
||||
TCategorie_doc preload;
|
||||
if (preload.get_array_rows().items() == 0 ||
|
||||
noyes_box("Attenzione questa procedura cancellera' le categorie documentali gia' presenti\ne carichera' quelle di default. Continuare?"))
|
||||
{
|
||||
preload.remove_all();
|
||||
preload.reload();
|
||||
preload.add_categoria("FATTACQ", "FATTURE DI ACQUISTI", "FTA", "TD01", "", "FA");
|
||||
preload.add_categoria("FATTVEN", "FATTURE DI VENDITA", "FTV", "TD01", "", "FV");
|
||||
preload.add_categoria("FATTREV", "Fattura acq. con rev. charge", "FTA", "TD01", "", "FA"); // Da aggiungere causale
|
||||
preload.add_categoria("NOTCREDACQ", "Nota credito di acquisto", "FTA", "TD04", "", "NC");
|
||||
preload.add_categoria("NOTDEBVEN", "Nota debito di vendita", "FTV", "TD05", "", "ND");
|
||||
preload.add_categoria("FATTCORR", "Fattura corrispettivi", "FTA", "TD01", "", "CR");
|
||||
preload.add_categoria("BOLLADOGAC", "Bolla doganale", "FTA", "TD01", "", "BD");
|
||||
|
||||
preload.add_annesso("FATTREV", "INTREVC", "Prosp. integr. rev.ch.", "RC", true);
|
||||
}
|
||||
}
|
||||
|
||||
void TF9_categorie_doc::main_loop()
|
||||
{
|
||||
TF9_categorie_doc_msk msk;
|
||||
if(argc() > 2 && argv()[2][0] == '-' && argv()[2][1] == 'd')
|
||||
precarica_tabella_default();
|
||||
|
||||
TF9_categorie_doc_msk msk; // Il costruttore carica subito la tabella...
|
||||
while(msk.run() == K_ENTER)
|
||||
{
|
||||
TSheet_field& sf = msk.sfield(S_CLASSDOC);
|
||||
|
Loading…
x
Reference in New Issue
Block a user