Praticamente finito saldaconto extra-contabile

git-svn-id: svn://10.65.10.50/trunk@2628 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 1996-02-21 16:57:04 +00:00
parent 3ccab681ec
commit 6631234c2b
2 changed files with 83 additions and 20 deletions

View File

@ -114,7 +114,7 @@ NUMBER E_CLIENTE 6
BEGIN BEGIN
PROMPT 1 8 "Cliente " PROMPT 1 8 "Cliente "
FIELD LF_PARTITE->SOTTOCONTO FIELD LF_PARTITE->SOTTOCONTO
FLAGS "D" FLAGS "DG"
GROUP 1 GROUP 1
USE LF_CLIFO USE LF_CLIFO
INPUT TIPOCF "C" INPUT TIPOCF "C"
@ -128,8 +128,6 @@ BEGIN
OUTPUT E_STATOPAIV STATOPAIV OUTPUT E_STATOPAIV STATOPAIV
OUTPUT E_PIVACLIENTE PAIV OUTPUT E_PIVACLIENTE PAIV
OUTPUT E_COFICLIENTE COFI OUTPUT E_COFICLIENTE COFI
OUTPUT E_CODPAG CODPAG
OUTPUT E_VALUTA CODVAL
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
WARNING "Cliente assente" WARNING "Cliente assente"
ADD RUN cg0 -1 C ADD RUN cg0 -1 C
@ -139,7 +137,7 @@ NUMBER E_FORNITORE 6
BEGIN BEGIN
PROMPT 1 8 "Fornitore " PROMPT 1 8 "Fornitore "
FIELD LF_PARTITE->SOTTOCONTO FIELD LF_PARTITE->SOTTOCONTO
FLAGS "D" FLAGS "DG"
GROUP 2 GROUP 2
USE LF_CLIFO KEY 1 USE LF_CLIFO KEY 1
INPUT TIPOCF "F" INPUT TIPOCF "F"
@ -153,8 +151,6 @@ BEGIN
OUTPUT E_STATOPAIV STATOPAIV OUTPUT E_STATOPAIV STATOPAIV
OUTPUT E_PIVAFORNITORE PAIV OUTPUT E_PIVAFORNITORE PAIV
OUTPUT E_COFIFORNITORE COFI OUTPUT E_COFIFORNITORE COFI
OUTPUT E_CODPAG CODPAG
OUTPUT E_VALUTA CODVAL
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
WARNING "Fornitore assente" WARNING "Fornitore assente"
ADD RUN cg0 -1 F ADD RUN cg0 -1 F
@ -384,7 +380,7 @@ BEGIN
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
WARNING "Il numero di riferimento e' obbligatorio" WARNING "Il numero di riferimento e' obbligatorio"
FIELD LF_PARTITE->NUMPART FIELD LF_PARTITE->NUMPART
FLAGS "U" FLAGS "U#"
END END
ENDPAGE ENDPAGE

View File

@ -24,6 +24,7 @@ class TFattura_mask : public TMask
TString_array _pag_rows; TString_array _pag_rows;
protected: protected:
static bool clifo_handler(TMask_field& f, KEY key);
static bool datadoc_handler(TMask_field& f, KEY key); static bool datadoc_handler(TMask_field& f, KEY key);
static bool nrate_handler(TMask_field& f, KEY key); static bool nrate_handler(TMask_field& f, KEY key);
static bool recalc_handler(TMask_field& f, KEY key); static bool recalc_handler(TMask_field& f, KEY key);
@ -45,6 +46,7 @@ public:
void set_totale_pagamento(bool update); void set_totale_pagamento(bool update);
void set_scadenze(); void set_scadenze();
void write_scadenze() const; void write_scadenze() const;
real totale_rate(bool val) const;
TFattura_mask(TRiga_partite& fattura); TFattura_mask(TRiga_partite& fattura);
virtual ~TFattura_mask(); virtual ~TFattura_mask();
@ -68,6 +70,9 @@ TFattura_mask::TFattura_mask(TRiga_partite& fattura)
} }
else else
hide(-3); hide(-3);
const short clifo = _fattura.partita().conto().tipo() == 'C' ? E_CLIENTE : E_FORNITORE;
set_handler(clifo, clifo_handler);
set_handler(E_DATADOC, datadoc_handler); set_handler(E_DATADOC, datadoc_handler);
set_handler(FS_NRATE, nrate_handler); set_handler(FS_NRATE, nrate_handler);
@ -100,7 +105,15 @@ TFattura_mask::~TFattura_mask()
{ {
delete _pag; delete _pag;
} }
real TFattura_mask::totale_rate(bool val) const
{
const TPagamento& pag = pagamento();
real tot = pag.importo_da_dividere(val);
tot += pag.importo_da_non_dividere(val);
return tot;
}
void TFattura_mask::pag2sheet() void TFattura_mask::pag2sheet()
{ {
TPagamento& pag = pagamento(); TPagamento& pag = pagamento();
@ -382,6 +395,33 @@ bool TFattura_mask::datadoc_handler(TMask_field& f, KEY key)
return TRUE; return TRUE;
} }
bool TFattura_mask::clifo_handler(TMask_field& f, KEY key)
{
if (key == K_TAB)
{
TFattura_mask& m = (TFattura_mask&)f.mask();
if (m.insert_mode())
{
const TEdit_field& clifo = (TEdit_field&)f;
const TRectype& cur = clifo.browse()->cursor()->curr();
TMask_field& cp = m.field(E_CODPAG);
if (cp.get().empty())
{
cp.set(CLI_CODPAG);
cp.check(STARTING_CHECK);
}
TMask_field& cv = m.field(E_VALUTA);
if (cv.get().empty())
{
cv.set(CLI_CODVAL);
cv.on_hit();
}
}
}
return TRUE;
}
bool TFattura_mask::reset_handler(TMask_field& f, KEY key) bool TFattura_mask::reset_handler(TMask_field& f, KEY key)
{ {
@ -831,28 +871,40 @@ HIDDEN bool is_fattura(TMask& m)
const tipo_movimento tm = (tipo_movimento)m.get_int(E_TIPOMOV); const tipo_movimento tm = (tipo_movimento)m.get_int(E_TIPOMOV);
return tm == tm_fattura; return tm == tm_fattura;
} }
HIDDEN bool update_rate(TMask& m) HIDDEN void update_rate(TMask& m)
{ {
const bool isf = is_fattura(m); CHECK(is_fattura(m), "Non e' una maschera di fattura!");
if (isf && m.insert_mode()) if (m.insert_mode())
{ {
TFattura_mask& fm = (TFattura_mask&)m; TFattura_mask& fm = (TFattura_mask&)m;
fm.set_scadenze(); fm.set_scadenze();
} }
return isf;
} }
bool TSaldaconto_app::totale_handler(TMask_field& f, KEY k) bool TSaldaconto_app::totale_handler(TMask_field& f, KEY k)
{ {
bool ok = TRUE; bool ok = TRUE;
TMask& m = f.mask(); TMask& m = f.mask();
const bool is_fatt = is_fattura(m);
if (k == K_F8)
{
if (is_fatt)
{
TFattura_mask& fm = (TFattura_mask&)m;
f.set(fm.totale_rate(FALSE).string());
}
else
f.set(m.get(S_IMPORTO));
k = K_TAB;
}
if (k == K_TAB && f.focusdirty()) if (k == K_TAB && f.focusdirty())
{ {
app().gioca_cambi(m); app().gioca_cambi(m);
const bool is_fatt = update_rate(m);
if (is_fatt) if (is_fatt)
{ {
update_rate(m);
real tot(f.get()); real tot(f.get());
tot -= m.get_real(E_IMPOSTE); tot -= m.get_real(E_IMPOSTE);
m.set(FS_IMPONIBILI, tot); m.set(FS_IMPONIBILI, tot);
@ -878,7 +930,7 @@ bool TSaldaconto_app::totale_handler(TMask_field& f, KEY k)
} }
} }
if (ok && !is_fattura(m)) if (ok && !is_fatt)
{ {
const real totdoc(f.get()); const real totdoc(f.get());
const real imppag(m.get(S_IMPORTO)); const real imppag(m.get(S_IMPORTO));
@ -905,10 +957,12 @@ bool TSaldaconto_app::imposte_handler(TMask_field& f, KEY key)
{ {
if (key == K_TAB && f.focusdirty()) if (key == K_TAB && f.focusdirty())
{ {
TMask& m = f.mask(); TMask& m = f.mask();
const bool isf = update_rate(m); if (is_fattura(m))
if (isf) {
update_rate(m);
m.set(FS_IMPOSTE, f.get()); m.set(FS_IMPOSTE, f.get());
}
} }
return TRUE; return TRUE;
} }
@ -917,14 +971,27 @@ bool TSaldaconto_app::totval_handler(TMask_field& f, KEY key)
{ {
bool ok = TRUE; bool ok = TRUE;
TMask& m = f.mask(); TMask& m = f.mask();
const bool is_fatt = is_fattura(m);
if (key == K_F8)
{
if (is_fatt)
{
TFattura_mask& fm = (TFattura_mask&)m;
f.set(fm.totale_rate(TRUE).string());
}
else
f.set(m.get(S_IMPORTOVAL));
}
if (key == K_TAB && f.focusdirty()) if (key == K_TAB && f.focusdirty())
{ {
app().gioca_cambi(m, m.insert_mode() ? 0x1 : 0x0); app().gioca_cambi(m, m.insert_mode() ? 0x1 : 0x0);
update_rate(m); if (is_fatt)
update_rate(m);
} }
if (key == K_ENTER && !is_fattura(m)) if (key == K_ENTER && !is_fatt)
{ {
const real totdoc(f.get()); const real totdoc(f.get());
const real imppag(m.get(S_IMPORTOVAL)); const real imppag(m.get(S_IMPORTOVAL));