720b374a40
Piu correzioni varie git-svn-id: svn://10.65.10.50/trunk@4768 c028cbd2-c16b-5b4b-a496-9718f37d4682
316 lines
9.0 KiB
C++
Executable File
316 lines
9.0 KiB
C++
Executable File
#include "velib.h"
|
||
#include "vepriv.h"
|
||
|
||
#ifndef __APPLICAT_H
|
||
#include <applicat.h>
|
||
#endif
|
||
|
||
#ifndef __VEUML_H
|
||
#include "veuml.h"
|
||
#endif
|
||
|
||
#ifndef __VEUML1_H
|
||
#include "veuml1.h"
|
||
#endif
|
||
|
||
#ifndef __TABUTIL_H
|
||
#include <tabutil.h>
|
||
#endif
|
||
|
||
#ifndef __UTILITY_H
|
||
#include <utility.h>
|
||
#endif
|
||
|
||
#ifndef __VEINI_H
|
||
#include "veini.h"
|
||
#endif
|
||
|
||
#ifndef __SCONTI_H
|
||
#include "sconti.h"
|
||
#endif
|
||
|
||
TDocumento_mask::TDocumento_mask(const char* name, TDocumento * doc, int num,
|
||
int max)
|
||
: TVariable_mask(name, num, max), _progs_page(-1), _last_prog(-1),
|
||
_doc(doc)
|
||
{
|
||
const int pos = id2pos(BASE_PIEDE + 1);
|
||
|
||
if (pos >= 0)
|
||
{
|
||
_progs_page = find_parent_page(fld(pos));
|
||
_last_prog = 0;
|
||
while (id2pos(BASE_PIEDE + _last_prog + 1) >= 0)
|
||
_last_prog++;
|
||
}
|
||
}
|
||
|
||
void TDocumento_mask::next_page(int p)
|
||
{
|
||
TMask::next_page(p);
|
||
if (curr_page() == _progs_page)
|
||
{
|
||
begin_wait();
|
||
autosave(get_relation());
|
||
for (int i = _last_prog; i > 0; i--)
|
||
{
|
||
const short id = BASE_PIEDE + i;
|
||
const TString16 name(field(id).field()->name());
|
||
|
||
set(id , doc().get(name));
|
||
}
|
||
end_wait();
|
||
}
|
||
}
|
||
|
||
bool TDocumento_mask::on_key(KEY key)
|
||
{
|
||
if (key == K_SHIFT + K_F12)
|
||
{
|
||
field(F_STATO).enable(!field(F_STATO).enabled());
|
||
return TRUE;
|
||
}
|
||
return TVariable_mask::on_key(key);
|
||
}
|
||
|
||
void TDocumento_mask::occ2mask(TOccasionale & o)
|
||
{
|
||
reset(F_COFI);
|
||
reset(F_PAIVA);
|
||
reset(F_LOCALITACF);
|
||
set(F_OCFPI, o.get(OCC_CFPI));
|
||
const TString & ragsoc = o.get(OCC_RAGSOC);
|
||
set(F_RAGSOC, ragsoc);
|
||
set(F_RAGSOCSP, ragsoc);
|
||
const TString & indir = o.get(OCC_INDIR);
|
||
set(F_INDCF, indir);
|
||
set(F_INDSP, indir);
|
||
const TString & civ = o.get(OCC_CIV);
|
||
set(F_CIVCF, civ);
|
||
set(F_CIVSP, civ);
|
||
const TString & cap = o.get(OCC_CAP);
|
||
set(F_CAPCF, cap);
|
||
set(F_CAPSP, cap);
|
||
const TString & com = o.get(OCC_COM);
|
||
set(F_COMCF, com);
|
||
set( F_COMSP, com);
|
||
const TString & stato = o.get(OCC_STATO);
|
||
set(F_STATOCF, stato);
|
||
set( F_STATOSP, stato);
|
||
reset(F_CODINDSP);
|
||
// Sugli occasionali non c'<27> la localit<69>
|
||
reset(F_LOCALITASP);
|
||
check_field(F_COMSP);
|
||
check_field(F_STATOSP);
|
||
}
|
||
|
||
void TDocumento_mask::cli2mask( TCli_for & c, TOccasionale & o, TConfig & ditta)
|
||
{
|
||
const bool onload = !is_running();
|
||
const TString16 codval(get(F_CODVAL));
|
||
const TString16 datacambio(get(F_DATACAMBIO1));
|
||
|
||
// Setta i campi che appartengono al file LF_CLIFO
|
||
const bool occas = c.occasionale();
|
||
|
||
show(F_OCCASEDIT, 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();
|
||
|
||
if(!onload)
|
||
{
|
||
short pos = id2pos(F_CODVAL);
|
||
const TString & codval = c.get(CLI_CODVAL);
|
||
|
||
if (pos >= 0 && fld(pos).active())
|
||
fld(pos).set(codval);
|
||
pos = id2pos(F_CODVAL1);
|
||
if (pos >= 0 && fld(pos).active())
|
||
fld(pos).set(codval);
|
||
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));
|
||
// 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_CODINDSP, ven_rec.get(CFV_CODINDSP));
|
||
set(F_CODAG, ven_rec.get(CFV_CODAG));
|
||
set(F_CODSPMEZZO, ven_rec.get(CFV_CODSPMEZZO));
|
||
set(F_CODPORTO, ven_rec.get(CFV_CODPORTO));
|
||
set(F_CODNOTESP1, ven_rec.get(CFV_CODNOTESP1));
|
||
set(F_CODNOTESP2, ven_rec.get(CFV_CODNOTESP2));
|
||
set(F_CODNOTE, ven_rec.get(CFV_CODNOTE));
|
||
set(F_CODVETT1, ven_rec.get(CFV_CODVETT1));
|
||
set(F_CODVETT2, ven_rec.get(CFV_CODVETT2));
|
||
set(F_CODVETT3, ven_rec.get(CFV_CODVETT3));
|
||
set(F_SPESEINC, ven_rec.get(CFV_PERCSPINC));
|
||
set(F_ADDBOLLI, ven_rec.get(CFV_ADDBOLLI));
|
||
set(F_CATVEN, ven_rec.get(CFV_CATVEN));
|
||
pos = id2pos(F_CODLIST);
|
||
const TString & codlist = ven_rec.get(CFV_CODLIST);
|
||
if (pos >= 0 && fld(pos).active())
|
||
fld(pos).set(codlist);
|
||
pos = id2pos(F_CODLIST1);
|
||
if (pos >= 0 && fld(pos).active())
|
||
fld(pos).set(codlist);
|
||
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_RAGGR, ven_rec.get(CFV_RAGGDOC));
|
||
sconto_testa2mask(c, ditta);
|
||
spese2mask(c);
|
||
}
|
||
enable( F_CODINDSP , !occas);
|
||
if (occas)
|
||
occ2mask(o);
|
||
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));
|
||
const TString16 newdatacambio(get(F_DATACAMBIO1));
|
||
|
||
short pos = id2pos(F_CAMBIO);
|
||
if ((pos >= 0) && (newcodval.empty() || newdatacambio.empty()))
|
||
fld(F_CAMBIO).reset();
|
||
pos = id2pos(F_CODVAL);
|
||
if (pos >= 0 && fld(pos).active())
|
||
fld(pos).check();
|
||
pos = id2pos(F_CODVAL1);
|
||
if (pos >= 0 && fld(pos).active())
|
||
fld(pos).check();
|
||
pos = id2pos(F_DATACAMBIO1);
|
||
if (pos >= 0 && fld(pos).active() &&
|
||
(codval != newcodval || datacambio != newdatacambio))
|
||
fld(pos).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();
|
||
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 );
|
||
const bool gescontr = ditta.get_bool("GES", "ve", 2);
|
||
const bool contr_enabled = ven_rec.get_bool(CFV_GESTCONTR);
|
||
|
||
enable(F_CODCONT1, contr_enabled && gescontr);
|
||
enable(F_CODCONT, contr_enabled && gescontr);
|
||
}
|
||
|
||
void TDocumento_mask::sconto_testa2mask( TCli_for & c, TConfig & ditta )
|
||
{
|
||
const char tipogestione = ditta.get("GESSCO", "ve")[ 0 ];
|
||
switch( tipogestione )
|
||
{
|
||
case 'N': // Sconti non gestiti: pussa via!
|
||
break;
|
||
case 'P': // Percentuale su anagrafica cliente
|
||
set( F_SCONTOPERC, c.get(CLI_SCONTO));
|
||
break;
|
||
case 'T': // Gestione tabella sconti
|
||
{
|
||
const TString16 codsconto(c.vendite().get(CFV_CODSCC));
|
||
|
||
if (codsconto.not_empty())
|
||
{
|
||
TTable sconti("%SCC");
|
||
sconti.setkey(1);
|
||
sconti.zero();
|
||
sconti.put("CODTAB", codsconto);
|
||
if (sconti.read( ) == NOERR)
|
||
set(F_SCONTOPERC, sconti.get("S1"));
|
||
}
|
||
}
|
||
break;
|
||
case 'A': // Gestione archivio sconti
|
||
{
|
||
TString16 cod;
|
||
const TRectype & ven_rec = c.vendite();
|
||
TLocalisamfile sconti(LF_SCONTI );
|
||
|
||
sconti.setkey(1);
|
||
sconti.zero();
|
||
sconti.put("TIPO", "I");
|
||
if(ditta.get_bool("SCOKEY", "ve", 1))
|
||
sconti.put("CODCAT", ven_rec.get(CFV_CATVEN));
|
||
if(ditta.get_bool("SCOKEY", "ve", 2))
|
||
cod.format("%-2s", (const char *)ven_rec.get(CFV_CODSCC));
|
||
else
|
||
cod = " ";
|
||
if( ditta.get_bool("SCOKEY", "ve", 3))
|
||
cod << format("%-2s", (const char *)ven_rec.get(CFV_CODZONA));
|
||
else
|
||
cod << " ";
|
||
if( ditta.get_bool("SCOKEY", "ve", 4))
|
||
cod << c.get(CLI_CODPAG);
|
||
sconti.put("CODART", cod);
|
||
if(sconti.read() == NOERR)
|
||
set(F_SCONTOPERC, sconti.get( "SCONTO"));
|
||
}
|
||
break;
|
||
default:
|
||
break;
|
||
}
|
||
return;
|
||
}
|
||
|
||
void TDocumento_mask::spese2mask(TCli_for & c)
|
||
{
|
||
TSheet_field & sh = (TSheet_field &) field(F_SHEET);
|
||
|
||
TString16 name("CODSP0");
|
||
TString_array spese;
|
||
TRectype & ven_rec = c.vendite();
|
||
for (int i = 1; i <= 4; i++)
|
||
{
|
||
name.rtrim(1); name << i;
|
||
const TString16 s(ven_rec.get(name));
|
||
|
||
if (s.not_empty())
|
||
spese.add(s);
|
||
}
|
||
autosave(get_relation());
|
||
doc().update_spese_aut(spese, FALSE, &sh);
|
||
sh.force_update();
|
||
}
|