Patch level : 12.0 1208
Files correlati : bagn011.uml Commento: Aggiunta classe annesso ai file cartacei
This commit is contained in:
parent
2be84dd6ea
commit
55ca893ee0
@ -219,8 +219,6 @@ class TCategorie_doc
|
||||
TString_array * _name_catdocs;
|
||||
int _mode_sheet;
|
||||
|
||||
TClasse_doc * find_causcont(const TString& caus); // OK
|
||||
TClasse_doc * find_tipodoc(const TString& tipodoc); // OK
|
||||
TClasse_doc * find_tipodocsdi(const TString& tipodocsdi, const char * tipocaus); // OK
|
||||
|
||||
TArray_sheet * find_sheet_annessi(const TString& catdoc) { return (TArray_sheet *) _sheets_annessi.objptr(catdoc); }
|
||||
@ -239,6 +237,9 @@ protected:
|
||||
TCategorie_doc::TAnnesso * find_annesso(const TString& catdoc_padre, const char* catdoc_ann);
|
||||
|
||||
public:
|
||||
TClasse_doc * find_causcont(const TString& caus); // OK
|
||||
TClasse_doc * find_tipodoc(const TString& tipodoc); // OK
|
||||
|
||||
void add_annesso(const TString& catdoc_padre, const TString& catdoc_ann, const TString& descr,
|
||||
const TString& class_ann, bool obblig = false);
|
||||
void edit_annesso(const TString& catdoc_padre, const TString& catdoc_ann, const TString& descr,
|
||||
@ -267,6 +268,8 @@ public:
|
||||
TCategorie_doc();
|
||||
};
|
||||
|
||||
TCategorie_doc& categorie_doc(bool reload = false);
|
||||
|
||||
class TRecord_categorie : public TCategorie_doc
|
||||
{
|
||||
public:
|
||||
@ -307,25 +310,23 @@ enum err_mov
|
||||
|
||||
class TMovimento_estr : public TObject // aggiungere metodi per TArray
|
||||
{
|
||||
|
||||
|
||||
bool _err;
|
||||
long _numreg;
|
||||
TDate _datareg;
|
||||
TDate _datadoc;
|
||||
TString _codcaus;
|
||||
int _meseliq;
|
||||
TString _numdoc;
|
||||
real _tot;
|
||||
long _codcf;
|
||||
TString _ragsoc;
|
||||
TString _reg_protiva;
|
||||
TString _descr;
|
||||
state_fppro _state;
|
||||
TString _descr_err; // Messaggio di errore visibile dal controllo estrazione.
|
||||
bool _estratto;
|
||||
err_mov _descr_estr; // Messaggio di informazioni visibile dal 'Apri Estr.'
|
||||
bool _cartaceo;
|
||||
bool _err;
|
||||
long _numreg;
|
||||
TDate _datareg;
|
||||
TDate _datadoc;
|
||||
TString _codcaus;
|
||||
int _meseliq;
|
||||
TString _numdoc;
|
||||
real _tot;
|
||||
long _codcf;
|
||||
TString _ragsoc;
|
||||
TString _reg_protiva;
|
||||
TString _descr;
|
||||
state_fppro _state;
|
||||
TString _descr_err; // Messaggio di errore visibile dal controllo estrazione.
|
||||
bool _estratto;
|
||||
err_mov _descr_estr; // Messaggio di informazioni visibile dal 'Apri Estr.'
|
||||
bool _cartaceo;
|
||||
TFilename _nomefilecart;
|
||||
TArray _annessi; // TAnnesso_mov
|
||||
|
||||
@ -410,13 +411,13 @@ class TEstrazione : public TObject
|
||||
bool check_periodo_def() const;
|
||||
void copy_file_to_webapp_fld(TMovimento_estr& movimento) const;
|
||||
static void fill_id(const TRectype& clifo, TString& statopaiv, TString& idfisc, TString& paiv, TString& codfis);
|
||||
TipoIVA get_tipoiva() const { return _head.tipo_doc == 'A' ? iva_acquisti : iva_vendite; }
|
||||
TipoIVA get_tipoiva() const { return _head.tipo_doc == 'A' ? iva_acquisti : iva_vendite; }
|
||||
static bool is_doc_xml(const TRectype& mov);
|
||||
static bool find_movcoll(int numreg, TString& numreg_rev_vend);
|
||||
static bool load_annessi(TMovimento_estr& movimento);
|
||||
// Se il movimento e' di vendita e ha i riferimenti al documento generatore provo a stamparlo con ve, e lo inserisco tra i cartacei F9.
|
||||
static bool stampa_documento(const TMovimento_estr& movimento, TFilename& file);
|
||||
bool grab_pdf_from_spotlite(const TMovimento_estr& movimento, TFilename& file) const;
|
||||
bool grab_pdf_from_spotlite(const TMovimento_estr& movimento, TFilename& file) const;
|
||||
|
||||
public:
|
||||
static bool make_prosp_int_revc(int numreg, TAnnesso * TAnnesso);
|
||||
@ -436,11 +437,9 @@ private:
|
||||
static bool pura_iva(const TRectype& mov);
|
||||
void write_errorsql_log(const TString& query) const;
|
||||
|
||||
static TCategorie_doc& categorie_doc(bool reload = false);
|
||||
|
||||
public:
|
||||
|
||||
void add_mov(TMovimento_estr * movimento) { _movs.add(movimento); }
|
||||
void add_mov(TMovimento_estr * movimento) { _movs.add(movimento); }
|
||||
/** DIAGNOSTICA GESTIONALE.
|
||||
* Controllo lo stato delle fatture:
|
||||
* Per le fatt. acquisto non collegate a fppro cerca di agganciarle.
|
||||
@ -541,7 +540,7 @@ class TF9_doccart
|
||||
public:
|
||||
static bool add_cart(const TFilename& file, long numreg, bool is_annesso = false,
|
||||
const TString& catannpadre = "", const TString& catdocann = "", bool suppress_errors = true);
|
||||
bool doc_already_exists(const TFilename& file, long & numreg, bool& TAnnesso);
|
||||
bool doc_already_exists(const TFilename& file, long & numreg, bool& TAnnesso);
|
||||
bool mov2doc(long numreg, TFilename& doc);
|
||||
bool mov2listann(const TString& numreg, TString_array & list_annessi);
|
||||
bool mov2listann_vect(const long numreg, TArray & list_annessi);
|
||||
|
@ -176,6 +176,36 @@ TMovimento_estr::TMovimento_estr(TISAM_recordset & mov, TipoIVA tipo, bool escl)
|
||||
// TEstrazione
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
long find_movcoll(long numreg) // ma serve ?
|
||||
{
|
||||
TLocalisamfile mov(LF_MOV);
|
||||
mov.put(MOV_NUMREG, numreg);
|
||||
mov.read();
|
||||
|
||||
const TCausale& cau = cached_causale(mov.get(MOV_CODCAUS), mov.get_int(MOV_ANNOES));
|
||||
const TString4 cau_reg = cau.causale_reg_iva();
|
||||
const TString numdoc = mov.get(MOV_NUMDOC);
|
||||
TString query("USE ");
|
||||
|
||||
query << LF_MOV << " KEY 1 SELECT " << MOV_CODCAUS << "==\"" << cau_reg << "\"\nFROM " << MOV_NUMREG << "==" << numreg;
|
||||
TISAM_recordset mov_rs(query);
|
||||
long movcoll = 0L;
|
||||
|
||||
for (bool ok = mov_rs.move_first(); ok; ok = mov_rs.move_next())
|
||||
{
|
||||
TRectype& curr = (TRectype&)mov_rs.cursor()->curr();
|
||||
const long movcoll_found = curr.get_long(MOV_MOVCOLL);
|
||||
|
||||
if (curr.get(MOV_NUMDOC) == numdoc && (movcoll_found == 0L || movcoll_found == numreg))
|
||||
{
|
||||
movcoll = mov_rs.get_long(MOV_NUMREG);
|
||||
curr.put(MOV_MOVCOLL, numreg);
|
||||
break;
|
||||
}
|
||||
}
|
||||
return movcoll;
|
||||
}
|
||||
|
||||
const char* TEstrazione::caus_sos(const TLocalisamfile& mov, const TipoIVA iva)
|
||||
{
|
||||
if (iva == iva_acquisti)
|
||||
@ -249,11 +279,11 @@ bool TEstrazione::check_annessi_oblig(const TString& catdoc, const int numreg,TT
|
||||
ann_nexist.add(ann_name);
|
||||
}
|
||||
else if(ok_cat && ann->opcee() == "RC")
|
||||
{
|
||||
// Generazione prospetto integrativo.
|
||||
{
|
||||
// Generazione prospetto integrativo.
|
||||
const bool ok = make_prosp_int_revc(numreg, ann);
|
||||
|
||||
if (!ok)
|
||||
if (!ok)
|
||||
ann_nexist.add(TString() << "Prospetto integrativo (" << ann->catdoc() << ")");
|
||||
ok_ann &= ok;
|
||||
}
|
||||
@ -345,36 +375,36 @@ void TEstrazione::copy_file_to_webapp_fld(TMovimento_estr& movimento) const
|
||||
|
||||
file.trim();
|
||||
if (movimento.cartaceo() && cd != nullptr && file.full())
|
||||
{
|
||||
{
|
||||
categorie.add(cd->catdoc(), 0);
|
||||
files.add(file, 0);
|
||||
}
|
||||
if(!movimento.annessi().empty()) //qui
|
||||
{
|
||||
{
|
||||
FOR_EACH_ARRAY_ITEM(movimento.annessi(), r, obj)
|
||||
{
|
||||
{
|
||||
TAnnesso_mov & ann = (TAnnesso_mov &) *obj;
|
||||
|
||||
categorie.add(ann.catdocann());
|
||||
files.add(TF9_doccart::get_full_path_file_cartaceo(ann.filename()));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#ifdef DBG
|
||||
CHECK(files.items() == categorie.items(), "copy_file_to_webapp_fld: Numero di file diverso dal numero di categorie");
|
||||
#endif
|
||||
|
||||
for(int i = 0; i < files.items(); ++i)
|
||||
{
|
||||
TFilename file = files.get(i);
|
||||
TFilename dest(base);
|
||||
dest.add(categorie.get(i)).add(file.name());
|
||||
make_dir(dest.path());
|
||||
{
|
||||
TFilename file = files.get(i);
|
||||
TFilename dest(base);
|
||||
dest.add(categorie.get(i)).add(file.name());
|
||||
make_dir(dest.path());
|
||||
|
||||
const bool f = fcopy(file, dest);
|
||||
const bool f = fcopy(file, dest);
|
||||
|
||||
if (!f)
|
||||
error_box("Errore nel copiare il file nella cartella di destinazione: %s", (const char*)dest);
|
||||
}
|
||||
if (!f)
|
||||
error_box("Errore nel copiare il file nella cartella di destinazione: %s", (const char*)dest);
|
||||
}
|
||||
}
|
||||
|
||||
void TEstrazione::fill_id(const TRectype& clifo, TString& statopaiv, TString& idfisc, TString& paiv, TString& codfis)
|
||||
@ -500,7 +530,7 @@ bool TEstrazione::stampa_documento(const TMovimento_estr& movimento, TFilename&
|
||||
if(!TF9_doccart::add_cart(file, movimento.numreg()))
|
||||
{
|
||||
TF9_doccart filecart;
|
||||
TFilename fdoc;
|
||||
TFilename fdoc;
|
||||
|
||||
ok = filecart.mov2doc(movimento.numreg(), fdoc) && fdoc.name() == file.name();
|
||||
}
|
||||
@ -570,7 +600,7 @@ bool TEstrazione::make_prosp_int_revc(const int numreg, TAnnesso * annesso)
|
||||
const TFilename newfile(TF9_doccart::get_full_path_file_cartaceo(tmp_file.name()));
|
||||
// if (newfile.exist())
|
||||
// DeleteFile(newfile);
|
||||
fcopy(tmp_file, newfile);
|
||||
fcopy(tmp_file, newfile);
|
||||
// Controllo che non esista gia' altrimenti elimino il record
|
||||
TF9_doccart doccart;
|
||||
bool a;
|
||||
@ -753,16 +783,6 @@ void TEstrazione::write_errorsql_log(const TString& query) const
|
||||
#endif
|
||||
}
|
||||
|
||||
TCategorie_doc& TEstrazione::categorie_doc(const bool reload)
|
||||
{
|
||||
static TCategorie_doc* _doc_cats = nullptr;
|
||||
if (_doc_cats == nullptr)
|
||||
_doc_cats = new TCategorie_doc();
|
||||
else if (reload)
|
||||
_doc_cats->reload();
|
||||
return *_doc_cats;
|
||||
}
|
||||
|
||||
// Public methods /////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
bool TEstrazione::update_drd_stato_estr() const
|
||||
@ -903,7 +923,7 @@ const char* TEstrazione::diagnostica_mov()
|
||||
mov_i.set_err("", mov_no_cartaceo);
|
||||
mov_i.set_estratto(false);
|
||||
++_stats.fa_skip;
|
||||
}
|
||||
}
|
||||
}
|
||||
copy_file_to_webapp_fld(mov_i);
|
||||
}
|
||||
@ -1245,7 +1265,7 @@ bool TEstrazione::estrazione_iva(bool escluso)
|
||||
{
|
||||
iva_query.add(IVA_CLASAN9, ((TAnnesso_mov &)ann[i]).catdocann(), 10);
|
||||
iva_query.add(IVA_NOMF9, ((TAnnesso_mov &)ann[i++]).filename(), 100);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
iva_query.add(IVA_USERELA, user(), 10);
|
||||
@ -1965,6 +1985,16 @@ TCategorie_doc::TCategorie_doc() : _mode_sheet(MODE_SHEETS)
|
||||
|
||||
|
||||
|
||||
TCategorie_doc& categorie_doc(const bool reload)
|
||||
{
|
||||
static TCategorie_doc* _doc_cats = nullptr;
|
||||
|
||||
if (_doc_cats == nullptr)
|
||||
_doc_cats = new TCategorie_doc();
|
||||
else if (reload)
|
||||
_doc_cats->reload();
|
||||
return *_doc_cats;
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// TRecord_categorie
|
||||
|
@ -168,7 +168,7 @@ bool TF9_doccart::add_cart(const TFilename& file, long numreg, const bool is_ann
|
||||
|
||||
bool TF9_doccart::doc_already_exists(const TFilename& file, long& numreg, bool& annesso)
|
||||
{
|
||||
annesso = false;
|
||||
annesso = false;
|
||||
|
||||
const TRectype & tdocs = cache().get(LF_F9DOCS, file.name(), 2);
|
||||
bool ok = tdocs.full();
|
||||
@ -186,7 +186,7 @@ bool TF9_doccart::doc_already_exists(const TFilename& file, long& numreg, bool&
|
||||
{
|
||||
numreg = _tannessi.get_long(F9A_NUMREG);
|
||||
annesso = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return ok;
|
||||
}
|
||||
@ -228,21 +228,21 @@ bool TF9_doccart::mov2listann(const TString& numreg, _Out_ TString_array& list_a
|
||||
CHECK(numreg_fetched == numreg_fetched, "*Maledetooo*");
|
||||
#endif
|
||||
}
|
||||
return ok;
|
||||
return ok;
|
||||
}
|
||||
|
||||
bool TF9_doccart::mov2listann_vect(const long numreg, TArray & list_annessi)
|
||||
{
|
||||
list_annessi.destroy();
|
||||
list_annessi.destroy();
|
||||
_tannessi.zero();
|
||||
_tannessi.setkey(1);
|
||||
_tannessi.put(F9A_NUMREG, numreg);
|
||||
|
||||
bool ok = false;
|
||||
bool ok = false;
|
||||
|
||||
// Si posiziona nl primo record giusto. Poi per sapere quando terminare guardo se la chiave e' ancora quella giusta.
|
||||
// Si posiziona nl primo record giusto. Poi per sapere quando terminare guardo se la chiave e' ancora quella giusta.
|
||||
for (int err = _tannessi.read(_isgteq) == NOERR; err == NOERR; err = _tannessi.next())
|
||||
{
|
||||
{
|
||||
long numreg_fetched = _tannessi.get_long(F9A_NUMREG);
|
||||
if (numreg_fetched == numreg)
|
||||
{
|
||||
@ -255,9 +255,9 @@ bool TF9_doccart::mov2listann_vect(const long numreg, TArray & list_annessi)
|
||||
}
|
||||
else
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return ok;
|
||||
return ok;
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
Loading…
x
Reference in New Issue
Block a user