Patch level : 10.0 250

Files correlati     : ve0.exe
Ricompilazione Demo : [ ]
Commento            :

Riportata la versione 3.2 patch 1350


git-svn-id: svn://10.65.10.50/trunk@18385 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
alex 2009-02-27 16:49:30 +00:00
parent a756ea9067
commit 3a03066a32
20 changed files with 328 additions and 194 deletions

View File

@ -4,6 +4,8 @@ USE LF_NDITTE
JOIN LF_ANAG TO LF_NDITTE INTO TIPOA=TIPOA CODANAGR=CODANAGR
JOIN LF_ANAGFIS TO LF_ANAG ALIAS 18 INTO CODANAGR=CODANAGR
JOIN LF_ANAGGIU TO LF_ANAG INTO CODANAGR=CODANAGR
JOIN LF_ATTIV INTO CODDITTA==CODDITTA CODATT==CODATTPREV
END
DESCRIPTION
@ -108,6 +110,7 @@ STRINGA -1
BEGIN
KEY "Codice attività"
PROMPT 58 12 "@rCodice attività @b"
FIELD LF_ATTIV->CODATECO
FIELD LF_NDITTE->CODATTPREV
END

View File

@ -4,6 +4,7 @@ USE LF_NDITTE
JOIN LF_ANAG TO LF_NDITTE INTO TIPOA=TIPOA CODANAGR=CODANAGR
JOIN LF_ANAGFIS TO LF_ANAG ALIAS 18 INTO CODANAGR=CODANAGR
JOIN LF_ANAGGIU TO LF_ANAG INTO CODANAGR=CODANAGR
JOIN LF_ATTIV INTO CODDITTA==CODDITTA CODATT==CODATTPREV
END
DESCRIPTION
@ -103,6 +104,7 @@ STRINGA -1
BEGIN
KEY "Codice attività"
PROMPT 58 12 "@rCodice attività @b"
FIELD LF_ATTIV->CODATECO
FIELD LF_NDITTE->CODATTPREV
END

View File

@ -1,10 +1,4 @@
#include <applicat.h>
#include <tabapp.h>
#include <strings.h>
#include <stdtypes.h>
#include <tabutil.h>
#include <utility.h>
#include <prefix.h>
#include "..\ba\batbtra.h"
@ -16,19 +10,13 @@ private:
TString _tabname;
public:
virtual bool check_autorization() const
{return FALSE;}
bool user_create();
virtual bool check_autorization() const { return false; }
virtual bool user_create();
virtual void init_query_mode(TMask&);
virtual void init_modify_mode(TMask&);
virtual void init_insert_mode(TMask&);
Tabtra_application() {}
virtual ~Tabtra_application() {}
};
HIDDEN inline Tabtra_application& app() {return (Tabtra_application&) main_app();}
HIDDEN bool ultimo_handler(TMask& m, KEY k)
{
if (k == K_SHIFT+K_F12)
@ -40,24 +28,37 @@ HIDDEN bool ultimo_handler(TMask& m, KEY k)
return TRUE;
}
HIDDEN bool ditta_handler(TMask_field& f, KEY k)
HIDDEN bool dittaric_handler(TMask_field& f, KEY k)
{
if (k == K_TAB)
{
long codditta = f.mask().get_long(F_CODDITTARIC);
TMask& m = f.mask();
bool show_cfc = false;
bool show_pcc = false;
if (codditta != 0)
const long codditta = m.get_long(F_CODDITTARIC);
if (codditta > 0)
{
if (prefix().exist(codditta))
return TRUE;
else
if (!prefix().exist(codditta))
{
f.error_box(TR("La ditta selezionata non e' abilitata per la contabilita' "));
return FALSE;
f.error_box(TR("La ditta selezionata non e' abilitata per la contabilita'"));
return false;
}
TFilename path = firm2dir(codditta);
path.add("ditta.ini");
TConfig conf(path, "cg");
show_cfc = conf.get_bool("AnCfCm");
show_pcc = conf.get_bool("PcTcCm");
}
// Accendi i campi per le forzature sui file in comune se necessario
m.show(F_AGGPCONCOM, show_pcc);
m.show(F_AGGCLIFOCOM, show_cfc);
}
return TRUE;
return true;
}
void Tabtra_application::init_query_mode(TMask& m)
@ -89,7 +90,8 @@ bool Tabtra_application::user_create()
if (_tabname == "%TRA")
{
_msk->set_handler(ultimo_handler);
_msk->set_handler(F_CODDITTARIC, ditta_handler);
_msk->set_handler(F_CODDITTARIC, dittaric_handler);
}
return TRUE;
@ -97,11 +99,9 @@ bool Tabtra_application::user_create()
int cg6300(int argc, char* argv[])
{
Tabtra_application* a= new Tabtra_application;
Tabtra_application* a = new Tabtra_application;
a->run(argc,argv, TR("Tabelle"));
delete a;
return 0;
}

View File

@ -43,6 +43,7 @@ class TRic_archivi : public TSkeleton_application
TDate _datatras,_datatrasp,_dataultras_tab,_dataultras;
TString _sigle_file,_nrec_file;
char _agg_cau,_agg_pcon,_agg_cls,_agg_clifo,_agg_fatatt,_agg_fatpas;
bool _agg_pcc_com, _agg_cfc_com;
public:
TString _titolo;
@ -695,6 +696,9 @@ long TRic_archivi::leggi_tabella_tras()
const bool agg_fatpas = tab_tra.get_bool("B1");
_agg_fatpas = agg_fatpas ? 'X' : ' ';
_agg_pcc_com = tab_tra.get_bool("B2"); // Aggiorna comunque piano dei conti in comune
_agg_cfc_com = tab_tra.get_bool("B3"); // Aggiorna comunque clienti/fornitori in comune
}
return ditta;
@ -709,8 +713,8 @@ bool TRic_archivi::set_flag()
bool fatto = true;
TConfig conf(CONFIG_DITTA, "cg");
const TString4 ana_com = conf.get("AnCfCm");
const TString4 pcon_cau = conf.get("PcTcCm");
const bool ana_com = conf.get_bool("AnCfCm") && !_agg_cfc_com;
const bool pcon_cau = conf.get_bool("PcTcCm") && !_agg_pcc_com;
_tras_file->open(_trasfhard);
@ -734,7 +738,7 @@ bool TRic_archivi::set_flag()
{
if (sigla == 'W' || sigla == 'P')
{
if (nrec > 0 && pcon_cau == "")
if (nrec > 0 && !pcon_cau)
{
flag = "T";
fatto = false;
@ -743,7 +747,7 @@ bool TRic_archivi::set_flag()
else
if (sigla == 'A')
{
if (nrec > 0 && ana_com == "")
if (nrec > 0 && !ana_com)
{
flag = "T";
fatto = false;
@ -772,7 +776,7 @@ bool TRic_archivi::set_flag()
if (sigla == 'W' || sigla == 'P')
{
if (pcon_cau == "X")
if (pcon_cau)
{
_sigle_file.overwrite(" ",j);
_nrec_file.overwrite("000000",k);
@ -781,7 +785,7 @@ bool TRic_archivi::set_flag()
if (sigla == 'A')
{
if (ana_com == "X")
if (ana_com)
{
_sigle_file.overwrite(" ",j);
_nrec_file.overwrite("000000",k);
@ -821,7 +825,7 @@ void TRic_archivi::aggiorna_tabella()
{
TTable tab_tra("%TRA");
TString16 dep;
dep.format("%10s%05ld", (const char*) _nomeid, _dittainv);
dep.format("%10s%05ld", (const char*)_nomeid, _dittainv);
tab_tra.put("CODTAB", dep);
if (tab_tra.read() == NOERR)
{

View File

@ -108,8 +108,9 @@ public:
HIDDEN TRic_tab& app() { return (TRic_tab &) main_app(); }
TRic_tab::TRic_tab(char ric_tab_mov, char ric_auto) :
_scelta(toupper(ric_tab_mov)), _ric_auto(toupper(ric_auto))
TRic_tab::TRic_tab(char ric_tab_mov, char ric_auto)
: _scelta(toupper(ric_tab_mov)), _ric_auto(toupper(ric_auto)),
_tcaus(NULL), _trcaus(NULL), _tclifo(NULL), _tpcon(NULL), _tmov(NULL), _trmov(NULL), _triva(NULL)
{
if (_scelta == 'T')
_titolo = TR("Ricezione tabelle");
@ -297,17 +298,13 @@ void TRic_tab::main_loop()
void TRic_tab::trasferimento()
{
char uselab;
TString key = "";
int posiz,i;
int last_tab;
char sigla;
int last_tab = 0;
char sigla = ' ';
TString message;
uselab = _tras_file.ult_file()[0];
posiz = _tras_file.num(uselab); //Ritorna la posizione della sigla all'interno dell'indice
key = _tras_file.key();
key.trim();
char uselab = _tras_file.ult_file()[0];
int posiz = _tras_file.num(uselab); //Ritorna la posizione della sigla all'interno dell'indice
TString key = _tras_file.key(); key.trim();
leggi_record_controllo();
@ -317,7 +314,7 @@ void TRic_tab::trasferimento()
if (_scelta == 'M')
last_tab = _tras_file.last_mov();
for (i = posiz; i < last_tab;i++)
for (int i = posiz; i < last_tab;i++)
{
const long numero = atol(_record.mid( ((i * 6) + 95),6));
if (numero == 0) // Numero di records totali del tipo atteso
@ -333,8 +330,16 @@ void TRic_tab::trasferimento()
cicli = _tcaus->items();
break;
case 'A':
message = TR("Ricezione anagrafica Clienti / Fornitori in corso... Prego attendere.");
cicli = _tclifo->items();
if (_tclifo != NULL)
{
message = TR("Ricezione anagrafica Clienti / Fornitori in corso... Prego attendere.");
cicli = _tclifo->items();
}
else
{
error_box("Sono presenti %ld record clienti/fornitori non dichirati nel record di controllo", numero);
cicli = 0;
}
break;
case 'P':
message = TR("Ricezione anagrafica Piano dei Conti in corso... Prego attendere.");
@ -1859,7 +1864,7 @@ void TRic_tab::apri_file_temp()
_tmpclifo = tmpclifo.mid(1);
_tmpclifo << ".dbf";
if (_tmpclifo.exist())
_tclifo = new TIsamtempfile(LF_CLIFO, tmpclifo, 0);
_tclifo = new TIsamtempfile(LF_CLIFO, tmpclifo, 0);
TString80 tmppcon = "%";
tmppcon << get_firm_dir();
tmppcon << "\\" << TEMP_PCON;

View File

@ -535,7 +535,7 @@ bool TRic_ListaMov::controlla_mov()
else
{
caus.zero();
if (_causale.not_empty()) //se la causale e' significativa
if (_causale.full()) //se la causale e' significativa
{
_errore_grave = TRUE;
_err.set(7);
@ -831,14 +831,14 @@ void TRic_ListaMov::stampa_errori_rmov(int riga)
if (_gruppo == 0 || _conto == 0 || _sottoconto == 0l)
{
_errore_grave = TRUE;
set_row(++riga, FR("@8g*** Sottoconto partita non valido o non presente in archivio"));
set_row(++riga, FR("@8g*** Sottoconto partita %d.%d.%ld non valido"), _gruppo, _conto, _sottoconto);
}
else
{
if (!_esiste_conto)
{
_errore_grave = TRUE;
set_row(++riga, FR("@8g*** Sottoconto partita non valido o non presente in archivio"));
set_row(++riga, FR("@8g*** Sottoconto partita %d.%d.%ld non presente in archivio"), _gruppo, _conto, _sottoconto);
}
}
@ -1035,12 +1035,12 @@ void TRic_ListaMov::stampa_errori_riva(int riga)
set_row(++riga, FR("@8g--- Tipo costo/ricavo non valido"));
if (_gruppocr == 0 || _contocr == 0 || _sottocontocr == 0l)
set_row(++riga, FR("@8g--- Sottoconto costo/ricavo non valido o non presente in archivio"));
set_row(++riga, FR("@8g--- Sottoconto costo/ricavo %d.%d.%ld non valido"), _gruppocr, _contocr, _sottocontocr);
else if (_gruppocr != 0 && _contocr != 0 && _sottocontocr != 0l)
{
bool ok = errori_partita(_gruppocr,_contocr,_sottocontocr);
if (!ok)
set_row(++riga, FR("@8g--- Sottoconto costo/ricavo non valido o non presente in archivio"));
set_row(++riga, FR("@8g--- Sottoconto costo/ricavo %d.%d.%ld non presente in archivio"), _gruppocr, _contocr, _sottocontocr);
}
if (_tipod != 0 && _tipod != 1 && _tipod != 3 && _tipod != 9)

View File

@ -333,11 +333,12 @@ void TTransfer_file::close()
bool TTransfer_file::open(const char* path, bool create)
{
if (_trasfer) fclose(_trasfer);
if (_trasfer)
fclose(_trasfer);
const char* mode = create ? "a+t" : "r+t";
_trasfer = fopen (path, mode);
return _trasfer != NULL;
}
@ -472,41 +473,30 @@ void TTransfer_file::remove_all(bool file_ditta)
bool TTransfer_file::read_control_rec()
{
if (!exist())
if (_trasfer == NULL || !exist())
return false;
_control_rec->spaces();
// va all'inizio del file
fseek(_trasfer, 0L, SEEK_SET);
// const word letti = fread((char*)(const char*)_control_rec,sizeof(char),sizeH,_trasfer);
const word letti = fread(_control_rec->get_buffer(), 1, sizeH, _trasfer);
const word letti = fread(_control_rec->get_buffer(sizeH), 1, sizeH, _trasfer);
_control_rec->cut(sizeH);
if (_control_rec->len() > sizeH)
NFCHECK("Non e' possibile allocare una stringa di %d in una stringa fissa di %d caratteri", _control_rec->len(),sizeH);
_tiporec = _control_rec->left(2);
if (_tiporec == " 1")
{
_nome_simb = _control_rec->sub(60,70);
_ditta = atol(_control_rec->sub(70,75));
_nultras = atoi(_control_rec->sub(75,78));
const TString& tmp = _control_rec->sub(78,86);
_dataultras = converti(tmp,true);
_sigle_file = _control_rec->sub(86,95); _sigle_file.rtrim();
_nrec_file = _control_rec->sub(95,149);
_ult_file = _control_rec->sub(240,241); _ult_file.trim();
_key = _control_rec->sub(241,301); _key.trim();
fill_index(_sigle_file,_nrec_file);
}
else
if (_tiporec != " 1")
return false;
_nome_simb = _control_rec->sub(60,70);
_ditta = atol(_control_rec->sub(70,75));
_nultras = atoi(_control_rec->sub(75,78));
const TString& tmp = _control_rec->sub(78,86);
_dataultras = converti(tmp,true);
_sigle_file = _control_rec->sub(86,95); _sigle_file.rtrim();
_nrec_file = _control_rec->sub(95,149);
_ult_file = _control_rec->sub(240,241); _ult_file.trim();
_key = _control_rec->sub(241,301); _key.trim();
fill_index(_sigle_file, _nrec_file);
return true;
}
@ -1988,16 +1978,16 @@ void TTransfer_file::tipo_anagrafica(TString& record,TString& tipoc)
char tipo = (record.sub(15,16))[0];
switch (tipo)
{
case '1':
tipoc = "C";
break;
case '2':
tipoc = "F";
break;
case '3':
tipoc = " ";
default:
break;
case '1':
tipoc = "C";
break;
case '2':
tipoc = "F";
break;
case '3':
tipoc = " ";
default:
break;
};
}
@ -3312,8 +3302,7 @@ void TTransfer_file::scrivi_header(const char* dest, const char* wflag)
const word size = 256;
const int sizeH = 1024;
TString buffer(sizeH);
TString16 trec;
FILE* o = fopen(dest, wflag);
CHECKS(o, "Impossibile scrivere il file ", dest);
@ -3323,12 +3312,10 @@ void TTransfer_file::scrivi_header(const char* dest, const char* wflag)
_ttab->put("CODTAB", " 1");
_ttab->read();
trec = (_ttab->get("CODTAB")).sub(0,2);
const TString& trec = _ttab->get("CODTAB").left(2);
if (trec == " 1") // Copio il record di controllo nel file di appoggio
{ // header.
TString rec;
rec = (const char*) recf;
TString rec = recf;
buffer.spaces();
buffer.overwrite(rec,0);
@ -3352,7 +3339,7 @@ void TTransfer_file::scrivi_header(const char* dest, const char* wflag)
app.overwrite(app1,0);
buffer.overwrite(app,0);
buffer.cut(sizeH);
fwrite((char*)(const char*)buffer, 1, sizeH, o);
fwrite((const char*)buffer, 1, sizeH, o);
fclose(o);
}
}
@ -3370,12 +3357,11 @@ void TTransfer_file::scrivi_causali(long nrec)
_ttab->put("CODTAB", "W1");
for (_ttab->read(); !_ttab->eof(); _ttab->next())
{
const TString& trec = (_ttab->get("CODTAB")).left(2);
const TString& trec = _ttab->get("CODTAB").left(2);
if (trec != "W1") break;
buffer = (const char*) recf;
write_tmp_tabelle(buffer,create);
create = false;
}
@ -3395,7 +3381,7 @@ void TTransfer_file::scrivi_clifo(long nrec)
_ttab->put("CODTAB", "A1");
for (_ttab->read(); !_ttab->eof(); _ttab->next())
{
const TString& trec = (_ttab->get("CODTAB")).left(2);
const TString& trec = _ttab->get("CODTAB").left(2);
if (trec != "A1") break;
buffer = (const char*) recf;

View File

@ -208,23 +208,23 @@ PAGE "Configurazione chiusure mensili" -1 -1 0 0
GROUP 2
END
STRING F_NUMCHI 4
STRING F_NUMRIT 4
BEGIN
PROMPT 2 4 "Numeraz. chiusura mensile "
FIELD NumChi
FIELD NumRit
HELP "Codice numerazione"
USE %NUM SELECT I1>5
INPUT CODTAB F_NUMCHI
INPUT CODTAB F_NUMRIT
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_NUMCHI CODTAB
OUTPUT F_DNUMCHI S0
OUTPUT F_NUMRIT CODTAB
OUTPUT F_DNUMRIT S0
CHECKTYPE REQUIRED
FLAG "UPA"
WARNING "Numerazione assente"
END
STRING F_DNUMCHI 50
STRING F_DNUMRIT 50
BEGIN
PROMPT 40 4 ""
FLAGS "D"
@ -271,9 +271,31 @@ PAGE "Configurazione chiusure mensili" -1 -1 0 0
FLAGS "D"
END
STRING F_NUMCHI 4
BEGIN
PROMPT 2 7 "Numeraz. chiusura mensile "
FIELD NumChi
HELP "Codice numerazione"
USE %NUM SELECT I1>5
INPUT CODTAB F_NUMCHI
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_NUMCHI CODTAB
OUTPUT F_DNUMCHI S0
CHECKTYPE REQUIRED
FLAG "UPA"
WARNING "Numerazione assente"
END
STRING F_DNUMCHI 50
BEGIN
PROMPT 40 7 ""
FLAGS "D"
END
STRING F_TIPOCHI 4
BEGIN
PROMPT 2 7 "Tipo doc.chiusura mensile "
PROMPT 2 8 "Tipo doc.chiusura mensile "
FIELD TipoChi
HELP "Codice tipo documento"
USE %TIP SELECT I1>5
@ -288,13 +310,13 @@ PAGE "Configurazione chiusure mensili" -1 -1 0 0
STRING F_DTIPOCHI 50
BEGIN
PROMPT 40 7 ""
PROMPT 40 8 ""
FLAGS "D"
END
STRING F_SPCHI 8
BEGIN
PROMPT 2 8 "Cod.spesa chiusura mensile "
PROMPT 2 9 "Cod.spesa chiusura mensile "
USE SPP SELECT (S6="V")
FLAGS "U"
INPUT CODTAB F_SPCHI
@ -308,13 +330,35 @@ PAGE "Configurazione chiusure mensili" -1 -1 0 0
STRING F_DSPCHI 50
BEGIN
PROMPT 40 8 ""
PROMPT 40 9 ""
FLAGS "D"
END
STRING F_NUMASS 4
BEGIN
PROMPT 2 10 "Numeraz. assegni "
FIELD NumAss
HELP "Codice numerazione"
USE %NUM SELECT I1>5
INPUT CODTAB F_NUMASS
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_NUMASS CODTAB
OUTPUT F_DNUMASS S0
CHECKTYPE REQUIRED
FLAG "UPA"
WARNING "Numerazione assente"
END
STRING F_DNUMASS 50
BEGIN
PROMPT 40 10 ""
FLAGS "D"
END
STRING F_TIPOASS 4
BEGIN
PROMPT 2 9 "Tipo doc.assegno "
PROMPT 2 11 "Tipo doc.assegno "
FIELD TipoAss
HELP "Codice tipo documento"
USE %TIP SELECT I1>5
@ -329,13 +373,13 @@ PAGE "Configurazione chiusure mensili" -1 -1 0 0
STRING F_DTIPOASS 50
BEGIN
PROMPT 40 9 ""
PROMPT 40 11 ""
FLAGS "D"
END
STRING F_SPASS 8
BEGIN
PROMPT 2 10 "Cod.spesa assegni "
PROMPT 2 12 "Cod.spesa assegni "
USE SPP SELECT (S6="V")
FLAGS "U"
INPUT CODTAB F_SPASS
@ -349,13 +393,13 @@ PAGE "Configurazione chiusure mensili" -1 -1 0 0
STRING F_DSPASS 50
BEGIN
PROMPT 40 10 ""
PROMPT 40 12 ""
FLAGS "D"
END
STRING F_CODELASS 8
BEGIN
PROMPT 2 12 "Cod.elab assegni "
PROMPT 2 14 "Cod.elab assegni "
FLAG "U"
USE %ELD SELECT I0==5
INPUT CODTAB F_CODELASS

View File

@ -80,13 +80,15 @@ class TEstrattoConto_rep : public TDocument_report
real _saldodeb;
real _ritenuta;
TString _numchi;
TString _tiporit;
TString _sprit;
TString8 _numrit;
TString8 _tiporit;
TString _sprit;
TString _tipochi;
TString8 _numchi;
TString8 _tipochi;
TString _tipoass;
TString _spchi;
TString8 _numass;
TString8 _spchi;
TString _spass;
bool _chiusura;
bool _genpag;
@ -343,7 +345,7 @@ void TEstrattoConto_rep::chiudi_mese()
if (_ritenuta != ZERO) // create ritenute
{
TDocumento doc('D', datachi.year(), _numchi, 0L);
TDocumento doc('D', datachi.year(), _numrit, 0L);
doc.set_tipo(_tiporit);
doc.stato(doc.tipo().stato_finale_inserimento());
@ -368,7 +370,7 @@ void TEstrattoConto_rep::chiudi_mese()
if (saldo > ZERO) // assegno
{
TDocumento doc('D', datachi.year(), _numchi, 0L);
TDocumento doc('D', datachi.year(), _numass, 0L);
doc.set_tipo(_tipoass);
doc.stato(doc.tipo().stato_finale_inserimento());
@ -498,11 +500,13 @@ TEstrattoConto_rep::TEstrattoConto_rep(bool genpag, bool chiusura, bool aggiorna
TConfig c(CONFIG_DITTA);
_numchi = c.get("NumChi");
_numrit = c.get("NumRit");
_tiporit = c.get("TipoRit");
_sprit = c.get("SpRitChi");
_numchi = c.get("NumChi");
_tipochi = c.get("TipoChi");
_spchi = c.get("SpChi");
_numass = c.get("NumAss");
_tipoass = c.get("TipoAss");
_spass = c.get("SpAss");
_el = new TGenerazione_effetti(c.get("ElAss"));

View File

@ -313,7 +313,7 @@ bool TMovCoop_recset::move_to(TRecnotype pos)
const TString & tipodoc = anamag.get(ANAMAG_USER3);
TCodiceIVA iva(r.get(RDOC_CODIVA));
if (iva.get_int("S4") == 1)
if (iva.get_int("S4") == 0)
_codditta += 1000;
if (tipodoc.full())
{
@ -359,6 +359,7 @@ protected:
virtual bool mov_intra(const TRecordset& mov) { return false; }
virtual bool mov_reverse_charge(const TRecordset& mov) { return false; }
virtual long iva11_reverse(const TRecordset & mov) { return 0L;}
virtual bool regime_agricolo(const TRecordset& mov) const { return true; }
const TString & dittamulti(const TRecordset& mov) const { return ((TMovCoop_recset &)mov).ditta(); }
public:

View File

@ -32,5 +32,9 @@
#define F_RAGCOOP 131
#define F_CODELASS 132
#define F_DESELASS 133
#define F_NUMRIT 134
#define F_DNUMRIT 135
#define F_NUMASS 136
#define F_DNUMASS 137

View File

@ -170,7 +170,7 @@ BEGIN
DISPLAY "Denominazione@50" S0
OUTPUT F_UFFIVA CODTAB
OUTPUT F_DENUFFIVA S0
CHECKTYPE NORMAL
CHECKTYPE REQUIRED
WARNING "Ufficio IVA assente"
FLAGS "Z"
FIELD UFFIVA
@ -186,12 +186,14 @@ STRING F_VSPROT 7
BEGIN
PROMPT 1 12 "Numero di protocollo "
FIELD VSPROT
CHECKTYPE REQUIRED
END
DATE F_VSDATA
BEGIN
PROMPT 1 13 "Data di emissione "
FIELD VSDATA
CHECKTYPE REQUIRED
END
GROUPBOX DLG_NULL 75 6

View File

@ -82,7 +82,8 @@ Esportazione documenti in formato testo formattato per Varauto verso il sistema
PS0713 ATS
Trasferimento dati contabili
Trasferimento commesse
Importazione fatture
Importazione fatture di acquisto
Importazione fatture di vendita
PS0816 AeC
Caricamento listino personalizzato per AeC.

View File

@ -418,6 +418,8 @@ void TPaghe2mov::load_mov()
TMov_recset movim(query);
TProgind pi(movim.items(), TR("Scansione movimenti"), true, true);
const TDate datareg(_m->get_date(F_DATAREG));
const TDate from(_m->get_date(F_DATAFROM));
const TDate to(_m->get_date(F_DATATO));
long numreg = 0L;
TEsercizi_contabili esc;
const int annoes = esc.date2esc(datareg);
@ -429,6 +431,16 @@ void TPaghe2mov::load_mov()
{
if (!pi.addstatus(1))
break;
const TDate datadoc(movim.get("GIORNOD").as_int(),
movim.get("MESED").as_int(),
movim.get("ANNOD").as_int());
if (from.ok() && datadoc < from)
continue;
if (to.ok() && datadoc > to)
continue;
TMovimentoPN mov;
int cg_rows = 0;
@ -448,7 +460,7 @@ void TPaghe2mov::load_mov()
continue;
}
const TCausale caus(codcaus);
const TCausale caus(codcaus, datareg.year());
const TString8 codreg = rec.get(CAU_REG);
TRegistro & reg = caus.reg();
@ -459,10 +471,6 @@ void TPaghe2mov::load_mov()
mov.lfile().put(MOV_TIPO, "C");
mov.lfile().put(MOV_CODCF, movim.get(MOV_CODCF).as_int());
const TDate datadoc(movim.get("GIORNOD").as_int(),
movim.get("MESED").as_int(),
movim.get("ANNOD").as_int());
mov.lfile().put(MOV_DATADOC, datadoc);
const TString16 numdoc = movim.get(MOV_NUMDOC).as_string();
mov.lfile().put(MOV_NUMDOC, numdoc);

View File

@ -4,4 +4,6 @@
#define F_RAGSOC 102
#define F_INPATH 103
#define F_AGGCLI 104
#define F_DATAREG 105
#define F_DATAREG 105
#define F_DATAFROM 106
#define F_DATATO 107

View File

@ -48,6 +48,18 @@ BEGIN
FIELD DataReg
END
DATE F_DATAFROM
BEGIN
PROMPT 3 9 "Dal "
FIELD DataFrom
END
DATE F_DATATO
BEGIN
PROMPT 40 9 "Al "
FIELD DataTo
END
BUTTON DLG_OK 9 2
BEGIN
PROMPT -12 -1 ""

View File

@ -18,20 +18,20 @@
// TAutomask
///////////////////////////////////////////////////////////
class TImportaFatVen_mask : public TAutomask
class TImporta_fatven_msk : public TAutomask
{
protected:
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
public:
TImportaFatVen_mask();
TImporta_fatven_msk();
};
TImportaFatVen_mask::TImportaFatVen_mask() :TAutomask ("ps0713400a")
TImporta_fatven_msk::TImporta_fatven_msk() :TAutomask ("ps0713400a")
{
}
bool TImportaFatVen_mask::on_field_event(TOperable_field& f, TField_event e, long jolly)
bool TImporta_fatven_msk::on_field_event(TOperable_field& f, TField_event e, long jolly)
{
switch (f.dlg())
{
@ -39,8 +39,7 @@ bool TImportaFatVen_mask::on_field_event(TOperable_field& f, TField_event e, lon
case F_NAME:
if (e == fe_button)
{
TArray_sheet as(-1, -1, 72, 20, TR("Selezione file"),
"File@32");
TArray_sheet as(-1, -1, 72, 20, TR("Selezione file"),"File@32");
TFilename path = get(F_PATH);
path.add("*.csv"); //files delle testate
list_files(path, as.rows_array());
@ -70,16 +69,16 @@ bool TImportaFatVen_mask::on_field_event(TOperable_field& f, TField_event e, lon
// Recordset specifici per i dati da trasferire
/////////////////////////////////////////////////////////////
class TImportaFatVen_recordset : public TCSV_recordset
class TImporta_fatven_recset : public TCSV_recordset
{
protected:
virtual TRecnotype new_rec(const char* buf = NULL);
public:
TImportaFatVen_recordset(const char * fileName);
TImporta_fatven_recset(const char * fileName);
};
TRecnotype TImportaFatVen_recordset::new_rec(const char* buf)
TRecnotype TImporta_fatven_recset::new_rec(const char* buf)
{
TToken_string str(256,'\t'); //nuovo record tab separator
@ -118,7 +117,7 @@ TRecnotype TImportaFatVen_recordset::new_rec(const char* buf)
}
TImportaFatVen_recordset::TImportaFatVen_recordset(const char * fileName)
TImporta_fatven_recset::TImporta_fatven_recset(const char * fileName)
: TCSV_recordset("CSV(,)")
{
load_file(fileName);
@ -127,17 +126,17 @@ TImportaFatVen_recordset::TImportaFatVen_recordset(const char * fileName)
///////////////////////////////////////
// TSkeleton_application
///////////////////////////////////////
class TImportaFatVen_applicat : public TSkeleton_application
class TImporta_fatven_app : public TSkeleton_application
{
virtual bool check_autorization() const {return false;}
virtual const char * extra_modules() const {return "ve";}
TImportaFatVen_mask* _msk;
TImporta_fatven_msk* _msk;
protected:
long togli_apici_numero(TImportaFatVen_recordset & s, int i);
const TString& togli_apici(TImportaFatVen_recordset & s, int i);
long togli_apici_numero(TImporta_fatven_recset& s, int i);
const TString& togli_apici(TImporta_fatven_recset& s, int i);
bool find_clifo(long& codcf, TString& paiv, long& abi, long& cab, TString& codpag);
public:
@ -146,17 +145,17 @@ public:
virtual void main_loop();
bool transfer(const TFilename& file);
TImportaFatVen_applicat() {}
TImporta_fatven_app() {}
};
long TImportaFatVen_applicat::togli_apici_numero(TImportaFatVen_recordset & s, int i)
long TImporta_fatven_app::togli_apici_numero(TImporta_fatven_recset & s, int i)
{
TString80 tmp = s.get(i).as_string();
tmp.strip("\"");
return atol(tmp);
}
const TString& TImportaFatVen_applicat::togli_apici(TImportaFatVen_recordset & s, int i)
const TString& TImporta_fatven_app::togli_apici(TImporta_fatven_recset & s, int i)
{
TString& tmp = get_tmp_string();
tmp = s.get(i).as_string();
@ -165,7 +164,7 @@ const TString& TImportaFatVen_applicat::togli_apici(TImportaFatVen_recordset & s
return tmp;
}
bool TImportaFatVen_applicat::find_clifo(long& codcf, TString& paiv, long& abi, long& cab, TString& codpag)
bool TImporta_fatven_app::find_clifo(long& codcf, TString& paiv, long& abi, long& cab, TString& codpag)
{
if (!paiv.blank())
{
@ -184,16 +183,32 @@ bool TImportaFatVen_applicat::find_clifo(long& codcf, TString& paiv, long& abi,
return false;
}
bool TImportaFatVen_applicat::transfer(const TFilename& file)
bool TImporta_fatven_app::transfer(const TFilename& file)
{
const TString4 codnum = "F01"; //??????????????????????????
const TString4 tpdoc = "F01"; //??????????????????????????
TImportaFatVen_recordset s(file);
TImporta_fatven_recset s(file);
TProgind pi(s.items(),"Importazione fatture in corso ...",true,true);
for (bool ok=s.move_first();ok;ok=s.move_next())
long ndoc_old;
s.move_first();
//campi documento
const long ndoc = ndoc_old = togli_apici_numero(s,0); //ndoc
const TDate datadoc = togli_apici(s,1); //datadoc
const int anno = datadoc.year(); //anno documento
TDocumento doctmp('D', anno, codnum, ndoc_old);
if (doctmp.rows() > 0)
{
warning_box(TR("I documenti che si sta cercando di importare esistono già"));
return true;
}
for (bool ok = s.move_first(); ok; ok = s.move_next())
{
if (!pi.addstatus(1))
break;
@ -203,8 +218,40 @@ bool TImportaFatVen_applicat::transfer(const TFilename& file)
//leggo il contenuto del tracciato record
//campi documento
const long ndoc = togli_apici_numero(s,0); //ndoc
const TDate datadoc = togli_apici(s,1); //datadoc
const long ndoc = togli_apici_numero(s,0); //ndoc
const TDate datadoc = togli_apici(s,1); //datadoc
const int anno = datadoc.year(); //anno documento
//correggo l'imponibile dell'ultima riga del documento precedente per far tornare i conti
if (ndoc != ndoc_old)
{
//carico il documento
TDocumento doc('D', anno, codnum, ndoc_old);
s.move_prev();
real tot_doc = togli_apici(s,18);
real tot_imp = doc.get_real("TOTVALORE");
//se è necessario, faccio la modifica sull'ultima riga
if (tot_imp != tot_doc)
{
//calcolo la differenza
real diff = tot_doc - tot_imp;
//estraggo l'imponibile dell'ultima riga
TRiga_documento& rdoc = doc[doc.rows()];
real imp = rdoc.get_real(RDOC_PREZZO);
//calcolo l'imponibile esatto e lo inserisco nella riga documento
imp += diff;
rdoc.put(RDOC_PREZZO, imp);
doc.write();
}
//passo al nuovo documento
ndoc_old = ndoc;
s.move_next();
}
//campi articolo 1
TString descr1 = togli_apici(s,2); //descrizione aritcolo 1
const TString80 art1 = togli_apici(s,3); //articolo 1
@ -227,7 +274,6 @@ bool TImportaFatVen_applicat::transfer(const TFilename& file)
const TString16 codcms = togli_apici(s,17);
//cerco gli altri dati di interesse
const int anno = datadoc.year(); //anno documento
long codcf;
long abi;
long cab;
@ -237,16 +283,15 @@ bool TImportaFatVen_applicat::transfer(const TFilename& file)
if (!find_clifo(codcf, paiv, abi, cab, codpag))
{
//campi cliente (da utilizzare se non esiste già)
const TString80 ragsoc = togli_apici(s,10); //ragione sociale
const TString80 ind = togli_apici(s,11); //indirizzo
const TString4 nciv = togli_apici_numero(s,12); //numero civico
const long cap = togli_apici_numero(s,13); //CAP
const TString80 comune = togli_apici(s,14); //comune
const TString80 loc = togli_apici(s,15); //località
const TString4 prov = togli_apici(s,16); //provincia
const TString80 ragsoc = togli_apici(s,10); //ragione sociale
const TString80 ind = togli_apici(s,11); //indirizzo
const TString4 nciv = togli_apici_numero(s,12); //numero civico
const long cap = togli_apici_numero(s,13); //CAP
const TString80 comune = togli_apici(s,14); //comune
const TString80 loc = togli_apici(s,15); //località
const TString4 prov = togli_apici(s,16); //provincia
const TString& codcom = cap2comune(cap, comune); //codice comune
const TString& codcom = cap2comune(cap, comune); //codice comune
TLocalisamfile clifo(LF_CLIFO);
@ -276,11 +321,13 @@ bool TImportaFatVen_applicat::transfer(const TFilename& file)
clifo.put(CLI_LOCCF, loc);
clifo.write();
abi = 0;
cab = 0;
codpag = "";
}
TDocumento doc('D', anno, codnum, ndoc);
doc.put(DOC_TIPODOC, tpdoc);
@ -290,10 +337,10 @@ bool TImportaFatVen_applicat::transfer(const TFilename& file)
doc.put(DOC_CODABIA, abi);
doc.put(DOC_CODCABA, cab);
doc.put(DOC_CODPAG, codpag);
doc.put(DOC_CODCMS, codcms);
doc.put(DOC_CODCMS, codcms);
if (imp1 != 0)
{
{
TRiga_documento& rdoc = doc.new_row("01");
if (descr1.len() <= 50)
@ -339,20 +386,20 @@ bool TImportaFatVen_applicat::transfer(const TFilename& file)
return true;
}
bool TImportaFatVen_applicat::create()
bool TImporta_fatven_app::create()
{
_msk = new TImportaFatVen_mask();
_msk = new TImporta_fatven_msk();
return TSkeleton_application::create();
}
bool TImportaFatVen_applicat::destroy()
bool TImporta_fatven_app::destroy()
{
delete _msk;
return TApplication::destroy();
}
void TImportaFatVen_applicat::main_loop()
void TImporta_fatven_app::main_loop()
{
KEY tasto;
tasto = _msk->run();
@ -366,12 +413,12 @@ void TImportaFatVen_applicat::main_loop()
}
TImportaFatVen_applicat& app() { return (TImportaFatVen_applicat&) main_app(); }
TImporta_fatven_app& app() { return (TImporta_fatven_app&) main_app(); }
int ps0713400 (int argc, char* argv[])
{
TImportaFatVen_applicat main_app;
TImporta_fatven_app main_app;
main_app.run(argc, argv, TR("Importazione Fatture"));
return true;
}

View File

@ -270,7 +270,7 @@ const TString& TPack_transfer::get_real_str(const char* campo) const
const TVariant& var = recordset().get(campo);
if (var.is_zero())
return EMPTY_STRING;
return get_tmp_string() = var.as_string();
return var.as_string();
}
long TPack_transfer::get_long(const char* field) const
@ -298,7 +298,7 @@ const TString& TPack_transfer::decode_field(const char* tab, const char* field)
const TString& TPack_transfer::build_insert_query(const char* table, const char* f, const char* v) const
{
TString& qry = get_tmp_string();
TString qry(255);
qry << "INSERT INTO " << table;
@ -339,7 +339,7 @@ const TString& TPack_transfer::build_insert_query(const char* table, const char*
qry.rtrim(1);
qry << ')';
return qry;
return get_tmp_string() = qry;
}
TPack_transfer::TPack_transfer()

View File

@ -524,25 +524,32 @@ TPack_clifo::~TPack_clifo()
///////////////////////////////////////////////////////////
// TPack_indsped
///////////////////////////////////////////////////////////
bool TPack_indsped::get_clifo(char& tipocf, long& codcf)
{
TString query = query_header();
query << "SELECT CodContab,FlagCustSupp FROM Customers_Suppliers WHERE CustSuppCode=#CODCF";
TODBC_recordset clifo(query);
const TVariant& code = recordset().get("CustSuppRefCode");
clifo.set_var("#CODCF", code);
bool ok = clifo.move_first();
bool ok = !code.is_empty();
if (ok)
{
codcf = clifo.get(0u).as_int();
tipocf = clifo.get(1u).as_string()[0];
TString query = query_header();
query << "SELECT CodContab,FlagCustSupp FROM Customers_Suppliers WHERE CustSuppCode=#CODCF";
TODBC_recordset clifo(query);
if (tipocf == 'T')
return false; // Ignora clienti temporanei senza dare segnalazioni
clifo.set_var("#CODCF", code);
ok = clifo.move_first();
if (ok)
{
codcf = clifo.get(0u).as_int();
tipocf = clifo.get(1u).as_string()[0];
if (tipocf == 'T')
return false; // Ignora clienti temporanei senza dare segnalazioni
}
}
if (!ok || codcf <= 0)
{
TString msg;

View File

@ -443,7 +443,7 @@ bool TPack_ddt::trasferisci()
"PDdT_Row.DefPrice, PDdT_Row.PriceNet, PDdT_Row.PriceNetDef, PDdT_Row.AmountNet, PDdT_Row.AmountNetDef, "
"PDdT_Row.Amount, PDdT_Row.AmountDef, PDdT_Row.FlagUMPrice, IVA.IVACode, PDdT_Row.AccountCode, "
"PDdT_Row.AccountSubCode, PDdT_Row.WeightETUnit, PDdT_Row.ClassCode, PDdT_Row.SubclassCode, "
"PDdT_Row.DDTRowType, PDdT_Header.StatusFlag, PDdT_Row.Report, "
"PDdT_Row.DDTRowType, PDdT_Header.StatusFlag, PDdT_Row.Report, PDdT_Row.FamilyCode,"
"Mag_Existing_Article.ArtType, Mag_Existing_Article.Height, Mag_Existing_Article.Width, Mag_Existing_Article.Lenght, "
"(select case when [Modalità Fornitura Bancali].[Value1] is null then 1 else [Modalità Fornitura Bancali].[Value1] end) AS FornituraBancali, "
"PDdT_Header.InvoicingType, PDdT_Header.DocProvv, PDdT_Header.ReceiptBook\n"
@ -654,11 +654,13 @@ bool TPack_ddt::trasferisci()
const TString& conai_class = get_str("ClassCode");
rdoc.put(RDOC_CODAGG1, conai_class);
rdoc.put(RDOC_CODAGG2, get_str("SubclassCode"));
rdoc.put("FAMILY", get_str("FamilyCode")); // Uso campo virtuale RG1:FAMILY
const TString& conai_cfv = config().get(conai_class, "CFV_CONAI");
if (conai_cfv.full())
{
TToken_string tok; tok.add(doc->get(DOC_TIPOCF)); tok.add(doc->get(DOC_CODCF));
TString8 tok;
tok.format("%c|%ld", doc->get_char(DOC_TIPOCF), doc->get_long(DOC_CODCF));
const TRectype& cfven = cache().get(LF_CFVEN, tok);
const real perc = cfven.get(conai_cfv);
rdoc.put(RDOC_QTAGG2, perc);