Patch level :4.0 981
Files correlati : Ricompilazione Demo : [ ] Commento :corretti casini di riporto git-svn-id: svn://10.65.10.50/trunk@15630 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
d619ad97a8
commit
fc720f99ec
@ -1925,7 +1925,7 @@ void TCespite::agg_spe_man(bool is_valid)
|
||||
{
|
||||
log(TR("- Aggiornamento spese di manutenzione"));
|
||||
TDitta_cespiti& cce = ditta_cespiti();
|
||||
††††const int tpspeman = get_int(CESPI_TPSPEMAN);
|
||||
const int tpspeman = get_int(CESPI_TPSPEMAN);
|
||||
|
||||
const char* field = NULL; // Nome del campo da incrementare
|
||||
if (tpspeman == 2 || (tpspeman == 4 && !cce.esente_art14()))
|
||||
|
@ -211,7 +211,7 @@ bool TStampa_sintetica_rep::get_usr_val(const TString& name, TVariant& var) cons
|
||||
if (name == "#RESAMM") //residuo da ammortizzare
|
||||
{
|
||||
var = _cespite.res_amm();
|
||||
return true
|
||||
return true;
|
||||
}
|
||||
if (name == "#SITUAZIONE") //tipo situazione da stampare in testata
|
||||
{
|
||||
|
@ -7,8 +7,8 @@ int main(int argc, char** argv)
|
||||
const int op = argc < 2 ? 0 : argv[1][1]-'0';
|
||||
switch (op)
|
||||
{
|
||||
case 0: tc9100(argc,argv); break; // esiste sulla 4.0 Invio a Proforma
|
||||
case 1: tc9200(argc,argv); break; // esiste dalla 4.0 Invio a Sispac/Cosmo
|
||||
case 0: tc9100(argc,argv); break; // Invio a Proforma
|
||||
case 1: tc9200(argc,argv); break; // Invio a Sispac/Cosmo
|
||||
default: tc9100(argc,argv); break;
|
||||
}
|
||||
exit(0);
|
||||
|
@ -747,8 +747,8 @@ public:
|
||||
void set_riga_esenzione();
|
||||
|
||||
void iva_esente(TString & codiva_es) const;
|
||||
†† real spese_incasso(real &imp, int ndec, TTipo_importo netto = _lordo) const ;
|
||||
†† real bolli(real & imp, int ndec, TTipo_importo netto = _lordo) const ;
|
||||
real spese_incasso(real &imp, int ndec, TTipo_importo netto = _lordo) const ;
|
||||
real bolli(real & imp, int ndec, TTipo_importo netto = _lordo) const ;
|
||||
|
||||
real imponibile(bool spese = FALSE, int ndec = AUTO_DECIMALS) const;
|
||||
real imposta(bool spese = FALSE, int ndec = AUTO_DECIMALS) const;
|
||||
|
@ -397,22 +397,6 @@ bool TTipo_documento::scarica_residuo() const
|
||||
return get_bool("B4");
|
||||
}
|
||||
|
||||
const TString& TTipo_documento::main_print_profile() const
|
||||
{
|
||||
TString& tmp = get_tmp_string();
|
||||
tmp = get("S5");
|
||||
tmp.cut(8); tmp.rtrim();
|
||||
return tmp;
|
||||
}
|
||||
|
||||
const TString& TTipo_documento::additional_print_profile() const
|
||||
{
|
||||
TString& tmp = get_tmp_string();
|
||||
tmp = get("S5");
|
||||
tmp.ltrim(8); tmp.rtrim();
|
||||
return tmp;
|
||||
}
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// Espressione documento
|
||||
|
708
ve/velib06.cpp
708
ve/velib06.cpp
@ -23,10 +23,8 @@
|
||||
#include "veuml.h"
|
||||
#include "veuml1.h"
|
||||
#include "veini.h"
|
||||
|
||||
#include "sconti.h"
|
||||
#include "rcondv.h"
|
||||
#include <occas.h>
|
||||
#include "rcondv.h"
|
||||
|
||||
class TOriginal_row_mask : public TAutomask
|
||||
{
|
||||
@ -587,9 +585,7 @@ bool TDocumento_mask::on_key(KEY key)
|
||||
{
|
||||
TRelation r(LF_DOC);
|
||||
r.curr()=doc();
|
||||
bool can_save = !doc().bloccato() && !doc().chiuso();
|
||||
|
||||
if (can_save && ::user_can_write(&r))
|
||||
if (!doc().bloccato() && ::user_can_write(&r))
|
||||
{
|
||||
TMask_field& stato = field(F_STATO);
|
||||
stato.enable();
|
||||
@ -773,7 +769,7 @@ void TDocumento_mask::cli2mask()
|
||||
pos = id2pos(F_CODAG);
|
||||
if (pos >= 0 && fld(pos).active())
|
||||
fld(pos).set(ven_rec.get(CFV_CODAG));
|
||||
set(F_CODZON, ven_rec.get(CFV_CODZONA));
|
||||
set(F_CODZON, ven_rec.get(CFV_CODZONA), 0x3);
|
||||
set(F_RAGGR, ven_rec.get(CFV_RAGGDOC));
|
||||
sconto_testa2mask();
|
||||
spese2mask();
|
||||
@ -796,151 +792,54 @@ void TDocumento_mask::cli2mask()
|
||||
}
|
||||
const TString16 newcodval(get(F_CODVAL));
|
||||
|
||||
show(F_OCCASEDIT, occas);
|
||||
if (!occas)
|
||||
reset(F_OCFPI);
|
||||
show(F_OCFPI, occas);
|
||||
// In forse per l'Occasionale, sicuri per il Normale
|
||||
show(F_COFI, !occas);
|
||||
show(F_STATOPAIVA, !occas);
|
||||
show(F_PAIVA, !occas);
|
||||
set(F_RAGSOC, c.get(CLI_RAGSOC));
|
||||
enable(F_RAGSOC, !occas);
|
||||
|
||||
const TRectype & ven_rec = c.vendite();
|
||||
short pos = id2pos(F_CAMBIO);
|
||||
if ((pos >= 0) && newcodval.empty())
|
||||
fld(pos).reset();
|
||||
pos = id2pos(F_CODVAL);
|
||||
if (pos >= 0 && fld(pos).active())
|
||||
fld(pos).check(STARTING_CHECK);
|
||||
pos = id2pos(F_CODVAL1);
|
||||
if (pos >= 0 && fld(pos).active())
|
||||
fld(pos).check(STARTING_CHECK);
|
||||
check_field(F_COMCF);
|
||||
check_field(F_STATOCF);
|
||||
check_field( F_CODPAG );
|
||||
pos = id2pos(F_CODLIN);
|
||||
if (pos >= 0 && fld(pos).active())
|
||||
fld(pos).check();
|
||||
check_field( F_CODCABA );
|
||||
pos = id2pos(F_CODLIST);
|
||||
if (pos >= 0 && fld(pos).active())
|
||||
fld(pos).check();
|
||||
pos = id2pos(F_CODLIST1);
|
||||
if (pos >= 0 && fld(pos).active())
|
||||
fld(pos).check();
|
||||
check_field( F_CODCABP );
|
||||
pos = id2pos(F_CODAG);
|
||||
if (pos >= 0 && fld(pos).active())
|
||||
fld(pos).check();
|
||||
|
||||
if(!onload)
|
||||
{
|
||||
short pos = id2pos(F_CODVAL);
|
||||
const TString16 codval = c.get(CLI_CODVAL); // Attenzione: Non usare TString& qui!
|
||||
|
||||
if (pos >= 0)
|
||||
set(F_CODVAL, codval, TRUE);
|
||||
pos = id2pos(F_CODVAL1);
|
||||
if (pos >= 0)
|
||||
set(F_CODVAL1, codval, TRUE);
|
||||
pos = id2pos(F_CODLIN);
|
||||
if (pos >= 0 && fld(pos).active())
|
||||
fld(pos).set(c.get(CLI_CODLIN));
|
||||
set(F_CODPAG, c.get(CLI_CODPAG));
|
||||
set(F_CODABIA, c.get(CLI_CODABI));
|
||||
set(F_CODCABA, c.get(CLI_CODCAB));
|
||||
if (id2pos(F_IBAN_STATO) > 0)
|
||||
{
|
||||
const TString80 iban = c.get(CLI_IBAN);
|
||||
set(F_IBAN, iban);
|
||||
efield(F_IBAN_STATO).validate(K_TAB);
|
||||
if (iban.not_empty())
|
||||
{
|
||||
set(F_IBAN_STATO, iban.left(2));
|
||||
set(F_IBAN_CHECK, iban.mid(2,2));
|
||||
set(F_BBAN , iban.mid(4));
|
||||
set(F_BBAN_CIN , iban.mid(4,1));
|
||||
set(F_BBAN_ABI , iban.mid(5,5));
|
||||
set(F_BBAN_CAB , iban.mid(10,5));
|
||||
set(F_BBAN_CONTO, iban.mid(15,12));
|
||||
}
|
||||
}
|
||||
// Setta i campi che appartengono al file LF_CFVEN
|
||||
set(F_CODABIP, ven_rec.get(CFV_CODABIPR));
|
||||
set(F_CODCABP, ven_rec.get(CFV_CODCABPR));
|
||||
set(F_RAGGR, ven_rec.get(CFV_RAGGDOC));
|
||||
set(F_RAGGREFF, ven_rec.get(CFV_RAGGEFF));
|
||||
set(F_CODINDSP, ven_rec.get(CFV_CODINDSP));
|
||||
set(F_CODAG, ven_rec.get(CFV_CODAG));
|
||||
set(F_CODSPMEZZO, ven_rec.get(CFV_CODSPMEZZO), 0x3);
|
||||
set(F_CODPORTO, ven_rec.get(CFV_CODPORTO), 0x3);
|
||||
set(F_CODNOTESP1, ven_rec.get(CFV_CODNOTESP1), 0x3);
|
||||
set(F_CODNOTESP2, ven_rec.get(CFV_CODNOTESP2), 0x3);
|
||||
set(F_CODNOTE, ven_rec.get(CFV_CODNOTE), 0x3);
|
||||
set(F_CODVETT1, ven_rec.get(CFV_CODVETT1), 0x3);
|
||||
set(F_CODVETT2, ven_rec.get(CFV_CODVETT2), 0x3);
|
||||
set(F_CODVETT3, ven_rec.get(CFV_CODVETT3), 0x3);
|
||||
set(F_SPESEINC, ven_rec.get(CFV_PERCSPINC));
|
||||
set(F_ADDBOLLI, ven_rec.get(CFV_ADDBOLLI));
|
||||
set(F_CATVEN, ven_rec.get(CFV_CATVEN), 0x3);
|
||||
pos = id2pos(F_CODLIST);
|
||||
const TString16 codlist = ven_rec.get(CFV_CODLIST);
|
||||
if (pos >= 0 && fld(pos).active())
|
||||
{
|
||||
TEdit_field & f = (TEdit_field&) fld(pos);
|
||||
|
||||
f.set(codlist);
|
||||
f.check();
|
||||
f.on_hit();
|
||||
}
|
||||
pos = id2pos(F_CODLIST1);
|
||||
if (pos >= 0 && fld(pos).active())
|
||||
{
|
||||
TEdit_field & f = (TEdit_field&) fld(pos);
|
||||
|
||||
f.set(codlist);
|
||||
f.check();
|
||||
f.on_hit();
|
||||
}
|
||||
pos = id2pos(F_CODAG);
|
||||
if (pos >= 0 && fld(pos).active())
|
||||
fld(pos).set(ven_rec.get(CFV_CODAG));
|
||||
set(F_CODZON, ven_rec.get(CFV_CODZONA), 0x3);
|
||||
set(F_RAGGR, ven_rec.get(CFV_RAGGDOC));
|
||||
sconto_testa2mask();
|
||||
spese2mask();
|
||||
}
|
||||
enable( F_CODINDSP , !occas);
|
||||
if (occas)
|
||||
occ2mask();
|
||||
else
|
||||
{
|
||||
set(F_COFI, c.get(CLI_COFI));
|
||||
set(F_INDCF, c.get(CLI_INDCF));
|
||||
set(F_CIVCF, c.get(CLI_CIVCF));
|
||||
set(F_STATOPAIVA, c.get(CLI_STATOPAIV));
|
||||
set(F_PAIVA, c.get(CLI_PAIV));
|
||||
set(F_LOCALITACF, c.get(CLI_LOCCF));
|
||||
set(F_CAPCF, c.get(CLI_CAPCF));
|
||||
set(F_COMCF, c.get(CLI_COMCF));
|
||||
set(F_STATOCF, c.get(CLI_STATOCF));
|
||||
check_field( F_CODINDSP );
|
||||
}
|
||||
const TString16 newcodval(get(F_CODVAL));
|
||||
|
||||
short pos = id2pos(F_CAMBIO);
|
||||
if ((pos >= 0) && newcodval.empty())
|
||||
fld(pos).reset();
|
||||
pos = id2pos(F_CODVAL);
|
||||
if (pos >= 0 && fld(pos).active())
|
||||
fld(pos).check(STARTING_CHECK);
|
||||
pos = id2pos(F_CODVAL1);
|
||||
if (pos >= 0 && fld(pos).active())
|
||||
fld(pos).check(STARTING_CHECK);
|
||||
check_field(F_COMCF);
|
||||
check_field(F_STATOCF);
|
||||
check_field( F_CODPAG );
|
||||
pos = id2pos(F_CODLIN);
|
||||
if (pos >= 0 && fld(pos).active())
|
||||
fld(pos).check();
|
||||
check_field( F_CODCABA );
|
||||
pos = id2pos(F_CODLIST);
|
||||
if (pos >= 0 && fld(pos).active())
|
||||
fld(pos).check();
|
||||
pos = id2pos(F_CODLIST1);
|
||||
if (pos >= 0 && fld(pos).active())
|
||||
fld(pos).check();
|
||||
check_field( F_CODCABP );
|
||||
pos = id2pos(F_CODAG);
|
||||
if (pos >= 0 && fld(pos).active())
|
||||
fld(pos).check();
|
||||
|
||||
bool gescontr = ven_rec.get_bool(CFV_GESTCONTR);
|
||||
|
||||
if (gescontr)
|
||||
{
|
||||
TConfig ditta(CONFIG_DITTA, "ve");
|
||||
gescontr = ditta.get_bool("GES", "ve", 2);
|
||||
}
|
||||
|
||||
enable(F_CODCONT1, gescontr);
|
||||
enable(F_CODCONT, gescontr);
|
||||
check_field( F_CODSPMEZZO );
|
||||
check_field( F_CODPORTO );
|
||||
check_field( F_CODNOTESP1 );
|
||||
check_field( F_CODNOTESP2 );
|
||||
check_field( F_CODNOTE );
|
||||
check_field( F_CODVETT1 );
|
||||
check_field( F_CODVETT2 );
|
||||
check_field( F_CODVETT3 );
|
||||
check_field( F_CATVEN );
|
||||
check_field( F_CODZON );
|
||||
|
||||
//gestione contratti
|
||||
bool gescontr = ven_rec.get_bool(CFV_GESTCONTR);
|
||||
if (gescontr)
|
||||
{
|
||||
TConfig ditta(CONFIG_DITTA, "ve");
|
||||
gescontr = ditta.get_bool("GES", "ve", 2);
|
||||
}
|
||||
|
||||
enable(F_CODCONT1, gescontr);
|
||||
enable(F_CODCONT, gescontr);
|
||||
}
|
||||
|
||||
void TDocumento_mask::sconto_testa2mask()
|
||||
@ -1079,23 +978,15 @@ void TDocumento_mask::doc2mask(bool reload_clifo)
|
||||
{
|
||||
const TSpesa_prest & spesa = r.spesa();
|
||||
|
||||
const int righe = doc().physical_rows();
|
||||
for (int i = 0; i < righe; i++)
|
||||
{
|
||||
TRiga_documento & r = doc()[i + 1];
|
||||
|
||||
s.insert(-1, FALSE);
|
||||
s.row(i); // qui verificare
|
||||
r.autoload(s);
|
||||
s.check_row(i, 0x2);
|
||||
if (r.tipo().tipo() == RIGA_PRESTAZIONI)
|
||||
{
|
||||
const TSpesa_prest & spesa = r.spesa();
|
||||
|
||||
if (spesa.tipo() == 'V')
|
||||
s.disable_cell(i, s.cid2index(FR_QTA));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
reset_masks(get(F_TIPODOC));
|
||||
|
||||
s.force_update();
|
||||
}
|
||||
|
||||
void TDocumento_mask::mask2doc()
|
||||
{
|
||||
@ -1375,15 +1266,15 @@ void TDocumento_mask::update_giacenza()
|
||||
|
||||
bool TDocumento_mask::ss_handler(TMask_field& f, KEY key)
|
||||
{
|
||||
{
|
||||
bool ok = TRUE;
|
||||
if (key == K_ENTER && f.mask().insert_mode())
|
||||
{
|
||||
const TSheet_field& ss = (TSheet_field&)f;
|
||||
if (!app().is_transaction() && ss.items() == 0)
|
||||
ok = yesno_box(TR("Il documento e' privo di righe:\ncontinuare ugualmente?"));
|
||||
}
|
||||
return ok;
|
||||
bool ok = TRUE;
|
||||
if (key == K_ENTER && f.mask().insert_mode())
|
||||
{
|
||||
TSheet_field& ss = (TSheet_field&)f;
|
||||
if (!app().is_transaction() && ss.items() == 0)
|
||||
ok = yesno_box("Il documento e' privo di righe:\n"
|
||||
"Si desidera continuare ugualmente?");
|
||||
}
|
||||
return ok;
|
||||
}
|
||||
|
||||
bool TDocumento_mask::ss_notify( TSheet_field& ss, int r, KEY key )
|
||||
@ -1469,8 +1360,7 @@ bool TDocumento_mask::ss_notify( TSheet_field& ss, int r, KEY key )
|
||||
}
|
||||
}
|
||||
}
|
||||
if (s.full())
|
||||
riga.put("CODMAG", s);
|
||||
riga.put("CODMAG", s);
|
||||
riga.autoload(ss);
|
||||
ss.check_row(r);
|
||||
t.set_defaults(ss, r + 1);
|
||||
@ -1515,35 +1405,25 @@ TMask* TDocumento_mask::ss_getmask(int numriga, TMask& fullmask)
|
||||
|
||||
bool TDocumento_mask::occas_code_handler(TMask_field& f, KEY key)
|
||||
{
|
||||
TMask& m = f.mask();
|
||||
if (key == K_TAB && (f.dirty() || !m.is_running()))
|
||||
{
|
||||
const TString& code = f.get();
|
||||
if (code.full())
|
||||
{
|
||||
TRelation occas(LF_OCCAS);
|
||||
occas.curr().put(OCC_CFPI, code);
|
||||
if (occas.read(_isequal) == NOERR)
|
||||
{
|
||||
m.autoload(occas);
|
||||
m.send_key(K_TAB, O_COMUNE); // Forza decodifica comuni
|
||||
m.send_key(K_TAB, O_COMUNENAS);
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
if (key == K_TAB && f.focusdirty())
|
||||
{
|
||||
const char* code = f.get();
|
||||
if (*code)
|
||||
{
|
||||
TRelation occas(LF_OCCAS);
|
||||
occas.lfile().put("CFPI", code);
|
||||
if (occas.read(_isequal) == NOERR)
|
||||
{
|
||||
TMask& m = f.mask();
|
||||
m.autoload(occas);
|
||||
m.send_key(K_TAB, O_COMUNE); // Forza decodifica comuni
|
||||
m.send_key(K_TAB, O_COMUNENAS);
|
||||
}
|
||||
}
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool TDocumento_mask::occas_cfpi_handler(TMask_field& f, KEY key)
|
||||
{
|
||||
if (key == K_ENTER)
|
||||
{
|
||||
const TMask& om = f.mask();
|
||||
if (om.field(O_COFI).empty() && om.field(O_PAIV).empty())
|
||||
return f.error_box(TR("E' necessario specificare il codice fiscale o la partita IVA"));
|
||||
}
|
||||
return true;
|
||||
}
|
||||
bool TDocumento_mask::occas_handler( TMask_field& f, KEY key )
|
||||
{
|
||||
TDocumento_mask & m = (TDocumento_mask &)f.mask();
|
||||
@ -1552,39 +1432,37 @@ bool TDocumento_mask::occas_handler( TMask_field& f, KEY key )
|
||||
TDocumento& doc = m.doc();
|
||||
TOccasionale& occ = doc.occas();
|
||||
|
||||
TMask occas_mask("ve0100o");
|
||||
occas_mask.set_handler(O_CODICE, occas_code_handler );
|
||||
occas_mask.set_handler(O_COFI, occas_cfpi_handler );
|
||||
occas_mask.set_handler(O_PAIV, occas_cfpi_handler );
|
||||
TMask occas_mask("ve0100o");
|
||||
occas_mask.set_handler( O_CODICE, occas_code_handler );
|
||||
|
||||
for (int i = occas_mask.fields() - 1; i >= 0; i--)
|
||||
{
|
||||
TMask_field& f = occas_mask.fld(i);
|
||||
const TFieldref* c = f.field();
|
||||
if (c != NULL)
|
||||
f.set(c->read(occ));
|
||||
}
|
||||
if (occas_mask.run() != K_ESC)
|
||||
{
|
||||
const TString& ocfpi = occas_mask.get(O_CODICE);
|
||||
doc.put(DOC_OCFPI, ocfpi);
|
||||
m.set(F_OCFPI, ocfpi);
|
||||
|
||||
for (int i = occas_mask.fields() - 1; i >= 0; i--)
|
||||
{
|
||||
const TMask_field& f = occas_mask.fld(i);
|
||||
const TFieldref* c = f.field();
|
||||
if (c)
|
||||
{
|
||||
const char* val = f.get();
|
||||
c->write(val, occ);
|
||||
}
|
||||
}
|
||||
m.occ2mask();
|
||||
}
|
||||
f.set_focus( );
|
||||
}
|
||||
return TRUE;
|
||||
for (int i = occas_mask.fields() - 1; i >= 0; i--)
|
||||
{
|
||||
TMask_field & f = occas_mask.fld(i);
|
||||
const TFieldref * c = f.field();
|
||||
if (c)
|
||||
f.set(c->read(occ));
|
||||
}
|
||||
if (occas_mask.run() != K_ESC)
|
||||
{
|
||||
const TString ocfpi(occas_mask.get(O_CODICE));
|
||||
doc.put("OCFPI", ocfpi);
|
||||
m.set(F_OCFPI, ocfpi);
|
||||
|
||||
for (int i = occas_mask.fields() - 1; i >= 0; i--)
|
||||
{
|
||||
const TMask_field& f = occas_mask.fld(i);
|
||||
const TFieldref* c = f.field();
|
||||
if (c)
|
||||
{
|
||||
const char* val = f.get();
|
||||
c->write(val, occ);
|
||||
}
|
||||
}
|
||||
m.occ2mask();
|
||||
}
|
||||
f.set_focus( );
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool TDocumento_mask::clifo_handler( TMask_field& f, KEY key )
|
||||
@ -1618,39 +1496,16 @@ bool TDocumento_mask::clifo_handler( TMask_field& f, KEY key )
|
||||
}
|
||||
}
|
||||
|
||||
TTipo_documento& tdoc = (TTipo_documento&) d.tipo();
|
||||
d.put(DOC_TIPOCF, tdoc.tipocf());
|
||||
d.put(DOC_CODCF, f.get());
|
||||
|
||||
TCli_for & cli_for = d.clifor();
|
||||
cli_for.put(CLI_CODCF, ""); // force reload
|
||||
|
||||
if ( cli_for.get_bool(CLI_SOSPESO) )
|
||||
return f.error_box(FR("Il codice '%ld' e' sospeso e non puo' essere utilizzato"), atol(f.get()));
|
||||
m.cli2mask();
|
||||
|
||||
if (m.id2pos(F_CODCONT) >= 0)
|
||||
if (cli_for.occasionale())
|
||||
{
|
||||
const short id = m.field(F_CODCONT).active() ? F_CODCONT : F_CODCONT1;
|
||||
TEdit_field & e = m.efield(id);
|
||||
|
||||
if (e.active())
|
||||
{
|
||||
e.set_dirty();
|
||||
e.on_hit();
|
||||
}
|
||||
TOccasionale& occas = d.occas();
|
||||
if(m.id2pos(F_OCCASEDIT) > 0 && f.to_check(key) && *(occas.codice()) == '\0')
|
||||
m.send_key( K_SPACE, F_OCCASEDIT ); // Lancia maschera occasionali
|
||||
}
|
||||
else
|
||||
d.zero(DOC_OCFPI);
|
||||
|
||||
if (cli_for.occasionale())
|
||||
{
|
||||
const TOccasionale& occas = d.occas();
|
||||
if(m.id2pos(F_OCCASEDIT) > 0 && f.to_check(key) && occas.codice().blank())
|
||||
m.send_key( K_SPACE, F_OCCASEDIT ); // Lancia maschera occasionali
|
||||
}
|
||||
else
|
||||
d.zero(DOC_OCFPI);
|
||||
}
|
||||
return TRUE; }
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -1733,34 +1588,34 @@ void TLista_elaborazioni::read()
|
||||
_elab->add(el->codice(), el);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int TLista_elaborazioni::select(TString_array & result, const char * tipo_iniziale, const char * stato_iniziale, const char * tipo_finale, const char * stato_finale)
|
||||
{
|
||||
read();
|
||||
_elab->restart();
|
||||
result.destroy();
|
||||
for (TElaborazione * el = (TElaborazione *)_elab->get(); el ; el = (TElaborazione *) _elab->get())
|
||||
{
|
||||
bool ok = false;
|
||||
if ((tipo_iniziale && *tipo_iniziale) && (stato_iniziale && *stato_iniziale))
|
||||
{
|
||||
for (int i = 0; !ok && i < TElaborazione::_max_tipi_doc_elab; i++)
|
||||
{
|
||||
const char si = el->stato_iniziale(i);
|
||||
const TString& ti = el->tipo_iniziale(i);
|
||||
ok |= ti == tipo_iniziale && si == *stato_iniziale;
|
||||
}
|
||||
}
|
||||
else
|
||||
ok = true;
|
||||
if ((tipo_finale && *tipo_finale) && (stato_finale && *stato_finale))
|
||||
ok &= el->tipo_finale() == tipo_finale && el->stato_finale() == stato_finale;
|
||||
if (ok)
|
||||
result.add(el->codice());
|
||||
}
|
||||
return result.items();
|
||||
read();
|
||||
_elab->restart();
|
||||
result.destroy();
|
||||
for (TElaborazione * el = (TElaborazione *)_elab->get(); el ; el = (TElaborazione *) _elab->get())
|
||||
{
|
||||
bool ok = FALSE;
|
||||
TString ti;
|
||||
if ((tipo_iniziale && *tipo_iniziale) && (stato_iniziale && *stato_iniziale))
|
||||
for (int i = 0; !ok && i < TElaborazione::_max_tipi_doc_elab; i++)
|
||||
{
|
||||
ti = el->tipo_iniziale(i);
|
||||
const char si = el->stato_iniziale(i);
|
||||
ok |= ti == tipo_iniziale &&
|
||||
si == *stato_iniziale;
|
||||
}
|
||||
else
|
||||
ok = TRUE;
|
||||
if ((tipo_finale && *tipo_finale) && (stato_finale && *stato_finale))
|
||||
ok &= el->tipo_finale() == tipo_finale &&
|
||||
el->stato_finale() == stato_finale;
|
||||
if (ok)
|
||||
result.add(el->codice());
|
||||
}
|
||||
return result.items();
|
||||
}
|
||||
|
||||
TElaborazione & TLista_elaborazioni::operator [](const char * key) const
|
||||
@ -2916,99 +2771,112 @@ void TElabora_mask::update_ndoc_filter(bool is_tipo_elaborazione)
|
||||
|
||||
void TElabora_mask::docrif_search()
|
||||
{
|
||||
TRectype filtrec(LF_DOC);
|
||||
filtrec.put(DOC_TIPOCF, get(F_TIPOCF_ELAB));
|
||||
filtrec.put(DOC_CODCF, get(F_CODCF_ELAB));
|
||||
filtrec.put(DOC_PROVV, get(F_PROVV_ELAB));
|
||||
filtrec.put(DOC_ANNO, get(F_ANNO_ELAB));
|
||||
|
||||
TRelation rel(LF_DOC);
|
||||
rel.add(LF_CLIFO, "TIPOCF==TIPOCF|CODCF==CODCF");
|
||||
TSorted_cursor cur(&rel, "TIPOCF|CODCF|PROVV|ANNO|CODNUM|NUMDOCRIF", "", 2, &filtrec, &filtrec);
|
||||
TString flt(256);
|
||||
if (!field(F_CODNUM_ELAB).empty())
|
||||
flt << "(CODNUM==\"" << get(F_CODNUM_ELAB) << "\")&&";
|
||||
if (!field(F_TIPODOC_ELAB).empty())
|
||||
flt << "(TIPODOC==\"" << get(F_TIPODOC_ELAB) << "\")&&";
|
||||
if (!field(F_STATODOC_ELAB).empty())
|
||||
flt << "(STATO==\"" << get(F_STATODOC_ELAB) << "\")&&";
|
||||
add_valuta_filter(flt); flt << "&&";
|
||||
TEdit_field& f = efield(F_NUMDOCRIF_ELAB);
|
||||
if (!f.empty())
|
||||
flt << "(NUMDOCRIF==\"" << f.get() << "\")&&";
|
||||
flt.rtrim(2); // Togli gli ultimi &&
|
||||
|
||||
cur.setfilter(flt);
|
||||
|
||||
TToken_string fields = "ANNO|CODNUM|TIPODOC|NUMDOCRIF|STATO|DATADOCRIF|DOC1|DOC2|DOC3|NDOC|20->RAGSOC";
|
||||
TToken_string siblings;
|
||||
TBrowse_sheet sheet(&cur, fields,
|
||||
TR("Documento di riferimento"),
|
||||
"Anno|Num.|Tipo|Docum.Rif.|Stato|Data@10|Docum.Rif.1|Docum.Rif.2|Docum.Rif.3|Documento|Ragione Sociale@50",
|
||||
0, f, siblings);
|
||||
if (sheet.run() == K_ENTER)
|
||||
{
|
||||
const int nrifpos = fields.get_pos("NUMDOCRIF");
|
||||
const TString16 nrif = sheet.row(-1).get(nrifpos);
|
||||
f.set(nrif);
|
||||
const int ndocpos = fields.get_pos("NDOC");
|
||||
const long ndoc = sheet.row(-1).get_long(ndocpos);
|
||||
set(F_NDOC_ELAB, ndoc);
|
||||
const int codnumpos = fields.get_pos("CODNUM");
|
||||
const TString4 codnum = sheet.row(-1).get(codnumpos);
|
||||
set(F_CODNUM_ELAB, codnum, TRUE);
|
||||
}
|
||||
TRectype filtrec(LF_DOC);
|
||||
filtrec.put(DOC_TIPOCF, get(F_TIPOCF_ELAB));
|
||||
filtrec.put(DOC_CODCF, get(F_CODCF_ELAB));
|
||||
filtrec.put(DOC_PROVV, get(F_PROVV_ELAB));
|
||||
filtrec.put(DOC_ANNO, get(F_ANNO_ELAB));
|
||||
|
||||
TRelation rel(LF_DOC);
|
||||
rel.add(LF_CLIFO, "TIPOCF==TIPOCF|CODCF==CODCF");
|
||||
TSorted_cursor cur(&rel, "TIPOCF|CODCF|PROVV|ANNO|CODNUM|NUMDOCRIF", "", 2, &filtrec, &filtrec);
|
||||
TString flt(256);
|
||||
if (!field(F_CODNUM_ELAB).empty())
|
||||
flt << "(CODNUM==\"" << get(F_CODNUM_ELAB) << "\")&&";
|
||||
if (!field(F_TIPODOC_ELAB).empty())
|
||||
flt << "(TIPODOC==\"" << get(F_TIPODOC_ELAB) << "\")&&";
|
||||
if (!field(F_STATODOC_ELAB).empty())
|
||||
flt << "(STATO==\"" << get(F_STATODOC_ELAB) << "\")&&";
|
||||
add_valuta_filter(flt); flt << "&&";
|
||||
TEdit_field& f = efield(F_NUMDOCRIF_ELAB);
|
||||
if (!f.empty())
|
||||
flt << "(NUMDOCRIF==\"" << f.get() << "\")&&";
|
||||
flt.rtrim(2); // Togli gli ultimi &&
|
||||
|
||||
cur.setfilter(flt);
|
||||
|
||||
TToken_string fields = "ANNO|CODNUM|TIPODOC|NUMDOCRIF|STATO|DATADOCRIF|DOC1|DOC2|DOC3|NDOC|20->RAGSOC";
|
||||
TCursor_sheet sheet(&cur, fields,
|
||||
"Documento di riferimento",
|
||||
"Anno|Num.|Tipo|Docum.Rif.|Stato|Data@10|Docum.Rif.1|Docum.Rif.2|Docum.Rif.3|Documento|Ragione Sociale@50",
|
||||
0, 1);
|
||||
if (sheet.run() == K_ENTER)
|
||||
{
|
||||
const int nrifpos = fields.get_pos("NUMDOCRIF");
|
||||
const TString16 nrif = sheet.row(-1).get(nrifpos);
|
||||
f.set(nrif);
|
||||
const int ndocpos = fields.get_pos("NDOC");
|
||||
const TString16 ndoc = sheet.row(-1).get(ndocpos);
|
||||
set(F_NDOC_ELAB, ndoc);
|
||||
const int codnumpos = fields.get_pos("CODNUM");
|
||||
const TString16 codnum = sheet.row(-1).get(codnumpos);
|
||||
set(F_CODNUM_ELAB, codnum, TRUE);
|
||||
}
|
||||
}
|
||||
|
||||
TElabora_mask::TElabora_mask(TDocumento_mask& main_mask)
|
||||
: TAutomask("ve0100b"), _main(&main_mask), _last_elab(NULL), _check_fld(-883)
|
||||
{
|
||||
_myself = this;
|
||||
|
||||
const TDate oggi(TODAY);
|
||||
set(F_ANNO_ELAB, oggi.year()); //anno della datadoc proposta (risolve bug 0000331)
|
||||
set(F_TIPOCF_ELAB, _main->get(F_TIPOCF));
|
||||
set(F_CODCF_ELAB, _main->get(F_CODCF));
|
||||
set(F_CODVAL_ELAB, _main->get(F_CODVAL));
|
||||
}
|
||||
|
||||
bool TDocumento_mask::elabora_handler( TMask_field& f, KEY key )
|
||||
{
|
||||
if (key == K_SPACE)
|
||||
{
|
||||
TDocumento_mask& m = (TDocumento_mask&)f.mask();
|
||||
m.update_progs();
|
||||
if (m.check_fields()) // Check values
|
||||
{
|
||||
TElabora_mask* selection = new TElabora_mask(m); // No woman no stack
|
||||
bool update_mask = FALSE;
|
||||
const char stato_iniziale = m.doc().stato();
|
||||
|
||||
while (selection->run() == K_ENTER)
|
||||
{
|
||||
m.mask2doc();
|
||||
update_mask |= selection->elabora();
|
||||
|
||||
if (m.doc().stato() != stato_iniziale)
|
||||
break;
|
||||
if (update_mask)
|
||||
{
|
||||
m.doc2mask(false);
|
||||
TSheet_field& ss = m.sfield(F_SHEET);
|
||||
for (int i = 0; i < ss.items(); i++)
|
||||
{
|
||||
m.ss_notify(ss,i,K_TAB);
|
||||
m.ss_notify(ss,i,K_SPACE);
|
||||
m.ss_notify(ss,i,K_ENTER);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (update_mask)
|
||||
{
|
||||
m.doc2mask(false);
|
||||
// Provoca decodifiche necessarie
|
||||
const int last = m.id2pos(BASE_PIEDE + 1);
|
||||
for (int p = 0; p < last; p++)
|
||||
{
|
||||
TMask_field& f = m.fld(p);
|
||||
f.check(STARTING_CHECK);
|
||||
}
|
||||
for (int i = m.fields() - 1; i >= 0; i--)
|
||||
|
||||
m.fld(i).set_dirty(FALSE);
|
||||
}
|
||||
delete selection;
|
||||
}
|
||||
}
|
||||
return TRUE;
|
||||
if (key == K_SPACE)
|
||||
{
|
||||
TDocumento_mask& m = (TDocumento_mask&)f.mask();
|
||||
m.update_progs();
|
||||
if (m.check_fields()) // Check values
|
||||
{
|
||||
TElabora_mask* selection = new TElabora_mask(m); // No woman no stack
|
||||
bool do_checks = false;
|
||||
const char stato_iniziale = m.doc().stato();
|
||||
|
||||
while (selection->run() == K_ENTER)
|
||||
{
|
||||
m.mask2doc();
|
||||
const bool processed = selection->elabora();
|
||||
do_checks |= processed;
|
||||
if (m.doc().stato() != stato_iniziale)
|
||||
break;
|
||||
if (processed)
|
||||
{
|
||||
m.doc2mask(FALSE);
|
||||
TSheet_field& ss = m.sfield(F_SHEET);
|
||||
for (int i = 0; i < ss.items(); i++)
|
||||
{
|
||||
m.ss_notify(ss,i,K_TAB);
|
||||
m.ss_notify(ss,i,K_SPACE);
|
||||
m.ss_notify(ss,i,K_ENTER);
|
||||
}
|
||||
}
|
||||
if (!m.get_bool(F_TYPE)) // non aggiunge al documento attuale
|
||||
break;
|
||||
}
|
||||
if (do_checks)
|
||||
{
|
||||
// Provoca decodifiche necessarie
|
||||
const int tutti = m.fields();
|
||||
int i;
|
||||
for (i = 0; i < tutti; i++)
|
||||
{
|
||||
TMask_field& f = m.fld(i);
|
||||
if (f.dlg() <= BASE_PIEDE)
|
||||
f.check(STARTING_CHECK);
|
||||
}
|
||||
for (i = tutti-1; i >= 0; i--)
|
||||
m.fld(i).set_dirty(FALSE);
|
||||
}
|
||||
delete selection;
|
||||
}
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
@ -3173,40 +3041,40 @@ bool TDocumento_mask::tip_handler( TMask_field& f, KEY key )
|
||||
|
||||
bool TDocumento_mask::codlist_handler( TMask_field& f, KEY key )
|
||||
{
|
||||
if (key == K_TAB && f.focusdirty())
|
||||
{
|
||||
TLocalisamfile & list = ((TEdit_field &) f).browse()->cursor()->file();
|
||||
const TDate datadoc(f.mask().get(F_DATADOC));
|
||||
const TDate datascad(list.get_date("VALFIN"));
|
||||
|
||||
if (datascad.ok() && datadoc > datascad)
|
||||
{
|
||||
const TString& codsucc = list.get("CODLISSUCC");
|
||||
if (codsucc.blank())
|
||||
return error_box(FR("Listino scaduto il %s"), datascad.string());
|
||||
else
|
||||
{
|
||||
f.set(codsucc);
|
||||
f.set_focusdirty();
|
||||
((TEdit_field &)f).check();
|
||||
}
|
||||
}
|
||||
}
|
||||
return TRUE;
|
||||
if (key == K_TAB && f.focusdirty())
|
||||
{
|
||||
TLocalisamfile & list = ((TEdit_field &) f).browse()->cursor()->file();
|
||||
const TDate datadoc(f.mask().get(F_DATADOC));
|
||||
const TDate datascad(list.get_date("VALFIN"));
|
||||
|
||||
if (datascad.ok() && datadoc > datascad)
|
||||
{
|
||||
const TString16 codsucc(list.get("CODLISSUCC"));
|
||||
|
||||
if (codsucc.empty())
|
||||
return error_box("Listino scaduto il %s", datascad.string());
|
||||
else
|
||||
{
|
||||
f.set(codsucc);
|
||||
f.set_focusdirty();
|
||||
((TEdit_field &)f).check();
|
||||
}
|
||||
}
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool TDocumento_mask::codcont_handler( TMask_field& f, KEY key )
|
||||
{
|
||||
if (key == K_TAB && f.focusdirty())
|
||||
{
|
||||
TDocumento_mask& m = (TDocumento_mask&)f.mask();
|
||||
TLocalisamfile & cont = ((TEdit_field &) f).browse()->cursor()->file();
|
||||
|
||||
const TDate datadoc(m.get(F_DATADOC));
|
||||
const TDate datascad(cont.get_date("VALFIN"));
|
||||
|
||||
if (datascad.ok() && datadoc > datascad)
|
||||
return error_box("Contratto scaduto il %s", datascad.string());
|
||||
if (key == K_TAB && f.focusdirty())
|
||||
{
|
||||
TDocumento_mask& m = (TDocumento_mask&)f.mask();
|
||||
TLocalisamfile & cont = ((TEdit_field &) f).browse()->cursor()->file();
|
||||
const TDate datadoc(f.mask().get(F_DATADOC));
|
||||
const TDate datascad(cont.get_date("VALFIN"));
|
||||
|
||||
if (datascad.ok() && datadoc > datascad)
|
||||
return error_box("Contratto scaduto il %s", datascad.string());
|
||||
|
||||
static bool __gesconcc = false;
|
||||
static long __cntr_firm = -1L;
|
||||
@ -3264,22 +3132,22 @@ bool TDocumento_mask::codcont_handler( TMask_field& f, KEY key )
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool TDocumento_mask::codcamp_handler( TMask_field& f, KEY key )
|
||||
{
|
||||
if (key == K_TAB && f.focusdirty())
|
||||
{
|
||||
TLocalisamfile & camp = ((TEdit_field &) f).browse()->cursor()->file();
|
||||
const TDate datadoc(f.mask().get(F_DATADOC));
|
||||
const TDate datascad(camp.get_date("VALFIN"));
|
||||
|
||||
if (datascad.ok() && datadoc > datascad)
|
||||
return error_box(FR("Offerta scaduta il %s"), datascad.string());
|
||||
}
|
||||
return TRUE;
|
||||
if (key == K_TAB && f.focusdirty())
|
||||
{
|
||||
TLocalisamfile & camp = ((TEdit_field &) f).browse()->cursor()->file();
|
||||
const TDate datadoc(f.mask().get(F_DATADOC));
|
||||
const TDate datascad(camp.get_date("VALFIN"));
|
||||
|
||||
if (datascad.ok() && datadoc > datascad)
|
||||
return error_box("Offerta scaduta il %s", datascad.string());
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
|
@ -5,6 +5,7 @@
|
||||
#include <sheet.h>
|
||||
#include <smartcard.h>
|
||||
#include <tabutil.h>
|
||||
#include <urldefid.h>
|
||||
|
||||
#include "sconti.h"
|
||||
#include "veini.h"
|
||||
@ -2046,8 +2047,6 @@ bool TDocumento_mask::ragsoc_search_handler(TMask_field& f, KEY key)
|
||||
"Ragione Sociale@50|Codice|Partita IVA|Anno|Numeraz|Documento|Data\nDocumento@10|Valuta|Totale\nDocumento@18V",
|
||||
0, 1);
|
||||
|
||||
TString ragsoc(f.get());
|
||||
|
||||
TString ragsoc(f.get()); ragsoc.upper();
|
||||
|
||||
rel.zero();
|
||||
|
Loading…
x
Reference in New Issue
Block a user