Patch level : 10.0
Files correlati : ef0 Ricompilazione Demo : [ ] Commento : Migliorato caricamento distinte incomplete git-svn-id: svn://10.65.10.50/branches/R_10_00@22572 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
4d581f9409
commit
7d2fcdcfda
@ -45,7 +45,6 @@ protected:
|
|||||||
bool user_destroy();
|
bool user_destroy();
|
||||||
virtual TMask* get_mask(int mode) {return _msk;}
|
virtual TMask* get_mask(int mode) {return _msk;}
|
||||||
virtual bool changing_mask(int mode) {return FALSE;}
|
virtual bool changing_mask(int mode) {return FALSE;}
|
||||||
void enable_controeuro();
|
|
||||||
virtual void ini2mask(TConfig& ini, TMask& m, bool query);
|
virtual void ini2mask(TConfig& ini, TMask& m, bool query);
|
||||||
|
|
||||||
|
|
||||||
@ -59,17 +58,6 @@ public:
|
|||||||
// restituisce un riferimento all' applicazione
|
// restituisce un riferimento all' applicazione
|
||||||
inline TVariazione_effetti& app() {return (TVariazione_effetti&)main_app();}
|
inline TVariazione_effetti& app() {return (TVariazione_effetti&)main_app();}
|
||||||
|
|
||||||
void TVariazione_effetti::enable_controeuro()
|
|
||||||
{
|
|
||||||
static int ce = -1;
|
|
||||||
if (ce < 0)
|
|
||||||
{
|
|
||||||
TConfig ini(CONFIG_DITTA, "ve");
|
|
||||||
ce = ini.get_bool("CONTROEURO");
|
|
||||||
}
|
|
||||||
_msk->enable(F_CONTROEURO, ce != 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
// quando si va in query mode resetta i due campi della maschera
|
// quando si va in query mode resetta i due campi della maschera
|
||||||
// relativi ai totali
|
// relativi ai totali
|
||||||
void TVariazione_effetti::init_query_mode(TMask&)
|
void TVariazione_effetti::init_query_mode(TMask&)
|
||||||
@ -77,7 +65,6 @@ void TVariazione_effetti::init_query_mode(TMask&)
|
|||||||
_msk->reset(F_TOTIMP);
|
_msk->reset(F_TOTIMP);
|
||||||
_msk->reset(F_TOTIMPVAL);
|
_msk->reset(F_TOTIMPVAL);
|
||||||
_msk->enable(F_TIPOCF);
|
_msk->enable(F_TIPOCF);
|
||||||
enable_controeuro();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TVariazione_effetti::protected_record(TRectype& rec)
|
bool TVariazione_effetti::protected_record(TRectype& rec)
|
||||||
@ -94,7 +81,6 @@ void TVariazione_effetti::init_insert_mode(TMask&)
|
|||||||
righe_sheet().row(0) = riga;
|
righe_sheet().row(0) = riga;
|
||||||
righe_sheet().set_dirty();
|
righe_sheet().set_dirty();
|
||||||
_msk->enable(F_TIPOCF);
|
_msk->enable(F_TIPOCF);
|
||||||
enable_controeuro();
|
|
||||||
}
|
}
|
||||||
void TVariazione_effetti::ini2mask(TConfig& ini, TMask& m, bool query)
|
void TVariazione_effetti::ini2mask(TConfig& ini, TMask& m, bool query)
|
||||||
{
|
{
|
||||||
@ -114,7 +100,6 @@ void TVariazione_effetti::ini2mask(TConfig& ini, TMask& m, bool query)
|
|||||||
void TVariazione_effetti::init_modify_mode(TMask& m)
|
void TVariazione_effetti::init_modify_mode(TMask& m)
|
||||||
{
|
{
|
||||||
m.disable(F_TIPOCF);
|
m.disable(F_TIPOCF);
|
||||||
enable_controeuro();
|
|
||||||
m.efield(F_IBAN_STATO).validate(K_TAB);
|
m.efield(F_IBAN_STATO).validate(K_TAB);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -35,7 +35,6 @@
|
|||||||
#define F_EFFCOMP 229
|
#define F_EFFCOMP 229
|
||||||
#define F_SHEET_EFF 230
|
#define F_SHEET_EFF 230
|
||||||
#define F_TIPOCF 231
|
#define F_TIPOCF 231
|
||||||
#define F_CONTROEURO 232
|
|
||||||
#define F_PROG 233
|
#define F_PROG 233
|
||||||
#define F_CUP 234
|
#define F_CUP 234
|
||||||
#define F_DCUP 235
|
#define F_DCUP 235
|
||||||
|
@ -142,7 +142,6 @@ BEGIN
|
|||||||
DISPLAY "Codice" CODTAB
|
DISPLAY "Codice" CODTAB
|
||||||
DISPLAY "Nome@50" S0
|
DISPLAY "Nome@50" S0
|
||||||
OUTPUT F_CODVAL CODTAB
|
OUTPUT F_CODVAL CODTAB
|
||||||
OUTPUT F_CONTROEURO B1
|
|
||||||
OUTPUT F_CAMBIO S4
|
OUTPUT F_CAMBIO S4
|
||||||
CHECKTYPE NORMAL
|
CHECKTYPE NORMAL
|
||||||
END
|
END
|
||||||
@ -159,7 +158,6 @@ BEGIN
|
|||||||
DISPLAY "Data@12" D0
|
DISPLAY "Data@12" D0
|
||||||
DISPLAY "Cambio@19" S4
|
DISPLAY "Cambio@19" S4
|
||||||
OUTPUT F_DATACAM D0
|
OUTPUT F_DATACAM D0
|
||||||
OUTPUT F_CONTROEURO B1
|
|
||||||
OUTPUT F_CAMBIO S4
|
OUTPUT F_CAMBIO S4
|
||||||
CHECKTYPE SEARCH
|
CHECKTYPE SEARCH
|
||||||
GROUP 1
|
GROUP 1
|
||||||
@ -176,12 +174,6 @@ BEGIN
|
|||||||
GROUP 1
|
GROUP 1
|
||||||
END
|
END
|
||||||
|
|
||||||
BOOLEAN F_CONTROEURO
|
|
||||||
BEGIN
|
|
||||||
PROMPT 40 8 "Controeuro "
|
|
||||||
FIELD CONTROEURO
|
|
||||||
END
|
|
||||||
|
|
||||||
BOOLEAN F_ULTRATA
|
BOOLEAN F_ULTRATA
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 56 8 "Ultima rata"
|
PROMPT 56 8 "Ultima rata"
|
||||||
|
@ -64,7 +64,7 @@ public:
|
|||||||
// riscrive l'effetto
|
// riscrive l'effetto
|
||||||
int rewrite(TLocalisamfile& f) { return write(f, TRUE); }
|
int rewrite(TLocalisamfile& f) { return write(f, TRUE); }
|
||||||
// rimuove l'effetto
|
// rimuove l'effetto
|
||||||
int remove(TLocalisamfile& f)const;
|
int remove(TLocalisamfile& f) const;
|
||||||
// restituisce il numero progressivo dell'effetto estraendolo dal record
|
// restituisce il numero progressivo dell'effetto estraendolo dal record
|
||||||
long numero() const { return get_long(EFF_NPROGTR); }
|
long numero() const { return get_long(EFF_NPROGTR); }
|
||||||
// restituisce il codice del cliente intestatario dell'effetto estraendolo dal record
|
// restituisce il codice del cliente intestatario dell'effetto estraendolo dal record
|
||||||
|
@ -272,7 +272,7 @@ int TVariazione_distinte::read(TMask& m)
|
|||||||
riga.add(TR("Varie"));
|
riga.add(TR("Varie"));
|
||||||
}
|
}
|
||||||
//gestisco il controllo sulla presenza o meno di una valuta
|
//gestisco il controllo sulla presenza o meno di una valuta
|
||||||
const TString16 codval(eff.get(EFF_CODVAL));
|
const TString4 codval(eff.get(EFF_CODVAL));
|
||||||
if (i == 0)
|
if (i == 0)
|
||||||
{
|
{
|
||||||
const bool valuta = ::is_true_value(codval);
|
const bool valuta = ::is_true_value(codval);
|
||||||
|
127
ef/ef0301.cpp
127
ef/ef0301.cpp
@ -1,5 +1,8 @@
|
|||||||
#include "ef0301.h"
|
#include "ef0301.h"
|
||||||
|
|
||||||
|
#include <recset.h>
|
||||||
|
#include <relation.h>
|
||||||
|
|
||||||
///////////////////////////////////////////////////
|
///////////////////////////////////////////////////
|
||||||
// Definizione dei metodi della classe TDistinta //
|
// Definizione dei metodi della classe TDistinta //
|
||||||
///////////////////////////////////////////////////
|
///////////////////////////////////////////////////
|
||||||
@ -7,7 +10,7 @@
|
|||||||
// costruttore distinta utilizzando il record passato
|
// costruttore distinta utilizzando il record passato
|
||||||
TDistinta::TDistinta(const TRectype& rec, word lockop)
|
TDistinta::TDistinta(const TRectype& rec, word lockop)
|
||||||
{
|
{
|
||||||
read(rec,lockop);
|
read(rec,lockop);
|
||||||
}
|
}
|
||||||
|
|
||||||
// costruisce la distinta del tipo e numero passati
|
// costruisce la distinta del tipo e numero passati
|
||||||
@ -18,31 +21,51 @@ TDistinta::TDistinta(const char tipo, const long numero, word lockop)
|
|||||||
|
|
||||||
TDistinta::~TDistinta()
|
TDistinta::~TDistinta()
|
||||||
{
|
{
|
||||||
TLocalisamfile f(LF_EFFETTI);
|
|
||||||
if (_righe_dist.items() > 0) // Se ha letto elementi sblocca eventualmente la prima riga
|
if (_righe_dist.items() > 0) // Se ha letto elementi sblocca eventualmente la prima riga
|
||||||
f.read((TRectype&)_righe_dist[0], _isequal,_unlock);
|
{
|
||||||
|
TLocalisamfile f(LF_EFFETTI);
|
||||||
|
f.read(eff(0), _isequal,_unlock);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const TString& TDistinta::query(const char tipo, const long numero, const int riga) const
|
||||||
|
{
|
||||||
|
TString& q = get_tmp_string();
|
||||||
|
q << "USE EFFETTI KEY 4"
|
||||||
|
<< "\nFROM TIPODIST=" << tipo << " NDIST=" << numero;
|
||||||
|
if (riga > 1)
|
||||||
|
q << " NRIGADIST=" << riga;
|
||||||
|
q << "\nTO TIPODIST=" << tipo << " NDIST=" << numero;
|
||||||
|
return q;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// permette di leggere la distinta del tipo e numero passati
|
// permette di leggere la distinta del tipo e numero passati
|
||||||
int TDistinta::read(const char tipo, const long numero, word lockop)
|
int TDistinta::read(const char tipo, const long numero, word lockop)
|
||||||
{
|
{
|
||||||
int err = _iskeynotfound;
|
int err = _iskeynotfound;
|
||||||
TLocalisamfile f(LF_EFFETTI); f.setkey(4);
|
if (_righe_dist.items()) // Se ha letto una distinta precedente, sblocca la prima riga
|
||||||
if (_righe_dist.items() > 0) // Se ha letto una distinta precedente, sblocca la prima riga
|
|
||||||
{
|
{
|
||||||
f.read((TRectype&)_righe_dist[0],_isequal,_unlock);
|
TLocalisamfile f(LF_EFFETTI); f.setkey(4);
|
||||||
|
f.read(eff(0),_isequal,_unlock);
|
||||||
_righe_dist.destroy(); // Rimuove tutte le righe precedenti
|
_righe_dist.destroy(); // Rimuove tutte le righe precedenti
|
||||||
}
|
}
|
||||||
if (tipo >= ' ' && numero > 0)
|
if (tipo >= ' ' && numero > 0)
|
||||||
{
|
{
|
||||||
err = NOERR;
|
TISAM_recordset reff(query(tipo, numero));
|
||||||
for (int i = 1; err == NOERR ; i++)
|
TLocalisamfile& f = reff.cursor()->file();
|
||||||
|
int i = 0;
|
||||||
|
for (bool ok = reff.move_first(); ok; ok = reff.move_next())
|
||||||
{
|
{
|
||||||
|
const word lock = (i == 0 && lockop == _lock) ? _lock : _nolock; // Lock solo sulla prima riga
|
||||||
|
const int n = reff.get(EFF_NRIGADIST).as_int();
|
||||||
TEffetto* effetto = new TEffetto;
|
TEffetto* effetto = new TEffetto;
|
||||||
word lock = (i == 1 && lockop == _lock) ? _lock : _nolock; // Lock solo sulla prima riga
|
err = effetto->read(f, tipo, numero, n, lock);//legge un effetto per chiave 4
|
||||||
err = effetto->read(f, tipo, numero, i, lock);//legge un effetto per chiave 4
|
|
||||||
if (err == NOERR)
|
if (err == NOERR)
|
||||||
_righe_dist.add(effetto);
|
{
|
||||||
|
i = _righe_dist.add(effetto) + 1;
|
||||||
|
effetto->put(EFF_NRIGADIST, i);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
delete effetto;
|
delete effetto;
|
||||||
}
|
}
|
||||||
@ -68,42 +91,36 @@ int TDistinta::write(bool force, TToken_string* dati_dist)
|
|||||||
{
|
{
|
||||||
int err = NOERR;
|
int err = NOERR;
|
||||||
//quanti effetti sono nella distinta (nell'array in memoria)
|
//quanti effetti sono nella distinta (nell'array in memoria)
|
||||||
const int elem = items();
|
|
||||||
TLocalisamfile f(LF_EFFETTI); f.setkey(4);
|
TLocalisamfile f(LF_EFFETTI); f.setkey(4);
|
||||||
|
int nriga = 0;
|
||||||
for (int i=0; i<elem && err==NOERR; i++)
|
FOR_EACH_ARRAY_ITEM(_righe_dist, i, obj)
|
||||||
{
|
{
|
||||||
TEffetto& effetto = eff(i);
|
TEffetto& effetto = *(TEffetto*)obj;
|
||||||
// token string che contiene i dati da registrare sull'effetto
|
// token string che contiene i dati da registrare sull'effetto
|
||||||
if (dati_dist)
|
if (dati_dist)
|
||||||
{
|
{
|
||||||
dati_dist->restart();
|
dati_dist->restart();
|
||||||
effetto.put(EFF_TIPODIST, dati_dist->get());
|
effetto.put(EFF_TIPODIST, dati_dist->get());
|
||||||
effetto.put(EFF_NDIST, dati_dist->get());
|
effetto.put(EFF_NDIST, dati_dist->get());
|
||||||
effetto.put(EFF_DATADIST, dati_dist->get());
|
effetto.put(EFF_DATADIST, dati_dist->get());
|
||||||
effetto.put(EFF_CODABIP, dati_dist->get());
|
effetto.put(EFF_CODABIP, dati_dist->get());
|
||||||
effetto.put(EFF_CODCABP, dati_dist->get());
|
effetto.put(EFF_CODCABP, dati_dist->get());
|
||||||
effetto.put(EFF_PROGBNP, dati_dist->get());
|
effetto.put(EFF_PROGBNP, dati_dist->get());
|
||||||
|
effetto.put(EFF_NRIGADIST, ++nriga);
|
||||||
effetto.put(EFF_NRIGADIST, i+1);
|
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
nriga = effetto.get_int(EFF_NRIGADIST);
|
||||||
//riscrivo l'effetto con i dati della distinta a cui appartiene
|
//riscrivo l'effetto con i dati della distinta a cui appartiene
|
||||||
err = effetto.rewrite(f);
|
err = effetto.rewrite_write(f);
|
||||||
|
if (err != NOERR)
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (dati_dist)
|
if (dati_dist)
|
||||||
{
|
{
|
||||||
f.setkey(4);
|
const char td = dati_dist->get_char(0);
|
||||||
f.put(EFF_TIPODIST, dati_dist->get(0));
|
const long nd = dati_dist->get_long();
|
||||||
f.put(EFF_NDIST, dati_dist->get());
|
remove(td, nd, nriga+1);
|
||||||
|
|
||||||
int i = elem;
|
|
||||||
f.put(EFF_NRIGADIST, ++i);
|
|
||||||
for (int e = f.read(); e == NOERR; e = f.read())
|
|
||||||
{
|
|
||||||
e = f.remove();
|
|
||||||
f.put(EFF_NRIGADIST, ++i);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return err;
|
return err;
|
||||||
@ -111,24 +128,28 @@ int TDistinta::write(bool force, TToken_string* dati_dist)
|
|||||||
|
|
||||||
// rimuove la distinta (non si effettua la rimozione del record su file ma si
|
// rimuove la distinta (non si effettua la rimozione del record su file ma si
|
||||||
// elimina dal file il collegamento tra gli effetti e la distinta)
|
// elimina dal file il collegamento tra gli effetti e la distinta)
|
||||||
int TDistinta::remove(char tipodist, long ndist)
|
int TDistinta::remove(char tipodist, long ndist, int nriga)
|
||||||
{
|
{
|
||||||
int err;
|
int err = NOERR;
|
||||||
TLocalisamfile file(LF_EFFETTI);
|
|
||||||
// scandisco tutti gli effetti della distinta (nell'array),
|
TISAM_recordset eff(query(tipodist, ndist, nriga));
|
||||||
// cancello i dati della distinta e riscrivo gli effetti
|
TLocalisamfile& file = eff.cursor()->file();
|
||||||
for (int i = 0; i < items(); i++)
|
for (bool ok = eff.move_first(); ok && err == NOERR; ok = eff.move_next())
|
||||||
{
|
{
|
||||||
TEffetto& effetto = (TEffetto&)_righe_dist[i];
|
const int i = file.get_int(EFF_NRIGADIST);
|
||||||
err = effetto.read(file, tipodist,ndist,i+1);
|
TEffetto effetto;
|
||||||
effetto.zero(EFF_TIPODIST);
|
err = effetto.read(file, tipodist,ndist,i);
|
||||||
effetto.zero(EFF_NDIST);
|
if (err == NOERR)
|
||||||
effetto.zero(EFF_DATADIST);
|
{
|
||||||
effetto.zero(EFF_NRIGADIST);
|
effetto.zero(EFF_TIPODIST);
|
||||||
effetto.zero(EFF_CODABIP);
|
effetto.zero(EFF_NDIST);
|
||||||
effetto.zero(EFF_CODCABP);
|
effetto.zero(EFF_DATADIST);
|
||||||
effetto.zero(EFF_PROGBNP);
|
effetto.zero(EFF_NRIGADIST);
|
||||||
err = effetto.rewrite(file);
|
effetto.zero(EFF_CODABIP);
|
||||||
|
effetto.zero(EFF_CODCABP);
|
||||||
|
effetto.zero(EFF_PROGBNP);
|
||||||
|
err = effetto.rewrite(file);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
reset();//elimino gli effetti dalla memoria resettando l'array
|
reset();//elimino gli effetti dalla memoria resettando l'array
|
||||||
return err;
|
return err;
|
||||||
@ -136,11 +157,5 @@ int TDistinta::remove(char tipodist, long ndist)
|
|||||||
|
|
||||||
bool TDistinta::contabilizzata() const
|
bool TDistinta::contabilizzata() const
|
||||||
{
|
{
|
||||||
bool yes = FALSE;
|
return _righe_dist.items() && eff(0).get_bool(EFF_EFFCONT);
|
||||||
if (_righe_dist.items() > 0)
|
|
||||||
{
|
|
||||||
const TRectype& eff = (const TRectype&)_righe_dist[0];
|
|
||||||
yes = eff.get_bool(EFF_EFFCONT);
|
|
||||||
}
|
|
||||||
return yes;
|
|
||||||
}
|
}
|
||||||
|
@ -17,6 +17,7 @@ class TDistinta : public TObject
|
|||||||
protected:
|
protected:
|
||||||
TEffetto& eff(int n) { return (TEffetto&)_righe_dist[n]; }
|
TEffetto& eff(int n) { return (TEffetto&)_righe_dist[n]; }
|
||||||
const TEffetto& eff(int n) const { return (const TEffetto&)_righe_dist[n]; }
|
const TEffetto& eff(int n) const { return (const TEffetto&)_righe_dist[n]; }
|
||||||
|
const TString& query(const char tipo, const long numero, const int riga = 0) const;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
//ritorna un riferimento all'array degli effetti nella distinta
|
//ritorna un riferimento all'array degli effetti nella distinta
|
||||||
@ -34,7 +35,7 @@ public:
|
|||||||
//riscrive la distinta
|
//riscrive la distinta
|
||||||
int rewrite(TToken_string* dati_dist = NULL){ return write(TRUE, dati_dist); }
|
int rewrite(TToken_string* dati_dist = NULL){ return write(TRUE, dati_dist); }
|
||||||
//rimuove la distinta del tipo e numero passati
|
//rimuove la distinta del tipo e numero passati
|
||||||
int remove(char tipodist, long ndist);
|
int remove(char tipodist, long ndist, int nriga=0);
|
||||||
//restituisce il tipo di distinta
|
//restituisce il tipo di distinta
|
||||||
const char tipodist() const { return eff(0).get_char(EFF_TIPODIST); }
|
const char tipodist() const { return eff(0).get_char(EFF_TIPODIST); }
|
||||||
//restituisce il tipo degli effetti della distinta (<C>lienti/<F>ornitori)
|
//restituisce il tipo degli effetti della distinta (<C>lienti/<F>ornitori)
|
||||||
@ -51,8 +52,6 @@ public:
|
|||||||
TDate data_cam() const { return eff(0).get_date(EFF_DATACAMBIO); }
|
TDate data_cam() const { return eff(0).get_date(EFF_DATACAMBIO); }
|
||||||
//restituisce il cambio delle distinta
|
//restituisce il cambio delle distinta
|
||||||
real cambio() const { return eff(0).get_real(EFF_CAMBIO); }
|
real cambio() const { return eff(0).get_real(EFF_CAMBIO); }
|
||||||
//restituisce TRUE se il cambio delle distinta e' contro euro
|
|
||||||
bool contro_euro() const { return eff(0).get_bool(EFF_CONTROEURO); }
|
|
||||||
//restituisce il codice abi di presentazione effetti
|
//restituisce il codice abi di presentazione effetti
|
||||||
const TString& abip()const { return eff(0).get(EFF_CODABIP); }
|
const TString& abip()const { return eff(0).get(EFF_CODABIP); }
|
||||||
//restituisce il codice cab di presentazione effetti
|
//restituisce il codice cab di presentazione effetti
|
||||||
|
115
ef/ef0800.cpp
115
ef/ef0800.cpp
@ -81,18 +81,7 @@ class TContabilizzazione_effetti_app : public TSkeleton_application
|
|||||||
_total_mov_val;// Same as above but in valuta
|
_total_mov_val;// Same as above but in valuta
|
||||||
TString _desc_inc, _desc_pag; // Descrizioni movimento generato
|
TString _desc_inc, _desc_pag; // Descrizioni movimento generato
|
||||||
TMask *_msk; // maschera di selezione dati
|
TMask *_msk; // maschera di selezione dati
|
||||||
// TLocalisamfile *_attiv, // file delle attivita' (per far funzionare TRegistro)
|
|
||||||
// *_fcaus, // file delle causale (per far funzionare TCausale)
|
|
||||||
// *_frcaus, // file delle righe causali (per far funzionare TCausale)
|
|
||||||
// *_effetti, // file degli effetti (per TDistinta)
|
|
||||||
// *_reffetti, // file delle righe effetti (per TDistinta)
|
|
||||||
// *_cessionari, // file dei cessionari (per TDistinta)
|
|
||||||
// *_part, // file delle partite (per far funzionare TPartita)
|
|
||||||
// *_scad, // file delle scadenze (per far funzionare TPartita)
|
|
||||||
// *_pags, // file dei pagamenti (per far funzionare TPartita)
|
|
||||||
// *_clifo, // file dei clienti
|
|
||||||
// *_doc, // file dei documenti
|
|
||||||
// *_pcon; // file piano dei conti
|
|
||||||
TBill _banca, // conto di contropartita della banca
|
TBill _banca, // conto di contropartita della banca
|
||||||
_cliente, // conto di contropartita del cliente
|
_cliente, // conto di contropartita del cliente
|
||||||
_trandiffcam; // conto di transizione per differenze cambi
|
_trandiffcam; // conto di transizione per differenze cambi
|
||||||
@ -871,18 +860,7 @@ void TContabilizzazione_effetti_app::compile_head_mov(const TString & contsep)
|
|||||||
mov.put(MOV_CODVAL, codval);
|
mov.put(MOV_CODVAL, codval);
|
||||||
mov.put(MOV_DATACAM, _distinta->data_cam());
|
mov.put(MOV_DATACAM, _distinta->data_cam());
|
||||||
|
|
||||||
real cambio = _distinta->cambio();
|
const real cambio = _distinta->cambio();
|
||||||
const bool eurocambio = _distinta->contro_euro();
|
|
||||||
const TExchange chg(codval, cambio, eurocambio ? _exchange_contro : _exchange_base);
|
|
||||||
if (eurocambio && mov.curr().exist(MOV_CONTROEURO))
|
|
||||||
{
|
|
||||||
mov.put(MOV_CONTROEURO, eurocambio);
|
|
||||||
cambio = chg.get_contro_change();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
cambio = chg.get_base_change();
|
|
||||||
}
|
|
||||||
mov.put(MOV_CAMBIO, cambio);
|
mov.put(MOV_CAMBIO, cambio);
|
||||||
}
|
}
|
||||||
// MOV_TOTDOC e MOV_TOTDOCVAL vengono completati prima della scrittura del movimento
|
// MOV_TOTDOC e MOV_TOTDOCVAL vengono completati prima della scrittura del movimento
|
||||||
@ -909,17 +887,6 @@ void TContabilizzazione_effetti_app::compile_riga_partita(TRiga_partite& riga, c
|
|||||||
riga.put(PART_DATACAM,effetto.get_date(EFF_DATACAMBIO));
|
riga.put(PART_DATACAM,effetto.get_date(EFF_DATACAMBIO));
|
||||||
real cambio = effetto.get(EFF_CAMBIO);
|
real cambio = effetto.get(EFF_CAMBIO);
|
||||||
riga.put(PART_CAMBIO, cambio);
|
riga.put(PART_CAMBIO, cambio);
|
||||||
if (effetto.get_bool(EFF_CONTROEURO))
|
|
||||||
{
|
|
||||||
if (!((TRectype&)riga).exist(PART_CONTROEURO))
|
|
||||||
{
|
|
||||||
const TExchange chg(effetto.get(EFF_CODVAL), cambio, _exchange_contro);
|
|
||||||
const real cc = chg.get_base_change();
|
|
||||||
riga.put(PART_CAMBIO, cc);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
riga.put(PART_CONTROEURO, TRUE);
|
|
||||||
}
|
|
||||||
riga.put(PART_TIPOCF,_cliente.tipo());
|
riga.put(PART_TIPOCF,_cliente.tipo());
|
||||||
riga.put(PART_SOTTOCONTO,_cliente.sottoconto());
|
riga.put(PART_SOTTOCONTO,_cliente.sottoconto());
|
||||||
riga.put(PART_IMPTOTDOC,effetto.get(EFF_IMPORTO));
|
riga.put(PART_IMPTOTDOC,effetto.get(EFF_IMPORTO));
|
||||||
@ -1065,18 +1032,7 @@ void TContabilizzazione_effetti_app::compile_saldac(const TEffetto& eff,
|
|||||||
const TString4 codval = eff.get(EFF_CODVAL);
|
const TString4 codval = eff.get(EFF_CODVAL);
|
||||||
const TDate datacam = eff.get(EFF_DATACAMBIO);
|
const TDate datacam = eff.get(EFF_DATACAMBIO);
|
||||||
real cambio = eff.get(EFF_CAMBIO);
|
real cambio = eff.get(EFF_CAMBIO);
|
||||||
exchange_type et = eff.get_bool(EFF_CONTROEURO) ? _exchange_contro : _exchange_base;
|
const TValuta valuta_eff(codval, datacam, cambio);
|
||||||
if (et == _exchange_contro)
|
|
||||||
{
|
|
||||||
if (!((TRectype&)riga_part).exist(PART_CONTROEURO))
|
|
||||||
{
|
|
||||||
const TExchange chg(codval, cambio, et);
|
|
||||||
cambio = chg.get_base_change();
|
|
||||||
et = _exchange_base;
|
|
||||||
riga_part.put(PART_CAMBIO, cambio);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
const TValuta valuta_eff(codval, datacam, cambio, et);
|
|
||||||
|
|
||||||
partita->modifica_pagamento(riga_pagamento, valuta_eff,
|
partita->modifica_pagamento(riga_pagamento, valuta_eff,
|
||||||
old_ap, old_abb, old_diffcam,
|
old_ap, old_abb, old_diffcam,
|
||||||
@ -1229,33 +1185,33 @@ error_type TContabilizzazione_effetti_app::write_all(bool change_status)
|
|||||||
|
|
||||||
bool TContabilizzazione_effetti_app::has_diffcam(const TEffetto& eff) const
|
bool TContabilizzazione_effetti_app::has_diffcam(const TEffetto& eff) const
|
||||||
{
|
{
|
||||||
bool yes = FALSE;
|
bool yes = false;
|
||||||
if (eff.in_valuta()) // Considera solo effetti in valuta
|
if (eff.in_valuta()) // Considera solo effetti in valuta
|
||||||
{
|
{
|
||||||
const TExchange cambio(eff);
|
const TExchange cambio(eff);
|
||||||
|
const bool always_diffcam = ini_get_bool(CONFIG_DITTA, "cg", "DiffCamAlways");
|
||||||
TLocalisamfile partite(LF_PARTITE);
|
TLocalisamfile partite(LF_PARTITE);
|
||||||
for (int n = 1; yes == FALSE && n <= eff.rows_r(); n++)
|
for (int n = 1; !yes && n <= eff.rows_r(); n++)
|
||||||
{
|
{
|
||||||
const TRectype& riga = eff.row_r(n);
|
const TRectype& riga = eff.row_r(n);
|
||||||
if (riga.get_char(REFF_ACCSAL) != 'S') // Ignora righe non saldanti
|
if (always_diffcam || riga.get_char(REFF_ACCSAL) == 'S') // Ignora righe non saldanti
|
||||||
continue;
|
{
|
||||||
|
partite.put(PART_TIPOCF, eff.get(EFF_TIPOCF));
|
||||||
partite.put(PART_TIPOCF, eff.get(EFF_TIPOCF));
|
partite.put(PART_GRUPPO, 0);
|
||||||
partite.put(PART_GRUPPO, 0);
|
partite.put(PART_CONTO, 0);
|
||||||
partite.put(PART_CONTO, 0);
|
partite.put(PART_SOTTOCONTO, eff.get(EFF_CODCF));
|
||||||
partite.put(PART_SOTTOCONTO, eff.get(EFF_CODCF));
|
partite.put(PART_ANNO, riga.get(REFF_ANNO));
|
||||||
partite.put(PART_ANNO, riga.get(REFF_ANNO));
|
partite.put(PART_NUMPART, riga.get(REFF_NUMPART));
|
||||||
partite.put(PART_NUMPART, riga.get(REFF_NUMPART));
|
partite.put(PART_NRIGA, riga.get(REFF_NRIGA));
|
||||||
partite.put(PART_NRIGA, riga.get(REFF_NRIGA));
|
int err = partite.read();
|
||||||
int err = partite.read();
|
if (err == NOERR)
|
||||||
if (err == NOERR)
|
{
|
||||||
{
|
const TExchange cambiofatt(partite.curr());
|
||||||
const TExchange cambiofatt(partite.curr());
|
yes = cambiofatt != cambio;
|
||||||
yes = cambiofatt != cambio;
|
}
|
||||||
|
else
|
||||||
|
NFCHECK("Effetto pagante fattura fantasma");
|
||||||
}
|
}
|
||||||
else
|
|
||||||
NFCHECK("Effetto pagante fattura fantasma");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return yes;
|
return yes;
|
||||||
@ -1344,8 +1300,21 @@ void TContabilizzazione_effetti_app::contabilize_bill(const char tipo, const lon
|
|||||||
_total_mov = 0.0;
|
_total_mov = 0.0;
|
||||||
_total_mov_val = 0.0;
|
_total_mov_val = 0.0;
|
||||||
distinta.read(tipo,numero,_lock); // Sblocca da solo quella precedente
|
distinta.read(tipo,numero,_lock); // Sblocca da solo quella precedente
|
||||||
|
|
||||||
|
const int items = distinta.items(); // Perche' sul file effetti il numero riga distinta e' un long ??
|
||||||
|
if (items == 0)
|
||||||
|
{
|
||||||
|
_error = generic_error;
|
||||||
|
error_box(FR("La distinta %c %ld non ha effetti"), tipo, numero);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
if (_caus != NULL)
|
if (_caus != NULL)
|
||||||
|
{
|
||||||
delete _caus;
|
delete _caus;
|
||||||
|
_caus = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
const TString& cc = distinta.tipocf() == 'F' ? _cod_caus_pag : _cod_caus;
|
const TString& cc = distinta.tipocf() == 'F' ? _cod_caus_pag : _cod_caus;
|
||||||
_caus = new TCausale(cc, _data_op.year());
|
_caus = new TCausale(cc, _data_op.year());
|
||||||
@ -1392,7 +1361,6 @@ void TContabilizzazione_effetti_app::contabilize_bill(const char tipo, const lon
|
|||||||
else
|
else
|
||||||
dettaglio_rate = _dett_rate_att;
|
dettaglio_rate = _dett_rate_att;
|
||||||
|
|
||||||
const int items = distinta.items(); // Perche' sul file effetti il numero riga distinta e' un long ??
|
|
||||||
|
|
||||||
// compila la testata
|
// compila la testata
|
||||||
compile_head_mov(key);
|
compile_head_mov(key);
|
||||||
@ -1496,6 +1464,7 @@ void TContabilizzazione_effetti_app::contabilize_bill(const char tipo, const lon
|
|||||||
|
|
||||||
void TContabilizzazione_effetti_app::contabilize()
|
void TContabilizzazione_effetti_app::contabilize()
|
||||||
{
|
{
|
||||||
|
const bool cont_sep = ini_get_bool(CONFIG_DITTA, "ef", "ContSep"); // Stramaledetta
|
||||||
_total_bills = 0;
|
_total_bills = 0;
|
||||||
|
|
||||||
const long cur_items = _dist_sheet->items(); // Quante distinte in totale ?
|
const long cur_items = _dist_sheet->items(); // Quante distinte in totale ?
|
||||||
@ -1508,13 +1477,13 @@ void TContabilizzazione_effetti_app::contabilize()
|
|||||||
TToken_string& t = _dist_sheet->row(j);
|
TToken_string& t = _dist_sheet->row(j);
|
||||||
const char tipo = t.get_char(1);
|
const char tipo = t.get_char(1);
|
||||||
const long numero = t.get_long(2);
|
const long numero = t.get_long(2);
|
||||||
if (ini_get_bool(CONFIG_DITTA, "ef", "ContSep"))
|
|
||||||
|
if (cont_sep)
|
||||||
{
|
{
|
||||||
_distinta->read(tipo,numero);
|
_distinta->read(tipo,numero);
|
||||||
|
|
||||||
const int items = _distinta->items();
|
const int items = _distinta->items();
|
||||||
TAssoc_array codcs;
|
|
||||||
|
TAssoc_array codcs;
|
||||||
for (int i = 0; i < items; i++) // scorre le righe della distinta (effetti)
|
for (int i = 0; i < items; i++) // scorre le righe della distinta (effetti)
|
||||||
{
|
{
|
||||||
const TEffetto& eff = (*_distinta)[i];
|
const TEffetto& eff = (*_distinta)[i];
|
||||||
@ -1525,7 +1494,9 @@ void TContabilizzazione_effetti_app::contabilize()
|
|||||||
contabilize_bill(tipo,numero, key);
|
contabilize_bill(tipo,numero, key);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
contabilize_bill(tipo,numero);
|
contabilize_bill(tipo,numero);
|
||||||
|
}
|
||||||
if (!good())
|
if (!good())
|
||||||
display_error();
|
display_error();
|
||||||
}
|
}
|
||||||
|
@ -690,7 +690,6 @@ void TPE_mask::save_rate()
|
|||||||
|
|
||||||
const TString& codval = get(F_CODVAL);
|
const TString& codval = get(F_CODVAL);
|
||||||
const real cambio = get(F_CAMBIO);
|
const real cambio = get(F_CAMBIO);
|
||||||
const bool eurocambio = get_bool(F_EURO);
|
|
||||||
const int tipopag = get_int(F_TIPOPAG);
|
const int tipopag = get_int(F_TIPOPAG);
|
||||||
|
|
||||||
bool zeroes = false; // Esistono righe effetto da cancellare
|
bool zeroes = false; // Esistono righe effetto da cancellare
|
||||||
@ -704,7 +703,7 @@ void TPE_mask::save_rate()
|
|||||||
if (codval.full() && !imp.is_zero())
|
if (codval.full() && !imp.is_zero())
|
||||||
{
|
{
|
||||||
impval = imp;
|
impval = imp;
|
||||||
TCurrency c(impval, codval, cambio, eurocambio ? _exchange_contro : _exchange_base);
|
TCurrency c(impval, codval, cambio);
|
||||||
c.change_to_firm_val();
|
c.change_to_firm_val();
|
||||||
imp = c.get_num();
|
imp = c.get_num();
|
||||||
}
|
}
|
||||||
@ -821,7 +820,6 @@ void TPE_mask::save_rate()
|
|||||||
eff.put(EFF_IMPORTOVAL, totimpval);
|
eff.put(EFF_IMPORTOVAL, totimpval);
|
||||||
eff.put(EFF_CODVAL, codval);
|
eff.put(EFF_CODVAL, codval);
|
||||||
eff.put(EFF_CAMBIO, cambio);
|
eff.put(EFF_CAMBIO, cambio);
|
||||||
eff.put(EFF_CONTROEURO, eurocambio);
|
|
||||||
eff.put(EFF_DATACAMBIO, get(F_DATACAMBIO));
|
eff.put(EFF_DATACAMBIO, get(F_DATACAMBIO));
|
||||||
eff.put(EFF_SPESE, get(F_SPESE));
|
eff.put(EFF_SPESE, get(F_SPESE));
|
||||||
}
|
}
|
||||||
|
@ -8,7 +8,6 @@
|
|||||||
#define F_DUMMYDIST 208
|
#define F_DUMMYDIST 208
|
||||||
#define F_DATADIST 209
|
#define F_DATADIST 209
|
||||||
#define F_CODVAL 210
|
#define F_CODVAL 210
|
||||||
#define F_EURO 211
|
|
||||||
#define F_CAMBIO 212
|
#define F_CAMBIO 212
|
||||||
#define F_DATACAMBIO 213
|
#define F_DATACAMBIO 213
|
||||||
#define F_DESCAB 214
|
#define F_DESCAB 214
|
||||||
|
@ -81,7 +81,6 @@ BEGIN
|
|||||||
OUTPUT F_CODVAL CODVAL
|
OUTPUT F_CODVAL CODVAL
|
||||||
OUTPUT F_CAMBIO CAMBIO
|
OUTPUT F_CAMBIO CAMBIO
|
||||||
OUTPUT F_DATACAMBIO DATACAMBIO
|
OUTPUT F_DATACAMBIO DATACAMBIO
|
||||||
OUTPUT F_EURO CONTROEURO
|
|
||||||
OUTPUT F_TIPOCF TIPOCF
|
OUTPUT F_TIPOCF TIPOCF
|
||||||
OUTPUT F_ABI CODABIP
|
OUTPUT F_ABI CODABIP
|
||||||
OUTPUT F_CAB CODCABP
|
OUTPUT F_CAB CODCABP
|
||||||
@ -103,19 +102,12 @@ BEGIN
|
|||||||
DISPLAY "Contro\nEuro@6" B1
|
DISPLAY "Contro\nEuro@6" B1
|
||||||
DISPLAY "Denominazione@50" S0
|
DISPLAY "Denominazione@50" S0
|
||||||
OUTPUT F_CODVAL CODTAB
|
OUTPUT F_CODVAL CODTAB
|
||||||
OUTPUT F_EURO B1
|
|
||||||
CHECKTYPE NORMAL
|
CHECKTYPE NORMAL
|
||||||
GROUP 3
|
GROUP 3
|
||||||
MESSAGE EMPTY CLEAR,6@
|
MESSAGE EMPTY CLEAR,6@
|
||||||
MESSAGE ENABLE,6@
|
MESSAGE ENABLE,6@
|
||||||
END
|
END
|
||||||
|
|
||||||
BOOLEAN F_EURO
|
|
||||||
BEGIN
|
|
||||||
PROMPT 64 1 "Contro Euro"
|
|
||||||
FLAGS "D"
|
|
||||||
END
|
|
||||||
|
|
||||||
DATE F_DATADIST
|
DATE F_DATADIST
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 2 "Data "
|
PROMPT 2 2 "Data "
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
31
|
31
|
||||||
0
|
0
|
||||||
$effetti|0|0|249|0|Effetti|||
|
$effetti|0|0|248|0|Effetti|||
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
31
|
31
|
||||||
37
|
36
|
||||||
NPROGTR|3|7|0|Numero progressivo effetto
|
NPROGTR|3|7|0|Numero progressivo effetto
|
||||||
DATASCAD|5|8|0|Data di scadenza
|
DATASCAD|5|8|0|Data di scadenza
|
||||||
TIPOPAG|2|1|0|Tipo pagamento
|
TIPOPAG|2|1|0|Tipo pagamento
|
||||||
@ -11,7 +11,6 @@ DATAEMISS|5|8|0|Data emissione
|
|||||||
CODVAL|1|3|0|Codice valuta
|
CODVAL|1|3|0|Codice valuta
|
||||||
DATACAMBIO|5|8|0|Data cambio
|
DATACAMBIO|5|8|0|Data cambio
|
||||||
CAMBIO|4|15|6|Cambio
|
CAMBIO|4|15|6|Cambio
|
||||||
CONTROEURO|8|1|0|Cambio espresso contro Euro
|
|
||||||
CODABI|10|5|0|Codice ABI banca
|
CODABI|10|5|0|Codice ABI banca
|
||||||
CODCAB|10|5|0|Codice CAB banca
|
CODCAB|10|5|0|Codice CAB banca
|
||||||
ULTRATA|8|1|0|Ultima rata
|
ULTRATA|8|1|0|Ultima rata
|
||||||
|
Loading…
x
Reference in New Issue
Block a user