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:
parent
7ec244bd1f
commit
957d697dc9
@ -162,7 +162,7 @@ int TEstrai_mask::estrai()
|
|||||||
int numreg = recset_get_int(mov, MOV_NUMREG);
|
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
|
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 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 bool stampato = recset_get_bool(mov, MOV_REGST);
|
||||||
const TString& numdoc = recset_get_string(mov, MOV_NUMDOC);
|
const TString& numdoc = recset_get_string(mov, MOV_NUMDOC);
|
||||||
@ -178,17 +178,17 @@ int TEstrai_mask::estrai()
|
|||||||
// Creo il movimento da inserire
|
// Creo il movimento da inserire
|
||||||
movimento_t t;
|
movimento_t t;
|
||||||
t.err = false;
|
t.err = false;
|
||||||
t.numreg = recset_get_int(mov, MOV_NUMREG);
|
t.numreg = recset_get_int (mov, MOV_NUMREG);
|
||||||
t.datareg = recset_get_date(mov, MOV_DATAREG);
|
t.datareg = recset_get_date (mov, MOV_DATAREG);
|
||||||
t.datadoc = recset_get_date(mov, MOV_DATADOC);
|
t.datadoc = recset_get_date (mov, MOV_DATADOC);
|
||||||
t.codcaus = recset_get_string(mov, MOV_CODCAUS, 3);
|
t.codcaus = recset_get_string (mov, MOV_CODCAUS, 3);
|
||||||
t.meseliq = recset_get_int(mov, MOV_MESELIQ);
|
t.meseliq = recset_get_int (mov, MOV_MESELIQ);
|
||||||
t.numdoc = recset_get_string(mov, MOV_NUMDOC);
|
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.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.codcf = recset_get_int (mov, MOV_CODCF);
|
||||||
t.ragsoc = clifo.read() == NOERR ? clifo.get(CLI_RAGSOC) : " ";
|
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.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)
|
if (escluso)
|
||||||
{
|
{
|
||||||
t.estratto = false;
|
t.estratto = false;
|
||||||
@ -265,12 +265,12 @@ bool TEstrai_mask::estrai_handler(TMask_field& f, KEY key)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void TEstrai_mask::enable_fields(bool en)
|
void TEstrai_mask::enable_fields(const bool en)
|
||||||
{
|
{
|
||||||
enable(ES_DATAINI, en);
|
enable(ES_DATAINI, en);
|
||||||
enable(ES_DATAEND, en);
|
enable(ES_DATAEND, en);
|
||||||
enable(ES_FLAGPROV, en);
|
enable(ES_FLAGPROV, en);
|
||||||
enable(ES_TIPODOC, en);
|
enable(ES_TIPODOC, en);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TEstrai_mask::enable_handler(TMask_field& f, KEY key)
|
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_NULL, "", 0);
|
||||||
add_button_tool(DLG_QUIT, "Esci", TOOL_QUIT);
|
add_button_tool(DLG_QUIT, "Esci", TOOL_QUIT);
|
||||||
|
|
||||||
add_groupbox(ES_DATEGROUP, 0, "Inserire periodo per estrazione:", 1, 0, 59, 3, "");
|
add_groupbox(ES_DATEGROUP, 0, "Inserire periodo per estrazione:", 1, 0, 59, 3, "");
|
||||||
add_date(ES_DATAINI, 0, "dal", 4, 1, "");
|
add_date (ES_DATAINI, 0, "dal", 4, 1, "");
|
||||||
add_date(ES_DATAEND, 0, " al", 33, 1, "");
|
add_date (ES_DATAEND, 0, " al", 33, 1, "");
|
||||||
add_groupbox(ES_FLAGGROUP, 0, "Selezionare tipo di estrazione:", 1, 3, 28, 3, "");
|
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_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_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_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_groupbox(ES_DESCGROUP, 0, "Inserire descrizione estrazione:", 1, 6, 59, 3, "");
|
||||||
add_string(ES_DESCR, 0, "Descrizione", 2, 7, 250, "", 40);
|
add_string (ES_DESCR, 0, "Descrizione", 2, 7, 250, "", 40);
|
||||||
|
|
||||||
TMask::set_handler(DLG_ELABORA, estrai_handler);
|
TMask::set_handler(DLG_ELABORA, estrai_handler);
|
||||||
TMask::set_handler(ES_DATAINI, dataini_handler);
|
TMask::set_handler(ES_DATAINI, dataini_handler);
|
||||||
TMask::set_handler(ES_DATAEND, dataend_handler);
|
TMask::set_handler(ES_DATAEND, dataend_handler);
|
||||||
|
|
||||||
TDate dt(TODAY); dt.set_day(1); dt.set_month(1);
|
TDate dt(TODAY); dt.set_day(1); dt.set_month(1);
|
||||||
set(ES_DATAINI, dt);
|
set(ES_DATAINI, dt);
|
||||||
@ -719,11 +719,10 @@ void TControllo_mask::conferma_esclusi() const
|
|||||||
|
|
||||||
vector<TToken_string>& TControllo_mask::import_error_list()
|
vector<TToken_string>& TControllo_mask::import_error_list()
|
||||||
{
|
{
|
||||||
static vector<TToken_string> controllo_mov;
|
_controllo_mov.clear();
|
||||||
controllo_mov.clear();
|
|
||||||
TF9_dberr dberr;
|
TF9_dberr dberr;
|
||||||
_tipo_doc_err = TF9_dberr::get_errori(_cod_soc, _id_estr, controllo_mov);
|
_tipo_doc_err = TF9_dberr::get_errori(_cod_soc, _id_estr, _controllo_mov);
|
||||||
return controllo_mov;
|
return _controllo_mov;
|
||||||
}
|
}
|
||||||
|
|
||||||
void TControllo_mask::fill()
|
void TControllo_mask::fill()
|
||||||
@ -732,7 +731,8 @@ void TControllo_mask::fill()
|
|||||||
sf.hide();
|
sf.hide();
|
||||||
sf.destroy();
|
sf.destroy();
|
||||||
_movs = !_is_escluso ? import_error_list() : f9_app()._esclusi; // Prendo da _esclusi se sto aprendo il controllo dalla maschera degli esclusi
|
_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)
|
for (auto it = _movs.begin(); it != _movs.end(); ++it)
|
||||||
{
|
{
|
||||||
TToken_string& row = sf.row(-1);
|
TToken_string& row = sf.row(-1);
|
||||||
@ -740,6 +740,11 @@ void TControllo_mask::fill()
|
|||||||
{
|
{
|
||||||
row = *it;
|
row = *it;
|
||||||
row[0] = (char&)" ";
|
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)
|
/*if (!_is_escluso && _tipo_doc_err == 'A' || _is_escluso && f9_app().get_tipoiva_escl() == iva_acquisti)
|
||||||
row.add("", cid2index(F_CESCLUDI));
|
row.add("", cid2index(F_CESCLUDI));
|
||||||
else
|
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 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 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" <<
|
"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";
|
"ORDER BY " << order << " " << (_verso == 'A' ? "ASC" : "DESC") << "\n";
|
||||||
fp_db().sq_set_exec(query, false);
|
fp_db().sq_set_exec(query, false);
|
||||||
|
|
||||||
@ -807,21 +812,28 @@ TMask& TControllo_mask::get_win_order()
|
|||||||
|
|
||||||
if (m == nullptr)
|
if (m == nullptr)
|
||||||
{
|
{
|
||||||
m = new TMask("Configurazione Archiviazione Sostitutiva", 1, 60, 10);
|
m = new TMask("Configurazione Archiviazione Sostitutiva", 1, 60, 16);
|
||||||
// TOOLBAR
|
// TOOLBAR
|
||||||
m->add_button_tool(DLG_OK, "Conferma", TOOL_OK);
|
m->add_button_tool(DLG_OK, "Conferma", TOOL_OK);
|
||||||
m->add_button_tool(DLG_NULL, "", 0);
|
m->add_button_tool(DLG_NULL, "", 0);
|
||||||
m->add_button_tool(DLG_QUIT, "Esci", TOOL_QUIT);
|
m->add_button_tool(DLG_QUIT, "Esci", TOOL_QUIT);
|
||||||
|
|
||||||
// Ordinatori
|
// 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_ORDER, 0, "@BOrdina 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_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);
|
//m->set_handler(DLG_OK, save_conf_handler);
|
||||||
_ordin = ini_get_string(CONFIG_DITTA, INI_PAR_MOD, "ORDINAM", "D")[0];
|
_ordin = ini_get_string(CONFIG_DITTA, INI_PAR_MOD, "ORDINAM", "D")[0];
|
||||||
_verso = ini_get_string(CONFIG_DITTA, INI_PAR_MOD, "VERSO", "A")[0];
|
_verso = ini_get_string(CONFIG_DITTA, INI_PAR_MOD, "VERSO", "A")[0];
|
||||||
m->set(F_ORDER, &_ordin);
|
m->set(F_ORDER, &_ordin);
|
||||||
m->set(F_VERSO, &_verso);
|
m->set(F_VERSO, &_verso);
|
||||||
|
m->set(F_ORDDATADA, _datada);
|
||||||
|
m->set(F_ORDDATAA, _dataa);
|
||||||
}
|
}
|
||||||
return *m;
|
return *m;
|
||||||
}
|
}
|
||||||
@ -829,11 +841,15 @@ TMask& TControllo_mask::get_win_order()
|
|||||||
void TControllo_mask::open_win_order()
|
void TControllo_mask::open_win_order()
|
||||||
{
|
{
|
||||||
TMask& m = get_win_order();
|
TMask& m = get_win_order();
|
||||||
|
m.set(F_ORDDATADA, _datada);
|
||||||
|
m.set(F_ORDDATAA, _dataa);
|
||||||
m.run();
|
m.run();
|
||||||
_ordin = m.get(F_ORDER)[0];
|
_ordin = m.get(F_ORDER)[0];
|
||||||
_verso = m.get(F_VERSO)[0];
|
_verso = m.get(F_VERSO)[0];
|
||||||
ini_set_string(CONFIG_DITTA, INI_PAR_MOD, "ORDINAM", &_ordin);
|
_datada = m.get_date(F_ORDDATADA);
|
||||||
ini_set_string(CONFIG_DITTA, INI_PAR_MOD, "VERSO", &_verso);
|
_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()
|
TToken_string* TControllo_mask::selected_mov()
|
||||||
|
@ -165,6 +165,7 @@ public:
|
|||||||
|
|
||||||
class TControllo_mask : public TAutomask
|
class TControllo_mask : public TAutomask
|
||||||
{
|
{
|
||||||
|
vector<TToken_string> _controllo_mov; // Usare import_error_list().
|
||||||
char _ordin;
|
char _ordin;
|
||||||
char _verso;
|
char _verso;
|
||||||
int _selected_mov;
|
int _selected_mov;
|
||||||
@ -174,6 +175,8 @@ class TControllo_mask : public TAutomask
|
|||||||
TString _id_estr;
|
TString _id_estr;
|
||||||
char _tipo_doc_err{};
|
char _tipo_doc_err{};
|
||||||
vector<TToken_string> _movs;
|
vector<TToken_string> _movs;
|
||||||
|
TDate _datada;
|
||||||
|
TDate _dataa;
|
||||||
|
|
||||||
void associa();
|
void associa();
|
||||||
void conferma_esclusi() const;
|
void conferma_esclusi() const;
|
||||||
|
@ -13,6 +13,9 @@
|
|||||||
// Cambi maschera ordinamento sheet FPPRO
|
// Cambi maschera ordinamento sheet FPPRO
|
||||||
#define F_ORDER 301
|
#define F_ORDER 301
|
||||||
#define F_VERSO 302
|
#define F_VERSO 302
|
||||||
|
#define F_ORDDATAG 303
|
||||||
|
#define F_ORDDATADA 304
|
||||||
|
#define F_ORDDATAA 305
|
||||||
|
|
||||||
#define F_CSEL 101
|
#define F_CSEL 101
|
||||||
#define F_CNUMREG 102
|
#define F_CNUMREG 102
|
||||||
|
@ -10,41 +10,35 @@
|
|||||||
|
|
||||||
TString escape(const char* str);
|
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
|
// TF9_categorie_doc_msk
|
||||||
///////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
class TF9_categorie_doc_msk : public TAutomask
|
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;
|
std::shared_ptr<TArray_sheet> _annessi_sheet;
|
||||||
TRecord_categorie _categorie_doc;
|
TRecord_categorie _categorie_doc;
|
||||||
|
bool _mod_precaricate;
|
||||||
|
|
||||||
bool on_field_event(TOperable_field& o, TField_event e, long jolly) override;
|
bool on_field_event(TOperable_field& o, TField_event e, long jolly) override;
|
||||||
bool on_key(KEY key) override;
|
bool on_key(KEY key) override;
|
||||||
@ -61,7 +55,9 @@ class TF9_categorie_doc_msk : public TAutomask
|
|||||||
public:
|
public:
|
||||||
static void correct_spell_catdoc(TString& catdoc);
|
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)
|
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.");
|
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)
|
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
|
class TF9_categorie_doc : public TSkeleton_application
|
||||||
{
|
{
|
||||||
TString _log;
|
TString _log;
|
||||||
void add_error_log(TString& query);
|
void add_error_log(TString& query);
|
||||||
static void precarica_tabella_default();
|
static bool precarica_tabella_default();
|
||||||
void main_loop() override;
|
void main_loop() override;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
TF9_categorie_doc() = default;
|
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();
|
_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;
|
TCategorie_doc preload;
|
||||||
if (preload.get_array_rows().items() == 0 ||
|
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.remove_all();
|
||||||
preload.reload();
|
preload.reload();
|
||||||
@ -339,15 +336,18 @@ void TF9_categorie_doc::precarica_tabella_default()
|
|||||||
preload.add_categoria("BOLLADOGAC", "Bolla doganale", "FTA", "TD01", "", "BD");
|
preload.add_categoria("BOLLADOGAC", "Bolla doganale", "FTA", "TD01", "", "BD");
|
||||||
|
|
||||||
preload.add_annesso("FATTREV", "INTREVC", "Prosp. integr. rev.ch.", "RC", true);
|
preload.add_annesso("FATTREV", "INTREVC", "Prosp. integr. rev.ch.", "RC", true);
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void TF9_categorie_doc::main_loop()
|
void TF9_categorie_doc::main_loop()
|
||||||
{
|
{
|
||||||
|
bool precarica = false;
|
||||||
if(argc() > 2 && argv()[2][0] == '-' && argv()[2][1] == 'd')
|
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)
|
while(msk.run() == K_ENTER)
|
||||||
{
|
{
|
||||||
TSheet_field& sf = msk.sfield(S_CLASSDOC);
|
TSheet_field& sf = msk.sfield(S_CLASSDOC);
|
||||||
|
@ -146,33 +146,37 @@ void TF9_test_app::main_loop()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
TF9_doccart doccart;
|
if (false)
|
||||||
TString old_numreg; old_numreg << 95752;
|
{
|
||||||
TFilename doc;
|
TF9_doccart doccart;
|
||||||
TString_array list_annessi;
|
TString old_numreg; old_numreg << 95752;
|
||||||
vector<annesso_t> vect_annessi;
|
TFilename doc;
|
||||||
//TFilename f_doc; f_doc << "asd";
|
TString_array list_annessi;
|
||||||
//bool annesso;
|
vector<annesso_t> vect_annessi;
|
||||||
//bool doc_ae = doccart.doc_already_exists(f_doc, old_numreg, annesso);
|
//TFilename f_doc; f_doc << "asd";
|
||||||
bool movdoc = doccart.mov2doc(old_numreg, doc);
|
//bool annesso;
|
||||||
TString msg("Error retriving filename from reg n. "); msg << old_numreg;
|
//bool doc_ae = doccart.doc_already_exists(f_doc, old_numreg, annesso);
|
||||||
CHECK(movdoc && TString(doc.name()) == "ve1300_F01_0000000011_0002237.pdf", (const char*)msg);
|
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
|
old_numreg.cut(0) << 95222; // Doppio annesso
|
||||||
bool movann = doccart.mov2listann(old_numreg, list_annessi);
|
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);
|
//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);
|
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);
|
//CHECK(movannvect && vect_annessi.size() == 2, "Error retriving vector annessi from numreg %s", (const char*)old_numreg);
|
||||||
|
|
||||||
|
|
||||||
/*TCategorie_doc::annesso annesso;
|
/*TCategorie_doc::annesso annesso;
|
||||||
annesso.catdoc = "INTEGREV";
|
annesso.catdoc = "INTEGREV";
|
||||||
annesso.catdocpadre = "FATTREV";
|
annesso.catdocpadre = "FATTREV";
|
||||||
annesso.descr = "Integrazione Rev. Charge";
|
annesso.descr = "Integrazione Rev. Charge";
|
||||||
annesso.opcee = "RC";
|
annesso.opcee = "RC";
|
||||||
annesso.obblig = true;
|
annesso.obblig = true;
|
||||||
TEstrazione::make_prosp_int_revc(96951, annesso);*/
|
TEstrazione::make_prosp_int_revc(96951, annesso);*/
|
||||||
|
}
|
||||||
|
|
||||||
|
if(false)
|
||||||
{
|
{
|
||||||
TF9Prospetto_integr prosp;
|
TF9Prospetto_integr prosp;
|
||||||
if (prosp("96951", "96952"))
|
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");
|
message_box("TESTS COMPLETELY SUCCESSFUL");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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())
|
if (it != _rows_annessi.end())
|
||||||
{
|
{
|
||||||
annesso = it->second;
|
_Annesso_out = it->second;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
@ -180,7 +180,7 @@ public:
|
|||||||
void add_categoria(const TString& catdoc, const TString& descr, const TString& class_sost,
|
void add_categoria(const TString& catdoc, const TString& descr, const TString& class_sost,
|
||||||
const TString& caus_sost, const TString& causcont, const TString& tipocaus);
|
const TString& caus_sost, const TString& causcont, const TString& tipocaus);
|
||||||
void del_annesso(const TString& catdoc, const char* catdoc_ann);
|
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_ann(const TString& catdoc);
|
||||||
TString_array get_array_rows(bool traduci = false);
|
TString_array get_array_rows(bool traduci = false);
|
||||||
std::shared_ptr<classe_doc> get_classe_doc(const TString& catdoc);
|
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();
|
void precarica_tabelle();
|
||||||
|
|
||||||
public:
|
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(const char* numreg_acq, const char* numreg_ven);
|
||||||
~TProspetto_recset();
|
~TProspetto_recset();
|
||||||
|
@ -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);
|
TProspetto_recset* _prosp_rs = new TProspetto_recset(numreg_acq, numreg_ven);
|
||||||
_items = _prosp_rs->items();
|
_items = _prosp_rs->items();
|
||||||
|
|
||||||
_rep.set_recordset(&*_prosp_rs);
|
_rep.set_recordset(_prosp_rs);
|
||||||
_book.add(_rep);
|
_book.add(_rep);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
Loading…
x
Reference in New Issue
Block a user