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"));
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()))

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
{
var = _cespite.res_amm();
return true
return true;
}
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';
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);

View File

@ -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;

View File

@ -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

View File

@ -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;
}

View File

@ -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();