Aggiunta la gestione del saldo DARE e AVERE e dei totali IMPONIBILI.

Aggiuta la ricerca per descrizione dei conti e dei clienti nelle maschere.


git-svn-id: svn://10.65.10.50/trunk@129 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 1994-09-01 16:26:29 +00:00
parent c9d6658992
commit 03532d4a93
10 changed files with 1553 additions and 1324 deletions

View File

@ -49,6 +49,10 @@
#define F_CORRVALUTA 134
#define F_DATA74TER 135
#define F_DESCAGG 136
#define F_DARE 137
#define F_AVERE 138
#define F_IMPONIBILI 139
#define F_IMPOSTE 140
#define F_SHEETCG 300
#define F_SHEETIVA 301

View File

@ -168,7 +168,7 @@ END
SPREADSHEET F_SHEETCG
BEGIN
PROMPT 1 10 ""
PROMPT 0 9 ""
ITEM "Dare@17"
ITEM "Avere@17"
ITEM " @1"
@ -186,6 +186,20 @@ BEGIN
ITEM " @1"
END
NUMBER F_DARE 17
BEGIN
PROMPT 1 -1 "Saldo Dare "
FLAGS "DRV"
PICTURE "."
END
NUMBER F_AVERE 17
BEGIN
PROMPT 40 -1 "Saldo Avere "
FLAGS "DRV"
PICTURE "."
END
ENDPAGE
ENDMASK

View File

@ -315,7 +315,7 @@ STRING F_PIVACLIENTE 14
BEGIN
PROMPT 1 11 "Partita IVA "
GROUP 1
USE LF_CLIFO KEY 3
USE LF_CLIFO KEY 5
INPUT TIPOCF "C"
INPUT STATOPAIV F_STATOPAIV
INPUT PAIV F_PIVACLIENTE
@ -331,7 +331,7 @@ STRING F_PIVAFORNITORE 14
BEGIN
PROMPT 1 11 "Partita IVA "
GROUP 2
USE LF_CLIFO KEY 3
USE LF_CLIFO KEY 5
INPUT TIPOCF "F"
INPUT STATOPAIV F_STATOPAIV
INPUT PAIV F_PIVAFORNITORE
@ -534,7 +534,7 @@ END
SPREADSHEET F_SHEETIVA 0 7
BEGIN
PROMPT 3 4 ""
PROMPT 0 4 ""
ITEM "Imponibile@14"
ITEM "Iva@4"
ITEM "Det@1"
@ -547,10 +547,23 @@ BEGIN
ITEM "Descrizione Conto@50"
END
NUMBER F_IMPONIBILI 17
BEGIN
PROMPT 1 11 "Totale imponibili "
FLAGS "DRV"
PICTURE "."
END
NUMBER F_IMPOSTE 17
BEGIN
PROMPT 40 11 "Totale imposte "
FLAGS "DRV"
PICTURE "."
END
SPREADSHEET F_SHEETCG
BEGIN
PROMPT 3 11 ""
PROMPT 0 12 ""
ITEM "Dare@17"
ITEM "Avere@17"
ITEM " @1"
@ -568,6 +581,20 @@ BEGIN
ITEM " @1"
END
NUMBER F_DARE 17
BEGIN
PROMPT 1 -1 "Saldo Dare "
FLAGS "DRV"
PICTURE "."
END
NUMBER F_AVERE 17
BEGIN
PROMPT 40 -1 "Saldo Avere "
FLAGS "DRV"
PICTURE "."
END
ENDPAGE
ENDMASK

View File

@ -13,209 +13,213 @@
///////////////////////////////////////////////////////////
TMovimentoPN::TMovimentoPN()
: TRelation(LF_MOV), _oldcg(0), _oldiva(0)
: TRelation(LF_MOV), _oldcg(0), _oldiva(0)
{
add(LF_RMOV, "NUMREG=NUMREG");
add(LF_RMOVIVA, "NUMREG=NUMREG");
add(LF_RMOV, "NUMREG=NUMREG");
add(LF_RMOVIVA, "NUMREG=NUMREG");
}
void TMovimentoPN::destroy_rows()
{
_cg.destroy();
_iva.destroy();
_cg.destroy();
_iva.destroy();
}
TRectype& TMovimentoPN::cg(int i)
{
TRectype* r = (TRectype*)_cg.objptr(i);
if (r == NULL)
{
r = new TRectype(LF_RMOV);
_cg.add(r, i);
}
return *r;
TRectype* r = (TRectype*)_cg.objptr(i);
if (r == NULL)
{
r = new TRectype(LF_RMOV);
_cg.add(r, i);
}
return *r;
}
TRectype& TMovimentoPN::iva(int i)
{
TRectype* r = (TRectype*)_iva.objptr(i);
if (r == NULL)
{
r = new TRectype(LF_RMOVIVA);
_iva.add(r, i);
}
return *r;
TRectype* r = (TRectype*)_iva.objptr(i);
if (r == NULL)
{
r = new TRectype(LF_RMOVIVA);
_iva.add(r, i);
}
return *r;
}
int TMovimentoPN::read_mov_rows()
{
const TLocalisamfile* rm = lfile(LF_RMOV);
const TLocalisamfile* ri = lfile(LF_RMOVIVA);
position_rels();
const TLocalisamfile* rm = lfile(LF_RMOV);
const TLocalisamfile* ri = lfile(LF_RMOVIVA);
position_rels();
destroy_rows();
for(bool ok = is_first_match(LF_RMOV); ok; ok = next_match(LF_RMOV))
{
const int row = rm->get_int(RMV_NUMRIG) - 1;
cg(row) = rm->curr();
}
_oldcg = cg_items();
destroy_rows();
for(bool ok = is_first_match(LF_RMOV); ok; ok = next_match(LF_RMOV))
{
const int row = rm->get_int(RMV_NUMRIG) - 1;
cg(row) = rm->curr();
}
_oldcg = cg_items();
for(ok = is_first_match(LF_RMOVIVA); ok; ok = next_match(LF_RMOVIVA))
{
const int row = ri->get_int(RMI_NUMRIG) - 1;
iva(row) = ri->curr();
}
_oldiva = iva_items();
for(ok = is_first_match(LF_RMOVIVA); ok; ok = next_match(LF_RMOVIVA))
{
const int row = ri->get_int(RMI_NUMRIG) - 1;
iva(row) = ri->curr();
}
_oldiva = iva_items();
return NOERR;
return NOERR;
}
int TMovimentoPN::read(TIsamop op, TReclock lockop, TDate& atdate)
{
int err = file()->read(op, lockop, atdate);
if (err == NOERR) err = read_mov_rows();
return err;
int err = file()->read(op, lockop, atdate);
if (err == NOERR) err = read_mov_rows();
return err;
}
int TMovimentoPN::write_rec(bool re, const TRectype& rec, TLocalisamfile* f)
{
if (re)
{
const bool scrivi = f->rewrite(rec) != NOERR;
if (scrivi) f->write(rec);
}
else
{
if (re)
{
const bool scrivi = f->rewrite(rec) != NOERR;
if (scrivi) f->write(rec);
}
else
{
f->write(rec);
}
}
return f->status();
return f->status();
}
int TMovimentoPN::cancella(TLocalisamfile* f, int da, int a)
{
const long numreg = lfile()->get_long("NUMREG");
for (int i = da; i <= a; i++)
{
f->zero();
f->put("NUMREG", numreg);
f->put("NUMRIG", i);
if (f->read(_isequal, _lock) == NOERR)
f->remove();
}
return f->status();
const long numreg = lfile()->get_long("NUMREG");
for (int i = da; i <= a; i++)
{
f->zero();
f->put("NUMREG", numreg);
f->put("NUMRIG", i);
if (f->read(_isequal, _lock) == NOERR)
f->remove();
}
return f->status();
}
int TMovimentoPN::registra(bool re, bool force)
{
TLocalisamfile* m = lfile();
TLocalisamfile* m = lfile();
const int err = write_rec(re, m->curr(), m);
if (err != NOERR) return err;
const int err = write_rec(re, m->curr(), m);
if (err != NOERR) return err;
TLocalisamfile* rm = lfile(LF_RMOV);
TLocalisamfile* ri = lfile(LF_RMOVIVA);
TLocalisamfile* rm = lfile(LF_RMOV);
TLocalisamfile* ri = lfile(LF_RMOVIVA);
const long numreg = m->get_long("NUMREG");
const long numreg = m->get_long("NUMREG");
for (int i = 0 ; i < cg_items(); i++)
{
if (!re) cg(i).put("NUMREG", numreg);
const int err = write_rec(re, cg(i), rm);
if (!force && err != NOERR) return err;
}
if (i < _oldcg)
cancella(rm, i+1, _oldcg);
_oldcg = cg_items();
for (int i = 0 ; i < cg_items(); i++)
{
if (!re) cg(i).put("NUMREG", numreg);
const int err = write_rec(re, cg(i), rm);
if (!force && err != NOERR) return err;
}
if (i < _oldcg)
cancella(rm, i+1, _oldcg);
_oldcg = cg_items();
for (i = 0 ; i < iva_items(); i++)
{
if (!re) iva(i).put("NUMREG", numreg);
const int err = write_rec(re, iva(i), ri);
if (!force && err != NOERR) return err;
}
if (i < _oldiva)
cancella(ri, i+1, _oldiva);
_oldiva = iva_items();
for (i = 0 ; i < iva_items(); i++)
{
if (!re) iva(i).put("NUMREG", numreg);
const int err = write_rec(re, iva(i), ri);
if (!force && err != NOERR) return err;
}
if (i < _oldiva)
cancella(ri, i+1, _oldiva);
_oldiva = iva_items();
return err;
return err;
}
int TMovimentoPN::write(bool force, TDate&)
{
const TLocalisamfile& r = *lfile();
const TLocalisamfile& r = *lfile();
const int annoiva = r.get_int("ANNOIVA");
const TString16 reg(r.get("REG"));
const TString16 reg(r.get("REG"));
TRegistro registro(reg, annoiva);
if (reg.not_empty() && registro.tipo_attivita() == "M")
if (registro.iva() != nessuna_iva)
{
const bool mista = registro.tipo_attivita() == "M";
for (int i = 0; i < iva_items(); i++)
{
const int riga = iva(i).get_int("RIGAIMP");
int tipoatt = 0;
if (riga)
int tipoatt = 1;
if (mista)
{
const TRectype& r = cg(riga-1);
const char tipo = r.get_char("TIPOC");
if (tipo == ' ')
{
TConto c(r.get_int("GRUPPO"), r.get_int("CONTO"), r.get_long("SOTTOCONTO"));
TRectype conto(LF_PCON); c.read(conto);
const TIndbil ib = (TIndbil)conto.get_int("INDBIL");
if (ib == ib_passivita || ib == ib_ricavi)
{
int ricser = conto.get_int("RICSER");
tipoatt = (ricser <= 0) ? 2 : 1;
}
}
}
iva(i).put("TIPOATT", tipoatt);
const int riga = iva(i).get_int("RIGAIMP");
if (riga)
{
const TRectype& r = cg(riga-1);
const char tipo = r.get_char("TIPOC");
if (tipo == ' ')
{
TConto c(r.get_int("GRUPPO"), r.get_int("CONTO"), r.get_long("SOTTOCONTO"));
TRectype conto(LF_PCON); c.read(conto);
const TIndbil ib = (TIndbil)conto.get_int("INDBIL");
if (ib == ib_passivita || ib == ib_ricavi)
{
int ricser = conto.get_int("RICSER");
tipoatt = (ricser == 0) ? 2 : 1;
}
}
}
}
iva(i).put("TIPOATT", tipoatt);
}
}
_oldcg = _oldiva = 0;
int err = registra(FALSE, force);
_oldcg = _oldiva = 0;
int err = registra(FALSE, force);
if (err == NOERR)
{
if (reg.not_empty())
{
const long protiva = r.get_long("PROTIVA");
if (err == NOERR)
{
if (reg.not_empty())
{
const long protiva = r.get_long("PROTIVA");
const long uprotiva = r.get_long("UPROTIVA");
const TDate datareg = r.get_date("DATAREG");
registro.update(max(protiva, uprotiva), datareg);
}
}
return err;
}
return err;
}
int TMovimentoPN::rewrite(bool force, TDate&)
{
return registra(TRUE, force);
return registra(TRUE, force);
}
int TMovimentoPN::remove(TDate&)
{
TLocalisamfile* m = lfile();
TLocalisamfile* rm = lfile(LF_RMOV);
TLocalisamfile* ri = lfile(LF_RMOVIVA);
TLocalisamfile* m = lfile();
TLocalisamfile* rm = lfile(LF_RMOV);
TLocalisamfile* ri = lfile(LF_RMOVIVA);
cancella(rm, 1, _oldcg);
cancella(ri, 1, _oldiva);
m->remove();
_oldcg = _oldiva = 0;
return m->status();
cancella(rm, 1, _oldcg);
cancella(ri, 1, _oldiva);
m->remove();
_oldcg = _oldiva = 0;
return m->status();
}

View File

@ -266,11 +266,17 @@ void TPrimanota_application::disable_cgs_cells(int n, char tipo)
case 'F': // Ritenute Fiscali
case 'S': // Ritenute Sociali
case 'D': // IVA Detraibile
case 'N':last = 3; break; // IVA Non detraibile
case 'T': // Totale documento
case 'I':last = 6; break; // Imponibile
default :last = 0; break; // Solo contabile
}
case 'N':
last = 3; // IVA Non detraibile
break;
case 'T': // Totale documento
case 'I':
last = 7; // Imponibile
break;
default :
last = 0; // Solo contabile
break;
}
TSheet_field& cg = cgs();
for (int i = 0; i < last; i++)
@ -343,14 +349,7 @@ void TPrimanota_application::cgs_pack()
{
const real imp = get_cgs_imp(i);
if (imp == 0.0)
{
del = TRUE;
/*
const TConto c(r, 6, 0x0); // Remove if import=0 and Bill not used
del = !bill_used(c);
*/
}
}
if (del)
rows.destroy(i, FALSE);
@ -360,6 +359,44 @@ void TPrimanota_application::cgs_pack()
}
real TPrimanota_application::calcola_saldo() const
{
TArray& rows = cgs().rows_array();
const int max = rows.items();
real tdare, tavere;
for (int i = 0; i < max; i++)
{
TToken_string& r = (TToken_string&)rows[i];
const real dare(r.get(0));
const real avere(r.get());
tdare += dare;
tavere += avere;
}
real saldo = tdare-tavere;
switch (saldo.sign())
{
case 1:
mask().set(F_DARE, saldo.string());
mask().reset(F_AVERE);
break;
case -1:
mask().reset(F_DARE);
saldo = -saldo;
mask().set(F_AVERE, saldo.string());
break;
default:
mask().reset(F_DARE);
mask().reset(F_AVERE);
break;
}
return saldo;
}
// Handler dello sheet di contabilita'
// Certified 90%
bool TPrimanota_application::cg_handler(TMask_field& f, KEY k)
@ -367,22 +404,15 @@ bool TPrimanota_application::cg_handler(TMask_field& f, KEY k)
if (k == K_ENTER)
{
TSheet_field& cg = app().cgs();
bool empty = TRUE;
real saldo;
for (int i = 0; i < cg.items(); i++)
{
const real imp = app().get_cgs_imp(i);
if (empty) empty = imp == 0.0;
saldo += imp;
}
if (saldo != 0.0)
real saldo = app().calcola_saldo();
if (saldo != ZERO)
{
const char* ss = saldo.string(".");
return f.error_box("Il movimento e' sbilanciato di %s lire.", ss);
}
else
if (empty)
return f.error_box("Il movimento non contiene nessuna riga contabile!");
if (app().get_cgs_imp(0) == ZERO)
return f.error_box("Il movimento non ha una prima riga contabile valida!");
}
return TRUE;
}
@ -394,16 +424,21 @@ bool TPrimanota_application::cg_notify(int r, KEY k)
TToken_string& row = cg.row(r);
const char tipo = row.empty() ? ' ' : row.right(1)[0];
if (k == K_SPACE)
switch(k)
{
TMask& m = cg.sheet_mask();
m.enable(DLG_DELREC, tipo == ' ');
} else
if (k == K_DEL)
{
if (tipo != ' ')
return error_box("La riga %d non puo' essere cancellata", r+1);
}
case K_SPACE:
cg.sheet_mask().enable(DLG_DELREC, tipo == ' ');
break;
case K_ENTER:
app().calcola_saldo();
break;
case K_DEL:
if (tipo != ' ')
return error_box("La riga %d non puo' essere cancellata", r+1);
break;
default:
break;
}
return TRUE;
}
@ -497,7 +532,7 @@ bool TPrimanota_application::imposta_handler(TMask_field& f, KEY key)
const real& percent = cod2IVA(f.mask().get(102));
real imposta = abs(imponibile) * percent / 100.0;
imposta.ceil();
if (imponibile.sign() < 0) imposta = -imposta;
if (imponibile < ZERO) imposta = -imposta;
const real val(f.get());
if (val != imposta)
@ -506,8 +541,8 @@ bool TPrimanota_application::imposta_handler(TMask_field& f, KEY key)
{
const TString16 wrong(val.string("."));
const TString16 right(imposta.string("."));
if (f.warning_box("Imposta di '%s' errata: dovrebbe essere '%s'",
(const char*)wrong, (const char*)right));
f.warning_box("Imposta di '%s' errata: dovrebbe essere '%s'",
(const char*)wrong, (const char*)right);
}
}
} else
@ -524,6 +559,26 @@ bool TPrimanota_application::imposta_handler(TMask_field& f, KEY key)
}
real TPrimanota_application::calcola_imp() const
{
TArray& rows = ivas().rows_array();
const int max = rows.items();
real imponibili, imposte;
for (int r = 0; r < max; r++)
{
TToken_string& row = (TToken_string&)rows[r];
imponibili += real(row.get(0));
imposte += real(row.get(3));
}
mask().set(F_IMPONIBILI, imponibili.string());
mask().set(F_IMPOSTE, imposte.string());
return imponibili+imposte;
}
// Certified 50%
bool TPrimanota_application::iva_notify(int r, KEY k)
{
@ -590,6 +645,9 @@ bool TPrimanota_application::iva_notify(int r, KEY k)
else
app().add_cgs_imp(oldposiva, imp-oldiva);
oldiva = imp;
app().calcola_imp();
app().calcola_saldo();
}
return TRUE;
}
@ -601,13 +659,7 @@ bool TPrimanota_application::iva_handler(TMask_field& f, KEY k)
{
if (k != K_ENTER) return TRUE;
real imp;
for (int r = 0; r < app().ivas().items(); r++)
{
TToken_string& row = app().ivas().row(r);
imp += real(row.get(0)); // imponibile
imp += real(row.get(3)); // imposta
}
const real imp = app().calcola_imp();
const TMask& m = f.mask();
real tot(m.get(F_TOTALE));

View File

@ -23,119 +23,121 @@
class TPrimanota_application : public TRelation_application
{
TMovimentoPN* _rel;
TLocalisamfile* _tabcom;
TLocalisamfile* _tab;
TLocalisamfile* _caus;
TLocalisamfile* _rcaus;
TLocalisamfile* _clifo;
TLocalisamfile* _pcon;
TLocalisamfile* _attiv;
TLocalisamfile* _saldo;
TLocalisamfile* _comuni;
TLocalisamfile* _occas;
TLocalisamfile* _nditte;
TMovimentoPN* _rel;
TLocalisamfile* _tabcom;
TLocalisamfile* _tab;
TLocalisamfile* _caus;
TLocalisamfile* _rcaus;
TLocalisamfile* _clifo;
TLocalisamfile* _pcon;
TLocalisamfile* _attiv;
TLocalisamfile* _saldo;
TLocalisamfile* _comuni;
TLocalisamfile* _occas;
TLocalisamfile* _nditte;
TCausale _causale; // Causale corrente
TLibro_giornale _giornale; // Libro giornale corrente
TipoIVA _iva; // Tipo di IVA corrente
TCausale _causale; // Causale corrente
TLibro_giornale _giornale; // Libro giornale corrente
TipoIVA _iva; // Tipo di IVA corrente
TSaldo_agg _saldi; // Saldi da aggiornare
TSaldo_agg _saldi; // Saldi da aggiornare
TMask* _msk[4]; // Maschere di query, cg, iva
long _lastreg; // Numero ultima registrazione
int _mode; // Modo maschera corrente
TMask* _msk[4]; // Maschere di query, cg, iva
long _lastreg; // Numero ultima registrazione
int _mode; // Modo maschera corrente
static bool suspended_handler(TMask_field& f, KEY k);
static bool num_handler(TMask_field& f, KEY key);
static bool caus_query_handler(TMask_field& f, KEY key);
static bool caus_modify_handler(TMask_field& f, KEY key);
static bool num_handler(TMask_field& f, KEY key);
static bool caus_query_handler(TMask_field& f, KEY key);
static bool caus_modify_handler(TMask_field& f, KEY key);
static bool datareg_handler(TMask_field& f, KEY key);
static bool datacomp_handler(TMask_field& f, KEY key);
static bool data74ter_handler(TMask_field& f, KEY key);
static bool reg_handler(TMask_field& f, KEY key);
static bool clifo_handler(TMask_field& f, KEY key);
static bool totale_handler(TMask_field& f, KEY key);
static bool ritfis_handler(TMask_field& f, KEY key);
static bool ritsoc_handler(TMask_field& f, KEY key);
static bool visval_handler(TMask_field& f, KEY key);
static bool reg_handler(TMask_field& f, KEY key);
static bool clifo_handler(TMask_field& f, KEY key);
static bool totale_handler(TMask_field& f, KEY key);
static bool ritfis_handler(TMask_field& f, KEY key);
static bool ritsoc_handler(TMask_field& f, KEY key);
static bool visval_handler(TMask_field& f, KEY key);
static bool occas_code_handler(TMask_field& f, KEY key);
static bool occas_handler(TMask_field& f, KEY key);
static bool solaiva_handler(TMask_field& f, KEY key);
static bool occas_handler(TMask_field& f, KEY key);
static bool solaiva_handler(TMask_field& f, KEY key);
static bool descr_handler(TMask_field& f, KEY k);
static bool imponibile_handler(TMask_field& f, KEY key);
static bool codiva_handler(TMask_field& f, KEY key);
static bool imposta_handler(TMask_field& f, KEY key);
static bool codiva_handler(TMask_field& f, KEY key);
static bool imposta_handler(TMask_field& f, KEY key);
static bool dareavere_handler(TMask_field& f, KEY k);
static bool conto_handler(TMask_field& f, KEY key);
static bool iva_notify(int r, KEY key);
static bool iva_handler(TMask_field& f, KEY key);
static bool cg_notify(int r, KEY key);
static bool cg_handler(TMask_field& f, KEY key);
static bool iva_notify(int r, KEY key);
static bool iva_handler(TMask_field& f, KEY key);
static bool cg_notify(int r, KEY key);
static bool cg_handler(TMask_field& f, KEY key);
protected:
virtual bool user_create();
virtual bool user_destroy();
virtual bool changing_mask(int mode);
virtual TMask* get_mask(int mode);
virtual TRelation* get_relation() const { return _rel; }
virtual void init_query_mode(TMask& m);
virtual void init_insert_mode(TMask& m);
virtual void init_modify_mode(TMask& m);
virtual const char* get_next_key();
virtual int read(TMask& m);
virtual int write(const TMask& m);
virtual int rewrite(const TMask& m);
virtual bool remove();
virtual bool user_create();
virtual bool user_destroy();
virtual bool changing_mask(int mode);
virtual TMask* get_mask(int mode);
virtual TRelation* get_relation() const { return _rel; }
virtual void init_query_mode(TMask& m);
virtual void init_insert_mode(TMask& m);
virtual void init_modify_mode(TMask& m);
virtual const char* get_next_key();
virtual int read(TMask& m);
virtual int write(const TMask& m);
virtual int rewrite(const TMask& m);
virtual bool remove();
void genera_incasso(const char* causimm);
TMask* load_mask(int n);
TMask& occas_mask() { return *load_mask(3); }
bool get_conto(int r, TConto& c) const;
void mask2rel(const TMask& m);
bool get_conto(int r, TConto& c) const;
void mask2rel(const TMask& m);
TipoIVA iva() const { return _iva; }
TipoIVA iva() const { return _iva; }
TMask& TPrimanota_application::mask() const;
void fill_sheet(TMask& m) const;
void init_mask(TMask& m);
void fill_sheet(TMask& m) const;
void init_mask(TMask& m);
TSheet_field& cgs() const;
TSheet_field& ivas() const;
TSheet_field& cgs() const;
TSheet_field& ivas() const;
static real imp2sez(const real& importo);
static int bill2pos(const TConto& conto, char tipo);
static TipoIVA reg2IVA(const char* registro, int anno);
static TipoIVA cau2IVA(const char* causale, int anno);
static int type2pos(char tipo);
static const real& cod2IVA(const char* codiva);
static real imp2sez(const real& importo);
static int bill2pos(const TConto& conto, char tipo);
static TipoIVA reg2IVA(const char* registro, int anno);
static TipoIVA cau2IVA(const char* causale, int anno);
static int type2pos(char tipo);
static const real& cod2IVA(const char* codiva);
static real scorpora(real& imponibile, const real& percentuale);
static int date2esc(const TDate& d, int* prev = NULL);
static bool detraibile(int tipodet);
static int date2esc(const TDate& d, int* prev = NULL);
static bool detraibile(int tipodet);
bool bill_used(const TConto& conto) const;
int bill2contr(const TConto& c, char sezione) const;
bool bill_used(const TConto& conto) const;
int bill2contr(const TConto& c, char sezione) const;
bool read_caus(const char* cod, int year);
bool read_caus(const char* cod, int year);
TCausale& causale() { return _causale; }
TLibro_giornale& giornale() { return _giornale; }
void set_cgs_imp(int n, const real& importo);
real get_cgs_imp(int n);
void add_cgs_imp(int n, const real& importo);
void cgs_pack();
void set_cgs_imp(int n, const real& importo);
real get_cgs_imp(int n);
void add_cgs_imp(int n, const real& importo);
void cgs_pack();
real calcola_saldo() const;
real calcola_imp() const;
void set_ivas_row(int n, const char* codiva, TConto& tc, const char* desc);
int set_cgs_row(int n, const real& importo, TConto& conto, const char* desc, char tipo);
void disable_cgs_cells(int n, char tipo);
void set_ivas_row(int n, const char* codiva, TConto& tc, const char* desc);
int set_cgs_row(int n, const real& importo, TConto& conto, const char* desc, char tipo);
void disable_cgs_cells(int n, char tipo);
void add_cgs_tot(TMask& m);
void add_cgs_rit(bool fisc);
void add_cgs_rit(bool fisc);
public:
TPrimanota_application();
TPrimanota_application();
};
#endif

View File

@ -1,4 +1,4 @@
PAGE "RIGA PRIMA NOTA" -1 -1 67 17
PAGE "RIGA PRIMA NOTA" -1 -1 67 16
GROUPBOX DLG_NULL 66 3
BEGIN
@ -46,9 +46,9 @@ LIST 103 1 12
BEGIN
PROMPT 2 6 "Tipo "
FLAGS "U"
ITEM " |Conto" MESSAGE SHOW,106|HIDE,206|HIDE,306
ITEM "C|Cliente" MESSAGE SHOW,206|HIDE,106|HIDE,306
ITEM "F|Fornitore" MESSAGE SHOW,306|HIDE,106|HIDE,206
ITEM " |Conto" MESSAGE SHOW,106|HIDE,206|HIDE,306|SHOW,107|HIDE,207|HIDE,307
ITEM "C|Cliente" MESSAGE SHOW,206|HIDE,106|HIDE,306|SHOW,207|HIDE,107|HIDE,307
ITEM "F|Fornitore" MESSAGE SHOW,306|HIDE,106|HIDE,206|SHOW,307|HIDE,107|HIDE,207
END
NUMBER 104 3
@ -87,8 +87,10 @@ BEGIN
DISPLAY "Conto" CONTO
DISPLAY "Sottoconto" SOTTOCONTO
DISPLAY "Descrizione@50" DESCR
COPY OUTPUT 105
OUTPUT 106 SOTTOCONTO
OUTPUT 104 GRUPPO
OUTPUT 105 CONTO
OUTPUT 107 DESCR
ADD RUN cg0 -0
CHECKTYPE NORMAL
VALIDATE REQIF_FUNC 2 101 102
@ -107,10 +109,9 @@ BEGIN
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
OUTPUT 206 CODCF
OUTPUT 107 RAGSOC
OUTPUT 307 RAGSOC
MESSAGE COPY,106
ADD RUN cg0 -1
FLAGS "G"
CHECKTYPE NORMAL
WARNING "Cliente inesistente sulla riga contabile"
END
@ -127,21 +128,64 @@ BEGIN
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
OUTPUT 306 CODCF
OUTPUT 107 RAGSOC
OUTPUT 307 RAGSOC
MESSAGE COPY,106
ADD RUN cg0 -1
MESSAGE COPY,106
FLAGS "G"
CHECKTYPE NORMAL
WARNING "Fornitore inesistente sulla riga contabile"
END
STRING 107 50
BEGIN
PROMPT 2 7 "Descrizione "
PROMPT 2 7 "Descriz. "
FIELD LF_PCON->DESCR
USE LF_PCON KEY 2
INPUT DESCR 107
DISPLAY "Descrizione@50" DESCR
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Sottoconto" SOTTOCONTO
COPY OUTPUT 106
CHECKTYPE NORMAL
WARNING "Sottoconto inesistente o mancante sulla riga contabile"
ADD RUN cg0 -0
END
STRING 207 50
BEGIN
PROMPT 2 7 "Cliente "
FIELD LF_CLIFO->RAGSOC
USE LF_CLIFO KEY 2
INPUT TIPOCF "C"
INPUT RAGSOC 207
DISPLAY "Ragione Sociale Cliente@50" RAGSOC
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Codice" CODCF
COPY OUTPUT 206
MESSAGE COPY,107
ADD RUN cg0 -1
CHECKTYPE NORMAL
WARNING "Cliente inesistente sulla riga contabile"
END
STRING 307 50
BEGIN
PROMPT 2 7 "Fornitore "
FIELD LF_PCON->SOTTOCONTO
FLAGS "D"
USE LF_CLIFO KEY 2
INPUT TIPOCF "F"
INPUT RAGSOC 307
DISPLAY "Ragione Sociale Fornitore@50" RAGSOC
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Codice" CODCF
COPY OUTPUT 306
MESSAGE COPY,107
ADD RUN cg0 -1
CHECKTYPE NORMAL
WARNING "Fornitore inesistente sulla riga contabile"
END
GROUPBOX DLG_NULL 66 4
@ -153,9 +197,9 @@ LIST 110 1 12
BEGIN
PROMPT 2 10 "Tipo "
FLAGS "U"
ITEM " |Conto" MESSAGE SHOW,113|HIDE,213|HIDE,313
ITEM "C|Cliente" MESSAGE SHOW,213|HIDE,113|HIDE,313
ITEM "F|Fornitore" MESSAGE SHOW,313|HIDE,113|HIDE,213
ITEM " |Conto" MESSAGE SHOW,113|HIDE,213|HIDE,313|SHOW,114|HIDE,214|HIDE,314
ITEM "C|Cliente" MESSAGE SHOW,213|HIDE,113|HIDE,313|SHOW,214|HIDE,114|HIDE,314
ITEM "F|Fornitore" MESSAGE SHOW,313|HIDE,113|HIDE,213|SHOW,314|HIDE,114|HIDE,214
END
NUMBER 111 3
@ -167,12 +211,10 @@ NUMBER 112 3
BEGIN
PROMPT 32 10 "Conto "
FIELD LF_PCON->CONTO
USE LF_PCON SELECT (CONTO!="") && (SOTTOCONTO="")
COPY USE 105
INPUT GRUPPO 111
INPUT CONTO 112
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Descrizione@50" DESCR
COPY DISPLAY 105
OUTPUT 110 TMCF
OUTPUT 111 GRUPPO
OUTPUT 112 CONTO
@ -189,21 +231,23 @@ BEGIN
COPY INPUT 112
INPUT SOTTOCONTO 113
COPY DISPLAY 106
COPY OUTPUT 112
OUTPUT 113 SOTTOCONTO
OUTPUT 111 GRUPPO
OUTPUT 112 CONTO
OUTPUT 114 DESCR
CHECKTYPE NORMAL
END
NUMBER 213 6
BEGIN
PROMPT 45 10 "Cliente "
FIELD LF_PCON->SOTTOCONTO
USE LF_CLIFO
FIELD LF_CLIFO->CODCF
COPY USE 206
INPUT TIPOCF "C"
INPUT CODCF 213
COPY DISPLAY 206
OUTPUT 213 CODCF
OUTPUT 114 RAGSOC
OUTPUT 214 RAGSOC
MESSAGE COPY,113
CHECKTYPE NORMAL
END
@ -211,22 +255,55 @@ END
NUMBER 313 6
BEGIN
PROMPT 45 10 "Fornitore "
FIELD LF_PCON->SOTTOCONTO
USE LF_CLIFO
FIELD LF_CLIFO->CODCF
COPY USE 306
INPUT TIPOCF "F"
INPUT CODCF 313
COPY DISPLAY 306
COPY OUTPUT 213
OUTPUT 313 CODCF
OUTPUT 314 RAGSOC
MESSAGE COPY,113
CHECKTYPE NORMAL
END
STRING 114 50
BEGIN
PROMPT 2 11 "Descriz. "
FIELD LF_PCON->DESCR
PROMPT 2 11 "Descrizione "
FLAGS "D"
COPY USE 107
INPUT DESCR 114
COPY DISPLAY 107
COPY OUTPUT 113
ADD RUN cg0 -0
WARNING "Conto inesistente sulla riga contabile"
END
STRING 214 50
BEGIN
PROMPT 2 11 "Cliente "
FIELD LF_CLIFO->RAGSOC
COPY USE 207
INPUT TIPOCF "C"
INPUT RAGSOC 214
COPY DISPLAY 207
COPY OUTPUT 213
ADD RUN cg0 -1
CHECKTYPE NORMAL
WARNING "Cliente inesistente sulla riga contabile"
END
STRING 314 50
BEGIN
PROMPT 2 11 "Fornitore "
FIELD LF_CLIFO->RAGSOC
COPY USE 307
INPUT TIPOCF "F"
INPUT RAGSOC 314
COPY DISPLAY 307
COPY OUTPUT 313
ADD RUN cg0 -1
CHECKTYPE NORMAL
WARNING "Fornitore inesistente sulla riga contabile"
END
LIST 115 20

View File

@ -10,11 +10,11 @@ BEGIN
PROMPT 2 2 "Tipo "
FIELD TMCF
ITEM " |Conto"
MESSAGE SHOW,109|HIDE,209|HIDE,309
MESSAGE SHOW,109|HIDE,209|HIDE,309|SHOW,110|HIDE,210|HIDE,310
ITEM "C|Cliente"
MESSAGE SHOW,209|HIDE,109|HIDE,309
MESSAGE SHOW,209|HIDE,109|HIDE,309|SHOW,210|HIDE,110|HIDE,310
ITEM "F|Fornitore"
MESSAGE SHOW,309|HIDE,109|HIDE,209
MESSAGE SHOW,309|HIDE,109|HIDE,209|SHOW,310|HIDE,110|HIDE,210
FLAGS "U"
END
@ -58,10 +58,10 @@ BEGIN
DISPLAY "Conto" CONTO
DISPLAY "Sottoconto" SOTTOCONTO
DISPLAY "Descrizione@50" DESCR
OUTPUT 109 SOTTOCONTO
OUTPUT 105 TIPOSPRIC
OUTPUT 107 GRUPPO
OUTPUT 108 CONTO
OUTPUT 109 SOTTOCONTO
OUTPUT 110 DESCR
ADD RUN cg0 -0
CHECKTYPE NORMAL
@ -80,7 +80,7 @@ BEGIN
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
OUTPUT 209 CODCF
OUTPUT 110 RAGSOC
OUTPUT 210 RAGSOC
CHECKTYPE NORMAL
ADD RUN cg0 -1
FLAGS "G"
@ -98,7 +98,7 @@ BEGIN
OUTPUT 107 GRUPPO
OUTPUT 108 CONTO
OUTPUT 309 CODCF
OUTPUT 110 RAGSOC
OUTPUT 310 RAGSOC
CHECKTYPE NORMAL
ADD RUN cg0 -1
FLAGS "G"
@ -107,10 +107,58 @@ END
STRING 110 50
BEGIN
PROMPT 2 3 "Descrizione "
FLAGS "D"
PROMPT 2 3 "Descriz. "
FIELD LF_PCON->DESCR
USE LF_PCON KEY 2
INPUT DESCR 107
DISPLAY "Descrizione@50" DESCR
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Sottoconto" SOTTOCONTO
COPY OUTPUT 109
CHECKTYPE NORMAL
WARNING "Sottoconto inesistente o mancante sulla riga IVA"
ADD RUN cg0 -0
END
STRING 210 50
BEGIN
PROMPT 2 3 "Cliente "
FIELD LF_CLIFO->RAGSOC
USE LF_CLIFO KEY 2
INPUT TIPOCF "C"
INPUT RAGSOC 210
DISPLAY "Ragione Sociale Cliente@50" RAGSOC
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Codice" CODCF
COPY OUTPUT 209
MESSAGE COPY,110
ADD RUN cg0 -1
CHECKTYPE NORMAL
WARNING "Cliente inesistente sulla riga IVA"
END
STRING 310 50
BEGIN
PROMPT 2 3 "Fornitore "
FIELD LF_PCON->SOTTOCONTO
USE LF_CLIFO KEY 2
INPUT TIPOCF "F"
INPUT RAGSOC 310
DISPLAY "Ragione Sociale Fornitore@50" RAGSOC
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Codice" CODCF
COPY OUTPUT 309
MESSAGE COPY,110
ADD RUN cg0 -1
CHECKTYPE NORMAL
WARNING "Fornitore inesistente sulla riga IVA"
END
GROUPBOX DLG_NULL 67 5
BEGIN
PROMPT 1 5 "Imposta"

View File

@ -7,18 +7,19 @@
int main(int argc,char** argv)
{
int rt = 0 ;
int s = atoi(argv[1]+1) ;
int rt = 0 ;
int s = atoi(argv[1]+1) ;
switch (s)
{
case 0: rt = cg3100(argc,argv) ; break;
case 1: rt = cg3200(argc,argv) ; break;
// case 2: rt = cg3400(argc,argv) ; break;
case 3: rt = cg3500(argc,argv) ; break;
default: error_box(usage, argv[0]) ; break;
}
return rt;
switch (s)
{
case 0: rt = cg3100(argc,argv) ; break;
case 1: rt = cg3200(argc,argv) ; break;
case 2: rt = cg3300(argc,argv) ; break;
case 3: rt = cg3400(argc,argv) ; break;
case 4: rt = cg3500(argc,argv) ; break;
default: error_box(usage, argv[0]) ; break;
}
return rt;
}

View File

@ -12,7 +12,7 @@
int cg3100(int argc, char* argv[]);
int cg3200(int argc, char* argv[]);
int cg3300(int argc, char* argv[]);
//int cg3400(int argc, char* argv[]);
int cg3400(int argc, char* argv[]);
int cg3500(int argc, char* argv[]);
#endif // __CG3_H