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.");
|
warning_box("Selezionare prima un movimento e una fattura elettronica.");
|
||||||
return;
|
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)), ';');
|
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)
|
if (ok)
|
||||||
{
|
{
|
||||||
// Tolgo il flag di in errore sul vettore in modo da rifare la fill e non venir piu' contato come da controllare
|
// 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;
|
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()
|
TToken_string* TControlloIntegrazioni_mask::selected_mov()
|
||||||
{
|
{
|
||||||
TSheet_field& movs = sfield(S_CONTROLLO);
|
TSheet_field& movs = sfield(S_CONTROLLO);
|
||||||
@ -666,7 +706,12 @@ void TControlloIntegrazioni_mask::fill_sheets()
|
|||||||
sf.force_update();
|
sf.force_update();
|
||||||
// Fill fppro sheet
|
// 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)
|
void TControlloIntegrazioni_mask::fill_pafw300_sheet(bool filter)
|
||||||
@ -744,6 +789,81 @@ void TControlloIntegrazioni_mask::fill_pafw300_sheet(bool filter)
|
|||||||
sf.force_update();
|
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()
|
void TControlloIntegrazioni_mask::open_win_filter()
|
||||||
{
|
{
|
||||||
TMask& m = get_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)
|
if (e == fe_button)
|
||||||
{
|
{
|
||||||
open_win_filter();
|
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_OFF).enable();
|
||||||
field(B_FILTER_ON).disable();
|
field(B_FILTER_ON).disable();
|
||||||
}
|
}
|
||||||
@ -855,7 +978,10 @@ bool TControlloIntegrazioni_mask::on_field_event(TOperable_field& o, TField_even
|
|||||||
case B_FILTER_ON:
|
case B_FILTER_ON:
|
||||||
if (e == fe_button)
|
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_OFF).enable();
|
||||||
field(B_FILTER_ON).disable();
|
field(B_FILTER_ON).disable();
|
||||||
}
|
}
|
||||||
@ -863,7 +989,10 @@ bool TControlloIntegrazioni_mask::on_field_event(TOperable_field& o, TField_even
|
|||||||
case B_FILTER_OFF:
|
case B_FILTER_OFF:
|
||||||
if (e == fe_button)
|
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_ON).enable();
|
||||||
field(B_FILTER_OFF).disable();
|
field(B_FILTER_OFF).disable();
|
||||||
}
|
}
|
||||||
|
@ -133,11 +133,13 @@ class TControlloIntegrazioni_mask : public TAutomask
|
|||||||
|
|
||||||
void associa();
|
void associa();
|
||||||
bool associa_int_ven(const long numreg, TToken_string key_paf);
|
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;
|
//void conferma_esclusi() const;
|
||||||
|
|
||||||
TArray& import_error_list();
|
TArray& import_error_list();
|
||||||
void fill_sheets();
|
void fill_sheets();
|
||||||
void fill_pafw300_sheet(bool filter = false);
|
void fill_pafw300_sheet(bool filter = false);
|
||||||
|
void fill_fppro_sheet(bool filter = false);
|
||||||
TMask& get_win_filter();
|
TMask& get_win_filter();
|
||||||
void open_win_filter();
|
void open_win_filter();
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user