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:
Simone Palacino 2020-07-01 12:29:02 +02:00
parent ae847ee9f0
commit e6f67932e1
3 changed files with 70 additions and 8 deletions

View File

@ -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

View File

@ -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

View File

@ -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);