Patch level : 12.0
Files correlati : f90600.cpp f90600.h Commento: BUGFIX ABBINAMENTO MOVIMENTI DI ACQUISTO a seguito test ICSFIRPOO
This commit is contained in:
parent
86df7cd344
commit
f22933c42b
@ -577,8 +577,25 @@ void TControlloIntegrazioni_mask::associa() // todo: levare gli ultimi residui
|
||||
warning_box("Selezionare prima un movimento e una fattura elettronica.");
|
||||
return;
|
||||
}
|
||||
|
||||
int numreg = mov_sel->get_int(cid2index(F_CNUMREG));
|
||||
TRectype & mov = (TRectype &)cache().get(LF_MOV, numreg);
|
||||
|
||||
|
||||
TToken_string keys(fat_sel->get(cid2index(F_FPROKEYS)), ';');
|
||||
const bool ok = associa_int_ven(mov_sel->get_int(cid2index(F_CNUMREG)), keys);
|
||||
bool ok = true;
|
||||
char c = _tipo_doc_err;
|
||||
|
||||
//DAT CAPIRE COME TIRARE FUORI TIPO IVA ESTR
|
||||
if (_tipo_doc_err == 'A')
|
||||
{
|
||||
ok &= associa_int_acq(mov_sel->get_int(cid2index(F_CNUMREG)), keys);
|
||||
}
|
||||
else
|
||||
{
|
||||
ok &= associa_int_ven(mov_sel->get_int(cid2index(F_CNUMREG)), keys);
|
||||
}
|
||||
|
||||
if (ok)
|
||||
{
|
||||
// Tolgo il flag di in errore sul vettore in modo da rifare la fill e non venir piu' contato come da controllare
|
||||
@ -614,6 +631,29 @@ bool TControlloIntegrazioni_mask::associa_int_ven(const long numreg, TToken_stri
|
||||
return ok;
|
||||
}
|
||||
|
||||
bool TControlloIntegrazioni_mask::associa_int_acq(const long numreg, TToken_string key_fppro)
|
||||
{
|
||||
TRectype & mov = (TRectype &)cache().get(LF_MOV, numreg);
|
||||
bool ok = mov.full();
|
||||
ok &= key_fppro.full();
|
||||
|
||||
if (ok) // Scrivo sul movimento il riferimento al fppro
|
||||
{
|
||||
//mov.put(MOV_IDDOCSDI, fppro_db().get_numdoc());
|
||||
//mov.put(MOV_DATADOCSDI, fppro_db().get_datadoc());
|
||||
mov.put(MOV_KEYFPPRO, key_fppro);
|
||||
ok = mov.rewrite() == NOERR;
|
||||
}
|
||||
else // Se la scrittura sul db fallisce levo sul movimento il riferimento all'fppro
|
||||
{
|
||||
//mov.zero(MOV_IDDOCSDI);
|
||||
//mov.zero(MOV_DATADOCSDI);
|
||||
mov.zero(MOV_KEYFPPRO);
|
||||
mov.rewrite();
|
||||
}
|
||||
return ok;
|
||||
}
|
||||
|
||||
TToken_string* TControlloIntegrazioni_mask::selected_mov()
|
||||
{
|
||||
TSheet_field& movs = sfield(S_CONTROLLO);
|
||||
@ -666,7 +706,12 @@ void TControlloIntegrazioni_mask::fill_sheets()
|
||||
sf.force_update();
|
||||
// Fill fppro sheet
|
||||
|
||||
fill_pafw300_sheet();
|
||||
if (_tipo_doc_err == 'A')
|
||||
fill_fppro_sheet();
|
||||
else
|
||||
fill_pafw300_sheet();
|
||||
|
||||
|
||||
}
|
||||
|
||||
void TControlloIntegrazioni_mask::fill_pafw300_sheet(bool filter)
|
||||
@ -744,6 +789,81 @@ void TControlloIntegrazioni_mask::fill_pafw300_sheet(bool filter)
|
||||
sf.force_update();
|
||||
}
|
||||
|
||||
void TControlloIntegrazioni_mask::fill_fppro_sheet(bool filter)
|
||||
{
|
||||
TSheet_field& sf = sfield(S_FPPRO);
|
||||
|
||||
sf.reset();
|
||||
const char* order;
|
||||
switch (_ordin)
|
||||
{
|
||||
default:
|
||||
case 'D': order = "P7_DATA"; break;
|
||||
case 'N': order = "P7_NUMERO"; break;
|
||||
case 'F': order = "FORNITORE"; break;
|
||||
case 'R': order = "P2_ANADENOMIN"; break;
|
||||
case 'P': order = "P2_FISCIVACOD"; break;
|
||||
}
|
||||
TString query;
|
||||
query << "SELECT PQ_KEYPRGINVIO AS KEYPRGINVIO, PQ_KEYHEADERFATT AS KEYHEADERFATT, PQ_KEYBODYFATT AS KEYBODYFATT,\n" <<
|
||||
"PZ_TIPODOC AS TIPODOC, P7_DATA AS DATA, P7_NUMERO AS NUMDOC, PQ_IMPTOTDOC AS IMPTOTDOC,\n" <<
|
||||
"PZ_CLIFOR AS FORNITORE, " <<
|
||||
"P2_ANADENOMIN AS RAGSOC, 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" <<
|
||||
"JOIN FPPRO00F ON PQ_KEYPRGINVIO = PZ_KEYPRGINVIO AND PQ_KEYHEADERFATT = PZ_KEYHEADERFATT AND PQ_KEYBODYFATT = PZ_KEYBODYFATT\n" <<
|
||||
"WHERE PZ_DATA > '20211201'" << "\n";
|
||||
|
||||
if (filter)
|
||||
{
|
||||
if (!_flt_da_data.empty())
|
||||
query << "AND P7_DATA >= '" << _flt_da_data.date2ansi() << "'";
|
||||
else
|
||||
query << "AND P7_DATA >= '20010101'";
|
||||
|
||||
if (!_flt_a_data.empty())
|
||||
query << "AND P7_DATA <= '" << _flt_a_data.date2ansi() << "'\n";
|
||||
else
|
||||
query << "AND P7_DATA <= '" << today.date2ansi() << "'\n";
|
||||
|
||||
if (!_flt_tipodoc.empty())
|
||||
query << "AND PZ_TIPODOC = '" << _flt_tipodoc << "'\n";
|
||||
if (!_flt_numdoc.empty())
|
||||
query << "AND P7_NUMERO like '%" << _flt_numdoc << "%'\n";
|
||||
if (!_flt_tot_doc_da.is_zero())
|
||||
query << "AND PQ_IMPTOTDOC >= '" << _flt_tot_doc_da << "'\n";
|
||||
if (!_flt_tot_doc_a.is_zero())
|
||||
query << "AND PQ_IMPTOTDOC <= '" << _flt_tot_doc_a << "'\n";
|
||||
if (!_flt_ragsoc.empty())
|
||||
query << "AND P2_ANADENOMIN like '%" << _flt_ragsoc << "%'\n";
|
||||
if (!_flt_codforn.empty())
|
||||
query << "AND PZ_CLIFOR = '" << _flt_codforn << "'\n";
|
||||
if (!_flt_piva.empty())
|
||||
query << "AND P2_FISCIVACOD = '" << _flt_piva << "'\n";
|
||||
}
|
||||
|
||||
query << "ORDER BY " << order << " " << (_verso == 'A' ? "ASC" : "DESC") << "\n";
|
||||
fp_db().sq_set_exec(query, false);
|
||||
|
||||
for (bool ok = fp_db().sq_next(); ok; ok = fp_db().sq_next())
|
||||
{
|
||||
const int row = sf.set_row_cell(F_FTIPODOC, fp_db().sq_get("TIPODOC"));
|
||||
|
||||
sf.set_row_cell(F_FDATA, fp_db().sq_get_date("DATA"), row);
|
||||
sf.set_row_cell(F_FNUMDOC, fp_db().sq_get("NUMDOC"), row);
|
||||
sf.set_row_cell(F_FIMPTOTDOC, fp_db().sq_get("IMPTOTDOC"), row);
|
||||
sf.set_row_cell(F_FFORNITORE, fp_db().sq_get("CLIENTE"), row);
|
||||
sf.set_row_cell(F_FRAGSOC, fp_db().sq_get("RAGSOC"), row);
|
||||
sf.set_row_cell(F_FSTATOPIVA, fp_db().sq_get("STATOPIVA"), row);
|
||||
sf.set_row_cell(F_FPIVA, fp_db().sq_get("PIVA"), row);
|
||||
TString s = fp_db().sq_get("KEYPRGINVIO");
|
||||
s << ";" << fp_db().sq_get("KEYHEADERFATT") << ";" << fp_db().sq_get("KEYBODYFATT");
|
||||
sf.set_row_cell(F_FPROKEYS, s, row);
|
||||
|
||||
}
|
||||
sf.force_update();
|
||||
}
|
||||
|
||||
void TControlloIntegrazioni_mask::open_win_filter()
|
||||
{
|
||||
TMask& m = get_win_filter();
|
||||
@ -847,7 +967,10 @@ bool TControlloIntegrazioni_mask::on_field_event(TOperable_field& o, TField_even
|
||||
if (e == fe_button)
|
||||
{
|
||||
open_win_filter();
|
||||
fill_pafw300_sheet(true);
|
||||
if (_tipo_doc_err == 'V')
|
||||
fill_pafw300_sheet(true);
|
||||
else
|
||||
fill_fppro_sheet(true);
|
||||
field(B_FILTER_OFF).enable();
|
||||
field(B_FILTER_ON).disable();
|
||||
}
|
||||
@ -855,7 +978,10 @@ bool TControlloIntegrazioni_mask::on_field_event(TOperable_field& o, TField_even
|
||||
case B_FILTER_ON:
|
||||
if (e == fe_button)
|
||||
{
|
||||
fill_pafw300_sheet(true);
|
||||
if (_tipo_doc_err == 'V')
|
||||
fill_pafw300_sheet(true);
|
||||
else
|
||||
fill_fppro_sheet(true);
|
||||
field(B_FILTER_OFF).enable();
|
||||
field(B_FILTER_ON).disable();
|
||||
}
|
||||
@ -863,7 +989,10 @@ bool TControlloIntegrazioni_mask::on_field_event(TOperable_field& o, TField_even
|
||||
case B_FILTER_OFF:
|
||||
if (e == fe_button)
|
||||
{
|
||||
fill_pafw300_sheet(false);
|
||||
if (_tipo_doc_err == 'V')
|
||||
fill_pafw300_sheet(false);
|
||||
else
|
||||
fill_fppro_sheet(false);
|
||||
field(B_FILTER_ON).enable();
|
||||
field(B_FILTER_OFF).disable();
|
||||
}
|
||||
|
@ -133,11 +133,13 @@ class TControlloIntegrazioni_mask : public TAutomask
|
||||
|
||||
void associa();
|
||||
bool associa_int_ven(const long numreg, TToken_string key_paf);
|
||||
bool associa_int_acq(const long numreg, TToken_string key_fppro);
|
||||
//void conferma_esclusi() const;
|
||||
|
||||
TArray& import_error_list();
|
||||
void fill_sheets();
|
||||
void fill_pafw300_sheet(bool filter = false);
|
||||
void fill_fppro_sheet(bool filter = false);
|
||||
TMask& get_win_filter();
|
||||
void open_win_filter();
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user