Patch level : 12.0

Files correlati     : fplib01.cpp

Commento:
Sistemato il filtro sui fornitori associati e non nel monitor delle fatture passive
This commit is contained in:
smen 2023-03-31 11:20:38 +02:00
parent 6cdf5b5acb
commit b0b08a023c

View File

@ -290,28 +290,32 @@ real TPassive_mask::calcola_importo(vector<iva> riva)
void TPassive_mask::aggiungi_riga(TLocalisamfile& clifo, TSheet_field& sf, TSheet_field& sf_err)
{
TString denom = fp_db().sq_get("RAG_SOC");
const TString& paa_codfisc = fp_db().sq_get("COD_FISC");
const TString& paa_piva = fp_db().sq_get("P_IVA");
const TString& paa_codpaese = fp_db().sq_get("COD_PAESE");
const TDate& dataregcont = fp_db().sq_get_date("DATAREGCONT");
const TString& filter_elab = get_fattsel();
const bool is_contab = dataregcont != TDate("20010101");
const TString& id_sdi = fp_db().sq_get("ID_SDI");
TString denom = fp_db().sq_get("RAG_SOC");
const TString& paa_codfisc = fp_db().sq_get("COD_FISC");
const TString& paa_piva = fp_db().sq_get("P_IVA");
const TString& paa_codpaese = fp_db().sq_get("COD_PAESE");
const TDate& dataregcont = fp_db().sq_get_date("DATAREGCONT");
const TString& filter_elab = get_fattsel();
const bool is_contab = dataregcont != TDate("20010101");
const TString& id_sdi = fp_db().sq_get("ID_SDI");
TToken_string keys("", ';');
keys.add(fp_db().sq_get("KEYPROG")); keys.add(fp_db().sq_get("KEYHEAD")); keys.add(fp_db().sq_get("KEYFATT"));
clifo.zero();
clifo.put(CLI_TIPOCF, 'F');
const int forn_code = find_fornitore(clifo);
// Se abilitato il flag di ricerca per fornitore controllo che il codice sia giusto
if (get_bool(F_ENABLEFORN) && (forn_code < 0 || clifo.get_int(CLI_CODCF) != get_int(F_FORNITORE)))
return;
return;
const bool data_range = dataregcont >= TDate(get(F_DATAINIREG)) && dataregcont <= TDate(get(F_DATAENDREG));
if( filter_elab.blank() && forn_code != 0 // Filtro sui non associati
//INDAGARE QUI IL PROBLEMA DELLA SILE
if (filter_elab.blank() && forn_code != 0 // Filtro sui non associati
|| filter_elab == FILTER_ASS && forn_code == 0 && !is_contab // Filtro sui associati e non contab.
|| filter_elab == FILTER_CONT && forn_code == 0 && is_contab && data_range // Filtro solo contabilizzati e data
|| filter_elab == FILTER_ALL) // Tutte
@ -322,55 +326,108 @@ void TPassive_mask::aggiungi_riga(TLocalisamfile& clifo, TSheet_field& sf, TShee
}
denom.cut(50);
TString tiposdi = fp_db().sq_get("TIPO_SDI") ;
TString tiposdi = fp_db().sq_get("TIPO_SDI");
const int row = sf.set_row_cell(S_ANNO, fp_db().sq_get_int("ANNO"));
sf.set_row_cell(S_TIPODOCSDI, tiposdi, row);
sf.set_row_cell(S_NDOC, fp_db().sq_get("NUM_DOC"), row);
sf.set_row_cell(S_DATARIC, fp_db().sq_get_date("DATA_RIC"), row);
sf.set_row_cell(S_DATADOC, fp_db().sq_get_date("DATA_DOC"), row);
sf.set_row_cell(S_TOTDOC, fp_db().sq_get("TOT_DOC"), row);
sf.set_row_cell(S_TOTRIT, fppro_db().set_keys(keys).get_ritenute(), row);
sf.set_row_cell(S_IDSDI, id_sdi, row);
if (tiposdi == "TD16" || tiposdi == "TD17" || tiposdi == "TD18" || tiposdi == "TD19" || tiposdi == "TD20")
if (filter_elab == FILTER_NOASS)
{
sf.disable_row(row);
}
if (forn_code<0)
{
const int row = sf.set_row_cell(S_ANNO, fp_db().sq_get_int("ANNO"));
sf.set_row_cell(S_TIPODOCSDI, tiposdi, row);
sf.set_row_cell(S_NDOC, fp_db().sq_get("NUM_DOC"), row);
sf.set_row_cell(S_DATARIC, fp_db().sq_get_date("DATA_RIC"), row);
sf.set_row_cell(S_DATADOC, fp_db().sq_get_date("DATA_DOC"), row);
sf.set_row_cell(S_TOTDOC, fp_db().sq_get("TOT_DOC"), row);
sf.set_row_cell(S_TOTRIT, fppro_db().set_keys(keys).get_ritenute(), row);
sf.set_row_cell(S_IDSDI, id_sdi, row);
// Decido se mettere o meno il flag
sf.set_row_cell(S_FPPRO, forn_code == 0, row);
sf.set_row_cell(S_NUMREGCONT, fp_db().sq_get("NUMREGCONT"), row);
if(dataregcont > TDate("20010101"))
sf.set_row_cell(S_DATAREGCONT, dataregcont, row);
// Valorizzo le colonne rimanenti o la tabella degli errori
if (forn_code >= 0)
{
sf.set_row_cell(S_FORNITORE, clifo.get(CLI_CODCF), row);
sf.set_row_cell(S_RAGSOC, clifo.get(CLI_RAGSOC), row);
}
else if (_list_fatt_err.find(denom) == _list_fatt_err.end())
{
TForn_err& forn_err = _list_fatt_err[denom];
forn_err.forn_code = forn_code;
forn_err.fatt_err = sf.items() - 1;
add_row_err_forn(forn_code, sf_err, denom);
}
if (tiposdi == "TD16" || tiposdi == "TD17" || tiposdi == "TD18" || tiposdi == "TD19" || tiposdi == "TD20")
{
sf.disable_row(row);
}
sf.set_row_cell(S_STATOPAIV, paa_codpaese, row);
sf.set_row_cell(S_PARIVA, paa_piva, row);
sf.set_row_cell(S_CODFISC, paa_codfisc, row);
sf.set_row_cell(S_ATTACH, fp_db().sq_get("ATTACHMENT")!="0", row);
sf.set_row_cell(S_RAGXML, denom, row);
sf.set_row_cell(S_NPROT, TProtocollo(fp_db().sq_get_int("ANNO_PROT"), fp_db().sq_get("TIPO_PROT"), fp_db().sq_get("NUM_PROT")).get_prot_str(), row);
sf.set_row_cell(S_NDOC, fp_db().sq_get("PZ_NUMERO"), row);
sf.set_row_cell(S_DATADOC, fp_db().sq_get_date("PZ_DATA"), row);
sf.set_row_cell(S_PROKEY, keys, row);
// Decido se mettere o meno il flag
sf.set_row_cell(S_FPPRO, forn_code == 0, row);
sf.set_row_cell(S_NUMREGCONT, fp_db().sq_get("NUMREGCONT"), row);
if (dataregcont > TDate("20010101"))
sf.set_row_cell(S_DATAREGCONT, dataregcont, row);
// Valorizzo le colonne rimanenti o la tabella degli errori
if (forn_code >= 0)
{
sf.set_row_cell(S_FORNITORE, clifo.get(CLI_CODCF), row);
sf.set_row_cell(S_RAGSOC, clifo.get(CLI_RAGSOC), row);
}
else if (_list_fatt_err.find(denom) == _list_fatt_err.end())
{
TForn_err& forn_err = _list_fatt_err[denom];
forn_err.forn_code = forn_code;
forn_err.fatt_err = sf.items() - 1;
add_row_err_forn(forn_code, sf_err, denom);
}
sf.set_row_cell(S_STATOPAIV, paa_codpaese, row);
sf.set_row_cell(S_PARIVA, paa_piva, row);
sf.set_row_cell(S_CODFISC, paa_codfisc, row);
sf.set_row_cell(S_ATTACH, fp_db().sq_get("ATTACHMENT") != "0", row);
sf.set_row_cell(S_RAGXML, denom, row);
sf.set_row_cell(S_NPROT, TProtocollo(fp_db().sq_get_int("ANNO_PROT"), fp_db().sq_get("TIPO_PROT"), fp_db().sq_get("NUM_PROT")).get_prot_str(), row);
sf.set_row_cell(S_NDOC, fp_db().sq_get("PZ_NUMERO"), row);
sf.set_row_cell(S_DATADOC, fp_db().sq_get_date("PZ_DATA"), row);
sf.set_row_cell(S_PROKEY, keys, row);
}
}
else
{
const int row = sf.set_row_cell(S_ANNO, fp_db().sq_get_int("ANNO"));
sf.set_row_cell(S_TIPODOCSDI, tiposdi, row);
sf.set_row_cell(S_NDOC, fp_db().sq_get("NUM_DOC"), row);
sf.set_row_cell(S_DATARIC, fp_db().sq_get_date("DATA_RIC"), row);
sf.set_row_cell(S_DATADOC, fp_db().sq_get_date("DATA_DOC"), row);
sf.set_row_cell(S_TOTDOC, fp_db().sq_get("TOT_DOC"), row);
sf.set_row_cell(S_TOTRIT, fppro_db().set_keys(keys).get_ritenute(), row);
sf.set_row_cell(S_IDSDI, id_sdi, row);
if (tiposdi == "TD16" || tiposdi == "TD17" || tiposdi == "TD18" || tiposdi == "TD19" || tiposdi == "TD20")
{
sf.disable_row(row);
}
// Decido se mettere o meno il flag
sf.set_row_cell(S_FPPRO, forn_code == 0, row);
sf.set_row_cell(S_NUMREGCONT, fp_db().sq_get("NUMREGCONT"), row);
if (dataregcont > TDate("20010101"))
sf.set_row_cell(S_DATAREGCONT, dataregcont, row);
// Valorizzo le colonne rimanenti o la tabella degli errori
if (forn_code >= 0)
{
sf.set_row_cell(S_FORNITORE, clifo.get(CLI_CODCF), row);
sf.set_row_cell(S_RAGSOC, clifo.get(CLI_RAGSOC), row);
}
else if (_list_fatt_err.find(denom) == _list_fatt_err.end())
{
TForn_err& forn_err = _list_fatt_err[denom];
forn_err.forn_code = forn_code;
forn_err.fatt_err = sf.items() - 1;
add_row_err_forn(forn_code, sf_err, denom);
}
sf.set_row_cell(S_STATOPAIV, paa_codpaese, row);
sf.set_row_cell(S_PARIVA, paa_piva, row);
sf.set_row_cell(S_CODFISC, paa_codfisc, row);
sf.set_row_cell(S_ATTACH, fp_db().sq_get("ATTACHMENT") != "0", row);
sf.set_row_cell(S_RAGXML, denom, row);
sf.set_row_cell(S_NPROT, TProtocollo(fp_db().sq_get_int("ANNO_PROT"), fp_db().sq_get("TIPO_PROT"), fp_db().sq_get("NUM_PROT")).get_prot_str(), row);
sf.set_row_cell(S_NDOC, fp_db().sq_get("PZ_NUMERO"), row);
sf.set_row_cell(S_DATADOC, fp_db().sq_get_date("PZ_DATA"), row);
sf.set_row_cell(S_PROKEY, keys, row);
}
}
}
void TPassive_mask::aggiungi_prot() const
@ -499,6 +556,7 @@ int TPassive_mask::find_fornitore(TLocalisamfile& clifo)
else if (paa_codpaese.full() && (piva = paa_piva).full()) // Se non c'è nell FPPRO ricerco con chiave 5
{
clifo.setkey(5);
clifo.put(CLI_TIPOCF, 'F');
clifo.put(CLI_STATOPAIV, paa_codpaese);
clifo.put(CLI_PAIV, paa_piva);
clifo.read() == NOERR ? found_clifo = found_piva : found_clifo = -1; // Se trovo con partita iva setto a 2