Patch level : 12.0 1140
Files correlati : cg2.exe cg2100c.msk cg2100t.msk Commento: Nelle fatture intra l'identificativo SDI viene recuperato da FPPRO e scritto sulla fattura di acquisto e sulla regolarizzazione
This commit is contained in:
parent
45c2598cc7
commit
4d94988b54
@ -50,6 +50,8 @@ public:
|
||||
TString4 _causale_originale;
|
||||
TipoIVA _iva_originale;
|
||||
TString_array _iva;
|
||||
TString _idsdi;
|
||||
TDate _datasdi;
|
||||
};
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
@ -59,7 +61,7 @@ public:
|
||||
TPrimanota_application::TPrimanota_application()
|
||||
: _rel(nullptr), _mode(0), _iva(nessuna_iva), _causale(nullptr), _giornale(nullptr),
|
||||
_lastreg(0), _last_dreg(TODAY), _last_dcom(TODAY), _automatico(nullptr), _swap_mask(false), _is_set_fpcheck(false), _f1_ini(false), _f1_liq(false),
|
||||
_skip_giornale_check(false), _skip_bollato_check(false)
|
||||
_skip_giornale_check(false), _skip_bollato_check(false), _pro_mask(nullptr)
|
||||
{
|
||||
memset(_msk, 0, sizeof(_msk));
|
||||
}
|
||||
@ -439,7 +441,7 @@ bool TPrimanota_application::read_caus(const char* cod, int year)
|
||||
}
|
||||
|
||||
const char sezione = rcaus->get_char(RCA_SEZIONE);
|
||||
const TImporto zero('D', ZERO);
|
||||
TImporto zero('D', ZERO);
|
||||
const TString80 desc(causale().desc_agg(i));
|
||||
|
||||
if (nriga == 1) m->set(F_DESCR, desc);
|
||||
@ -697,7 +699,7 @@ void TPrimanota_application::init_mask(TMask& m)
|
||||
_sal_dirty = false; // Azzero il flag di modifica del saldaconto
|
||||
fill_sheet(m); // Riempe righe contabili coi conti della causale
|
||||
m.hide(F_LINKDOC);
|
||||
set_has_f1_db(&m);
|
||||
has_f1_db(m);
|
||||
}
|
||||
|
||||
void TPrimanota_application::init_query_mode(TMask& m)
|
||||
@ -736,7 +738,7 @@ void TPrimanota_application::init_query_mode(TMask& m)
|
||||
m.set(F_CODCAUS, ini.get(MOV_CODCAUS));
|
||||
m.send_key(K_SPACE, DLG_NEWREC);
|
||||
}
|
||||
set_has_f1_db(&m);
|
||||
has_f1_db(m);
|
||||
}
|
||||
|
||||
|
||||
@ -995,17 +997,19 @@ void TPrimanota_application::init_insert_mode(TMask& m)
|
||||
m.enable(F_BOLLACODCLI, causale().tipo_doc() == "BD");
|
||||
m.enable(F_BOLLARAGCLI, causale().tipo_doc() == "BD");
|
||||
}
|
||||
if (iva() != nessuna_iva)
|
||||
f1_init(m, m.get_date(F_DATAREG) >= get_data_start_fatt());
|
||||
}
|
||||
|
||||
void TPrimanota_application::f1_init_modify(TMask& m, const TRectype& mov)
|
||||
void TPrimanota_application::f1_init(TMask& m, const bool fe_enabled, const bool f1_linked)
|
||||
{
|
||||
const bool after_data_inizio_fe = mov.get_date(MOV_DATADOC) >= get_data_start_fatt();
|
||||
const bool reverse_charge = app().causale().reverse_charge_pubb();
|
||||
|
||||
m.field(F_IDDOCSDI).show(after_data_inizio_fe);
|
||||
m.field(F_DATADOCSDI).show(after_data_inizio_fe);
|
||||
m.field(F_COLFPPRO).show(after_data_inizio_fe);
|
||||
m.field(DLG_LINK).enable(after_data_inizio_fe);
|
||||
m.set(F_COLFPPRO, !after_data_inizio_fe || mov.get(MOV_KEYFPPRO).empty() ? " " : "X");
|
||||
m.field(F_IDDOCSDI).show(fe_enabled && reverse_charge);
|
||||
m.field(F_DATADOCSDI).show(fe_enabled && reverse_charge);
|
||||
m.field(F_COLFPPRO).show(fe_enabled);
|
||||
m.field(DLG_LINK).enable(fe_enabled);
|
||||
m.set(F_COLFPPRO, fe_enabled && f1_linked, 0x3);
|
||||
}
|
||||
|
||||
void TPrimanota_application::init_modify_mode(TMask& m)
|
||||
@ -1116,7 +1120,7 @@ void TPrimanota_application::init_modify_mode(TMask& m)
|
||||
m.enable(F_BOLLARAGCLI, causale().tipo_doc() == "BD");
|
||||
}
|
||||
if (iva() != nessuna_iva)
|
||||
f1_init_modify(m, mov);
|
||||
f1_init(m, mov.get_date(MOV_DATADOC) >= get_data_start_fatt(), mov.get(MOV_KEYFPPRO).full());
|
||||
}
|
||||
|
||||
// Controlla sulla causale se il segno del totale documento (ritsoc=false)
|
||||
@ -1488,18 +1492,14 @@ void TPrimanota_application::check_saldi()
|
||||
|
||||
void TPrimanota_application::write_fppro()
|
||||
{
|
||||
#ifdef DBG
|
||||
if (!ini_get_bool(CONFIG_INSTALL, "Main", "SkipFPPRO"))
|
||||
if (main_app().has_module(FPAUT) && !ini_get_bool(CONFIG_INSTALL, "Main", "SkipFPPRO"))
|
||||
{
|
||||
#endif
|
||||
// Controllo se la registrazione ha avuto effetto anche su FPPRO allora salvo riferimento sul mov
|
||||
if (save_fppro() > 0 && !save_dbmov())
|
||||
message_box(
|
||||
"ATTENZIONE: non e' stato possibile salvare i riferimenti del documento in ingresso per questo movimento.\n"
|
||||
"Movimento registrato senza collegamento ai documenti in ingresso.");
|
||||
#ifdef DBG
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
bool TPrimanota_application::has_tot_doc(TToken_string& fppro_keys)
|
||||
@ -1556,7 +1556,7 @@ void TPrimanota_application::set_movcoll(const long movcoll, const long numreg)
|
||||
}
|
||||
int TPrimanota_application::controlli_f1(const TMask& m)
|
||||
{
|
||||
if (m.find_by_id(F_PROKEY) != nullptr && m.get(F_PROKEY).full() && has_f1_db((TMask*)&m) && fp_db().sq_is_connect() && check_causale(m.get(F_CODCAUS)))
|
||||
if (iva_mask(m) && m.get(F_PROKEY).full() && has_f1_db(m) && fp_db().sq_is_connect() && check_causale(m.get(F_CODCAUS)))
|
||||
{
|
||||
TToken_string keys(m.get(F_PROKEY), ';');
|
||||
const TDate dataoraric = fppro_db().set_keys(keys).get_dataorarioric();
|
||||
@ -1717,10 +1717,19 @@ int TPrimanota_application::rewrite(const TMask& m)
|
||||
|
||||
if (caus.reverse_charge_pubb())
|
||||
{
|
||||
const long movcoll = m.get_long(F_MOVCOLL);
|
||||
long movcoll = m.get_long(F_MOVCOLL);
|
||||
|
||||
if (movcoll == 0L)
|
||||
find_movcoll(_rel->file().get_long(MOV_NUMREG));
|
||||
movcoll = m.get_long(F_MOVCOLL);
|
||||
if (movcoll > 0L)
|
||||
{
|
||||
TRectype & reccoll = (TRectype &) cache().get(LF_MOV, movcoll);
|
||||
|
||||
reccoll.put(MOV_IDDOCSDI, m.get(F_IDDOCSDI));
|
||||
reccoll.put(MOV_DATADOCSDI, m.get(F_DATADOCSDI));
|
||||
reccoll.rewrite();
|
||||
}
|
||||
}
|
||||
mask2rel(m);
|
||||
|
||||
@ -1788,7 +1797,7 @@ void TPrimanota_application::clean_fppro()
|
||||
|
||||
// Controlli: solo in mod modifica; che abbia fp-f1 (no F8); che non sono in salvataggio
|
||||
if (_mode != MODE_MOD
|
||||
|| !has_f1_db(&msk)
|
||||
|| !has_f1_db(msk)
|
||||
|| last_key != K_DEL && last_key != K_SAVE && last_key != K_ELIMMAS && last_key != K_QUIT && !scollega())
|
||||
return;
|
||||
|
||||
@ -1803,27 +1812,17 @@ void TPrimanota_application::clean_fppro()
|
||||
fp_db().sq_commit();
|
||||
}
|
||||
|
||||
void TPrimanota_application::set_has_f1_db(TMask* m)
|
||||
bool TPrimanota_application::has_f1() const
|
||||
{
|
||||
if (m->find_by_id(F_DATAREG) != nullptr && !m->get(F_DATAREG).empty())
|
||||
{
|
||||
if (TDate(m->get(F_DATAREG)) >= TDate(get_data_start_fatt()))
|
||||
_isf1 = has_module(F1AUT) && !get_db_indirizzo().empty();
|
||||
else
|
||||
_isf1 = false;
|
||||
_is_set_fpcheck = true;
|
||||
}
|
||||
else if (!_is_set_fpcheck)
|
||||
{
|
||||
_isf1 = false;
|
||||
_is_set_fpcheck = true;
|
||||
}
|
||||
return has_module(F1AUT) && get_db_indirizzo().full();
|
||||
}
|
||||
|
||||
bool TPrimanota_application::has_f1_db(TMask* m)
|
||||
bool TPrimanota_application::has_f1_db(const TMask & m)
|
||||
{
|
||||
set_has_f1_db(m);
|
||||
return _isf1;
|
||||
const TDate datareg = m.get_date(F_DATAREG);
|
||||
|
||||
_is_set_fpcheck = true;
|
||||
return datareg.ok() && (datareg >= get_data_start_fatt()) && has_f1();
|
||||
}
|
||||
|
||||
bool TPrimanota_application::remove()
|
||||
@ -1892,6 +1891,8 @@ void TPrimanota_application::genera_automatico(int tipo, const char* causimm)
|
||||
_automatico->_movcoll = m.get_long(F_NUMREG);
|
||||
_automatico->_iva.destroy();
|
||||
_automatico->_totale = ZERO;
|
||||
_automatico->_idsdi = m.get(F_IDDOCSDI);
|
||||
_automatico->_datasdi = m.get(F_DATADOCSDI);
|
||||
for (int i = 0; i < items; i++)
|
||||
{
|
||||
TToken_string row = iva.row(i);
|
||||
@ -1979,6 +1980,9 @@ void TPrimanota_application::genera_automatico(int tipo, const char* causimm)
|
||||
const TString& clnt = cache().get(LF_CLIFO, forn, CLI_CODCFASS);
|
||||
m.set(F_CODCLIFOR, clnt);
|
||||
}
|
||||
m.set(F_IDDOCSDI, _automatico->_idsdi);
|
||||
m.set(F_DATADOCSDI, _automatico->_datasdi);
|
||||
|
||||
TSheet_field & iva = m.sfield(F_SHEETIVA);
|
||||
const int items = _automatico->_iva.items();
|
||||
|
||||
@ -2672,7 +2676,7 @@ int TPrimanota_application::save_fppro()
|
||||
TMask& msk = curr_mask();
|
||||
|
||||
// Provo a vedere se hanno l'FP: se c'è l'indirizzo controllo che non sia F8 se non c'è non hanno l'FP
|
||||
if (!has_f1_db(&msk))
|
||||
if (!has_f1_db(msk))
|
||||
return pro_nofp;
|
||||
|
||||
// Anzitutto guardo la modalita' in cui sono
|
||||
@ -2737,7 +2741,7 @@ int TPrimanota_application::save_fppro()
|
||||
items = fp_db().sq_items();
|
||||
}
|
||||
|
||||
if(has_f1_db(&msk) && items != 1)
|
||||
if(has_f1_db(msk) && items != 1)
|
||||
{
|
||||
const bool forza = noyes_box("Attenzione, al movimento non e' stato abbinato nessun documento elettronico.\n"
|
||||
"Per consentire una corretta archiviazione sostitutiva si consiglia di provvedere al controllo della registrazione e di procedere\n"
|
||||
@ -2851,6 +2855,7 @@ bool TPrimanota_application::link_intra(const TMask& m, const char* action)
|
||||
|
||||
const BOOLEAN bModify = xvt_str_same(action, "Modify");
|
||||
|
||||
|
||||
TFilename intrini;
|
||||
intrini.tempdir();
|
||||
intrini.add("ActIntra.ini");
|
||||
|
@ -91,11 +91,11 @@
|
||||
#define F_REVCHARGE 184
|
||||
#define F_MOVCOLL 185
|
||||
#define F_GOCOLL 186
|
||||
#define F_IDDOCSDI 187
|
||||
#define F_DATADOCSDI 188
|
||||
#define F_IDDOCSDI 187
|
||||
#define F_DATADOCSDI 188
|
||||
|
||||
#define F_SHEETCG 190
|
||||
#define F_SHEETIVA 191
|
||||
#define F_SHEETIVA 191
|
||||
|
||||
|
||||
// Sheet contabile
|
||||
|
@ -569,7 +569,7 @@ END
|
||||
|
||||
STRING F_PROKEY 80
|
||||
BEGIN
|
||||
PROMPT 1 19 "db key"
|
||||
PROMPT 1 26 "DB key"
|
||||
HELP "Chiave database"
|
||||
FIELD KEYFPPRO
|
||||
FLAGS "H"
|
||||
|
@ -13,12 +13,14 @@ BEGIN
|
||||
PROMPT 2 1 "Contabilizzaz."
|
||||
PICTURE TOOL_EXPORT
|
||||
MODULE F1
|
||||
MESSAGE EXIT,K_ENTER
|
||||
END
|
||||
|
||||
BUTTON DLG_LINK 2 2
|
||||
BEGIN
|
||||
PROMPT 3 1 "Collega in Prima nota"
|
||||
PICTURE TOOL_LINK
|
||||
MESSAGE EXIT,K_ENTER
|
||||
END
|
||||
|
||||
BUTTON DLG_QUIT 2 2
|
||||
|
@ -219,7 +219,10 @@ TSheet_field& TPrimanota_application::cgs() const
|
||||
void TPrimanota_application::set_cgs_imp(int n, const TImporto& imp)
|
||||
{
|
||||
TSheet_field& s = cgs();
|
||||
imp.add_to(s.row(n), 0);
|
||||
TImporto i(imp);
|
||||
|
||||
i.normalize();
|
||||
i.add_to(s.row(n), 0);
|
||||
s.force_update(n);
|
||||
}
|
||||
|
||||
@ -371,7 +374,7 @@ void TPrimanota_application::reset_sheet_row(TSheet_field& s, int n)
|
||||
s.destroy(n); // Remove line n
|
||||
}
|
||||
|
||||
int TPrimanota_application::set_cgs_row(int n, const TImporto& imp,
|
||||
int TPrimanota_application::set_cgs_row(int n, TImporto& importo,
|
||||
const TBill& conto, const char* desc,
|
||||
char tipo, const char* cms, const char* fas)
|
||||
{
|
||||
@ -380,7 +383,8 @@ int TPrimanota_application::set_cgs_row(int n, const TImporto& imp,
|
||||
TToken_string& row = cg.row(n);
|
||||
|
||||
row.cut(0);
|
||||
imp.add_to(row, 0);
|
||||
importo.normalize();
|
||||
importo.add_to(row, 0);
|
||||
row.add(conto.string(0x3));
|
||||
row.add(""); // Codice decrizione
|
||||
row.add(desc); // Descrizione aggiuntiva
|
||||
@ -1536,7 +1540,7 @@ void TPrimanota_application::add2cg_row(TSheet_field& s, TToken_string & row, TS
|
||||
{
|
||||
const TBill conto(row, cid2index(IVA_TIPO), 0x1);
|
||||
const int pos = bill2pos(conto, cgrowtype_imponibile); // Riga in cui andra' l'imponibile
|
||||
const TImporto imp = a.real2imp(d > 0 ? imp_det : imp_ind, tipod); // Imponibile
|
||||
TImporto imp = a.real2imp(d > 0 ? imp_det : imp_ind, tipod); // Imponibile
|
||||
|
||||
if (pos >= 0) // Se il conto esisteva anche prima ...
|
||||
{
|
||||
@ -1761,7 +1765,7 @@ bool TPrimanota_application::iva_notify(TSheet_field& s, int r, KEY k)
|
||||
real pimponibile(pag.imponibile(inv));
|
||||
|
||||
pimponibile.round(pag.round(inv));
|
||||
if ((pimposta != imposta || pimponibile != imponibile) && (!a._f1_ini && (a._pro_mask == nullptr || !a._pro_mask->should_bring_back())))
|
||||
if ((pimposta != imposta || pimponibile != imponibile) && (!a._f1_ini && (a._pro_mask == nullptr || !a._pro_mask->da_riportare())))
|
||||
a.set_scadenze(m); // Ricalcola rate
|
||||
}
|
||||
}
|
||||
@ -2842,7 +2846,7 @@ void TPrimanota_application::add_cgs_tot(TMask& m)
|
||||
|
||||
TImporto imp = real2imp(m.get_real(F_TOTALE), cgrowtype_totale);
|
||||
|
||||
set_cgs_row(riga_totale, imp.normalize(), nuovo, descr, cgrowtype_totale);
|
||||
set_cgs_row(riga_totale, imp, nuovo, descr, cgrowtype_totale);
|
||||
}
|
||||
calcola_imp(); // Ricalcola totale IVA
|
||||
calcola_saldo(); // Ricalcola sbilanci
|
||||
@ -3018,7 +3022,7 @@ bool TPrimanota_application::clifo_handler(TMask_field& f, KEY key)
|
||||
ixc->set(ic ? "X" : "");
|
||||
}
|
||||
if(m.get(F_PROKEY).empty() && app().has_module(F1AUT))
|
||||
fppro_mask(f, key);
|
||||
a.fppro_mask(f, key);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
@ -3562,21 +3566,11 @@ HIDDEN void inventa_cambio_intra(TMask& m)
|
||||
{
|
||||
const TString& codval = m.get(F_VALUTAINTRA);
|
||||
|
||||
if (codval.not_empty() && TCurrency::get_firm_val() != codval)
|
||||
if (codval.full() && TCurrency::get_firm_val() != codval)
|
||||
{
|
||||
TTable cam("CAM");
|
||||
const TRectype & cam =cache().get("CAM", codval);
|
||||
|
||||
cam.put("CODTAB", codval);
|
||||
const int err = cam.read(_isgteq);
|
||||
bool yes = err != NOERR;
|
||||
if (!yes)
|
||||
{
|
||||
TString16 v = cam.get("CODTAB");
|
||||
|
||||
v.cut(3).rtrim();
|
||||
yes = v != codval;
|
||||
}
|
||||
if (yes)
|
||||
if (cam.full())
|
||||
m.set(F_CAMBIOINTRA, cache().get("%VAL", codval, "S4"));
|
||||
}
|
||||
}
|
||||
@ -3903,71 +3897,74 @@ bool TPrimanota_application::quadratura_handler(TMask_field& f, KEY key)
|
||||
return true;
|
||||
}
|
||||
|
||||
void TPrimanota_application::write_righe_iva_f1(TMask& cg_msk, const shared_ptr<TPro_msk>& msk)
|
||||
|
||||
void TPrimanota_application::write_righe_iva_f1(TMask& cg_msk, const TPro_msk & msk)
|
||||
{
|
||||
TSheet_field& sf = cg_msk.sfield(F_SHEETIVA);
|
||||
const vector<TPro_msk::riga_iva_s>& righe = msk->get_righeiva();
|
||||
int i = 0;
|
||||
const TString_array& righe = msk.get_righeiva();
|
||||
|
||||
for (auto it = righe.begin(); it != righe.end(); ++it)
|
||||
FOR_EACH_ARRAY_ITEM( righe, r, obj)
|
||||
{
|
||||
if(it->imponibile != 0 || it->imposta != 0)
|
||||
{
|
||||
TToken_string& row = sf.row(i);
|
||||
TToken_string & riga = STRING_TOKEN(obj);
|
||||
const real imponibile = riga.get_real(FPRI_IMPONIBILE);
|
||||
const real imposta = riga.get_real(FPRI_IMPOSTA);
|
||||
|
||||
sf.notify(i, K_SPACE);
|
||||
row.add(it->imponibile, cid2index(IVA_IMPONIBILE));
|
||||
row.add(it->imposta, cid2index(IVA_IMPOSTA));
|
||||
row.add(it->aliquota, cid2index(IVA_PERCIVA));
|
||||
row.add(it->natura, cid2index(IVA_NATURIVA));
|
||||
sf.notify(i, K_ENTER);
|
||||
i++;
|
||||
if (imponibile != ZERO || imposta != ZERO)
|
||||
{
|
||||
TToken_string& row = sf.row(r);
|
||||
|
||||
sf.notify(r, K_SPACE);
|
||||
sf.set_row_cell(IVA_IMPONIBILE, imponibile, r);
|
||||
sf.set_row_cell(IVA_IMPOSTA, imposta, r);
|
||||
sf.set_row_cell(IVA_PERCIVA, riga.get(FPRI_ALIQUOTA), r);
|
||||
sf.set_row_cell(IVA_NATURIVA, riga.get(FPRI_NATURA), r);
|
||||
sf.notify(r, K_ENTER);
|
||||
}
|
||||
}
|
||||
}
|
||||
bool TPrimanota_application::write_scad_f1(const TMask& cg_msk, const shared_ptr<TPro_msk>& msk)
|
||||
bool TPrimanota_application::write_scad_f1(const TMask& cg_msk, const TPro_msk & msk)
|
||||
{
|
||||
TSheet_field& sf = cg_msk.sfield(FS_RATESHEET);
|
||||
const int items = sf.items();
|
||||
const vector<TPro_msk::scadenza_s>& righe = msk->get_scadenze();
|
||||
int i = 0;
|
||||
const TString_array & righe = msk.get_scadenze();
|
||||
|
||||
for (auto it = righe.begin(); it != righe.end(); ++it, ++i)
|
||||
FOR_EACH_ARRAY_ITEM(righe, r, obj)
|
||||
{
|
||||
TToken_string& row = app().pags().row(i);
|
||||
TToken_string& row = app().pags().row(r);
|
||||
TToken_string & riga = STRING_TOKEN(obj);
|
||||
|
||||
if(i >= items)
|
||||
pag_notify(sf, i, K_CTRL+K_INS);
|
||||
pag_notify(sf, i, K_SPACE);
|
||||
row.add(it->data, cid2index(101));
|
||||
row.add(it->importo, cid2index(102));
|
||||
pag_notify(sf, i, K_ENTER);
|
||||
if (r >= items)
|
||||
pag_notify(sf, r, K_CTRL+K_INS);
|
||||
pag_notify(sf, r, K_SPACE);
|
||||
sf.set_row_cell(101, riga.get_date(FPSC_DATA), r);
|
||||
sf.set_row_cell(102, riga.get_real(FPSC_IMPORTO), r);
|
||||
pag_notify(sf, r, K_ENTER);
|
||||
}
|
||||
return !righe.empty();
|
||||
return righe.items() > 0;
|
||||
}
|
||||
|
||||
void TPrimanota_application::write_clifo(TMask& cg_msk, const shared_ptr<TPro_msk>& msk)
|
||||
void TPrimanota_application::write_clifo(TMask& cg_msk, const TPro_msk & msk)
|
||||
{
|
||||
bool ok = false;
|
||||
TLocalisamfile clifo(LF_CLIFO);
|
||||
TToken_string keys(msk->get_fpprokeys(), ';');
|
||||
TString codforn = TFppro(keys).get_codforn();
|
||||
TToken_string keys(msk.get_fpprokeys(), ';');
|
||||
long codforn = TFppro(keys).get_codforn();
|
||||
|
||||
if (codforn.empty())
|
||||
codforn = msk->get_codforn();
|
||||
if (codforn.empty())
|
||||
if (codforn == 0L)
|
||||
codforn = msk.get_codforn();
|
||||
if (codforn == 0L)
|
||||
{
|
||||
clifo.setkey(5);
|
||||
clifo.put(CLI_TIPOCF, "F");
|
||||
clifo.put(CLI_PAIV, msk->get_piva());
|
||||
clifo.put(CLI_PAIV, msk.get_piva());
|
||||
clifo.read();
|
||||
ok = clifo.get(CLI_PAIV) == msk->get_piva();
|
||||
ok = clifo.get(CLI_PAIV) == msk.get_piva();
|
||||
if(!ok)
|
||||
{
|
||||
clifo.zero();
|
||||
clifo.setkey(5);
|
||||
clifo.put(CLI_TIPOCF, "F");
|
||||
clifo.put(CLI_PAIV, msk->get_piva());
|
||||
clifo.put(CLI_PAIV, msk.get_piva());
|
||||
clifo.put(CLI_STATOPAIV, "IT");
|
||||
clifo.read();
|
||||
}
|
||||
@ -3979,8 +3976,8 @@ void TPrimanota_application::write_clifo(TMask& cg_msk, const shared_ptr<TPro_ms
|
||||
clifo.put(CLI_CODCF, codforn);
|
||||
clifo.read();
|
||||
}
|
||||
ok = clifo.get(CLI_PAIV) == msk->get_piva();
|
||||
if (ok && (cg_msk.get(F_CODCLIFOR).empty() || cg_msk.get(F_CODCLIFOR) != codforn))
|
||||
ok = clifo.get(CLI_PAIV) == msk.get_piva();
|
||||
if (ok && (cg_msk.get_long(F_CODCLIFOR) == 0 || cg_msk.get_long(F_CODCLIFOR) != codforn))
|
||||
{
|
||||
cg_msk.set(F_CODCLIFOR, clifo.get(CLI_CODCF));
|
||||
cg_msk.set(F_RAGSOCCF, clifo.get(CLI_RAGSOC));
|
||||
@ -3988,20 +3985,21 @@ void TPrimanota_application::write_clifo(TMask& cg_msk, const shared_ptr<TPro_ms
|
||||
cg_msk.set(F_PIVA, clifo.get(CLI_PAIV));
|
||||
cg_msk.set(F_COFI, clifo.get(CLI_COFI));
|
||||
cg_msk.set(F_CODPAG, clifo.get(CLI_CODPAG));
|
||||
TTable tab("%CPG"); tab.put("CODTAB", clifo.get(CLI_CODPAG));
|
||||
tab.read();
|
||||
|
||||
const TRectype & tab = cache().get("%CPG", clifo.get(CLI_CODPAG));
|
||||
|
||||
cg_msk.set(F_DESPAG, tab.get("S0"));
|
||||
}
|
||||
}
|
||||
|
||||
void TPrimanota_application::set_totale(TMask& cg_msk, const shared_ptr<TPro_msk>& msk)
|
||||
void TPrimanota_application::set_totale(TMask& cg_msk, TPro_msk & msk)
|
||||
{
|
||||
real totale = msk->get_totdoc();
|
||||
real totale = msk.get_totdoc();
|
||||
|
||||
if(totale == ZERO)
|
||||
if (totale == ZERO)
|
||||
totale = app().calcola_imp();
|
||||
|
||||
const real rit = msk->get_ritenute();
|
||||
const real rit = msk.get_ritenute();
|
||||
|
||||
if (rit != ZERO)
|
||||
{
|
||||
@ -4009,78 +4007,83 @@ void TPrimanota_application::set_totale(TMask& cg_msk, const shared_ptr<TPro_msk
|
||||
cg_msk.set(F_RITFIS, rit);
|
||||
app().add_cgs_ritenute(cgrowtype_ritfis);
|
||||
}
|
||||
else if (msk->is_doc_split())
|
||||
totale = msk->get_tot_imp_riva();
|
||||
else
|
||||
if (msk.is_doc_split())
|
||||
totale = msk.get_tot_imp_riva();
|
||||
cg_msk.set(F_TOTALE, totale);
|
||||
}
|
||||
|
||||
void TPrimanota_application::riporta_dati_f1(TMask& cg_msk, const shared_ptr<TPro_msk>& msk)
|
||||
void TPrimanota_application::riporta_dati_f1(TMask& cg_msk, TPro_msk & msk)
|
||||
{
|
||||
const bool bring = msk->should_bring_back();
|
||||
const bool bring = msk.da_riportare();
|
||||
|
||||
if (bring)
|
||||
{
|
||||
if (msk->get_numdoc().full() && cg_msk.get(F_CODCLIFOR).empty())
|
||||
write_clifo(cg_msk, msk);
|
||||
write_righe_iva_f1(cg_msk, msk);
|
||||
set_totale(cg_msk, msk);
|
||||
TPrimanota_application & a = app();
|
||||
|
||||
if (msk.get_numdoc() != 0L && cg_msk.get(F_CODCLIFOR).empty())
|
||||
a.write_clifo(cg_msk, msk);
|
||||
a.write_righe_iva_f1(cg_msk, msk);
|
||||
a.set_totale(cg_msk, msk);
|
||||
cg_msk.set(FS_RECALC, ""); cg_msk.disable(FS_RDIFFER); cg_msk.disable(FS_MCOMM); cg_msk.disable(FS_NRATE);
|
||||
if (write_scad_f1(cg_msk, msk))
|
||||
app().set_scad_f1(cg_msk);
|
||||
if (a.write_scad_f1(cg_msk, msk))
|
||||
a.set_scad_f1(cg_msk);
|
||||
}
|
||||
// Li riporto anche con il collega in prima nota, e in quel caso solo se i campi non sono gia valorizzati
|
||||
if (bring || cg_msk.get(F_NUMDOC).empty())
|
||||
if (bring || cg_msk.get(F_NUMDOCEXT) != msk.get_str_numdoc())
|
||||
{
|
||||
cg_msk.set(F_NUMDOCEXT, msk->get_numdoc());
|
||||
cg_msk.set(F_NUMDOC, msk->get_numdoc().right(7));
|
||||
|
||||
cg_msk.set(F_NUMDOCEXT, msk.get_str_numdoc());
|
||||
cg_msk.set(F_NUMDOC, format("%-7ld", msk.get_numdoc()));
|
||||
cg_msk.set(F_DATADOC, msk.get_datadoc());
|
||||
cg_msk.set(F_IDDOCSDI, msk.get_str_numdoc());
|
||||
cg_msk.set(F_DATADOCSDI, msk.get_datadoc());
|
||||
cg_msk.disable(F_IDDOCSDI);
|
||||
cg_msk.disable(F_DATADOCSDI);
|
||||
}
|
||||
|
||||
if (bring || cg_msk.get(F_DATADOC).empty())
|
||||
cg_msk.set(F_DATADOC, msk->get_datadoc());
|
||||
}
|
||||
|
||||
void TPrimanota_application::insert_part_scad(TConfig& ini)
|
||||
void TPrimanota_application::insert_part_scad(TConfig& ini) // che cazzo significa la partita 73/001
|
||||
{
|
||||
vector<TToken_string> rif_doc;
|
||||
int i = 0;
|
||||
ini.set_paragraph("23");
|
||||
TArray rif_doc;
|
||||
TString str = ini.get("NUMLINEA", "23", 0);
|
||||
|
||||
// Carico nel vettore
|
||||
while(true)
|
||||
for (int i = 0; str.full(); str = ini.get("NUMLINEA", "23", ++i))
|
||||
{
|
||||
TToken_string doc("", '|');
|
||||
TString str; str << ini.get("NUMLINEA", nullptr, i, "NULL");
|
||||
if (str != "NULL")
|
||||
{
|
||||
doc.add(str);
|
||||
doc.add(ini.get("DOCRIF", nullptr, i, "NULL"));
|
||||
doc.add(ini.get("DATADOCRIF", nullptr, i, "NULL"));
|
||||
|
||||
rif_doc.insert(rif_doc.end(), doc);
|
||||
i++;
|
||||
doc.add(str);
|
||||
doc.add(ini.get("DOCRIF", "23", i));
|
||||
doc.add(ini.get("DATADOCRIF", "23", i));
|
||||
rif_doc.add(doc);
|
||||
}
|
||||
else
|
||||
break;
|
||||
}
|
||||
|
||||
// Agganciare alla partita del documento di riferimento
|
||||
if(!rif_doc.empty())
|
||||
if(rif_doc.items() > 0)
|
||||
{
|
||||
is_f1() = true;
|
||||
|
||||
TString query; query << "USE MOV\nSELECT (DATADOC==#DATADOC)";
|
||||
TISAM_recordset rec(query);
|
||||
rec.set_var("#DATADOC", TVariant(TDate(rif_doc[0].get(2))));
|
||||
TString part;
|
||||
do
|
||||
|
||||
FOR_EACH_ARRAY_ITEM(rif_doc, r, _obj)
|
||||
{
|
||||
if (rec.get(MOV_NUMDOC).as_string() == "73/001")
|
||||
if (part.blank())
|
||||
{
|
||||
part = rec.get(MOV_PROTIVA).as_string();
|
||||
rec.set_var("#DATADOC", ((TToken_string&)rif_doc[0]).get_date(2));
|
||||
|
||||
for (bool ok = rec.move_first(); ok; ok = rec.move_next())
|
||||
{
|
||||
if (rec.get_string(MOV_NUMDOC) == "73/001")
|
||||
{
|
||||
part = rec.get_string(MOV_PROTIVA);
|
||||
break;
|
||||
}
|
||||
} while (rec.move_next());
|
||||
|
||||
}
|
||||
}
|
||||
_num_doc_rif_partite = part;
|
||||
}
|
||||
}
|
||||
@ -4092,9 +4095,10 @@ bool TPrimanota_application::fppro_mask(TMask_field& f, KEY key)
|
||||
if (!app().has_module(FPAUT) || key != K_SPACE && key != K_TAB || !check_causale(cg_msk.get(F_CODCAUS)))
|
||||
return true;
|
||||
|
||||
auto msk = std::make_shared<TPro_msk>(cg_msk);
|
||||
|
||||
app()._pro_mask = msk;
|
||||
TPro_msk * msk = app()._pro_mask;
|
||||
|
||||
if (msk == nullptr)
|
||||
app()._pro_mask = msk = new TPro_msk(cg_msk);
|
||||
|
||||
const TString datadoc = cg_msk.get(F_DATADOC);
|
||||
|
||||
@ -4104,16 +4108,13 @@ bool TPrimanota_application::fppro_mask(TMask_field& f, KEY key)
|
||||
msk->field(F_DATESEARCH).show();
|
||||
msk->set(F_DATESEARCH, datadoc);
|
||||
}
|
||||
if (msk->load_fppro_mask(msk.get()))
|
||||
{
|
||||
msk->run();
|
||||
// Riporto dati FPPRO su maschera Prima Nota (solo se hai F1)
|
||||
// Se non hai F1 collego senza riportarti i dati (solo le chiavi db)
|
||||
riporta_dati_f1(cg_msk, msk);
|
||||
riporta_dati_f1(cg_msk, *msk);
|
||||
cg_msk.set(F_PROKEY, msk->get_fpprokeys());
|
||||
is_collegato(cg_msk.field(F_COLFPPRO));
|
||||
cg_msk.set(F_COLFPPRO, cg_msk.get(F_PROKEY).full());
|
||||
cg_msk.set(F_ANNORIF, cg_msk.get(F_ANNOIVA));
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -4132,11 +4133,11 @@ bool TPrimanota_application::scollega(const bool set)
|
||||
|
||||
bool TPrimanota_application::scollega_handler(TMask_field& f, KEY key)
|
||||
{
|
||||
if (app().has_module(FPAUT) && f.running_check(key))
|
||||
{
|
||||
TMask& cg_msk = f.mask();
|
||||
|
||||
if (!app().has_module(FPAUT) || key != K_SPACE && key != K_TAB || !check_causale(cg_msk.get(F_CODCAUS)))
|
||||
return true;
|
||||
if (cg_msk.get_bool(F_COLFPPRO))
|
||||
if (check_causale(cg_msk.get(F_CODCAUS)) && cg_msk.get_bool(F_COLFPPRO))
|
||||
{
|
||||
scollega(true);
|
||||
app().clean_fppro();
|
||||
@ -4150,103 +4151,81 @@ bool TPrimanota_application::scollega_handler(TMask_field& f, KEY key)
|
||||
}
|
||||
message_box("Il movimento e' stato scollegato dalla fattura elettronica\nin ingresso, precedentemente associata.");
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool TPrimanota_application::is_collegato(TMask_field& f)
|
||||
{
|
||||
TMask& cg_msk = f.mask();
|
||||
const bool has_prokey = !cg_msk.get(F_PROKEY).empty();
|
||||
|
||||
f.set(has_prokey ? "X" : " ");
|
||||
return has_prokey;
|
||||
}
|
||||
|
||||
bool TPro_msk::load_fppro_mask(TMask* msk, KEY k)
|
||||
bool TPro_msk::load_fppro_mask(TMask & msk)
|
||||
{
|
||||
// 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)
|
||||
return false;
|
||||
if (!fp_db().sq_is_connect())
|
||||
{
|
||||
message_box("Attenzione connessione al database non riuscita.\nImpossibile collegarsi ai documenti in entrata.");
|
||||
return false;
|
||||
}
|
||||
|
||||
const int forn = msk->get_int(F_CODCLIFORS);
|
||||
const int forn = msk.get_int(F_CODCLIFORS);
|
||||
|
||||
if (forn == 0)
|
||||
{
|
||||
msk->set(F_ENABSEARCH, "X");
|
||||
abilita_piva(msk);
|
||||
msk.set(F_ENABSEARCH, "X");
|
||||
abilita_piva();
|
||||
//message_box("Inserire prima il fornitore");
|
||||
//return false;
|
||||
}
|
||||
|
||||
const TString& codfisc = msk->get(F_COFIS);
|
||||
const TString& stato_piva = msk->get(F_STATOPAIVS);
|
||||
const TString& piva = msk->get(F_PIVAS);
|
||||
const TString& codfisc = msk.get(F_COFIS);
|
||||
const TString& stato_piva = msk.get(F_STATOPAIVS);
|
||||
const TString& piva = msk.get(F_PIVAS);
|
||||
TString query;
|
||||
TString date = "";
|
||||
TDate date;
|
||||
|
||||
if (msk->get_bool(F_ENABDATE))
|
||||
date = msk->get_date(F_DATESEARCH);
|
||||
if(!msk->get_bool(F_ENABSEARCH))
|
||||
query = query_fppro(msk->get(F_CODCLIFORS), date);
|
||||
if (msk.get_bool(F_ENABDATE))
|
||||
date = msk.get_date(F_DATESEARCH);
|
||||
if(!msk.get_bool(F_ENABSEARCH))
|
||||
query = query_fppro(msk.get(F_CODCLIFORS), date);
|
||||
else
|
||||
query = query_fppro(stato_piva, piva, date);
|
||||
fp_db().sq_set_exec(query, false);
|
||||
|
||||
TSheet_field& sf = msk->sfield(F_SHEETFPPROS);
|
||||
TSheet_field& sf = msk.sfield(F_SHEETFPPROS);
|
||||
const bool show_all = msk.get_bool(F_SHOWALL);
|
||||
|
||||
sf.hide();
|
||||
if (sf.items() > 0)
|
||||
sf.destroy();
|
||||
sf.reset();
|
||||
while (fp_db().sq_next())
|
||||
{
|
||||
TString numreg = fp_db().sq_get("PZ_NUMREGCONT");
|
||||
const bool show_all = msk->get_bool(F_SHOWALL);
|
||||
const long numreg = fp_db().sq_get_long("PZ_NUMREGCONT");
|
||||
|
||||
if (numreg != "0" && !show_all)
|
||||
continue;
|
||||
|
||||
TToken_string& row = sf.row(-1);
|
||||
if (show_all || numreg == 0L)
|
||||
{
|
||||
TToken_string keys(fp_db().sq_get("PZ_KEYPRGINVIO"), ';');
|
||||
|
||||
keys.add(fp_db().sq_get("PZ_KEYHEADERFATT")); keys.add(fp_db().sq_get("PZ_KEYBODYFATT"));
|
||||
row.add("", 0);
|
||||
row.add(fp_db().sq_get("P7_TIPODOC"));
|
||||
row.add(TDate(fp_db().sq_get_date("P1_DATAORARIC")));
|
||||
row.add(TDate(fp_db().sq_get_date("PZ_DATA")));
|
||||
row.add(fp_db().sq_get("PQ_IMPTOTDOC"));
|
||||
row.add(fppro_db().set_keys(keys).get_ritenute());
|
||||
row.add(fp_db().sq_get("PZ_NUMERO"));
|
||||
row.add(fp_db().sq_get("P2_ANADENOMIN"));
|
||||
row.add(fp_db().sq_get("P2_FISCIVAPAESE"));
|
||||
row.add(fp_db().sq_get("P2_FISCIVACOD"));
|
||||
row.add(fp_db().sq_get("P2_CODFISCALE"));
|
||||
row.add(fp_db().sq_get("PZ_TIPOPROT"));
|
||||
row.add(fp_db().sq_get("PZ_NUMPROT"));
|
||||
row.add(keys);
|
||||
|
||||
const int r = sf.set_row_cell(F_SELFPPROS, "");
|
||||
|
||||
sf.set_row_cell(F_TIPODOCS, fp_db().sq_get("P7_TIPODOC"), r);
|
||||
sf.set_row_cell(F_DATAORARICS, fp_db().sq_get_date("P1_DATAORARIC"), r);
|
||||
sf.set_row_cell(F_DATAS, fp_db().sq_get_date("PZ_DATA"), r);
|
||||
sf.set_row_cell(F_IMPTOTDOCS, fp_db().sq_get("PQ_IMPTOTDOC"), r);
|
||||
sf.set_row_cell(F_RITENUTE, fppro_db().set_keys(keys).get_ritenute(), r);
|
||||
sf.set_row_cell(F_NUMEROS, fp_db().sq_get("PZ_NUMERO"), r);
|
||||
sf.set_row_cell(F_RAGXML, fp_db().sq_get("P2_ANADENOMIN"), r);
|
||||
sf.set_row_cell(F_FISCIVAPAESES, fp_db().sq_get("P2_FISCIVAPAESE"), r);
|
||||
sf.set_row_cell(F_FISCIVACODS, fp_db().sq_get("P2_FISCIVACOD"), r);
|
||||
sf.set_row_cell(F_CODFISCALES, fp_db().sq_get("P2_CODFISCALE"), r);
|
||||
sf.set_row_cell(F_TIPOPROTS, fp_db().sq_get("PZ_TIPOPROT"), r);
|
||||
sf.set_row_cell(F_PROGRESSS, fp_db().sq_get("PZ_NUMPROT"), r);
|
||||
sf.set_row_cell(F_KEYFPPROS, keys, r);
|
||||
}
|
||||
}
|
||||
sf.force_update();
|
||||
sf.show();
|
||||
return true;
|
||||
}
|
||||
|
||||
bool TPro_msk::fppro_handler(TMask_field& f, KEY k)
|
||||
bool TPro_msk::riporta(TMask_field& f)
|
||||
{
|
||||
TMask& msk = f.mask();
|
||||
|
||||
const bool load = load_fppro_mask(&msk, k);
|
||||
return load;
|
||||
}
|
||||
|
||||
bool TPro_msk::riporta_handler(TMask_field& f, KEY k)
|
||||
{
|
||||
if (k != 32)
|
||||
return true;
|
||||
TMask& msk = f.mask();
|
||||
//if (msk.curr_page() != 3)
|
||||
//return true;
|
||||
bool ok = false;
|
||||
@ -4254,16 +4233,10 @@ bool TPro_msk::riporta_handler(TMask_field& f, KEY k)
|
||||
|
||||
FOR_EACH_SHEET_ROW(sf, nr, row)
|
||||
{
|
||||
if(*row->get(0) == 'X')
|
||||
if(row->get_bool(0))
|
||||
{
|
||||
//TProtocollo protocollo(TDate(row->get(2)).year(), row->get(9), row->get(10));
|
||||
app()._pro_mask->set_doc(row->get(cid2index(F_NUMEROS)), row->get(cid2index(F_DATAS)),
|
||||
row->get(cid2index(F_IMPTOTDOCS)), row->get(cid2index(F_RITENUTE)), "", row->get(cid2index(F_KEYFPPROS)),
|
||||
msk.get(F_CODCLIFORS), row->get(cid2index(F_FISCIVACODS)));
|
||||
if (f.dlg() == DLG_OK)
|
||||
app()._pro_mask->_riporta = true;
|
||||
else
|
||||
app()._pro_mask->_riporta = false;
|
||||
app().pro_mask()->set_doc(sf, nr);
|
||||
_riporta = f.dlg() == DLG_OK;
|
||||
ok = true;
|
||||
break;
|
||||
}
|
||||
@ -4277,67 +4250,56 @@ bool TPro_msk::riporta_handler(TMask_field& f, KEY k)
|
||||
return true;
|
||||
}
|
||||
|
||||
bool TPro_msk::collega_handler(TMask_field& f, KEY k)
|
||||
{
|
||||
return riporta_handler(f, k);
|
||||
}
|
||||
|
||||
bool TPro_msk::piva_handler(TMask_field& f, KEY k)
|
||||
{
|
||||
TMask& msk = f.mask();
|
||||
bool ok = true;
|
||||
|
||||
if(k == K_TAB && f.active() && f.focusdirty())
|
||||
{
|
||||
ok = load_fppro_mask(&msk, K_SPACE);
|
||||
}
|
||||
return ok;
|
||||
}
|
||||
|
||||
bool TPro_msk::date_handler(TMask_field& f, KEY k)
|
||||
{
|
||||
TMask& msk = f.mask();
|
||||
bool ok = true;
|
||||
|
||||
if (k == K_TAB && f.active() && f.focusdirty())
|
||||
{
|
||||
ok = load_fppro_mask(&msk, K_SPACE);
|
||||
}
|
||||
return ok;
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
if (sf.get_bool_row_cell(nr, F_SELFPPROS))
|
||||
sf.set_row_cell(F_SELFPPROS, false, nr);
|
||||
sf.force_update();
|
||||
sf.show();
|
||||
}
|
||||
|
||||
bool TPro_msk::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||
{
|
||||
TMask & m = o.mask();
|
||||
|
||||
switch (o.dlg())
|
||||
{
|
||||
case DLG_CONFIG:
|
||||
if (e == fe_button)
|
||||
load_fppro_mask(m);
|
||||
break;
|
||||
case DLG_OK:
|
||||
if (e == fe_button)
|
||||
riporta(o);
|
||||
break;
|
||||
case DLG_LINK:
|
||||
if (e == fe_button)
|
||||
riporta(o);
|
||||
break;
|
||||
case F_PIVAS:
|
||||
if (e == fe_modify)
|
||||
load_fppro_mask(m);
|
||||
break;
|
||||
case F_DATESEARCH:
|
||||
if (e == fe_modify)
|
||||
load_fppro_mask(m);
|
||||
break;
|
||||
case F_SELFPPROS:
|
||||
if (e == fe_modify)
|
||||
fppro_selfatt();
|
||||
break;
|
||||
case F_SHOWALL:
|
||||
if (e == fe_modify)
|
||||
load_fppro_mask(this, K_SPACE);
|
||||
load_fppro_mask(m);
|
||||
break;
|
||||
case F_ENABSEARCH:
|
||||
if (e == fe_modify)
|
||||
{
|
||||
abilita_piva(this);
|
||||
load_fppro_mask(this);
|
||||
abilita_piva();
|
||||
load_fppro_mask(m);
|
||||
}
|
||||
break;
|
||||
case F_ENABDATE:
|
||||
@ -4345,7 +4307,7 @@ bool TPro_msk::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||
{
|
||||
field(F_DATESEARCH).show(o.mask().get_bool(F_ENABDATE));
|
||||
if (!o.mask().get_bool(F_ENABDATE))
|
||||
load_fppro_mask(this);
|
||||
load_fppro_mask(m);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
@ -4356,9 +4318,11 @@ bool TPro_msk::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||
|
||||
bool TPro_msk::is_doc_split()
|
||||
{
|
||||
for(riga_iva_s const& riga : _righe_iva)
|
||||
FOR_EACH_ARRAY_ITEM(_righe_iva, r, obj)
|
||||
{
|
||||
if (riga.esigibilita == 'S')
|
||||
TToken_string & riga = STRING_TOKEN(obj);
|
||||
|
||||
if (riga.get(FPRI_ESIGIBILITA) == "S")
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
@ -4395,53 +4359,71 @@ void TPro_msk::set_scadenze(const char* fpprokeys)
|
||||
}
|
||||
}
|
||||
|
||||
void TPro_msk::set_doc(const char* numero, const char* datadoc, const char* totdoc, const char* ritenute, const char* protfppro, const char* fpprokeys, const char* codforn, const char* piva)
|
||||
void TPro_msk::set_doc(TSheet_field & s, int nrow)
|
||||
//long numero, TDate datadoc, real totdoc, real ritenute, const char* protfppro, const char* fpprokeys, long codforn, const char* piva)
|
||||
{
|
||||
_numero = numero;
|
||||
_datadoc = datadoc;
|
||||
_totdoc = abs(totdoc);
|
||||
_ritenute = ritenute;
|
||||
_protfppro.sset(protfppro);
|
||||
_numero = s.get_long_row_cell(nrow, F_NUMEROS);
|
||||
_str_numero = s.get_str_row_cell(nrow, F_NUMEROS);
|
||||
_datadoc = s.get_date_row_cell(nrow, F_DATAS);
|
||||
_totdoc = abs(s.get_real_row_cell(nrow, F_IMPTOTDOCS));
|
||||
_ritenute = s.get_real_row_cell(nrow, F_RITENUTE);
|
||||
_protfppro.sset("");
|
||||
|
||||
const TString & fpprokeys = s.get_str_row_cell(nrow, F_KEYFPPROS);
|
||||
|
||||
_fpprokeys = fpprokeys;
|
||||
_codforn = codforn;
|
||||
_piva = piva;
|
||||
set_righeiva(fpprokeys);
|
||||
set_scadenze(fpprokeys);
|
||||
set_scadenze(fpprokeys);
|
||||
_codforn = s.get_long_row_cell(nrow, F_CODCLIFORS);
|
||||
_piva = s.get_str_row_cell(nrow, F_FISCIVACODS);
|
||||
|
||||
}
|
||||
|
||||
real TPro_msk::get_tot_imp_riva()
|
||||
{
|
||||
real tot = ZERO;
|
||||
real tot;
|
||||
|
||||
for(riga_iva_s const& riga : _righe_iva)
|
||||
FOR_EACH_ARRAY_ITEM(_righe_iva, r, obj)
|
||||
{
|
||||
if (riga.imposta > ZERO)
|
||||
tot += riga.imponibile;
|
||||
TToken_string & riga = STRING_TOKEN(obj);
|
||||
|
||||
tot += riga.get_real(FPRI_IMPONIBILE);
|
||||
}
|
||||
return tot;
|
||||
}
|
||||
|
||||
void TPro_msk::add_rigaiva(const real& imponibile, const real& imposta, const real& aliquota, const TString4& natura, char esigib)
|
||||
{
|
||||
_righe_iva.insert(_righe_iva.end(), { imponibile, imposta, aliquota, natura, esigib });
|
||||
TToken_string riga;
|
||||
|
||||
riga.add(imponibile, FPRI_IMPONIBILE);
|
||||
riga.add(imposta, FPRI_IMPOSTA);
|
||||
riga.add(aliquota, FPRI_ALIQUOTA);
|
||||
riga.add(natura, FPRI_NATURA);
|
||||
riga.add(esigib, FPRI_ESIGIBILITA);
|
||||
_righe_iva.add(riga);
|
||||
}
|
||||
|
||||
void TPro_msk::add_scad(const TDate& date, const real& importo)
|
||||
{
|
||||
_scadenze.insert(_scadenze.end(), { date, importo });
|
||||
TToken_string riga;
|
||||
|
||||
riga.add(date, FPSC_DATA);
|
||||
riga.add(importo, FPSC_IMPORTO);
|
||||
_scadenze.add(riga);
|
||||
}
|
||||
|
||||
TString& TPro_msk::query_fppro(const TString& codforn, const TString& date)
|
||||
TString& TPro_msk::query_fppro(const TString& codforn, const TDate& date)
|
||||
{
|
||||
return query_fppro(codforn, "", "", "", date, "", "", "", true, false);
|
||||
}
|
||||
|
||||
TString& TPro_msk::query_fppro(const TString& stato_piva, const TString& piva, const TString& date)
|
||||
TString& TPro_msk::query_fppro(const TString& stato_piva, const TString& piva, const TDate& date)
|
||||
{
|
||||
return query_fppro("", stato_piva, piva, "", date, "", "", "", true, true);
|
||||
}
|
||||
|
||||
TString& TPro_msk::query_fppro(const TString& codforn, const TString& stato_piva, const TString& piva, const TString& where_str, const TString& date, const TString& keyprginvio, const TString& keyheaderfatt, const TString& keybodyfatt, bool order, bool piva_research)
|
||||
TString& TPro_msk::query_fppro(const TString& codforn, const TString& stato_piva, const TString& piva, const TString& where_str, const TDate& date, const TString& keyprginvio, const TString& keyheaderfatt, const TString& keybodyfatt, bool order, bool piva_research)
|
||||
{
|
||||
TString id_fornitore;
|
||||
TString keys;
|
||||
@ -4465,14 +4447,15 @@ TString& TPro_msk::query_fppro(const TString& codforn, const TString& stato_piva
|
||||
id_fornitore << " (PZ_CLIFOR = '" << codforn << "') ";
|
||||
}
|
||||
|
||||
static TString query;
|
||||
query.cut(0) << query_string() << "WHERE ";
|
||||
TString & query = query_string();
|
||||
|
||||
query << "WHERE ";
|
||||
|
||||
if (!id_fornitore.empty())
|
||||
{
|
||||
query << id_fornitore << " ";
|
||||
if (!date.empty())
|
||||
query << " AND PZ_DATA = '" << TDate(date).date2ansi() << "' ";
|
||||
if (date.ok())
|
||||
query << " AND PZ_DATA = '" << date.date2ansi() << "' ";
|
||||
if (order)
|
||||
query << "\nORDER BY P1_DATAORARIC ASC";
|
||||
query << ";";
|
||||
@ -4484,9 +4467,9 @@ TString& TPro_msk::query_fppro(const TString& codforn, const TString& stato_piva
|
||||
query << " AND " << where_str;
|
||||
query << ";";
|
||||
}
|
||||
else if (!date.empty())
|
||||
else if (date.ok())
|
||||
{
|
||||
query << " PZ_DATA = '" << TDate(date).date2ansi() << "' ";
|
||||
query << " PZ_DATA = '" << date.date2ansi() << "' ";
|
||||
if (order)
|
||||
query << "\nORDER BY P1_DATAORARIC ASC, PZ_TIPOPROT ASC, PZ_NUMPROT ASC";
|
||||
query << ";";
|
||||
@ -4501,9 +4484,9 @@ TString& TPro_msk::query_fppro(const TString& codforn, const TString& stato_piva
|
||||
|
||||
TString& TPro_msk::query_string()
|
||||
{
|
||||
static TString query;
|
||||
TString & query = get_tmp_string(512);
|
||||
|
||||
query.cut(0) << "SELECT PZ_CLIFOR, PZ_DATA, CAST(P1_DATAORARIC AS DATE) AS P1_DATAORARIC, P7_TIPODOC, PQ_IMPTOTDOC, PZ_NUMERO, PZ_NUMREGCONT, PZ_TIPOPROT, " <<
|
||||
query << "SELECT PZ_CLIFOR, PZ_DATA, CAST(P1_DATAORARIC AS DATE) AS P1_DATAORARIC, P7_TIPODOC, PQ_IMPTOTDOC, PZ_NUMERO, PZ_NUMREGCONT, PZ_TIPOPROT, " <<
|
||||
"PZ_NUMPROT, P2_ANADENOMIN, P2_FISCIVAPAESE, P2_FISCIVACOD, P2_CODFISCALE, PZ_KEYPRGINVIO, PZ_KEYHEADERFATT, PZ_KEYBODYFATT\n" <<
|
||||
"FROM PAA0200F \nJOIN FPPRO00F\n" << " ON P2_KEYPRGINVIO = PZ_KEYPRGINVIO AND P2_KEYHEADERFATT = PZ_KEYHEADERFATT AND P2_KEYBODYFATT = PZ_KEYBODYFATT\n" <<
|
||||
"JOIN PAA0100F \nON P2_KEYPRGINVIO = P1_KEYPRGINVIO AND P2_KEYHEADERFATT = P1_KEYHEADERFATT AND P2_KEYBODYFATT = P1_KEYBODYFATT\n" <<
|
||||
@ -4512,36 +4495,26 @@ TString& TPro_msk::query_string()
|
||||
return query;
|
||||
}
|
||||
|
||||
void TPro_msk::abilita_piva(TMask* msk)
|
||||
void TPro_msk::abilita_piva()
|
||||
{
|
||||
if (msk->get_bool(F_ENABSEARCH))
|
||||
{
|
||||
msk->enable(F_PIVAS);
|
||||
msk->enable(F_STATOPAIVS);
|
||||
}
|
||||
else
|
||||
{
|
||||
msk->enable(F_PIVAS, false);
|
||||
msk->enable(F_STATOPAIVS, false);
|
||||
}
|
||||
const bool on = get_bool(F_ENABSEARCH);
|
||||
|
||||
enable(F_PIVAS, on);
|
||||
enable(F_STATOPAIVS, on);
|
||||
enable(F_COFIS, on);
|
||||
}
|
||||
|
||||
TPro_msk::TPro_msk(TMask& cg_msk) : TAutomask("cg2100t"), _riporta(false), _codforn("")
|
||||
TPro_msk::TPro_msk(TMask& cg_msk) : TAutomask("cg2100t"), _riporta(false), _codforn(0L), _numero(0L)
|
||||
{
|
||||
TMask::set_handler(DLG_CONFIG, fppro_handler);
|
||||
TMask::set_handler(DLG_OK, riporta_handler);
|
||||
if (!app().has_module(F1AUT))
|
||||
field(DLG_OK).disable();
|
||||
TMask::set_handler(DLG_LINK, collega_handler);
|
||||
TMask::set_handler(F_PIVAS, piva_handler);
|
||||
TMask::set_handler(F_DATESEARCH, date_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));
|
||||
TMask::set(F_RAGSOCS, cg_msk.get(F_RAGSOCCF));
|
||||
enable(DLG_OK, app().has_module(F1AUT));
|
||||
set(F_CODCLIFORS, cg_msk.get(F_CODCLIFOR));
|
||||
set(F_COFIS, cg_msk.get(F_COFI));
|
||||
set(F_STATOPAIVS, cg_msk.get(F_STATOPAIV));
|
||||
set(F_PIVAS, cg_msk.get(F_PIVA));
|
||||
set(F_RAGSOCS, cg_msk.get(F_RAGSOCCF));
|
||||
set(F_DATESEARCH, TDate(TODAY));
|
||||
_righe_iva.clear();
|
||||
_righe_iva.destroy();
|
||||
_scadenze.destroy();
|
||||
}
|
||||
|
||||
bool& is_f1()
|
||||
@ -4549,3 +4522,4 @@ bool& is_f1()
|
||||
static bool is_f1 = false;
|
||||
return is_f1;
|
||||
}
|
||||
|
||||
|
181
src/cg/cg2102.h
181
src/cg/cg2102.h
@ -27,15 +27,78 @@
|
||||
|
||||
#include <automask.h>
|
||||
#include "../f1/f1lib.h"
|
||||
#include <vector>
|
||||
|
||||
#define K_ELIMMAS 0 // Key per eliminazione massima
|
||||
|
||||
class TPro_msk;
|
||||
#define FPRI_IMPONIBILE 0
|
||||
#define FPRI_IMPOSTA 1
|
||||
#define FPRI_ALIQUOTA 2
|
||||
#define FPRI_NATURA 3
|
||||
#define FPRI_ESIGIBILITA 4
|
||||
|
||||
#define FPSC_DATA 0
|
||||
#define FPSC_IMPORTO 1
|
||||
|
||||
class TDati_mov_auto;
|
||||
|
||||
enum CGMaskType { _query = 0, _no_iva = 1, _iva = 2, _occas = 3};
|
||||
|
||||
class TPro_msk : public TAutomask
|
||||
{
|
||||
long _numero;
|
||||
TDate _datadoc;
|
||||
real _totdoc;
|
||||
real _ritenute;
|
||||
TProtocollo _protfppro;
|
||||
TString _fpprokeys;
|
||||
TString _piva;
|
||||
long _codforn;
|
||||
TString_array _righe_iva;
|
||||
TString_array _scadenze;
|
||||
bool _riporta;
|
||||
TString _str_numero;
|
||||
|
||||
// Non permette la selezione multipla
|
||||
void fppro_selfatt() const;
|
||||
bool on_field_event(TOperable_field& o, TField_event e, long jolly) override;
|
||||
public:
|
||||
bool da_riportare() const { return _riporta; }
|
||||
bool is_doc_split() ;
|
||||
|
||||
void set_righeiva(const char* fpprokeys);
|
||||
void set_scadenze(const char* fpprokeys);
|
||||
void set_doc(TSheet_field & s, int nrow);
|
||||
|
||||
const long get_numdoc() const { return _numero; }
|
||||
const TString & get_str_numdoc() const { return _str_numero; }
|
||||
const TDate & get_datadoc() const { return _datadoc; }
|
||||
const real & get_totdoc() const { return _totdoc; }
|
||||
const real & get_ritenute() const { return _ritenute; }
|
||||
const TString & get_fpprokeys() const { return _fpprokeys; }
|
||||
const long get_codforn() const { return _codforn; }
|
||||
const TString & get_piva() const { return _piva; }
|
||||
const TString_array& get_righeiva() const { return _righe_iva; }
|
||||
const TProtocollo& get_protocollo() const { return _protfppro; }
|
||||
const TString_array& get_scadenze() const { return _scadenze; }
|
||||
real get_tot_imp_riva() ;
|
||||
|
||||
void add_rigaiva(const real& imponibile, const real& imposta, const real& aliquota, const TString4& natura, char esigib);
|
||||
void add_scad(const TDate& date, const real& importo);
|
||||
|
||||
static TString& query_fppro(const TString& codforn, const TDate& date);
|
||||
static TString& query_fppro(const TString& stato_piva, const TString& piva, const TDate& date);
|
||||
static TString& query_fppro(const TString& codforn, const TString& stato_piva, const TString& piva, const TString& where_str, const TDate& date, const TString& keyprginvio, const TString& keyheaderfatt, const TString& keybodyfatt, bool order = true, bool piva_research = false);
|
||||
static TString& query_string();
|
||||
|
||||
void abilita_piva();
|
||||
|
||||
// Carica documenti FPPRO sulla maschera
|
||||
bool riporta(TMask_field& f);
|
||||
bool load_fppro_mask(TMask & msk);
|
||||
|
||||
TPro_msk(TMask& cg_msk);
|
||||
};
|
||||
|
||||
class TPrimanota_application : public TRelation_application
|
||||
{
|
||||
TMovimentoPN* _rel; // Relazione principale
|
||||
@ -90,7 +153,7 @@ class TPrimanota_application : public TRelation_application
|
||||
|
||||
TAssoc_array _colori; // Colori delle righe
|
||||
bool _isf1;
|
||||
shared_ptr<TPro_msk> _pro_mask;
|
||||
TPro_msk * _pro_mask;
|
||||
bool _is_set_fpcheck;
|
||||
int _last_date;
|
||||
bool _f1_ini;
|
||||
@ -181,20 +244,19 @@ class TPrimanota_application : public TRelation_application
|
||||
|
||||
// Gestione F1
|
||||
|
||||
static void write_righe_iva_f1(TMask& cg_msk, const shared_ptr<TPro_msk>& msk);
|
||||
static bool write_scad_f1(const TMask& cg_msk, const shared_ptr<TPro_msk>& msk);
|
||||
static void write_clifo(TMask& cg_msk, const shared_ptr<TPro_msk>& msk);
|
||||
static void set_totale(TMask& cg_msk, const shared_ptr<TPro_msk>& msk);
|
||||
static void riporta_dati_f1(TMask& cg_msk, const shared_ptr<TPro_msk>& msk);
|
||||
void write_righe_iva_f1(TMask& cg_msk, const TPro_msk & msk);
|
||||
bool write_scad_f1(const TMask& cg_msk, const TPro_msk & msk);
|
||||
void write_clifo(TMask& cg_msk, const TPro_msk & msk);
|
||||
void set_totale(TMask& cg_msk, TPro_msk & msk);
|
||||
static void riporta_dati_f1(TMask& cg_msk, TPro_msk & msk);
|
||||
void insert_part_scad(TConfig& ini);
|
||||
// Handlers per aggancio FPPRO
|
||||
// Bottone per maschera FPPRO
|
||||
static bool fppro_mask(TMask_field& f, KEY key);
|
||||
static bool scollega_handler(TMask_field& f, KEY key);
|
||||
static bool is_collegato(TMask_field& f);
|
||||
static void fppromask_set_handl(TMask* msk);
|
||||
static void load_list(TMask* msk, KEY k);
|
||||
static void f1_init_modify(TMask& m, const TRectype& mov);
|
||||
void load_list(TMask* msk, KEY k);
|
||||
void f1_init(TMask& m, const bool fe_enabled, const bool f1_linked = false);
|
||||
|
||||
void reset_sheet_row(TSheet_field& s, int n);
|
||||
int crea_somma_spese(TImporto& imp);
|
||||
@ -223,9 +285,10 @@ protected: // TApplication
|
||||
static bool scollega(bool set = false);
|
||||
// Pulisce il mov e db dai firerimenti FPPRO (in MODE_MOD per edit/delete)
|
||||
void clean_fppro();
|
||||
// setta variabili prima del controllo has_f1_db
|
||||
void set_has_f1_db(TMask* m);
|
||||
bool has_f1_db(TMask* m);
|
||||
// Ha f1 ?
|
||||
bool has_f1() const;
|
||||
// controlla il db
|
||||
bool has_f1_db(const TMask & m);
|
||||
// Controlli prima di write e rewrite
|
||||
int controlli_f1(const TMask& m);
|
||||
|
||||
@ -321,7 +384,7 @@ protected:
|
||||
real calcola_imp() const;
|
||||
|
||||
void add_cgs_tot(TMask& m);
|
||||
int set_cgs_row(int n, const TImporto& importo, const TBill& conto, const char* desc, char tipo,
|
||||
int set_cgs_row(int n, TImporto& importo, const TBill& conto, const char* desc, char tipo,
|
||||
const char* cms = nullptr, const char* fas = nullptr);
|
||||
void set_cgs_imp(int n, const TImporto& importo);
|
||||
bool add_cgs_imp(int n, const TImporto& importo);
|
||||
@ -400,98 +463,18 @@ public:
|
||||
TString_array& pag_rows() { return _pag_rows; }
|
||||
TImporto get_cgs_imp(int n) const;
|
||||
|
||||
TPro_msk * pro_mask() const { return _pro_mask; }
|
||||
|
||||
TImporto imposte_split_pay() const;
|
||||
const TString& num_doc_rif() const { return _num_doc_rif_partite; }
|
||||
|
||||
TPrimanota_application();
|
||||
virtual ~TPrimanota_application() { }
|
||||
};
|
||||
|
||||
class TPro_msk : public TAutomask
|
||||
{
|
||||
public:
|
||||
struct riga_iva_s;
|
||||
struct scadenza_s;
|
||||
private:
|
||||
TString _numero;
|
||||
TDate _datadoc;
|
||||
real _totdoc;
|
||||
real _ritenute;
|
||||
TProtocollo _protfppro;
|
||||
TString _fpprokeys;
|
||||
TString _piva;
|
||||
TString _codforn;
|
||||
vector<riga_iva_s> _righe_iva;
|
||||
vector<scadenza_s> _scadenze;
|
||||
bool _riporta;
|
||||
|
||||
// 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 riporta_handler(TMask_field& f, KEY k);
|
||||
static bool collega_handler(TMask_field& f, KEY k);
|
||||
static bool piva_handler(TMask_field& f, KEY k);
|
||||
static bool date_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:
|
||||
struct riga_iva_s
|
||||
{
|
||||
real imponibile;
|
||||
real imposta;
|
||||
real aliquota;
|
||||
TString4 natura;
|
||||
char esigibilita;
|
||||
};
|
||||
struct scadenza_s
|
||||
{
|
||||
TDate data;
|
||||
real importo;
|
||||
};
|
||||
|
||||
bool should_bring_back() const { return _riporta; }
|
||||
bool is_doc_split();
|
||||
|
||||
void set_righeiva(const char* fpprokeys);
|
||||
void set_scadenze(const char* fpprokeys);
|
||||
void set_doc(const char* numero, const char* datadoc, const char* totdoc, const char* ritenute, const char* protfppro, const char* fpprokeys, const char* codforn, const char* piva);
|
||||
|
||||
TString get_numdoc() const { return _numero; }
|
||||
TDate get_datadoc() const { return _datadoc; }
|
||||
real get_totdoc() const { return _totdoc; }
|
||||
real get_ritenute() const { return _ritenute; }
|
||||
TString get_fpprokeys() const { return _fpprokeys; }
|
||||
TString get_codforn() const { return _codforn; }
|
||||
TString get_piva() const { return _piva; }
|
||||
const vector<riga_iva_s>& get_righeiva() const { return _righe_iva; }
|
||||
TProtocollo& get_protocollo() { return _protfppro; }
|
||||
vector<scadenza_s>& get_scadenze() { return _scadenze; }
|
||||
real get_tot_imp_riva();
|
||||
|
||||
|
||||
void add_rigaiva(const real& imponibile, const real& imposta, const real& aliquota, const TString4& natura, char esigib);
|
||||
void add_scad(const TDate& date, const real& importo);
|
||||
|
||||
|
||||
static TString& query_fppro(const TString& codforn, const TString& date);
|
||||
static TString& query_fppro(const TString& stato_piva, const TString& piva, const TString& date);
|
||||
static TString& query_fppro(const TString& codforn, const TString& stato_piva, const TString& piva, const TString& where_str, const TString& date, const TString& keyprginvio, const TString& keyheaderfatt, const TString& keybodyfatt, bool order = true, bool piva_research = false);
|
||||
static TString& query_string();
|
||||
|
||||
static void abilita_piva(TMask* msk);
|
||||
|
||||
// Carica documenti FPPRO sulla maschera
|
||||
static bool load_fppro_mask(TMask* msk, KEY k = 32);
|
||||
|
||||
TPro_msk() = delete;
|
||||
TPro_msk(TMask& cg_msk);
|
||||
virtual ~TPrimanota_application() { safe_delete(_pro_mask); }
|
||||
};
|
||||
|
||||
bool& is_f1();
|
||||
TString& num_doc_rif();
|
||||
|
||||
|
||||
|
||||
#ifndef __EXTRA__
|
||||
inline TPrimanota_application& app()
|
||||
|
@ -329,7 +329,7 @@ bool TPrimanota_application::codpag_handler(TMask_field& f, KEY key)
|
||||
TMask& m = f.mask();
|
||||
TPrimanota_application& a = app();
|
||||
const bool set_scad = a.is_fattura() && m.page_enabled(2); // E' attiva pagina 3
|
||||
if (key == K_ENTER && (!a._f1_ini && (a._pro_mask == nullptr || !a._pro_mask->should_bring_back())))
|
||||
if (key == K_ENTER && (!a._f1_ini && (a._pro_mask == nullptr || !a._pro_mask->da_riportare())))
|
||||
{
|
||||
if (set_scad && f.empty())
|
||||
{
|
||||
@ -356,7 +356,7 @@ bool TPrimanota_application::codpag_handler(TMask_field& f, KEY key)
|
||||
}
|
||||
}
|
||||
|
||||
if (key == K_TAB && f.focusdirty() && m.insert_mode() && set_scad && (!a._f1_ini && (a._pro_mask == nullptr || !a._pro_mask->should_bring_back())))
|
||||
if (key == K_TAB && f.focusdirty() && m.insert_mode() && set_scad && (!a._f1_ini && (a._pro_mask == nullptr || !a._pro_mask->da_riportare())))
|
||||
a.set_scadenze(m);
|
||||
|
||||
return ok;
|
||||
@ -1227,8 +1227,7 @@ bool TPrimanota_application::notify_edit_pagamento(TPartita& p, TRectype& new_pa
|
||||
// Aggiornamento contopartita
|
||||
const TImporto old_importo(controsez, old_pag.get_real(PAGSCA_IMPORTO));
|
||||
TBill old_conto; old_conto.get(old_pag, true);
|
||||
|
||||
const TImporto new_importo(controsez, new_pag.get_real(PAGSCA_IMPORTO));
|
||||
TImporto new_importo(controsez, new_pag.get_real(PAGSCA_IMPORTO));
|
||||
|
||||
if (old_importo != new_importo || old_conto != new_conto)
|
||||
{
|
||||
@ -1298,7 +1297,7 @@ bool TPrimanota_application::notify_edit_pagamento(TPartita& p, TRectype& new_pa
|
||||
const real new_ritenute(new_pag.get(PAGSCA_RITENUTE));
|
||||
if (old_ritenute != new_ritenute)
|
||||
{
|
||||
const TImporto grow_ritenute(causale().sezione_ritfis(), new_ritenute - old_ritenute);
|
||||
TImporto grow_ritenute(causale().sezione_ritfis(), new_ritenute - old_ritenute);
|
||||
const int riga = type2pos(cgrowtype_ritfis);
|
||||
|
||||
if (riga < 0)
|
||||
@ -1319,7 +1318,7 @@ bool TPrimanota_application::notify_edit_pagamento(TPartita& p, TRectype& new_pa
|
||||
const real new_ritsoc(new_pag.get(PAGSCA_RITSOC));
|
||||
if (old_ritsoc != new_ritsoc)
|
||||
{
|
||||
const TImporto grow_ritenute(causale().sezione_ritsoc(), new_ritsoc-old_ritsoc);
|
||||
TImporto grow_ritenute(causale().sezione_ritsoc(), new_ritsoc-old_ritsoc);
|
||||
const int riga = type2pos(cgrowtype_ritsoc);
|
||||
|
||||
if (riga < 0)
|
||||
|
Loading…
x
Reference in New Issue
Block a user