Patch level : 12.0 768

Files correlati     : cg2100
Commento            :
- Aggiunta chiusura automatica maschera fppro
- Disattivata multiselezione fattura dallo sheet dell fppro
This commit is contained in:
Simone Palacino 2019-04-11 15:29:39 +02:00
parent 02dfce1628
commit 0aa4b26fb2
3 changed files with 100 additions and 48 deletions

@ -123,7 +123,7 @@ TMask* TPrimanota_application::load_mask(int n)
ism.set_handler(309, sheet_clifo_handler);
ism.set_handler(CG_RATEO, sheet_rateo_handler);
ism.set_handler(CG_RISCONTO, sheet_risconto_handler);
if (!(fexist("fp0.exe") && !fp_settings().get_db_indirizzo().empty() && !fp_settings().is_f8()))
if (!is_fp())
m->hide(F_PROTFPPRO);
else
{

@ -3451,38 +3451,6 @@ bool TPrimanota_application::protiva_handler(TMask_field& f, KEY key)
return ok;
}
bool TPrimanota_application::fppro_mask(TMask_field& f, KEY key)
{
if (!is_fp() || key != K_SPACE && key != K_TAB)
return true;
TMask& cg_msk = f.mask();
TMask* msk = new TMask("cg2fppro");
msk->set_handler(DLG_CONFIG, fppro_handler);
msk->set_handler(DLG_LINK, fppro_ok_handler);
msk->set(F_CODCLIFORS, cg_msk.get(F_CODCLIFOR));
msk->set(F_COFIS, cg_msk.get(F_COFI));
msk->set(F_STATOPAIVS, cg_msk.get(F_STATOPAIV));
msk->set(F_PIVAS, cg_msk.get(F_PIVA));
if(load_fppro_mask(msk))
{
msk->run();
// Riporto dati FPPRO su maschera Prima Nota
cg_msk.set(F_NUMDOCEXT, msk->get(F_NUMEROI));
cg_msk.set(F_NUMDOC, TString(msk->get(F_NUMEROI)).right(7));
cg_msk.set(F_DATADOC, msk->get(F_DATAI));
cg_msk.set(F_TOTALE, msk->get(F_TOTDOCI));
cg_msk.set(F_PROTFPPRO, msk->get(F_PROTFPPROI));
cg_msk.set(F_PROKEY, msk->get(F_FPPROKEYSI));
cg_msk.set(F_ANNORIF, cg_msk.get(F_ANNOIVA));
}
delete msk;
return true;
}
// Handler of the F_RITFIS
// Certified 100%
bool TPrimanota_application::ritfis_handler(TMask_field& f, KEY key)
@ -3857,8 +3825,35 @@ bool TPrimanota_application::quadratura_handler(TMask_field& f, KEY key)
return true;
}
bool TPrimanota_application::load_fppro_mask(TMask* msk, KEY k)
bool TPrimanota_application::fppro_mask(TMask_field& f, KEY key)
{
if (!is_fp() || key != K_SPACE && key != K_TAB)
return true;
TMask& cg_msk = f.mask();
auto msk = std::make_shared<TPro_msk>(cg_msk);
//load_list(msk, key);
//if(load_fppro_mask(msk))
if (msk->load_fppro_mask(msk.get()))
{
msk->run();
// Riporto dati FPPRO su maschera Prima Nota
cg_msk.set(F_NUMDOCEXT, msk->get(F_NUMEROI));
cg_msk.set(F_NUMDOC, TString(msk->get(F_NUMEROI)).right(7));
cg_msk.set(F_DATADOC, msk->get(F_DATAI));
cg_msk.set(F_TOTALE, msk->get(F_TOTDOCI));
cg_msk.set(F_PROTFPPRO, msk->get(F_PROTFPPROI));
cg_msk.set(F_PROKEY, msk->get(F_FPPROKEYSI));
cg_msk.set(F_ANNORIF, cg_msk.get(F_ANNOIVA));
}
return true;
}
bool TPro_msk::load_fppro_mask(TMask* msk, KEY k)
{
// Provo a vedere se hanno l'FP: se c'è l'indirizzo controllo che non sia F8 se non c'è non hanno l'FP
if (k != 32 || !is_fp())
return false;
@ -3932,14 +3927,14 @@ bool TPrimanota_application::load_fppro_mask(TMask* msk, KEY k)
return true;
}
bool TPrimanota_application::fppro_handler(TMask_field& f, KEY k)
bool TPro_msk::fppro_handler(TMask_field& f, KEY k)
{
TMask& msk = f.mask();
const bool load = load_fppro_mask(&msk, k);
return load;
}
bool TPrimanota_application::fppro_ok_handler(TMask_field& f, KEY k)
bool TPro_msk::fppro_ok_handler(TMask_field& f, KEY k)
{
if (k != 32)
return true;
@ -3969,10 +3964,48 @@ bool TPrimanota_application::fppro_ok_handler(TMask_field& f, KEY k)
row->add("", 0);
}
sf.force_update();
if(ok)
message_box("Dati caricati.\nChiudere la maschera per tornare alla prima nota.");
else
if(!ok)
message_box("Nessun documento selezionato.");
//msk.stop_run(20334);
msk.stop_run(20334);
return true;
}
}
void TPro_msk::fppro_selfatt() const
{
const TMask& mask = *this;
TSheet_field& sf = mask.sfield(F_SHEETFPPROS);
sf.hide();
FOR_EACH_SHEET_ROW(sf, nr, row)
{
if (*row->get(0) == 'X')
row->add("", 0);
}
sf.force_update();
sf.show();
}
bool TPro_msk::on_field_event(TOperable_field& o, TField_event e, long jolly)
{
if (o.dlg() == F_SELFPPROS)
{
if(e == fe_modify)
fppro_selfatt();
}
return true;
}
bool TPro_msk::is_fp()
{
return fexist("fp0.exe") && !fp_settings().get_db_indirizzo().empty() && !fp_settings().is_f8();
}
TPro_msk::TPro_msk(TMask& cg_msk) : TAutomask("cg2fppro"), _parent_mask(cg_msk)
{
TMask::set_handler(DLG_CONFIG, fppro_handler);
TMask::set_handler(DLG_LINK, fppro_ok_handler);
TMask::set(F_CODCLIFORS, cg_msk.get(F_CODCLIFOR));
TMask::set(F_COFIS, cg_msk.get(F_COFI));
TMask::set(F_STATOPAIVS, cg_msk.get(F_STATOPAIV));
TMask::set(F_PIVAS, cg_msk.get(F_PIVA));
}

@ -32,6 +32,10 @@
#ifndef __CG2100_H
#include "cg2100.h"
#endif
#include <automask.h>
class TPro_msk;
class TDati_mov_auto;
enum CGMaskType { _query = 0, _no_iva = 1, _iva = 2, _occas = 3};
@ -172,11 +176,9 @@ class TPrimanota_application : public TRelation_application
// Handlers per aggancio FPPRO
// Bottone per maschera FPPRO
static bool fppro_mask(TMask_field& f, KEY key);
// Bottone carica documenti in maschera FPPRO
static bool fppro_handler(TMask_field& f, KEY k);
// Bottone riporta doc FPPRO in testata Prima Nota
static bool fppro_ok_handler(TMask_field& f, KEY k);
static void fppromask_set_handl(TMask* msk);
static void load_list(TMask* msk, KEY k);
void reset_sheet_row(TSheet_field& s, int n);
int crea_somma_spese(TImporto& imp);
void update_saldo_riga(int r);
@ -192,8 +194,6 @@ protected: // TApplication
virtual void mask2ini(const TMask& msk, TConfig& ini);
// Metodi per aggancio FPPRO (solo su operazioni di Fattura di Acquisto)
// Carica documenti FPPRO sulla maschera
static bool load_fppro_mask(TMask* msk, KEY k = 32);
// Salvo dati fornitore e registrazione contabile sul db FPPRO
int save_fppro() const;
// Salva sul movimento il riferimento al documento in FPPRO
@ -368,6 +368,25 @@ public:
virtual ~TPrimanota_application() { }
};
class TPro_msk : public TAutomask
{
TMask& _parent_mask;
// Handlers per aggancio FPPRO
// Bottone carica documenti in maschera FPPRO
static bool fppro_handler(TMask_field& f, KEY k);
// Bottone riporta doc FPPRO in testata Prima Nota
static bool fppro_ok_handler(TMask_field& f, KEY k);
// Non permette la selezione multipla
void fppro_selfatt() const;
bool on_field_event(TOperable_field& o, TField_event e, long jolly) override;
public:
static bool is_fp();
// Carica documenti FPPRO sulla maschera
static bool load_fppro_mask(TMask* msk, KEY k = 32);
TPro_msk() = delete;
TPro_msk(TMask& cg_msk);
};
#ifndef __EXTRA__
inline TPrimanota_application& app()
{ return (TPrimanota_application&)main_app(); }