Primo Commit:
Primo giro praticamente completo. Ora si passa ai test e al bugfix
This commit is contained in:
parent
97f59efa7e
commit
85ac655949
@ -226,6 +226,8 @@
|
|||||||
<ClInclude Include="..\src\f9\f90600.h" />
|
<ClInclude Include="..\src\f9\f90600.h" />
|
||||||
<ClInclude Include="..\src\f9\f90600a.h" />
|
<ClInclude Include="..\src\f9\f90600a.h" />
|
||||||
<ClInclude Include="..\src\f9\f90600b.h" />
|
<ClInclude Include="..\src\f9\f90600b.h" />
|
||||||
|
<ClInclude Include="..\src\f9\f90600c.h" />
|
||||||
|
<ClInclude Include="..\src\f9\f90600d.h" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<MskCompiler Include="..\src\f9\f90100a.uml" />
|
<MskCompiler Include="..\src\f9\f90100a.uml" />
|
||||||
@ -238,6 +240,7 @@
|
|||||||
<MskCompiler Include="..\src\f9\f90500a.uml" />
|
<MskCompiler Include="..\src\f9\f90500a.uml" />
|
||||||
<MskCompiler Include="..\src\f9\f90600a.uml" />
|
<MskCompiler Include="..\src\f9\f90600a.uml" />
|
||||||
<MskCompiler Include="..\src\f9\f90600b.uml" />
|
<MskCompiler Include="..\src\f9\f90600b.uml" />
|
||||||
|
<MskCompiler Include="..\src\f9\f90600d.uml" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<SqlCompiler Include="..\src\f9\sql\f90100.sql">
|
<SqlCompiler Include="..\src\f9\sql\f90100.sql">
|
||||||
|
@ -63,6 +63,12 @@
|
|||||||
<ClInclude Include="..\src\f9\f90600b.h">
|
<ClInclude Include="..\src\f9\f90600b.h">
|
||||||
<Filter>Headers</Filter>
|
<Filter>Headers</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\src\f9\f90600d.h">
|
||||||
|
<Filter>Headers</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\src\f9\f90600c.h">
|
||||||
|
<Filter>Headers</Filter>
|
||||||
|
</ClInclude>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClCompile Include="..\src\f9\f90.cpp">
|
<ClCompile Include="..\src\f9\f90.cpp">
|
||||||
@ -121,6 +127,9 @@
|
|||||||
<MskCompiler Include="..\src\f9\f90600b.uml">
|
<MskCompiler Include="..\src\f9\f90600b.uml">
|
||||||
<Filter>Masks</Filter>
|
<Filter>Masks</Filter>
|
||||||
</MskCompiler>
|
</MskCompiler>
|
||||||
|
<MskCompiler Include="..\src\f9\f90600d.uml">
|
||||||
|
<Filter>Masks</Filter>
|
||||||
|
</MskCompiler>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<SqlCompiler Include="..\src\f9\sql\f90100.sql">
|
<SqlCompiler Include="..\src\f9\sql\f90100.sql">
|
||||||
|
@ -1255,8 +1255,6 @@ TApri_estr_msk::TApri_estr_msk() : TAutomask("f90100d.msk"), _provv(true), _tipo
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////
|
||||||
// TF9_app
|
// TF9_app
|
||||||
////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////
|
||||||
|
@ -437,8 +437,9 @@ class TEstrazione : public TObject
|
|||||||
* \return \a not_fa se il movimento passato non è una fattura.
|
* \return \a not_fa se il movimento passato non è una fattura.
|
||||||
*/
|
*/
|
||||||
static state_fppro check_fppro(int numreg);
|
static state_fppro check_fppro(int numreg);
|
||||||
state_estr_int checkPafw3_int(int numreg);
|
state_estr_int guess_int(int numreg);
|
||||||
bool guess_the_int(TLocalisamfile& mov);
|
bool checkPAF(TLocalisamfile& mov);
|
||||||
|
bool checkPAA(TLocalisamfile& mov);
|
||||||
bool check_periodo_def() const;
|
bool check_periodo_def() const;
|
||||||
void copy_file_to_webapp_fld(TMovimento_estr& movimento) const;
|
void copy_file_to_webapp_fld(TMovimento_estr& movimento) const;
|
||||||
void fill_id(const TRectype& clifo, TString& statopaiv, TString& idfisc, TString& paiv, TString& codfis);
|
void fill_id(const TRectype& clifo, TString& statopaiv, TString& idfisc, TString& paiv, TString& codfis);
|
||||||
|
@ -451,20 +451,31 @@ state_fppro TEstrazione::check_fppro(int numreg)
|
|||||||
return not_fa;
|
return not_fa;
|
||||||
}
|
}
|
||||||
|
|
||||||
state_estr_int TEstrazione::checkPafw3_int(int numreg)
|
state_estr_int TEstrazione::guess_int(int numreg)
|
||||||
{
|
{
|
||||||
TLocalisamfile mov(LF_MOV);
|
TLocalisamfile mov(LF_MOV);
|
||||||
mov.put(MOV_NUMREG, numreg);
|
mov.put(MOV_NUMREG, numreg);
|
||||||
if (mov.read() == NOERR)
|
if (mov.read() == NOERR)
|
||||||
{
|
{
|
||||||
if (guess_the_int(mov))
|
|
||||||
return guessed_int;
|
if (get_tipoiva() == iva_vendite)
|
||||||
return no_guessed_int;
|
{
|
||||||
|
if (checkPAF(mov))
|
||||||
|
return guessed_int;
|
||||||
|
return no_guessed_int;
|
||||||
|
}
|
||||||
|
else if(get_tipoiva() == iva_acquisti)
|
||||||
|
{
|
||||||
|
if (checkPAA(mov))
|
||||||
|
return guessed_int;
|
||||||
|
return no_guessed_int;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return int_with_err;
|
return int_with_err;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TEstrazione::guess_the_int(TLocalisamfile& mov)
|
|
||||||
|
bool TEstrazione::checkPAF(TLocalisamfile& mov)
|
||||||
{
|
{
|
||||||
// Prendo il fornitore del mov per controllare la p.iva
|
// Prendo il fornitore del mov per controllare la p.iva
|
||||||
long codcf = mov.get_long(MOV_CODCF);
|
long codcf = mov.get_long(MOV_CODCF);
|
||||||
@ -482,9 +493,9 @@ bool TEstrazione::guess_the_int(TLocalisamfile& mov)
|
|||||||
TString query;
|
TString query;
|
||||||
|
|
||||||
query << "SELECT PQ_KEYPRGINVIO AS KEYPRGINVIO, PQ_KEYHEADERFATT AS KEYHEADERFATT, PQ_KEYBODYFATT AS KEYBODYFATT, P7_DATA AS DATA,\n" <<
|
query << "SELECT PQ_KEYPRGINVIO AS KEYPRGINVIO, PQ_KEYHEADERFATT AS KEYHEADERFATT, PQ_KEYBODYFATT AS KEYBODYFATT, P7_DATA AS DATA,\n" <<
|
||||||
"\tP7_NUMERO AS NUMDOC, PQ_IMPTOTDOC AS IMPTOTDOC, P2_FISCIVAPAESE AS STATOPIVA, P2_FISCIVACOD AS PIVA FROM PAA2700F\n" <<
|
"P7_NUMERO AS NUMDOC, PQ_IMPTOTDOC AS IMPTOTDOC, P2_FISCIVAPAESE AS STATOPIVA, P2_FISCIVACOD AS PIVA FROM PAF2700F\n" <<
|
||||||
"JOIN PAA0700F ON PQ_KEYPRGINVIO = P7_KEYPRGINVIO AND PQ_KEYHEADERFATT = P7_KEYHEADERFATT AND PQ_KEYBODYFATT = P7_KEYBODYFATT\n" <<
|
"JOIN PAF0700F ON PQ_KEYPRGINVIO = P7_KEYPRGINVIO AND PQ_KEYHEADERFATT = P7_KEYHEADERFATT AND PQ_KEYBODYFATT = P7_KEYBODYFATT\n" <<
|
||||||
"JOIN PAA0200F ON PQ_KEYPRGINVIO = P2_KEYPRGINVIO AND PQ_KEYHEADERFATT = P2_KEYHEADERFATT AND PQ_KEYBODYFATT = P2_KEYBODYFATT\n" <<
|
"JOIN PAF0200F ON PQ_KEYPRGINVIO = P2_KEYPRGINVIO AND PQ_KEYHEADERFATT = P2_KEYHEADERFATT AND PQ_KEYBODYFATT = P2_KEYBODYFATT\n" <<
|
||||||
"WHERE P7_DATA = '" << mov.get_date(MOV_DATADOC).date2ansi() << "' AND \n" <<
|
"WHERE P7_DATA = '" << mov.get_date(MOV_DATADOC).date2ansi() << "' AND \n" <<
|
||||||
"(P7_NUMERO = '" << numdoc << "' OR P7_NUMERO LIKE '%" << numdoc << "%') \n";
|
"(P7_NUMERO = '" << numdoc << "' OR P7_NUMERO LIKE '%" << numdoc << "%') \n";
|
||||||
if (statopiva.full())
|
if (statopiva.full())
|
||||||
@ -501,8 +512,9 @@ bool TEstrazione::guess_the_int(TLocalisamfile& mov)
|
|||||||
|
|
||||||
if (ok && (fp_db().sq_items() == 1))
|
if (ok && (fp_db().sq_items() == 1))
|
||||||
{
|
{
|
||||||
//CAPIRE COSA FARE QUI DENTRO
|
TToken_string keys;
|
||||||
TToken_string keys = (fp_db().sq_get("KEYPRGINVIO"), ";");
|
keys.separator(';');
|
||||||
|
keys = (fp_db().sq_get("KEYPRGINVIO"));
|
||||||
keys.add(fp_db().sq_get("KEYHEADERFATT"));
|
keys.add(fp_db().sq_get("KEYHEADERFATT"));
|
||||||
keys.add(fp_db().sq_get("KEYBODYFATT"));
|
keys.add(fp_db().sq_get("KEYBODYFATT"));
|
||||||
|
|
||||||
@ -514,6 +526,54 @@ bool TEstrazione::guess_the_int(TLocalisamfile& mov)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool TEstrazione::checkPAA(TLocalisamfile& mov)
|
||||||
|
{
|
||||||
|
// Prendo il fornitore del mov per controllare la p.iva
|
||||||
|
long codcf = mov.get_long(MOV_CODCF);
|
||||||
|
TCli_for forn = cached_clifor('F', mov.get_long(MOV_CODCF));
|
||||||
|
|
||||||
|
const TString4 statopiva(forn.get(CLI_STATOPAIV));
|
||||||
|
|
||||||
|
const real tot = mov.get_real(MOV_TOTDOC) + mov.get_real(MOV_RITFIS) + mov.get_real(MOV_RITSOC) + mov.get_real(MOV_REVCHARGE);
|
||||||
|
TString numdoc = mov.get(MOV_IDDOCSDI);
|
||||||
|
|
||||||
|
TString query;
|
||||||
|
|
||||||
|
query << "SELECT PQ_KEYPRGINVIO AS KEYPRGINVIO, PQ_KEYHEADERFATT AS KEYHEADERFATT, PQ_KEYBODYFATT AS KEYBODYFATT, P7_DATA AS DATA,\n" <<
|
||||||
|
"P7_NUMERO AS NUMDOC, PQ_IMPTOTDOC AS IMPTOTDOC, P2_FISCIVAPAESE AS STATOPIVA, P2_FISCIVACOD AS PIVA FROM PAA2700F\n" <<
|
||||||
|
"JOIN PAA0700F ON PQ_KEYPRGINVIO = P7_KEYPRGINVIO AND PQ_KEYHEADERFATT = P7_KEYHEADERFATT AND PQ_KEYBODYFATT = P7_KEYBODYFATT\n" <<
|
||||||
|
"JOIN PAA0200F ON PQ_KEYPRGINVIO = P2_KEYPRGINVIO AND PQ_KEYHEADERFATT = P2_KEYHEADERFATT AND PQ_KEYBODYFATT = P2_KEYBODYFATT\n" <<
|
||||||
|
"WHERE P7_DATA = '" << mov.get_date(MOV_DATADOC).date2ansi() << "' AND \n" <<
|
||||||
|
"(P7_NUMERO = '" << numdoc << "' OR P7_NUMERO LIKE '%" << numdoc << "%') \n";
|
||||||
|
if (statopiva.full())
|
||||||
|
query << " AND \n" << "P2_FISCIVAPAESE = '" << statopiva << "'";
|
||||||
|
query << " AND \n" << "P2_FISCIVACOD = '" << forn.get(CLI_PAIV) << "'";
|
||||||
|
if (forn.gruppo_IVA())
|
||||||
|
query << " AND \n" "P2_COCAZZO = '" << forn.get(CLI_COFI) << "'";
|
||||||
|
if (tot < 0)
|
||||||
|
query << " AND \n" "(PQ_IMPTOTDOC = " << tot << " OR PQ_IMPTOTDOC = " << abs(tot) << ")";
|
||||||
|
else
|
||||||
|
query << " AND \n" "PQ_IMPTOTDOC = " << tot;
|
||||||
|
|
||||||
|
bool ok = fp_db().sq_set_exec(query);
|
||||||
|
|
||||||
|
if (ok && (fp_db().sq_items() == 1))
|
||||||
|
{
|
||||||
|
//CAPIRE COSA FARE QUI DENTRO
|
||||||
|
TToken_string keys;
|
||||||
|
keys.separator(';');
|
||||||
|
keys = (fp_db().sq_get("KEYPRGINVIO"));
|
||||||
|
keys.add(fp_db().sq_get("KEYHEADERFATT"));
|
||||||
|
keys.add(fp_db().sq_get("KEYBODYFATT"));
|
||||||
|
|
||||||
|
mov.put(MOV_KEYFPPRO, keys);
|
||||||
|
mov.rewrite();
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
bool TEstrazione::check_periodo_def() const
|
bool TEstrazione::check_periodo_def() const
|
||||||
{
|
{
|
||||||
TString query;
|
TString query;
|
||||||
@ -1152,12 +1212,9 @@ const char* TEstrazione::diagnostica_mov_integrazione()
|
|||||||
bool ok = true;
|
bool ok = true;
|
||||||
const TipoIVA tipo = get_tipoiva();
|
const TipoIVA tipo = get_tipoiva();
|
||||||
_stats.total = _movs.size();
|
_stats.total = _movs.size();
|
||||||
if (tipo == iva_vendite)
|
|
||||||
{
|
|
||||||
// Controlli per le fatture di acquisto
|
|
||||||
TProgress_monitor bar(_movs.items(), "Controllo stato movimenti di acquisto");
|
|
||||||
|
|
||||||
FOR_EACH_ARRAY_ITEM(_movs, r, obj)
|
TProgress_monitor bar(_movs.items(), "Controllo stato movimenti");
|
||||||
|
FOR_EACH_ARRAY_ITEM(_movs, r, obj)
|
||||||
{
|
{
|
||||||
if (bar.add_status())
|
if (bar.add_status())
|
||||||
{
|
{
|
||||||
@ -1170,7 +1227,13 @@ const char* TEstrazione::diagnostica_mov_integrazione()
|
|||||||
|
|
||||||
const long numreg = mov_i.numreg();
|
const long numreg = mov_i.numreg();
|
||||||
const TRectype & mov = cache().get(LF_MOV, numreg);
|
const TRectype & mov = cache().get(LF_MOV, numreg);
|
||||||
TToken_string keys = (mov.get(MOV_KEYPAF));
|
TToken_string keys;
|
||||||
|
|
||||||
|
if(tipo == iva_vendite)
|
||||||
|
keys = (mov.get(MOV_KEYPAF));
|
||||||
|
else if (tipo == iva_acquisti)
|
||||||
|
keys = (mov.get(MOV_KEYFPPRO));
|
||||||
|
|
||||||
keys.separator(';');
|
keys.separator(';');
|
||||||
int i = keys.items();
|
int i = keys.items();
|
||||||
|
|
||||||
@ -1191,7 +1254,7 @@ const char* TEstrazione::diagnostica_mov_integrazione()
|
|||||||
|
|
||||||
mov_i.set_cartaceo(!is_doc_xml(mov));
|
mov_i.set_cartaceo(!is_doc_xml(mov));
|
||||||
|
|
||||||
const state_estr_int res = checkPafw3_int(numreg);
|
const state_estr_int res = guess_int(numreg);
|
||||||
|
|
||||||
switch (res)
|
switch (res)
|
||||||
{
|
{
|
||||||
@ -1219,108 +1282,6 @@ const char* TEstrazione::diagnostica_mov_integrazione()
|
|||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (tipo == iva_acquisti)
|
|
||||||
{
|
|
||||||
// Controlli per le fatture di vendita (AGGIORNARE STATS QUI)
|
|
||||||
TProgress_monitor bar(_movs.items(), "Controllo stato movimenti di vendita");
|
|
||||||
|
|
||||||
FOR_EACH_ARRAY_ITEM(_movs, r, obj)
|
|
||||||
{
|
|
||||||
if (bar.add_status())
|
|
||||||
{
|
|
||||||
TMovimento_estr & mov_i = (TMovimento_estr &)*obj;
|
|
||||||
|
|
||||||
// Se escluso passo avanti
|
|
||||||
if (!mov_i.estratto() && mov_i.descr_estr() == mov_escluso)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
const long numreg = mov_i.numreg();
|
|
||||||
const TRectype & mov = cache().get(LF_MOV, numreg);
|
|
||||||
/* Controlli per vendite cambiati:
|
|
||||||
* Elettroniche solo quelle agli italiani, tutti gli altri sono cartacei
|
|
||||||
*/
|
|
||||||
if (!mov_i.err() && mov_i.estratto())
|
|
||||||
{
|
|
||||||
mov_i.set_cartaceo(false); // ci deve essere ?
|
|
||||||
|
|
||||||
unsigned short skip = 0;
|
|
||||||
|
|
||||||
if (_has_cartacei && mov_i.cartaceo())
|
|
||||||
skip |= 0x1;
|
|
||||||
else if (pura_iva(mov))
|
|
||||||
skip |= 0x2;
|
|
||||||
else if (mov_i.datadoc().empty() || mov_i.numdoc().empty())
|
|
||||||
skip |= 0x4;
|
|
||||||
|
|
||||||
if (skip)
|
|
||||||
{
|
|
||||||
++_stats.fv_cart_skip;
|
|
||||||
mov_i.reset_err();
|
|
||||||
mov_i.set_estratto(false);
|
|
||||||
switch (skip)
|
|
||||||
{
|
|
||||||
case 0x1: mov_i.set_descr_estr(mov_no_cartaceo); break;
|
|
||||||
case 0x2: mov_i.set_descr_estr(mov_pura_iva); break;
|
|
||||||
case 0x4: mov_i.set_descr_estr(mov_no_fv); break;
|
|
||||||
default: break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
TClasse_doc* cd = categorie_doc().mov2cat(mov_i.numreg());
|
|
||||||
const bool found = cd != nullptr;
|
|
||||||
|
|
||||||
if (found)
|
|
||||||
mov_i.reset_err();
|
|
||||||
else
|
|
||||||
mov_i.set_err("Categoria assente", mov_no_catdoc);
|
|
||||||
if (cd != nullptr)
|
|
||||||
check_annessi(mov_i);
|
|
||||||
|
|
||||||
if (!mov_i.catdoc(categorie_doc()))
|
|
||||||
++_stats.fv_nocatdoc;
|
|
||||||
if (mov_i.err())
|
|
||||||
++_stats.fv_err;
|
|
||||||
else if (mov_i.estratto())
|
|
||||||
++_stats.fv_estr;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (mov_i.estratto())
|
|
||||||
{
|
|
||||||
if (mov_i.numreg() == 41400) {
|
|
||||||
int here = 0;
|
|
||||||
}
|
|
||||||
if (mov_i.cartaceo())
|
|
||||||
{
|
|
||||||
TFilename file;
|
|
||||||
|
|
||||||
// if (filecart.mov2doc(mov_i.numreg(), file) && file.exist() || grab_pdf_from_spotlite(mov_i, file) && file.exist())
|
|
||||||
if (grab_pdf_from_spotlite(mov_i, file) && file.exist())
|
|
||||||
mov_i.set_nomefiledoc(file);
|
|
||||||
else
|
|
||||||
mov_i.set_err("Non e' stato possibile reperire il file del documento cartaceo per questo movimento.", mov_no_filecart);
|
|
||||||
}
|
|
||||||
|
|
||||||
TToken_string cartacei(mov.get(MOV_CARTACEI), '\n');
|
|
||||||
|
|
||||||
FOR_EACH_STR_TOKEN(cartacei, s)
|
|
||||||
{
|
|
||||||
TFilename file(s);
|
|
||||||
|
|
||||||
if (file.exist())
|
|
||||||
mov_i.documenti_allegati().add(file);
|
|
||||||
else
|
|
||||||
mov_i.set_err(format(FR("Non e' stato possibile reperire il file cartaceo %s per questo movimento."), (const char *)file), mov_no_filecart);
|
|
||||||
}
|
|
||||||
copy_file_to_webapp_fld(mov_i);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
ok &= mov_i.no_err();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
_head.stato_estr = ok ? D_GEST_OK : D_GEST_ERR;
|
_head.stato_estr = ok ? D_GEST_OK : D_GEST_ERR;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user