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:
luca 2007-09-18 14:25:15 +00:00
parent d619ad97a8
commit fc720f99ec
7 changed files with 295 additions and 444 deletions

View File

@ -1925,7 +1925,7 @@ void TCespite::agg_spe_man(bool is_valid)
{ {
log(TR("- Aggiornamento spese di manutenzione")); log(TR("- Aggiornamento spese di manutenzione"));
TDitta_cespiti& cce = ditta_cespiti(); 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 const char* field = NULL; // Nome del campo da incrementare
if (tpspeman == 2 || (tpspeman == 4 && !cce.esente_art14())) if (tpspeman == 2 || (tpspeman == 4 && !cce.esente_art14()))

View File

@ -211,7 +211,7 @@ bool TStampa_sintetica_rep::get_usr_val(const TString& name, TVariant& var) cons
if (name == "#RESAMM") //residuo da ammortizzare if (name == "#RESAMM") //residuo da ammortizzare
{ {
var = _cespite.res_amm(); var = _cespite.res_amm();
return true return true;
} }
if (name == "#SITUAZIONE") //tipo situazione da stampare in testata if (name == "#SITUAZIONE") //tipo situazione da stampare in testata
{ {

View File

@ -7,8 +7,8 @@ int main(int argc, char** argv)
const int op = argc < 2 ? 0 : argv[1][1]-'0'; const int op = argc < 2 ? 0 : argv[1][1]-'0';
switch (op) switch (op)
{ {
case 0: tc9100(argc,argv); break; // esiste sulla 4.0 Invio a Proforma case 0: tc9100(argc,argv); break; // Invio a Proforma
case 1: tc9200(argc,argv); break; // esiste dalla 4.0 Invio a Sispac/Cosmo case 1: tc9200(argc,argv); break; // Invio a Sispac/Cosmo
default: tc9100(argc,argv); break; default: tc9100(argc,argv); break;
} }
exit(0); exit(0);

View File

@ -747,8 +747,8 @@ public:
void set_riga_esenzione(); void set_riga_esenzione();
void iva_esente(TString & codiva_es) const; void iva_esente(TString & codiva_es) const;
real spese_incasso(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 bolli(real & imp, int ndec, TTipo_importo netto = _lordo) const ;
real imponibile(bool spese = FALSE, int ndec = AUTO_DECIMALS) const; real imponibile(bool spese = FALSE, int ndec = AUTO_DECIMALS) const;
real imposta(bool spese = FALSE, int ndec = AUTO_DECIMALS) const; real imposta(bool spese = FALSE, int ndec = AUTO_DECIMALS) const;

View File

@ -397,22 +397,6 @@ bool TTipo_documento::scarica_residuo() const
return get_bool("B4"); 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 // Espressione documento

View File

@ -23,10 +23,8 @@
#include "veuml.h" #include "veuml.h"
#include "veuml1.h" #include "veuml1.h"
#include "veini.h" #include "veini.h"
#include "sconti.h" #include "sconti.h"
#include "rcondv.h" #include "rcondv.h"
#include <occas.h>
class TOriginal_row_mask : public TAutomask class TOriginal_row_mask : public TAutomask
{ {
@ -587,9 +585,7 @@ bool TDocumento_mask::on_key(KEY key)
{ {
TRelation r(LF_DOC); TRelation r(LF_DOC);
r.curr()=doc(); r.curr()=doc();
bool can_save = !doc().bloccato() && !doc().chiuso(); if (!doc().bloccato() && ::user_can_write(&r))
if (can_save && ::user_can_write(&r))
{ {
TMask_field& stato = field(F_STATO); TMask_field& stato = field(F_STATO);
stato.enable(); stato.enable();
@ -773,7 +769,7 @@ void TDocumento_mask::cli2mask()
pos = id2pos(F_CODAG); pos = id2pos(F_CODAG);
if (pos >= 0 && fld(pos).active()) if (pos >= 0 && fld(pos).active())
fld(pos).set(ven_rec.get(CFV_CODAG)); 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)); set(F_RAGGR, ven_rec.get(CFV_RAGGDOC));
sconto_testa2mask(); sconto_testa2mask();
spese2mask(); spese2mask();
@ -796,151 +792,54 @@ void TDocumento_mask::cli2mask()
} }
const TString16 newcodval(get(F_CODVAL)); const TString16 newcodval(get(F_CODVAL));
show(F_OCCASEDIT, occas); short pos = id2pos(F_CAMBIO);
if (!occas) if ((pos >= 0) && newcodval.empty())
reset(F_OCFPI); fld(pos).reset();
show(F_OCFPI, occas); pos = id2pos(F_CODVAL);
// In forse per l'Occasionale, sicuri per il Normale if (pos >= 0 && fld(pos).active())
show(F_COFI, !occas); fld(pos).check(STARTING_CHECK);
show(F_STATOPAIVA, !occas); pos = id2pos(F_CODVAL1);
show(F_PAIVA, !occas); if (pos >= 0 && fld(pos).active())
set(F_RAGSOC, c.get(CLI_RAGSOC)); fld(pos).check(STARTING_CHECK);
enable(F_RAGSOC, !occas); check_field(F_COMCF);
check_field(F_STATOCF);
const TRectype & ven_rec = c.vendite(); 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) check_field( F_CODSPMEZZO );
{ check_field( F_CODPORTO );
short pos = id2pos(F_CODVAL); check_field( F_CODNOTESP1 );
const TString16 codval = c.get(CLI_CODVAL); // Attenzione: Non usare TString& qui! check_field( F_CODNOTESP2 );
check_field( F_CODNOTE );
if (pos >= 0) check_field( F_CODVETT1 );
set(F_CODVAL, codval, TRUE); check_field( F_CODVETT2 );
pos = id2pos(F_CODVAL1); check_field( F_CODVETT3 );
if (pos >= 0) check_field( F_CATVEN );
set(F_CODVAL1, codval, TRUE); check_field( F_CODZON );
pos = id2pos(F_CODLIN);
if (pos >= 0 && fld(pos).active()) //gestione contratti
fld(pos).set(c.get(CLI_CODLIN)); bool gescontr = ven_rec.get_bool(CFV_GESTCONTR);
set(F_CODPAG, c.get(CLI_CODPAG)); if (gescontr)
set(F_CODABIA, c.get(CLI_CODABI)); {
set(F_CODCABA, c.get(CLI_CODCAB)); TConfig ditta(CONFIG_DITTA, "ve");
if (id2pos(F_IBAN_STATO) > 0) gescontr = ditta.get_bool("GES", "ve", 2);
{ }
const TString80 iban = c.get(CLI_IBAN);
set(F_IBAN, iban); enable(F_CODCONT1, gescontr);
efield(F_IBAN_STATO).validate(K_TAB); enable(F_CODCONT, gescontr);
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);
} }
void TDocumento_mask::sconto_testa2mask() void TDocumento_mask::sconto_testa2mask()
@ -1079,23 +978,15 @@ void TDocumento_mask::doc2mask(bool reload_clifo)
{ {
const TSpesa_prest & spesa = r.spesa(); 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') if (spesa.tipo() == 'V')
s.disable_cell(i, s.cid2index(FR_QTA)); s.disable_cell(i, s.cid2index(FR_QTA));
} }
} }
reset_masks(get(F_TIPODOC));
s.force_update();
}
void TDocumento_mask::mask2doc() void TDocumento_mask::mask2doc()
{ {
@ -1375,15 +1266,15 @@ void TDocumento_mask::update_giacenza()
bool TDocumento_mask::ss_handler(TMask_field& f, KEY key) bool TDocumento_mask::ss_handler(TMask_field& f, KEY key)
{ {
{ bool ok = TRUE;
bool ok = TRUE; if (key == K_ENTER && f.mask().insert_mode())
if (key == K_ENTER && f.mask().insert_mode()) {
{ TSheet_field& ss = (TSheet_field&)f;
const TSheet_field& ss = (TSheet_field&)f; if (!app().is_transaction() && ss.items() == 0)
if (!app().is_transaction() && ss.items() == 0) ok = yesno_box("Il documento e' privo di righe:\n"
ok = yesno_box(TR("Il documento e' privo di righe:\ncontinuare ugualmente?")); "Si desidera continuare ugualmente?");
} }
return ok; return ok;
} }
bool TDocumento_mask::ss_notify( TSheet_field& ss, int r, KEY key ) 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); riga.autoload(ss);
ss.check_row(r); ss.check_row(r);
t.set_defaults(ss, r + 1); 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) bool TDocumento_mask::occas_code_handler(TMask_field& f, KEY key)
{ {
TMask& m = f.mask(); if (key == K_TAB && f.focusdirty())
if (key == K_TAB && (f.dirty() || !m.is_running())) {
{ const char* code = f.get();
const TString& code = f.get(); if (*code)
if (code.full()) {
{ TRelation occas(LF_OCCAS);
TRelation occas(LF_OCCAS); occas.lfile().put("CFPI", code);
occas.curr().put(OCC_CFPI, code); if (occas.read(_isequal) == NOERR)
if (occas.read(_isequal) == NOERR) {
{ TMask& m = f.mask();
m.autoload(occas); m.autoload(occas);
m.send_key(K_TAB, O_COMUNE); // Forza decodifica comuni m.send_key(K_TAB, O_COMUNE); // Forza decodifica comuni
m.send_key(K_TAB, O_COMUNENAS); m.send_key(K_TAB, O_COMUNENAS);
} }
} }
} }
return true; 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 ) bool TDocumento_mask::occas_handler( TMask_field& f, KEY key )
{ {
TDocumento_mask & m = (TDocumento_mask &)f.mask(); 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(); TDocumento& doc = m.doc();
TOccasionale& occ = doc.occas(); TOccasionale& occ = doc.occas();
TMask occas_mask("ve0100o"); TMask occas_mask("ve0100o");
occas_mask.set_handler(O_CODICE, occas_code_handler ); 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 );
for (int i = occas_mask.fields() - 1; i >= 0; i--) for (int i = occas_mask.fields() - 1; i >= 0; i--)
{ {
TMask_field& f = occas_mask.fld(i); TMask_field & f = occas_mask.fld(i);
const TFieldref* c = f.field(); const TFieldref * c = f.field();
if (c != NULL) if (c)
f.set(c->read(occ)); f.set(c->read(occ));
} }
if (occas_mask.run() != K_ESC) if (occas_mask.run() != K_ESC)
{ {
const TString& ocfpi = occas_mask.get(O_CODICE); const TString ocfpi(occas_mask.get(O_CODICE));
doc.put(DOC_OCFPI, ocfpi); doc.put("OCFPI", ocfpi);
m.set(F_OCFPI, ocfpi); m.set(F_OCFPI, ocfpi);
for (int i = occas_mask.fields() - 1; i >= 0; i--) for (int i = occas_mask.fields() - 1; i >= 0; i--)
{ {
const TMask_field& f = occas_mask.fld(i); const TMask_field& f = occas_mask.fld(i);
const TFieldref* c = f.field(); const TFieldref* c = f.field();
if (c) if (c)
{ {
const char* val = f.get(); const char* val = f.get();
c->write(val, occ); c->write(val, occ);
} }
} }
m.occ2mask(); m.occ2mask();
} }
f.set_focus( ); f.set_focus( );
} }
return TRUE; return TRUE;
} }
bool TDocumento_mask::clifo_handler( TMask_field& f, KEY key ) 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(); if (cli_for.occasionale())
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)
{ {
const short id = m.field(F_CODCONT).active() ? F_CODCONT : F_CODCONT1; TOccasionale& occas = d.occas();
TEdit_field & e = m.efield(id); if(m.id2pos(F_OCCASEDIT) > 0 && f.to_check(key) && *(occas.codice()) == '\0')
m.send_key( K_SPACE, F_OCCASEDIT ); // Lancia maschera occasionali
if (e.active())
{
e.set_dirty();
e.on_hit();
}
} }
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; return true;
} }
@ -1733,34 +1588,34 @@ void TLista_elaborazioni::read()
_elab->add(el->codice(), el); _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) int TLista_elaborazioni::select(TString_array & result, const char * tipo_iniziale, const char * stato_iniziale, const char * tipo_finale, const char * stato_finale)
{ {
read(); read();
_elab->restart(); _elab->restart();
result.destroy(); result.destroy();
for (TElaborazione * el = (TElaborazione *)_elab->get(); el ; el = (TElaborazione *) _elab->get()) for (TElaborazione * el = (TElaborazione *)_elab->get(); el ; el = (TElaborazione *) _elab->get())
{ {
bool ok = false; bool ok = FALSE;
if ((tipo_iniziale && *tipo_iniziale) && (stato_iniziale && *stato_iniziale)) TString ti;
{ if ((tipo_iniziale && *tipo_iniziale) && (stato_iniziale && *stato_iniziale))
for (int i = 0; !ok && i < TElaborazione::_max_tipi_doc_elab; i++) for (int i = 0; !ok && i < TElaborazione::_max_tipi_doc_elab; i++)
{ {
const char si = el->stato_iniziale(i); ti = el->tipo_iniziale(i);
const TString& ti = el->tipo_iniziale(i); const char si = el->stato_iniziale(i);
ok |= ti == tipo_iniziale && si == *stato_iniziale; ok |= ti == tipo_iniziale &&
} si == *stato_iniziale;
} }
else else
ok = true; ok = TRUE;
if ((tipo_finale && *tipo_finale) && (stato_finale && *stato_finale)) if ((tipo_finale && *tipo_finale) && (stato_finale && *stato_finale))
ok &= el->tipo_finale() == tipo_finale && el->stato_finale() == stato_finale; ok &= el->tipo_finale() == tipo_finale &&
if (ok) el->stato_finale() == stato_finale;
result.add(el->codice()); if (ok)
} result.add(el->codice());
return result.items(); }
return result.items();
} }
TElaborazione & TLista_elaborazioni::operator [](const char * key) const 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() void TElabora_mask::docrif_search()
{ {
TRectype filtrec(LF_DOC); TRectype filtrec(LF_DOC);
filtrec.put(DOC_TIPOCF, get(F_TIPOCF_ELAB)); filtrec.put(DOC_TIPOCF, get(F_TIPOCF_ELAB));
filtrec.put(DOC_CODCF, get(F_CODCF_ELAB)); filtrec.put(DOC_CODCF, get(F_CODCF_ELAB));
filtrec.put(DOC_PROVV, get(F_PROVV_ELAB)); filtrec.put(DOC_PROVV, get(F_PROVV_ELAB));
filtrec.put(DOC_ANNO, get(F_ANNO_ELAB)); filtrec.put(DOC_ANNO, get(F_ANNO_ELAB));
TRelation rel(LF_DOC); TRelation rel(LF_DOC);
rel.add(LF_CLIFO, "TIPOCF==TIPOCF|CODCF==CODCF"); rel.add(LF_CLIFO, "TIPOCF==TIPOCF|CODCF==CODCF");
TSorted_cursor cur(&rel, "TIPOCF|CODCF|PROVV|ANNO|CODNUM|NUMDOCRIF", "", 2, &filtrec, &filtrec); TSorted_cursor cur(&rel, "TIPOCF|CODCF|PROVV|ANNO|CODNUM|NUMDOCRIF", "", 2, &filtrec, &filtrec);
TString flt(256); TString flt(256);
if (!field(F_CODNUM_ELAB).empty()) if (!field(F_CODNUM_ELAB).empty())
flt << "(CODNUM==\"" << get(F_CODNUM_ELAB) << "\")&&"; flt << "(CODNUM==\"" << get(F_CODNUM_ELAB) << "\")&&";
if (!field(F_TIPODOC_ELAB).empty()) if (!field(F_TIPODOC_ELAB).empty())
flt << "(TIPODOC==\"" << get(F_TIPODOC_ELAB) << "\")&&"; flt << "(TIPODOC==\"" << get(F_TIPODOC_ELAB) << "\")&&";
if (!field(F_STATODOC_ELAB).empty()) if (!field(F_STATODOC_ELAB).empty())
flt << "(STATO==\"" << get(F_STATODOC_ELAB) << "\")&&"; flt << "(STATO==\"" << get(F_STATODOC_ELAB) << "\")&&";
add_valuta_filter(flt); flt << "&&"; add_valuta_filter(flt); flt << "&&";
TEdit_field& f = efield(F_NUMDOCRIF_ELAB); TEdit_field& f = efield(F_NUMDOCRIF_ELAB);
if (!f.empty()) if (!f.empty())
flt << "(NUMDOCRIF==\"" << f.get() << "\")&&"; flt << "(NUMDOCRIF==\"" << f.get() << "\")&&";
flt.rtrim(2); // Togli gli ultimi && flt.rtrim(2); // Togli gli ultimi &&
cur.setfilter(flt); cur.setfilter(flt);
TToken_string fields = "ANNO|CODNUM|TIPODOC|NUMDOCRIF|STATO|DATADOCRIF|DOC1|DOC2|DOC3|NDOC|20->RAGSOC"; TToken_string fields = "ANNO|CODNUM|TIPODOC|NUMDOCRIF|STATO|DATADOCRIF|DOC1|DOC2|DOC3|NDOC|20->RAGSOC";
TToken_string siblings; TCursor_sheet sheet(&cur, fields,
TBrowse_sheet sheet(&cur, fields, "Documento di riferimento",
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",
"Anno|Num.|Tipo|Docum.Rif.|Stato|Data@10|Docum.Rif.1|Docum.Rif.2|Docum.Rif.3|Documento|Ragione Sociale@50", 0, 1);
0, f, siblings); if (sheet.run() == K_ENTER)
if (sheet.run() == K_ENTER) {
{ const int nrifpos = fields.get_pos("NUMDOCRIF");
const int nrifpos = fields.get_pos("NUMDOCRIF"); const TString16 nrif = sheet.row(-1).get(nrifpos);
const TString16 nrif = sheet.row(-1).get(nrifpos); f.set(nrif);
f.set(nrif); const int ndocpos = fields.get_pos("NDOC");
const int ndocpos = fields.get_pos("NDOC"); const TString16 ndoc = sheet.row(-1).get(ndocpos);
const long ndoc = sheet.row(-1).get_long(ndocpos); set(F_NDOC_ELAB, ndoc);
set(F_NDOC_ELAB, ndoc); const int codnumpos = fields.get_pos("CODNUM");
const int codnumpos = fields.get_pos("CODNUM"); const TString16 codnum = sheet.row(-1).get(codnumpos);
const TString4 codnum = sheet.row(-1).get(codnumpos); set(F_CODNUM_ELAB, codnum, TRUE);
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 ) bool TDocumento_mask::elabora_handler( TMask_field& f, KEY key )
{ {
if (key == K_SPACE) if (key == K_SPACE)
{ {
TDocumento_mask& m = (TDocumento_mask&)f.mask(); TDocumento_mask& m = (TDocumento_mask&)f.mask();
m.update_progs(); m.update_progs();
if (m.check_fields()) // Check values if (m.check_fields()) // Check values
{ {
TElabora_mask* selection = new TElabora_mask(m); // No woman no stack TElabora_mask* selection = new TElabora_mask(m); // No woman no stack
bool update_mask = FALSE; bool do_checks = false;
const char stato_iniziale = m.doc().stato(); const char stato_iniziale = m.doc().stato();
while (selection->run() == K_ENTER) while (selection->run() == K_ENTER)
{ {
m.mask2doc(); m.mask2doc();
update_mask |= selection->elabora(); const bool processed = selection->elabora();
do_checks |= processed;
if (m.doc().stato() != stato_iniziale) if (m.doc().stato() != stato_iniziale)
break; break;
if (update_mask) if (processed)
{ {
m.doc2mask(false); m.doc2mask(FALSE);
TSheet_field& ss = m.sfield(F_SHEET); TSheet_field& ss = m.sfield(F_SHEET);
for (int i = 0; i < ss.items(); i++) for (int i = 0; i < ss.items(); i++)
{ {
m.ss_notify(ss,i,K_TAB); m.ss_notify(ss,i,K_TAB);
m.ss_notify(ss,i,K_SPACE); m.ss_notify(ss,i,K_SPACE);
m.ss_notify(ss,i,K_ENTER); m.ss_notify(ss,i,K_ENTER);
} }
} }
} if (!m.get_bool(F_TYPE)) // non aggiunge al documento attuale
if (update_mask) break;
{ }
m.doc2mask(false); if (do_checks)
// Provoca decodifiche necessarie {
const int last = m.id2pos(BASE_PIEDE + 1); // Provoca decodifiche necessarie
for (int p = 0; p < last; p++) const int tutti = m.fields();
{ int i;
TMask_field& f = m.fld(p); for (i = 0; i < tutti; i++)
f.check(STARTING_CHECK); {
} TMask_field& f = m.fld(i);
for (int i = m.fields() - 1; i >= 0; i--) if (f.dlg() <= BASE_PIEDE)
f.check(STARTING_CHECK);
m.fld(i).set_dirty(FALSE); }
} for (i = tutti-1; i >= 0; i--)
delete selection; m.fld(i).set_dirty(FALSE);
} }
} delete selection;
return TRUE; }
}
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 ) bool TDocumento_mask::codlist_handler( TMask_field& f, KEY key )
{ {
if (key == K_TAB && f.focusdirty()) if (key == K_TAB && f.focusdirty())
{ {
TLocalisamfile & list = ((TEdit_field &) f).browse()->cursor()->file(); TLocalisamfile & list = ((TEdit_field &) f).browse()->cursor()->file();
const TDate datadoc(f.mask().get(F_DATADOC)); const TDate datadoc(f.mask().get(F_DATADOC));
const TDate datascad(list.get_date("VALFIN")); const TDate datascad(list.get_date("VALFIN"));
if (datascad.ok() && datadoc > datascad) if (datascad.ok() && datadoc > datascad)
{ {
const TString& codsucc = list.get("CODLISSUCC"); const TString16 codsucc(list.get("CODLISSUCC"));
if (codsucc.blank())
return error_box(FR("Listino scaduto il %s"), datascad.string()); if (codsucc.empty())
else return error_box("Listino scaduto il %s", datascad.string());
{ else
f.set(codsucc); {
f.set_focusdirty(); f.set(codsucc);
((TEdit_field &)f).check(); f.set_focusdirty();
} ((TEdit_field &)f).check();
} }
} }
return TRUE; }
return TRUE;
} }
bool TDocumento_mask::codcont_handler( TMask_field& f, KEY key ) bool TDocumento_mask::codcont_handler( TMask_field& f, KEY key )
{ {
if (key == K_TAB && f.focusdirty()) if (key == K_TAB && f.focusdirty())
{ {
TDocumento_mask& m = (TDocumento_mask&)f.mask(); TDocumento_mask& m = (TDocumento_mask&)f.mask();
TLocalisamfile & cont = ((TEdit_field &) f).browse()->cursor()->file(); TLocalisamfile & cont = ((TEdit_field &) f).browse()->cursor()->file();
const TDate datadoc(f.mask().get(F_DATADOC));
const TDate datadoc(m.get(F_DATADOC)); const TDate datascad(cont.get_date("VALFIN"));
const TDate datascad(cont.get_date("VALFIN"));
if (datascad.ok() && datadoc > datascad)
if (datascad.ok() && datadoc > datascad) return error_box("Contratto scaduto il %s", datascad.string());
return error_box("Contratto scaduto il %s", datascad.string());
static bool __gesconcc = false; static bool __gesconcc = false;
static long __cntr_firm = -1L; 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 ) bool TDocumento_mask::codcamp_handler( TMask_field& f, KEY key )
{ {
if (key == K_TAB && f.focusdirty()) if (key == K_TAB && f.focusdirty())
{ {
TLocalisamfile & camp = ((TEdit_field &) f).browse()->cursor()->file(); TLocalisamfile & camp = ((TEdit_field &) f).browse()->cursor()->file();
const TDate datadoc(f.mask().get(F_DATADOC)); const TDate datadoc(f.mask().get(F_DATADOC));
const TDate datascad(camp.get_date("VALFIN")); const TDate datascad(camp.get_date("VALFIN"));
if (datascad.ok() && datadoc > datascad) if (datascad.ok() && datadoc > datascad)
return error_box(FR("Offerta scaduta il %s"), datascad.string()); return error_box("Offerta scaduta il %s", datascad.string());
} }
return TRUE; return TRUE;
} }

View File

@ -5,6 +5,7 @@
#include <sheet.h> #include <sheet.h>
#include <smartcard.h> #include <smartcard.h>
#include <tabutil.h> #include <tabutil.h>
#include <urldefid.h>
#include "sconti.h" #include "sconti.h"
#include "veini.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", "Ragione Sociale@50|Codice|Partita IVA|Anno|Numeraz|Documento|Data\nDocumento@10|Valuta|Totale\nDocumento@18V",
0, 1); 0, 1);
TString ragsoc(f.get());
TString ragsoc(f.get()); ragsoc.upper(); TString ragsoc(f.get()); ragsoc.upper();
rel.zero(); rel.zero();