Merge branch 'R12.00.1244' of http://10.65.20.33/sirio/CAMPO/campo into R12.00.1244

This commit is contained in:
Alessandro Bonazzi 2023-06-05 14:49:36 +02:00
commit 9fbb238cc7
5 changed files with 158 additions and 5 deletions

3
cd/test/f91264.txt Normal file
View File

@ -0,0 +1,3 @@
f90.exe
Risolto bug che non permetteva di abbinare correttamente a mano i documenti di acquisto per l'archiviazione delle integrazioni

19
cd/test/f91264a.ini Normal file
View File

@ -0,0 +1,19 @@
[Main]
Demo=0
[f90]
File(0) = f90.exe|X
Patch = 1264
Versione = 21511200
[f9]
Data = 05-06-2023
Descrizione = Archiviazione Sostitutiva
Dischi = 1
Moduli = fp
OEM =
Patch = 1264
PostProcess =
PreProcess =
Versione = 21511200

BIN
cd/test/f91264a1.zip Normal file

Binary file not shown.

View File

@ -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();
} }

View File

@ -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();