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\f90600a.h" />
|
||||
<ClInclude Include="..\src\f9\f90600b.h" />
|
||||
<ClInclude Include="..\src\f9\f90600c.h" />
|
||||
<ClInclude Include="..\src\f9\f90600d.h" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<MskCompiler Include="..\src\f9\f90100a.uml" />
|
||||
@ -238,6 +240,7 @@
|
||||
<MskCompiler Include="..\src\f9\f90500a.uml" />
|
||||
<MskCompiler Include="..\src\f9\f90600a.uml" />
|
||||
<MskCompiler Include="..\src\f9\f90600b.uml" />
|
||||
<MskCompiler Include="..\src\f9\f90600d.uml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<SqlCompiler Include="..\src\f9\sql\f90100.sql">
|
||||
|
@ -63,6 +63,12 @@
|
||||
<ClInclude Include="..\src\f9\f90600b.h">
|
||||
<Filter>Headers</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\f9\f90600d.h">
|
||||
<Filter>Headers</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\f9\f90600c.h">
|
||||
<Filter>Headers</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\src\f9\f90.cpp">
|
||||
@ -121,6 +127,9 @@
|
||||
<MskCompiler Include="..\src\f9\f90600b.uml">
|
||||
<Filter>Masks</Filter>
|
||||
</MskCompiler>
|
||||
<MskCompiler Include="..\src\f9\f90600d.uml">
|
||||
<Filter>Masks</Filter>
|
||||
</MskCompiler>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<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
|
||||
////////////////////////////////////////////////////////
|
||||
|
@ -437,8 +437,9 @@ class TEstrazione : public TObject
|
||||
* \return \a not_fa se il movimento passato non è una fattura.
|
||||
*/
|
||||
static state_fppro check_fppro(int numreg);
|
||||
state_estr_int checkPafw3_int(int numreg);
|
||||
bool guess_the_int(TLocalisamfile& mov);
|
||||
state_estr_int guess_int(int numreg);
|
||||
bool checkPAF(TLocalisamfile& mov);
|
||||
bool checkPAA(TLocalisamfile& mov);
|
||||
bool check_periodo_def() 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);
|
||||
|
@ -451,20 +451,31 @@ state_fppro TEstrazione::check_fppro(int numreg)
|
||||
return not_fa;
|
||||
}
|
||||
|
||||
state_estr_int TEstrazione::checkPafw3_int(int numreg)
|
||||
state_estr_int TEstrazione::guess_int(int numreg)
|
||||
{
|
||||
TLocalisamfile mov(LF_MOV);
|
||||
mov.put(MOV_NUMREG, numreg);
|
||||
if (mov.read() == NOERR)
|
||||
{
|
||||
if (guess_the_int(mov))
|
||||
return guessed_int;
|
||||
return no_guessed_int;
|
||||
|
||||
if (get_tipoiva() == iva_vendite)
|
||||
{
|
||||
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;
|
||||
}
|
||||
|
||||
bool TEstrazione::guess_the_int(TLocalisamfile& mov)
|
||||
|
||||
bool TEstrazione::checkPAF(TLocalisamfile& mov)
|
||||
{
|
||||
// Prendo il fornitore del mov per controllare la p.iva
|
||||
long codcf = mov.get_long(MOV_CODCF);
|
||||
@ -482,9 +493,9 @@ bool TEstrazione::guess_the_int(TLocalisamfile& mov)
|
||||
TString query;
|
||||
|
||||
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" <<
|
||||
"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" <<
|
||||
"P7_NUMERO AS NUMDOC, PQ_IMPTOTDOC AS IMPTOTDOC, P2_FISCIVAPAESE AS STATOPIVA, P2_FISCIVACOD AS PIVA FROM PAF2700F\n" <<
|
||||
"JOIN PAF0700F ON PQ_KEYPRGINVIO = P7_KEYPRGINVIO AND PQ_KEYHEADERFATT = P7_KEYHEADERFATT AND PQ_KEYBODYFATT = P7_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" <<
|
||||
"(P7_NUMERO = '" << numdoc << "' OR P7_NUMERO LIKE '%" << numdoc << "%') \n";
|
||||
if (statopiva.full())
|
||||
@ -501,8 +512,9 @@ bool TEstrazione::guess_the_int(TLocalisamfile& mov)
|
||||
|
||||
if (ok && (fp_db().sq_items() == 1))
|
||||
{
|
||||
//CAPIRE COSA FARE QUI DENTRO
|
||||
TToken_string keys = (fp_db().sq_get("KEYPRGINVIO"), ";");
|
||||
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"));
|
||||
|
||||
@ -514,6 +526,54 @@ bool TEstrazione::guess_the_int(TLocalisamfile& mov)
|
||||
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
|
||||
{
|
||||
TString query;
|
||||
@ -1152,12 +1212,9 @@ const char* TEstrazione::diagnostica_mov_integrazione()
|
||||
bool ok = true;
|
||||
const TipoIVA tipo = get_tipoiva();
|
||||
_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())
|
||||
{
|
||||
@ -1170,7 +1227,13 @@ const char* TEstrazione::diagnostica_mov_integrazione()
|
||||
|
||||
const long numreg = mov_i.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(';');
|
||||
int i = keys.items();
|
||||
|
||||
@ -1191,7 +1254,7 @@ const char* TEstrazione::diagnostica_mov_integrazione()
|
||||
|
||||
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)
|
||||
{
|
||||
@ -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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user