Patch level : 12.0 972

Files correlati     : f90.exe d181.des f181.dir/.trr f9ProspIntegr.rep masks f90104.sql
Commento            :
- Rimosso controllo vendite in ogni caso. Incompatibilita' con diverse situazioni tra cui note di credito interne che non sono fatture elettroniche.
- Rimosso flag check vendite e il suo utilizzo nel codice.
- Aggiornamento stato estrazione solo dopo scrittura f9iva.
- Migliorata e resa piu' sicura query per iva aggiungendo tipi diversi e controllo lunghezza colonna.
- Corretti nomi campi, che venivano invertiti IVA_ANNPROT e IVA_NUMPROT.
- Aggiunto controllo in apertura controllo estrazione solo se il pacchetto e' in errore diag. gest.
- Spostata in una classe separata la maschera per l'apertura del pacchetto (Apri estr.).
- Corretta modifica f9wa rimaneva vuoto il record in alcuni casi.
- Aggiunta possibilita' di esclusione movimenti dall'Apri estr.
- Aggiunto controllo esistenza categorie documentali, caricamento cat. doc. di default e controllo tipi documento duplicati.
- Aggiunta colonna a F9DRT in caso mancasse (Dovuta a creazione da fp).
- Aggiunta funzione provvisoria per calcolo somma imponibili e imposte da rmoviva.
- Aggiunto filtro datadoc per sheet fatture elettorniche (FPPRO) nel controllo estrazione: precarica automaticamente minimo e massimo secondo i movimenti in errore, e aggiunti i cambi nella finestra di ordinamento per impostare le date a mano.
- Modificato messaggio dopo importazione categorie di default.
This commit is contained in:
Simone Palacino 2020-07-02 17:26:42 +02:00
parent 7ec244bd1f
commit 957d697dc9
8 changed files with 139 additions and 107 deletions

View File

@ -162,7 +162,7 @@ int TEstrai_mask::estrai()
int numreg = recset_get_int(mov, MOV_NUMREG);
TToken_string elab_f9(recset_get_string(mov, MOV_ELABF9), ';'); // Stringa del campo elaborazione f9 nel file mov
const bool escluso = !(elab_f9.items() == 3 && elab_f9.get(2)[0] != 'X' || elab_f9.empty());
const bool escluso = !(elab_f9.items() == 3 && elab_f9.get(2)[0] != 'X' || elab_f9.empty());
const TCausale caus(recset_get_string(mov, MOV_CODCAUS, 3), TDate(recset_get_string(mov, MOV_DATAREG)).year());
const bool stampato = recset_get_bool(mov, MOV_REGST);
const TString& numdoc = recset_get_string(mov, MOV_NUMDOC);
@ -178,17 +178,17 @@ int TEstrai_mask::estrai()
// Creo il movimento da inserire
movimento_t t;
t.err = false;
t.numreg = recset_get_int(mov, MOV_NUMREG);
t.datareg = recset_get_date(mov, MOV_DATAREG);
t.datadoc = recset_get_date(mov, MOV_DATADOC);
t.codcaus = recset_get_string(mov, MOV_CODCAUS, 3);
t.meseliq = recset_get_int(mov, MOV_MESELIQ);
t.numdoc = recset_get_string(mov, MOV_NUMDOC);
t.tot = recset_get_real(mov, MOV_TOTDOC) + recset_get_real(mov, MOV_RITFIS) + recset_get_real(mov, MOV_RITSOC);
t.codcf = recset_get_int(mov, MOV_CODCF);
t.numreg = recset_get_int (mov, MOV_NUMREG);
t.datareg = recset_get_date (mov, MOV_DATAREG);
t.datadoc = recset_get_date (mov, MOV_DATADOC);
t.codcaus = recset_get_string (mov, MOV_CODCAUS, 3);
t.meseliq = recset_get_int (mov, MOV_MESELIQ);
t.numdoc = recset_get_string (mov, MOV_NUMDOC);
t.tot = recset_get_real (mov, MOV_TOTDOC) + recset_get_real(mov, MOV_RITFIS) + recset_get_real(mov, MOV_RITSOC);
t.codcf = recset_get_int (mov, MOV_CODCF);
t.ragsoc = clifo.read() == NOERR ? clifo.get(CLI_RAGSOC) : " ";
t.reg_protiva = TString(recset_get_string(mov, MOV_REG)) << "/" << recset_get_string(mov, MOV_PROTIVA);
t.descr = recset_get_string(mov, MOV_DESCR);
t.descr = recset_get_string (mov, MOV_DESCR);
if (escluso)
{
t.estratto = false;
@ -265,12 +265,12 @@ bool TEstrai_mask::estrai_handler(TMask_field& f, KEY key)
return true;
}
void TEstrai_mask::enable_fields(bool en)
void TEstrai_mask::enable_fields(const bool en)
{
enable(ES_DATAINI, en);
enable(ES_DATAEND, en);
enable(ES_DATAINI, en);
enable(ES_DATAEND, en);
enable(ES_FLAGPROV, en);
enable(ES_TIPODOC, en);
enable(ES_TIPODOC, en);
}
bool TEstrai_mask::enable_handler(TMask_field& f, KEY key)
@ -307,19 +307,19 @@ TEstrai_mask::TEstrai_mask() : TMask("Estrazione", 1, 60, 16), _estrazione(nullp
add_button_tool(DLG_NULL, "", 0);
add_button_tool(DLG_QUIT, "Esci", TOOL_QUIT);
add_groupbox(ES_DATEGROUP, 0, "Inserire periodo per estrazione:", 1, 0, 59, 3, "");
add_date(ES_DATAINI, 0, "dal", 4, 1, "");
add_date(ES_DATAEND, 0, " al", 33, 1, "");
add_groupbox(ES_FLAGGROUP, 0, "Selezionare tipo di estrazione:", 1, 3, 28, 3, "");
add_list(ES_FLAGPROV, 0, "Flag provvisorio", 2, 4, 1, "", "P|D", "Provvisorio|Definitivo");
add_groupbox(ES_TIPOGROUP, 0, "Selezionare documenti da estrarre:", 32, 3, 28, 3, "");
add_list(ES_TIPODOC, 0, "Tipi documento", 33, 4, 1, "", "A|V", "Acquisti|Vendite");
add_groupbox(ES_DESCGROUP, 0, "Inserire descrizione estrazione:", 1, 6, 59, 3, "");
add_string(ES_DESCR, 0, "Descrizione", 2, 7, 250, "", 40);
add_groupbox(ES_DATEGROUP, 0, "Inserire periodo per estrazione:", 1, 0, 59, 3, "");
add_date (ES_DATAINI, 0, "dal", 4, 1, "");
add_date (ES_DATAEND, 0, " al", 33, 1, "");
add_groupbox(ES_FLAGGROUP, 0, "Selezionare tipo di estrazione:", 1, 3, 28, 3, "");
add_list (ES_FLAGPROV, 0, "Flag provvisorio", 2, 4, 1, "", "P|D", "Provvisorio|Definitivo");
add_groupbox(ES_TIPOGROUP, 0, "Selezionare documenti da estrarre:", 32, 3, 28, 3, "");
add_list (ES_TIPODOC, 0, "Tipi documento", 33, 4, 1, "", "A|V", "Acquisti|Vendite");
add_groupbox(ES_DESCGROUP, 0, "Inserire descrizione estrazione:", 1, 6, 59, 3, "");
add_string (ES_DESCR, 0, "Descrizione", 2, 7, 250, "", 40);
TMask::set_handler(DLG_ELABORA, estrai_handler);
TMask::set_handler(ES_DATAINI, dataini_handler);
TMask::set_handler(ES_DATAEND, dataend_handler);
TMask::set_handler(ES_DATAINI, dataini_handler);
TMask::set_handler(ES_DATAEND, dataend_handler);
TDate dt(TODAY); dt.set_day(1); dt.set_month(1);
set(ES_DATAINI, dt);
@ -719,11 +719,10 @@ void TControllo_mask::conferma_esclusi() const
vector<TToken_string>& TControllo_mask::import_error_list()
{
static vector<TToken_string> controllo_mov;
controllo_mov.clear();
_controllo_mov.clear();
TF9_dberr dberr;
_tipo_doc_err = TF9_dberr::get_errori(_cod_soc, _id_estr, controllo_mov);
return controllo_mov;
_tipo_doc_err = TF9_dberr::get_errori(_cod_soc, _id_estr, _controllo_mov);
return _controllo_mov;
}
void TControllo_mask::fill()
@ -732,7 +731,8 @@ void TControllo_mask::fill()
sf.hide();
sf.destroy();
_movs = !_is_escluso ? import_error_list() : f9_app()._esclusi; // Prendo da _esclusi se sto aprendo il controllo dalla maschera degli esclusi
_datada = EOTIME;
_dataa = 0L;
for (auto it = _movs.begin(); it != _movs.end(); ++it)
{
TToken_string& row = sf.row(-1);
@ -740,6 +740,11 @@ void TControllo_mask::fill()
{
row = *it;
row[0] = (char&)" ";
TDate d = row.get(3);
if (d < _datada)
_datada = d;
if (d > _dataa)
_dataa = d;
/*if (!_is_escluso && _tipo_doc_err == 'A' || _is_escluso && f9_app().get_tipoiva_escl() == iva_acquisti)
row.add("", cid2index(F_CESCLUDI));
else
@ -780,7 +785,7 @@ void TControllo_mask::fill_fppro_sheet() const
"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_NUMREGCONT = '0' AND PZ_DATAREGCONT = '2001-01-01'\n" <<
"WHERE PZ_NUMREGCONT = '0' AND PZ_DATAREGCONT = '2001-01-01' AND P7_DATA >= '" << _datada.date2ansi() << "' AND P7_DATA <= '" << _dataa.date2ansi() << "'\n" <<
"ORDER BY " << order << " " << (_verso == 'A' ? "ASC" : "DESC") << "\n";
fp_db().sq_set_exec(query, false);
@ -807,21 +812,28 @@ TMask& TControllo_mask::get_win_order()
if (m == nullptr)
{
m = new TMask("Configurazione Archiviazione Sostitutiva", 1, 60, 10);
m = new TMask("Configurazione Archiviazione Sostitutiva", 1, 60, 16);
// TOOLBAR
m->add_button_tool(DLG_OK, "Conferma", TOOL_OK);
m->add_button_tool(DLG_NULL, "", 0);
m->add_button_tool(DLG_QUIT, "Esci", TOOL_QUIT);
// Ordinatori
m->add_radio(F_ORDER, 0, "Ordina per:", 1, 0, 59, "D|N|F|R|P", "DATA|NUMDOC|FORNITORE|RAGSOC|PIVA", "Z");
m->add_radio(F_VERSO, 0, "Verso:", 1, 3, 59, "A|D", "Crescente|Decrescente", "Z");
m->add_radio(F_ORDER, 0, "@BOrdina per:", 1, 0, 59, "D|N|F|R|P", "DATA|NUMDOC|FORNITORE|RAGSOC|PIVA", "Z");
m->add_radio(F_VERSO, 0, "@BVerso:", 1, 3, 59, "A|D", "Crescente|Decrescente", "Z");
// Filtro date
m->add_groupbox (F_ORDDATAG, 0, "@BFiltra per data documento", 1, 6, 59, 3);
m->add_date (F_ORDDATADA, 0, "dal", 2, 7);
m->add_date (F_ORDDATAA, 0, " al", 22, 7);
//m->set_handler(DLG_OK, save_conf_handler);
_ordin = ini_get_string(CONFIG_DITTA, INI_PAR_MOD, "ORDINAM", "D")[0];
_verso = ini_get_string(CONFIG_DITTA, INI_PAR_MOD, "VERSO", "A")[0];
m->set(F_ORDER, &_ordin);
m->set(F_VERSO, &_verso);
_verso = ini_get_string(CONFIG_DITTA, INI_PAR_MOD, "VERSO", "A")[0];
m->set(F_ORDER, &_ordin);
m->set(F_VERSO, &_verso);
m->set(F_ORDDATADA, _datada);
m->set(F_ORDDATAA, _dataa);
}
return *m;
}
@ -829,11 +841,15 @@ TMask& TControllo_mask::get_win_order()
void TControllo_mask::open_win_order()
{
TMask& m = get_win_order();
m.set(F_ORDDATADA, _datada);
m.set(F_ORDDATAA, _dataa);
m.run();
_ordin = m.get(F_ORDER)[0];
_verso = m.get(F_VERSO)[0];
ini_set_string(CONFIG_DITTA, INI_PAR_MOD, "ORDINAM", &_ordin);
ini_set_string(CONFIG_DITTA, INI_PAR_MOD, "VERSO", &_verso);
_ordin = m.get(F_ORDER)[0];
_verso = m.get(F_VERSO)[0];
_datada = m.get_date(F_ORDDATADA);
_dataa = m.get_date(F_ORDDATAA);
ini_set_string(CONFIG_DITTA, INI_PAR_MOD, "ORDINAM", &_ordin);
ini_set_string(CONFIG_DITTA, INI_PAR_MOD, "VERSO", &_verso);
}
TToken_string* TControllo_mask::selected_mov()

View File

@ -165,6 +165,7 @@ public:
class TControllo_mask : public TAutomask
{
vector<TToken_string> _controllo_mov; // Usare import_error_list().
char _ordin;
char _verso;
int _selected_mov;
@ -174,6 +175,8 @@ class TControllo_mask : public TAutomask
TString _id_estr;
char _tipo_doc_err{};
vector<TToken_string> _movs;
TDate _datada;
TDate _dataa;
void associa();
void conferma_esclusi() const;

View File

@ -13,6 +13,9 @@
// Cambi maschera ordinamento sheet FPPRO
#define F_ORDER 301
#define F_VERSO 302
#define F_ORDDATAG 303
#define F_ORDDATADA 304
#define F_ORDDATAA 305
#define F_CSEL 101
#define F_CNUMREG 102

View File

@ -10,41 +10,35 @@
TString escape(const char* str);
class TNew_annesso_msk : public TMask
{
public:
void edit_mode(const bool edit = true) { enable(101, !edit); }
void fill_field(const TString& nome_ann, const TString& descr, const TString& tipo_ann, const bool obblig)
{ set(101, nome_ann); set(102, descr); set(103, tipo_ann); set(104, obblig); }
TNew_annesso_msk(const char* title) : TMask(title, 1, 78, 13)
{
add_button_tool (DLG_OK, "~Conferma", TOOL_OK);
add_button_tool (DLG_NULL, "", 0);
add_button_tool (DLG_CANCEL, "~Annulla", TOOL_CANCEL);
add_string (101, 0, "Nome tipo annesso:", 1, 1, 10);
add_string (102, 0, "Descrizione: ", 1, 2, 30);
add_list (103, 0, "Tipologia annesso:", 1, 3, 21, "", "DC|RC", "Annesso Cartaceo|Prospetto Rev. Charge");
add_boolean (104, 0, "Obbligatorio: ", 1, 4);
}
};
///////////////////////////////////////////////////////////////
// TF9_categorie_doc_msk
///////////////////////////////////////////////////////////////
class TF9_categorie_doc_msk : public TAutomask
{
class TNew_annesso_msk : public TMask
{
public:
void edit_mode(const bool edit = true)
{
enable(101, !edit);
}
void fill_field(const TString& nome_ann, const TString& descr, const TString& tipo_ann, const bool obblig)
{
set(101, nome_ann);
set(102, descr);
set(103, tipo_ann);
set(104, obblig);
}
TNew_annesso_msk(const char* title) : TMask(title, 1, 78, 13)
{
add_button_tool(DLG_OK, "~Conferma", TOOL_OK);
add_button_tool(DLG_NULL, "", 0);
add_button_tool(DLG_CANCEL, "~Annulla", TOOL_CANCEL);
add_string (101, 0, "Nome tipo annesso:", 1, 1, 10);
add_string (102, 0, "Descrizione: ", 1, 2, 30);
add_list (103, 0, "Tipologia annesso:", 1, 3, 21, "", "DC|RC", "Annesso Cartaceo|Prospetto Rev. Charge");
add_boolean (104, 0, "Obbligatorio: ", 1, 4);
}
};
std::shared_ptr<TArray_sheet> _annessi_sheet;
TRecord_categorie _categorie_doc;
bool _mod_precaricate;
bool on_field_event(TOperable_field& o, TField_event e, long jolly) override;
bool on_key(KEY key) override;
@ -61,7 +55,9 @@ class TF9_categorie_doc_msk : public TAutomask
public:
static void correct_spell_catdoc(TString& catdoc);
TF9_categorie_doc_msk() : TAutomask("f90200a") { load_table(); }
explicit TF9_categorie_doc_msk(bool precarica)
: TAutomask("f90200a"), _mod_precaricate(precarica)
{ load_table(); }
};
bool TF9_categorie_doc_msk::on_field_event(TOperable_field& o, TField_event e, long jolly)
@ -164,8 +160,10 @@ void TF9_categorie_doc_msk::check_duplicate_tipodoc() const
}
}
}
if (!dup.empty())
if (!dup.empty() && !_mod_precaricate)
warning_box("Ci sono molteplici categorie con lo stesso tipo documento.\nPer una corretta assegnazione della categoria doc. si consiglia\ndi specificare il tipo di causale o rimuovere i duplicati.");
if (_mod_precaricate)
message_box("Si prega di completare la tabella per la riga di fattura acquisti\nreverse charge andando a inserire il corrispondente codice causale.");
}
void TF9_categorie_doc_msk::delete_annesso(const TString& catdoc_padre)
@ -308,10 +306,9 @@ void TF9_categorie_doc_msk::correct_spell_catdoc(TString& catdoc)
class TF9_categorie_doc : public TSkeleton_application
{
TString _log;
void add_error_log(TString& query);
static void precarica_tabella_default();
void main_loop() override;
void add_error_log(TString& query);
static bool precarica_tabella_default();
void main_loop() override;
public:
TF9_categorie_doc() = default;
};
@ -322,11 +319,11 @@ void TF9_categorie_doc::add_error_log(TString& query)
_log << "\n" << query << "\n" << fp_db().sq_get_text_error() << "\n" << fp_db().sq_get_string_error();
}
void TF9_categorie_doc::precarica_tabella_default()
bool TF9_categorie_doc::precarica_tabella_default()
{
TCategorie_doc preload;
if (preload.get_array_rows().items() == 0 ||
noyes_box("Attenzione questa procedura cancellera' le categorie documentali gia' presenti\ne carichera' quelle di default. Continuare?"))
noyes_box("Attenzione questa procedura cancellera' le categorie documentali gia' presenti\ne carichera' quelle di default. Si desidera continuare?"))
{
preload.remove_all();
preload.reload();
@ -339,15 +336,18 @@ void TF9_categorie_doc::precarica_tabella_default()
preload.add_categoria("BOLLADOGAC", "Bolla doganale", "FTA", "TD01", "", "BD");
preload.add_annesso("FATTREV", "INTREVC", "Prosp. integr. rev.ch.", "RC", true);
return true;
}
return false;
}
void TF9_categorie_doc::main_loop()
{
bool precarica = false;
if(argc() > 2 && argv()[2][0] == '-' && argv()[2][1] == 'd')
precarica_tabella_default();
precarica = precarica_tabella_default();
TF9_categorie_doc_msk msk; // Il costruttore carica subito la tabella...
TF9_categorie_doc_msk msk(precarica); // Il costruttore carica subito la tabella...
while(msk.run() == K_ENTER)
{
TSheet_field& sf = msk.sfield(S_CLASSDOC);

View File

@ -146,33 +146,37 @@ void TF9_test_app::main_loop()
}
}
TF9_doccart doccart;
TString old_numreg; old_numreg << 95752;
TFilename doc;
TString_array list_annessi;
vector<annesso_t> vect_annessi;
//TFilename f_doc; f_doc << "asd";
//bool annesso;
//bool doc_ae = doccart.doc_already_exists(f_doc, old_numreg, annesso);
bool movdoc = doccart.mov2doc(old_numreg, doc);
TString msg("Error retriving filename from reg n. "); msg << old_numreg;
CHECK(movdoc && TString(doc.name()) == "ve1300_F01_0000000011_0002237.pdf", (const char*)msg);
if (false)
{
TF9_doccart doccart;
TString old_numreg; old_numreg << 95752;
TFilename doc;
TString_array list_annessi;
vector<annesso_t> vect_annessi;
//TFilename f_doc; f_doc << "asd";
//bool annesso;
//bool doc_ae = doccart.doc_already_exists(f_doc, old_numreg, annesso);
bool movdoc = doccart.mov2doc(old_numreg, doc);
TString msg("Error retriving filename from reg n. "); msg << old_numreg;
CHECK(movdoc && TString(doc.name()) == "ve1300_F01_0000000011_0002237.pdf", (const char*)msg);
old_numreg.cut(0) << 95222; // Doppio annesso
bool movann = doccart.mov2listann(old_numreg, list_annessi);
//CHECK(movann && list_annessi.items() == 2, "Error retriving list annessi from numreg %s", (const char*)old_numreg);
bool movannvect = doccart.mov2listann_vect(old_numreg, vect_annessi);
//CHECK(movannvect && vect_annessi.size() == 2, "Error retriving vector annessi from numreg %s", (const char*)old_numreg);
old_numreg.cut(0) << 95222; // Doppio annesso
bool movann = doccart.mov2listann(old_numreg, list_annessi);
//CHECK(movann && list_annessi.items() == 2, "Error retriving list annessi from numreg %s", (const char*)old_numreg);
bool movannvect = doccart.mov2listann_vect(old_numreg, vect_annessi);
//CHECK(movannvect && vect_annessi.size() == 2, "Error retriving vector annessi from numreg %s", (const char*)old_numreg);
/*TCategorie_doc::annesso annesso;
annesso.catdoc = "INTEGREV";
annesso.catdocpadre = "FATTREV";
annesso.descr = "Integrazione Rev. Charge";
annesso.opcee = "RC";
annesso.obblig = true;
TEstrazione::make_prosp_int_revc(96951, annesso);*/
/*TCategorie_doc::annesso annesso;
annesso.catdoc = "INTEGREV";
annesso.catdocpadre = "FATTREV";
annesso.descr = "Integrazione Rev. Charge";
annesso.opcee = "RC";
annesso.obblig = true;
TEstrazione::make_prosp_int_revc(96951, annesso);*/
}
if(false)
{
TF9Prospetto_integr prosp;
if (prosp("96951", "96952"))
@ -188,6 +192,12 @@ void TF9_test_app::main_loop()
}
}
TCategorie_doc::annesso annesso;
if(categorie_doc().get_ann("INTREVC", annesso))
TEstrazione::make_prosp_int_revc(153480, annesso);
message_box("TESTS COMPLETELY SUCCESSFUL");
}

View File

@ -1365,12 +1365,12 @@ void TCategorie_doc::del_annesso(const TString& catdoc, const char* catdoc_ann)
}
}
bool TCategorie_doc::get_ann(const TString& catann, annesso& annesso)
bool TCategorie_doc::get_ann(const TString& catann, _Out_ annesso& _Annesso_out)
{
const map<TString, TCategorie_doc::annesso>::iterator it = _rows_annessi.find(catann);
const map<TString, annesso>::iterator it = _rows_annessi.find(catann);
if (it != _rows_annessi.end())
{
annesso = it->second;
_Annesso_out = it->second;
return true;
}
return false;

View File

@ -180,7 +180,7 @@ public:
void add_categoria(const TString& catdoc, const TString& descr, const TString& class_sost,
const TString& caus_sost, const TString& causcont, const TString& tipocaus);
void del_annesso(const TString& catdoc, const char* catdoc_ann);
bool get_ann(const TString& catann, annesso& annesso);
bool get_ann(const TString& catann, _Out_ annesso& _Annesso_out);
TString_array get_array_ann(const TString& catdoc);
TString_array get_array_rows(bool traduci = false);
std::shared_ptr<classe_doc> get_classe_doc(const TString& catdoc);
@ -541,7 +541,7 @@ class TProspetto_recset final : public TSQL_recordset
void precarica_tabelle();
public:
void get_sum_imponibile_imposta(const char* numreg_ven, real& s_imponibili, real& s_imposte);
static void get_sum_imponibile_imposta(const char* numreg_ven, real& s_imponibili, real& s_imposte);
TProspetto_recset(const char* numreg_acq, const char* numreg_ven);
~TProspetto_recset();

View File

@ -524,7 +524,7 @@ bool TF9Prospetto_integr::operator()(const char* numreg_acq, const char* numreg_
TProspetto_recset* _prosp_rs = new TProspetto_recset(numreg_acq, numreg_ven);
_items = _prosp_rs->items();
_rep.set_recordset(&*_prosp_rs);
_rep.set_recordset(_prosp_rs);
_book.add(_rep);
}
else