aa0912819c
Files correlati : Ricompilazione Demo : [ ] Commento :corretta chiamata dei BAR_ITEM con BAR_ITEM_ID git-svn-id: svn://10.65.10.50/trunk@18333 c028cbd2-c16b-5b4b-a496-9718f37d4682
2648 lines
79 KiB
C++
Executable File
2648 lines
79 KiB
C++
Executable File
#include "cglib04.h"
|
|
#include "cg6804.h"
|
|
#include "cg6804a.h"
|
|
|
|
HIDDEN TVar_sc& app() { return (TVar_sc &) main_app(); }
|
|
|
|
TVar_sc::TVar_sc() : _control_rec(""), _trasf(""), _std(""), _numpart(""), _tmcf("")
|
|
{
|
|
}
|
|
|
|
char TVar_sc::TipoConto(int g, int c)
|
|
{
|
|
/*
|
|
TLocalisamfile pcon (LF_PCON);
|
|
char tipo = ' ';
|
|
|
|
pcon.setkey(1);
|
|
pcon.zero();
|
|
pcon.put(PCN_GRUPPO, g);
|
|
pcon.put(PCN_CONTO, c);
|
|
pcon.put(PCN_SOTTOCONTO, 0l);
|
|
if (pcon.read() == NOERR)
|
|
tipo = pcon.get_char(PCN_TMCF);
|
|
*/
|
|
TString8 key; key.format("%d|%d", g, c);
|
|
char tipo = cache().get(LF_PCON, key, PCN_TMCF)[0];
|
|
if (tipo < ' ') tipo = ' ';
|
|
return tipo;
|
|
}
|
|
|
|
bool TVar_sc::create()
|
|
{
|
|
TApplication::create();
|
|
|
|
_part = new TLocalisamfile (LF_PARTITE);
|
|
_scad = new TLocalisamfile (LF_SCADENZE);
|
|
_pagsca = new TLocalisamfile (LF_PAGSCA);
|
|
|
|
_rec_part = new TRectype (LF_PARTITE);
|
|
_rec_scad = new TRectype (LF_SCADENZE);
|
|
_rec_pagsca = new TRectype (LF_PAGSCA);
|
|
|
|
_msk = new TMask ("cg6804a");
|
|
_mask = new TMask ("cg6804b");
|
|
|
|
TSheet_field& rp = (TSheet_field&)(_mask->field(F_RIGAPART));
|
|
rp.set_notify(a_notify);
|
|
rp.sheet_mask().set_handler(101, tipocf_handler);
|
|
rp.sheet_mask().set_handler(104, codcf_handler);
|
|
rp.sheet_mask().set_handler(108, rifpart_handler);
|
|
rp.sheet_mask().set_handler(115, datareg_handler);
|
|
rp.sheet_mask().set_handler(111, codcaus_handler);
|
|
rp.sheet_mask().set_handler(109, datadoc_handler);
|
|
rp.sheet_mask().set_handler(110, numdoc_handler);
|
|
rp.sheet_mask().set_handler(117, contocl_handler);
|
|
rp.sheet_mask().set_handler(119, tipomov_handler);
|
|
rp.sheet_mask().set_handler(121, sezione_handler);
|
|
rp.sheet_mask().set_handler(123, tipopag_handler);
|
|
rp.sheet_mask().set_handler(122, datapag_handler);
|
|
rp.sheet_mask().set_handler(124, codval_handler);
|
|
rp.sheet_mask().set_handler(125, datacam_handler);
|
|
rp.sheet_mask().set_handler(126, cambio_handler);
|
|
rp.sheet_mask().set_handler(100, gestione_handler);
|
|
rp.sheet_mask().set_handler(DLG_OK, registra_dati_comuni);
|
|
rp.sheet_mask().set_handler(DLG_DELREC, elimina_partita);
|
|
|
|
rp.swap_columns(105,106);
|
|
rp.swap_columns(105,107);
|
|
rp.swap_columns(105,108);
|
|
rp.swap_columns(105,109);
|
|
rp.swap_columns(105,110);
|
|
|
|
_registrato = FALSE;
|
|
_aperti = FALSE;
|
|
|
|
dispatch_e_menu (BAR_ITEM_ID(1));
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
bool TVar_sc::destroy()
|
|
{
|
|
delete _mask;
|
|
delete _msk;
|
|
delete _rec_part;
|
|
delete _rec_scad;
|
|
delete _rec_pagsca;
|
|
delete _part;
|
|
delete _scad;
|
|
delete _pagsca;
|
|
// delete _tab_reg;
|
|
if (_aperti)
|
|
{
|
|
delete _tpart;
|
|
delete _tscad;
|
|
delete _tpagsca;
|
|
}
|
|
|
|
return TApplication::destroy();
|
|
}
|
|
|
|
void TVar_sc::apri_temp_file()
|
|
{
|
|
TString80 tmppart = "%";
|
|
tmppart << get_firm_dir();
|
|
tmppart << "\\" << TEMP_PART;
|
|
TString80 tmpscad = "%";
|
|
tmpscad << get_firm_dir();
|
|
tmpscad << "\\" << TEMP_SCAD;
|
|
TString80 tmppagsca = "%";
|
|
tmppagsca << get_firm_dir();
|
|
tmppagsca << "\\" << TEMP_PAGSCA;
|
|
|
|
_tpart = new TIsamtempfile(LF_PARTITE, tmppart, 0);
|
|
_tscad = new TIsamtempfile(LF_SCADENZE, tmpscad, 0);
|
|
_tpagsca = new TIsamtempfile(LF_PAGSCA, tmppagsca, 0);
|
|
_aperti = TRUE;
|
|
}
|
|
|
|
void TVar_sc::leggi_record_controllo()
|
|
{
|
|
_tras_file.read_control_rec();
|
|
_control_rec = _tras_file.record();
|
|
}
|
|
|
|
bool TVar_sc::main_loop()
|
|
{
|
|
_dittaric = get_firm();
|
|
|
|
if (!esegui_controlli()) return FALSE;
|
|
|
|
apri_temp_file();
|
|
|
|
if (!video_SC())
|
|
{
|
|
if (_registrato)
|
|
{
|
|
setta_parametri_record(" ","C");
|
|
leggi_record_controllo();
|
|
TString str;
|
|
str.spaces(60);
|
|
_control_rec.overwrite(str,241);
|
|
_tras_file.write_control_rec(_control_rec,1024);
|
|
}
|
|
return FALSE;
|
|
}
|
|
|
|
return FALSE;
|
|
}
|
|
|
|
bool TVar_sc::a_notify(TSheet_field& s, int r, KEY k)
|
|
{
|
|
if (k == K_INS)
|
|
return FALSE;
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
bool TVar_sc::gestione_handler(TMask_field& f, KEY k)
|
|
{
|
|
if (k == K_SPACE)
|
|
{
|
|
TMask& m = f.mask();
|
|
|
|
if (!m.check_fields()) return FALSE;
|
|
|
|
char tipocf = f.mask().get (101)[0];
|
|
int gruppo = f.mask().get_int (102);
|
|
int conto = f.mask().get_int (103);
|
|
long sottoc = f.mask().get_long(104);
|
|
int anno = f.mask().get_int (106);
|
|
TString npart = f.mask().get (107);
|
|
int nriga = f.mask().get_int (108);
|
|
|
|
int tipomov = f.mask().get_int (119);
|
|
|
|
if (tipomov == 1)
|
|
{
|
|
TMask* msk = new TMask("cg6804d");
|
|
KEY k;
|
|
|
|
TSheet_field& rp = (TSheet_field&) msk->field(F_RIGASCAD);
|
|
rp.set_notify(a_notify);
|
|
rp.sheet_mask().set_handler(109, nrata_handler);
|
|
rp.sheet_mask().set_handler(111, codpag_handler);
|
|
rp.sheet_mask().set_handler(112, tpscad_handler);
|
|
rp.sheet_mask().set_handler(113, ultclass_handler);
|
|
rp.sheet_mask().set_handler(110, datascad_handler);
|
|
rp.sheet_mask().set_handler(120, banca_handler);
|
|
rp.sheet_mask().set_handler(122, banca_handler);
|
|
rp.sheet_mask().set_handler(124, datasoll_handler);
|
|
rp.sheet_mask().set_handler(116, importo_handler);
|
|
rp.sheet_mask().set_handler(117, impval_handler);
|
|
rp.sheet_mask().set_handler(DLG_DELREC, elimina_scadenza);
|
|
|
|
rp.swap_columns(105,106);
|
|
rp.swap_columns(105,107);
|
|
rp.swap_columns(105,108);
|
|
rp.swap_columns(105,109);
|
|
rp.swap_columns(105,110);
|
|
|
|
app().setta_mask_scad(tipocf,gruppo,conto,sottoc,anno,npart,nriga,*msk);
|
|
|
|
k = msk->run();
|
|
|
|
switch (k)
|
|
{
|
|
case K_ESC :
|
|
break;
|
|
|
|
case K_QUIT :
|
|
break;
|
|
|
|
case K_SAVE :
|
|
{
|
|
app().registra_scadenze(*msk);
|
|
app()._registrato = TRUE;
|
|
}
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
delete msk;
|
|
}
|
|
else
|
|
{
|
|
TMask* msk = new TMask("cg6804e");
|
|
KEY k;
|
|
|
|
TSheet_field& rp = (TSheet_field&) msk->field(F_RIGAPAGSCA);
|
|
rp.set_notify(a_notify);
|
|
rp.sheet_mask().set_handler(110, rifpartita_handler);
|
|
rp.sheet_mask().set_handler(111, accsal_handler);
|
|
rp.sheet_mask().set_handler(113, importo_handler);
|
|
rp.sheet_mask().set_handler(120, impvalp_handler);
|
|
rp.sheet_mask().set_handler(131, passat_handler);
|
|
rp.sheet_mask().set_handler(127, banca_handler);
|
|
rp.sheet_mask().set_handler(129, banca_handler);
|
|
rp.sheet_mask().set_handler(124, contropartita_handler);
|
|
rp.sheet_mask().set_handler(115, ritenute_handler);
|
|
rp.sheet_mask().set_handler(116, sezione_abb_handler);
|
|
rp.sheet_mask().set_handler(117, abbuoni_handler);
|
|
rp.sheet_mask().set_handler(118, sezione_dc_handler);
|
|
rp.sheet_mask().set_handler(119, diffcambio_handler);
|
|
rp.sheet_mask().set_handler(DLG_DELREC, elimina_pagamenti);
|
|
|
|
rp.swap_columns(105,106);
|
|
rp.swap_columns(105,107);
|
|
rp.swap_columns(105,108);
|
|
rp.swap_columns(105,109);
|
|
rp.swap_columns(105,110);
|
|
rp.swap_columns(105,111);
|
|
|
|
app().setta_mask_pagsca(tipocf,gruppo,conto,sottoc,anno,npart,nriga,*msk);
|
|
|
|
k = msk->run();
|
|
|
|
switch (k)
|
|
{
|
|
case K_ESC :
|
|
break;
|
|
|
|
case K_QUIT :
|
|
break;
|
|
|
|
case K_SAVE :
|
|
{
|
|
app().registra_pagamenti(*msk);
|
|
app()._registrato = TRUE;
|
|
}
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
delete msk;
|
|
}
|
|
}
|
|
return TRUE;
|
|
}
|
|
|
|
char TVar_sc::sezione(char tipo,int gruppo,int conto,long sottoc,int anno,const TString& npart,int nriga,TString& codval,TMask& m)
|
|
{
|
|
char sez = '\0';
|
|
|
|
TSheet_field& part = (TSheet_field&)m.field(F_RIGAPART);
|
|
|
|
for (int i = 0 ; i < part.items(); i++)
|
|
{
|
|
TToken_string& row = part.row(i);
|
|
|
|
char tp = row.get (0)[0];
|
|
int g = row.get_int (1);
|
|
int c = row.get_int (2);
|
|
long s = row.get_long(3);
|
|
int an = row.get_int (5);
|
|
TString np = row.get (6);
|
|
int nr = row.get_int (7);
|
|
|
|
if (tipo == tp && gruppo == g && conto == c && sottoc == s &&
|
|
anno == an && npart == np && nriga == nr)
|
|
{
|
|
sez = part.sheet_mask().get(121)[0];
|
|
codval = part.sheet_mask().get(124);
|
|
codval.trim();
|
|
break;
|
|
}
|
|
}
|
|
return sez;
|
|
}
|
|
|
|
void TVar_sc::descr_condpag(const TString& codpag,int tipopag,const TString& ultclass,TString& d_condpag)
|
|
{
|
|
if (ultclass.not_empty())
|
|
{
|
|
TTable clr ("%CLR");
|
|
TString dep (format("%d%s", tipopag,(const char*) ultclass));
|
|
|
|
clr.zero();
|
|
clr.put("CODTAB", dep);
|
|
if (clr.read() == NOERR)
|
|
d_condpag = clr.get("S0");
|
|
else
|
|
d_condpag = "";
|
|
}
|
|
else
|
|
{
|
|
TTable rpg ("%RPG");
|
|
int tipo;
|
|
|
|
TString dep;
|
|
for (int i = 0; !rpg.eof(); rpg.next(), i++)
|
|
{
|
|
dep.format("%-s%3d", (const char*) codpag, i);
|
|
|
|
rpg.zero();
|
|
rpg.put("CODTAB", dep);
|
|
if (rpg.read() == NOERR)
|
|
{
|
|
tipo = rpg.get_int("I1");
|
|
if (tipo == tipopag)
|
|
{
|
|
switch(tipo)
|
|
{
|
|
case 1: d_condpag = TR("Rimessa diretta");
|
|
break;
|
|
case 2: d_condpag = TR("Tratta");
|
|
break;
|
|
case 3: d_condpag = TR("Ricevuta bancaria");
|
|
break;
|
|
case 4: d_condpag = TR("Cessione");
|
|
break;
|
|
case 5: d_condpag = TR("Paghero'");
|
|
break;
|
|
case 6: d_condpag = TR("Lettera di credito");
|
|
break;
|
|
case 7: d_condpag = TR("Tratta accettata");
|
|
break;
|
|
case 8: d_condpag = TR("Rapporti interbancari diretti");
|
|
break;
|
|
case 9: d_condpag = TR("Bonifico");
|
|
break;
|
|
case 10: d_condpag = TR("Altro");
|
|
break;
|
|
default: break;
|
|
};
|
|
break;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
d_condpag = "";
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
void TVar_sc::setta_mask_scad(char tipo,int gruppo,int conto,long sottoc,
|
|
int anno,const TString& numpart,int nriga,TMask& m)
|
|
{
|
|
_tscad->setkey(1);
|
|
_tscad->zero();
|
|
_tscad->put(SCAD_TIPOCF, tipo);
|
|
if (gruppo != 0)
|
|
_tscad->put(SCAD_GRUPPO, gruppo);
|
|
if (conto != 0)
|
|
_tscad->put(SCAD_CONTO, conto);
|
|
if (sottoc != 0)
|
|
_tscad->put(SCAD_SOTTOCONTO, sottoc);
|
|
if (anno != 0)
|
|
_tscad->put(SCAD_ANNO, anno);
|
|
_tscad->put(SCAD_NUMPART, numpart);
|
|
if (nriga != 0)
|
|
_tscad->put(SCAD_NRIGA, nriga);
|
|
|
|
TRectype scadenza (_tscad->curr());
|
|
|
|
TSheet_field& scad = (TSheet_field&)m.field(F_RIGASCAD);
|
|
const long last_c = _tscad->items();
|
|
|
|
_tscad->read(_isgteq);
|
|
|
|
for (int i = 0 ; !_tscad->eof(); _tscad->next(), i++)
|
|
{
|
|
TString part_rec = scadenza.get(SCAD_NUMPART);
|
|
TString part_file = _tscad->get(SCAD_NUMPART);
|
|
|
|
if (_tscad->curr() != scadenza || part_rec != part_file) break;
|
|
|
|
TToken_string& row = scad.row(i);
|
|
|
|
TString tipoc (_tscad->get (SCAD_TIPOCF));
|
|
int nrata = _tscad->get_int (SCAD_NRATA);
|
|
TString16 datascad (_tscad->get_date(SCAD_DATASCAD));
|
|
TString16 codpag (_tscad->get (SCAD_CODPAG));
|
|
int tipopag = _tscad->get_int (SCAD_TIPOPAG);
|
|
TString ultclass (_tscad->get (SCAD_ULTCLASS));
|
|
real importo (_tscad->get_real(SCAD_IMPORTO));
|
|
real impval (_tscad->get_real(SCAD_IMPORTOVAL));
|
|
TString descr (_tscad->get (SCAD_DESCR));
|
|
long nsabi = _tscad->get_long(SCAD_CODABIPR);
|
|
long nscab = _tscad->get_long(SCAD_CODCABPR);
|
|
long vsabi = _tscad->get_long(SCAD_CODABI);
|
|
long vscab = _tscad->get_long(SCAD_CODCAB);
|
|
TString codag (_tscad->get (SCAD_CODAG));
|
|
TString16 datasoll (_tscad->get_date(SCAD_DATASOLL));
|
|
int nsoll = _tscad->get_int (SCAD_NSOLL);
|
|
|
|
TString d_conto,d_condpag,codval;
|
|
codval = "";
|
|
|
|
char sez = sezione(tipo,gruppo,conto,sottoc,anno,numpart,nriga,codval,*_mask);
|
|
descr_conto(tipoc,gruppo,conto,sottoc,d_conto);
|
|
descr_condpag(codpag,tipopag,ultclass,d_condpag);
|
|
|
|
TString16 str;
|
|
|
|
row.add(tipo);
|
|
str.format("%3d", gruppo);
|
|
row.add(str);
|
|
str.format("%3d", conto);
|
|
row.add(str);
|
|
str.format("%6ld", sottoc);
|
|
row.add(str);
|
|
row.add(d_conto);
|
|
str.format("%4d", anno);
|
|
row.add(str);
|
|
row.add(numpart);
|
|
str.format("%4d", nriga);
|
|
row.add(str);
|
|
str.format("%4d", nrata);
|
|
row.add(str);
|
|
row.add(datascad);
|
|
row.add(codpag);
|
|
str.format("%d", tipopag);
|
|
row.add(str);
|
|
row.add(ultclass);
|
|
row.add(d_condpag);
|
|
row.add(sez);
|
|
row.add(importo.string());
|
|
row.add(impval.string());
|
|
row.add(descr);
|
|
str.format("%5ld", nsabi);
|
|
row.add(str);
|
|
str.format("%5ld", nscab);
|
|
row.add(str);
|
|
str.format("%5ld", vsabi);
|
|
row.add(str);
|
|
str.format("%5ld", vscab);
|
|
row.add(str);
|
|
row.add(codag);
|
|
row.add(datasoll);
|
|
str.format("%2d", nsoll);
|
|
row.add(str);
|
|
}
|
|
}
|
|
|
|
void TVar_sc::setta_mask_pagsca(char tipo,int gruppo,int conto,long sottoc,
|
|
int anno,const TString& numpart,int nriga,TMask& m)
|
|
{
|
|
_tpagsca->setkey(1);
|
|
_tpagsca->zero();
|
|
_tpagsca->put(PAGSCA_TIPOC, tipo);
|
|
if (gruppo != 0)
|
|
_tpagsca->put(PAGSCA_GRUPPO, gruppo);
|
|
if (conto != 0)
|
|
_tpagsca->put(PAGSCA_CONTO, conto);
|
|
if (sottoc != 0)
|
|
_tpagsca->put(PAGSCA_SOTTOCONTO, sottoc);
|
|
if (anno != 0)
|
|
_tpagsca->put(PAGSCA_ANNO, anno);
|
|
_tpagsca->put(PAGSCA_NUMPART, numpart);
|
|
|
|
TRectype pagamenti (_tpagsca->curr());
|
|
|
|
TSheet_field& pag = (TSheet_field&)m.field(F_RIGAPAGSCA);
|
|
const long last_c = _tpagsca->items();
|
|
|
|
_tpagsca->read(_isgteq);
|
|
|
|
for (int i = 0 ; !_tpagsca->eof(); _tpagsca->next(), i++)
|
|
{
|
|
TString rec = pagamenti.get(PAGSCA_NUMPART);
|
|
TString file = _tpagsca->get(PAGSCA_NUMPART);
|
|
|
|
if (_tpagsca->curr() != pagamenti || file != rec) break;
|
|
|
|
int nrigp = _tpagsca->get_int(PAGSCA_NRIGP);
|
|
int nriga_fatt = _tpagsca->get_int(PAGSCA_NRIGA);
|
|
|
|
if (nriga != nrigp) continue;
|
|
|
|
TToken_string& row = pag.row(i);
|
|
|
|
TString tipoc (_tpagsca->get (PAGSCA_TIPOC));
|
|
int nrata = _tpagsca->get_int (PAGSCA_NRATA);
|
|
TString16 accsal (_tpagsca->get (PAGSCA_ACCSAL));
|
|
real importo (_tpagsca->get_real(PAGSCA_IMPORTO));
|
|
real ritenute (_tpagsca->get_real(PAGSCA_RITENUTE));
|
|
real ritsoc (_tpagsca->get_real(PAGSCA_RITSOC));
|
|
real abbuoni (_tpagsca->get_real(PAGSCA_ABBUONI));
|
|
real diffcam (_tpagsca->get_real(PAGSCA_DIFFCAM));
|
|
real impval (_tpagsca->get_real(PAGSCA_IMPORTOVAL));
|
|
TString tipocc (_tpagsca->get (PAGSCA_TIPOCC));
|
|
int gruppoc = _tpagsca->get_int (PAGSCA_GRUPPOC);
|
|
int contoc = _tpagsca->get_int (PAGSCA_CONTOC);
|
|
long sottocc = _tpagsca->get_long(PAGSCA_SOTTOCONTC);
|
|
long nsabi = _tpagsca->get_long(PAGSCA_CODABIPR);
|
|
long nscab = _tpagsca->get_long(PAGSCA_CODCABPR);
|
|
long vsabi = _tpagsca->get_long(PAGSCA_CODABI);
|
|
long vscab = _tpagsca->get_long(PAGSCA_CODCAB);
|
|
TString codag (_tpagsca->get (PAGSCA_CODAG));
|
|
char passat = _tpagsca->get_char(PAGSCA_PASSATT);
|
|
|
|
TString d_conto,d_contoc,codval;
|
|
char sezab = '\0';
|
|
char sezdc = '\0';
|
|
|
|
char sez = sezione(tipo,gruppo,conto,sottoc,anno,numpart,nriga,codval,*_mask);
|
|
descr_conto(tipoc,gruppo,conto,sottoc,d_conto);
|
|
descr_conto(tipocc,gruppoc,contoc,sottocc,d_contoc); // Contropartita
|
|
|
|
if (abbuoni != ZERO)
|
|
{
|
|
sezab;
|
|
if (passat == 'A')
|
|
sezab = 'D';
|
|
else
|
|
if (passat == 'P')
|
|
sezab = 'A';
|
|
|
|
if (sezab != sez)
|
|
abbuoni = abbuoni * -1;
|
|
}
|
|
if (diffcam != ZERO)
|
|
{
|
|
sezdc = sez;
|
|
if (diffcam < ZERO)
|
|
{
|
|
diffcam = diffcam * -1;
|
|
if (sez == 'D')
|
|
sezdc = 'A';
|
|
else
|
|
if (sez == 'A')
|
|
sezdc = 'D';
|
|
}
|
|
}
|
|
|
|
TString16 str;
|
|
|
|
row.add(tipo);
|
|
str.format("%3d", gruppo);
|
|
row.add(str);
|
|
str.format("%3d", conto);
|
|
row.add(str);
|
|
str.format("%6ld", sottoc);
|
|
row.add(str);
|
|
row.add(d_conto);
|
|
str.format("%4d", anno);
|
|
row.add(str);
|
|
row.add(numpart);
|
|
str.format("%4d", nriga_fatt);
|
|
row.add(str);
|
|
str.format("%4d", nrata);
|
|
row.add(str);
|
|
str.format("%4d", nrigp);
|
|
row.add(str);
|
|
row.add(accsal);
|
|
str.format("%c", sez);
|
|
row.add(str);
|
|
row.add(importo.string());
|
|
if (ritenute != ZERO)
|
|
row.add(str);
|
|
else
|
|
row.add("");
|
|
row.add(ritenute.string());
|
|
str.format("%c", sezab);
|
|
row.add(str);
|
|
row.add(abbuoni.string());
|
|
str.format("%c", sezdc);
|
|
row.add(str);
|
|
row.add(diffcam.string());
|
|
row.add(impval.string());
|
|
row.add(tipocc);
|
|
str.format("%3d", gruppoc);
|
|
row.add(str);
|
|
str.format("%3d", contoc);
|
|
row.add(str);
|
|
str.format("%6ld", sottocc);
|
|
row.add(str);
|
|
row.add(d_contoc);
|
|
str.format("%5ld", nsabi);
|
|
row.add(str);
|
|
str.format("%5ld", nscab);
|
|
row.add(str);
|
|
str.format("%5ld", vsabi);
|
|
row.add(str);
|
|
str.format("%5ld", vscab);
|
|
row.add(str);
|
|
row.add(codag);
|
|
str.format("%c", passat);
|
|
row.add(str);
|
|
row.add(ritsoc.string());
|
|
}
|
|
}
|
|
|
|
bool TVar_sc::video_SC()
|
|
{
|
|
KEY tasto;
|
|
|
|
do
|
|
{
|
|
_msk->reset(F_ANNO);
|
|
_msk->reset(F_NUMPART);
|
|
_msk->reset(F_NRIGA);
|
|
|
|
tasto = _msk->run();
|
|
|
|
if (tasto != K_ENTER) return FALSE;
|
|
|
|
_tipocf = _msk->get (F_TIPOCF)[0];
|
|
_gruppo = _msk->get_int (F_GRUPPO);
|
|
_conto = _msk->get_int (F_CONTO);
|
|
_sottoc = _msk->get_long(F_SOTTOCONTO);
|
|
_anno = _msk->get_int (F_ANNO);
|
|
_numpart = _msk->get (F_NUMPART);
|
|
_nriga = _msk->get_int (F_NRIGA);
|
|
|
|
setta_campi_maschera(*_mask);
|
|
|
|
_mask->force_update();
|
|
|
|
tasto = _mask->run();
|
|
|
|
switch (tasto)
|
|
{
|
|
case K_ESC :
|
|
break;
|
|
|
|
case K_QUIT :
|
|
break;
|
|
|
|
case K_SAVE :
|
|
{
|
|
registra_partita(*_mask);
|
|
_registrato = TRUE;
|
|
}
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
while (tasto != K_QUIT); //K_ENTER
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
bool TVar_sc::descr_conto(const TString& tipo,int g,int c,long s,TString& d_conto)
|
|
{
|
|
if (tipo == "C" || tipo == "F")
|
|
{
|
|
TLocalisamfile clifo (LF_CLIFO);
|
|
|
|
clifo.setkey(1);
|
|
clifo.zero();
|
|
clifo.put(CLI_TIPOCF, tipo);
|
|
clifo.put(CLI_CODCF, s);
|
|
if (clifo.read() == NOERR)
|
|
{
|
|
d_conto = clifo.get(CLI_RAGSOC);
|
|
return TRUE;
|
|
}
|
|
else
|
|
{
|
|
d_conto = "";
|
|
return FALSE;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
TLocalisamfile pcon (LF_PCON);
|
|
|
|
pcon.setkey(1);
|
|
pcon.zero();
|
|
pcon.put(PCN_GRUPPO, g);
|
|
pcon.put(PCN_CONTO, c);
|
|
pcon.put(PCN_SOTTOCONTO, s);
|
|
if (pcon.read() == NOERR)
|
|
{
|
|
d_conto = pcon.get(PCN_DESCR);
|
|
return TRUE;
|
|
}
|
|
else
|
|
{
|
|
d_conto = "";
|
|
return FALSE;
|
|
}
|
|
}
|
|
return TRUE;
|
|
}
|
|
|
|
bool TVar_sc::descr_caus(const TString& codcaus,TString& d_caus)
|
|
{
|
|
TLocalisamfile cau (LF_CAUSALI);
|
|
|
|
cau.setkey(1);
|
|
cau.zero();
|
|
cau.put("CODCAUS", (const char*) codcaus);
|
|
if (cau.read() == NOERR)
|
|
{
|
|
d_caus = cau.get (CAU_DESCR);
|
|
_dd_caus = cau.get_bool(CAU_DATADOC);
|
|
_nd_caus = cau.get_bool(CAU_NUMDOC);
|
|
_tm_caus = cau.get_int (CAU_TIPOMOV);
|
|
_movval = cau.get_bool(CAU_MOVVAL);
|
|
return TRUE;
|
|
}
|
|
else
|
|
{
|
|
d_caus = "";
|
|
_dd_caus = FALSE;
|
|
_nd_caus = FALSE;
|
|
_tm_caus = 0;
|
|
_movval = FALSE;
|
|
return FALSE;
|
|
}
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
bool TVar_sc::descr_contocl(int g,int c,TString& d_conto)
|
|
{
|
|
TLocalisamfile pcon (LF_PCON);
|
|
|
|
pcon.setkey(1);
|
|
pcon.zero();
|
|
pcon.put(PCN_GRUPPO, g);
|
|
pcon.put(PCN_CONTO, c);
|
|
pcon.read();
|
|
if ( (g == pcon.get_int(PCN_GRUPPO)) && (c == pcon.get_int(PCN_CONTO)) )
|
|
{
|
|
d_conto = pcon.get(PCN_DESCR);
|
|
return TRUE;
|
|
}
|
|
else
|
|
{
|
|
d_conto = "";
|
|
return FALSE;
|
|
}
|
|
return TRUE;
|
|
}
|
|
|
|
void TVar_sc::setta_campi_maschera(TMask& m)
|
|
{
|
|
|
|
if (_gruppo == 0 && _conto == 0 && _sottoc == 0 && _anno == 0
|
|
&& _numpart.empty() && _nriga == 0)
|
|
{
|
|
_tpart->setkey(1);
|
|
_tpart->zero();
|
|
_tpart->first();
|
|
}
|
|
else
|
|
{
|
|
_tpart->setkey(1);
|
|
_tpart->zero();
|
|
_tpart->put(PART_TIPOCF, _tipocf);
|
|
if (_gruppo != 0)
|
|
_tpart->put(PART_GRUPPO, _gruppo);
|
|
if (_conto != 0)
|
|
_tpart->put(PART_CONTO, _conto);
|
|
if (_sottoc != 0)
|
|
_tpart->put(PART_SOTTOCONTO, _sottoc);
|
|
if (_anno != 0)
|
|
_tpart->put(PART_ANNO, _anno);
|
|
_tpart->put(PART_NUMPART, _numpart);
|
|
if (_nriga != 0)
|
|
_tpart->put(PART_NRIGA, _nriga);
|
|
|
|
TRectype partita (_tpart->curr());
|
|
_tpart->read(_isgteq);
|
|
if (_tpart->curr() != partita)
|
|
{
|
|
_tpart->zero();
|
|
_tpart->first();
|
|
}
|
|
}
|
|
|
|
TSheet_field& partita = (TSheet_field&)m.field(F_RIGAPART);
|
|
const long last_c = _tpart->items();
|
|
partita.destroy();
|
|
|
|
for (int i = 0 ; !_tpart->eof(); _tpart->next(), i++)
|
|
{
|
|
TToken_string& row = partita.row(i);
|
|
|
|
TString16 tipoc (_tpart->get (PART_TIPOCF));
|
|
int gruppo = _tpart->get_int (PART_GRUPPO);
|
|
int conto = _tpart->get_int (PART_CONTO);
|
|
long sottoc = _tpart->get_long(PART_SOTTOCONTO);
|
|
int anno = _tpart->get_int (PART_ANNO);
|
|
TString16 numpart (_tpart->get (PART_NUMPART));
|
|
int nriga = _tpart->get_int (PART_NRIGA);
|
|
TString16 datareg (_tpart->get_date(PART_DATAREG));
|
|
TString16 codcaus (_tpart->get (PART_CODCAUS));
|
|
int gruppocl = _tpart->get_int (PART_GRUPPOCL);
|
|
int contocl = _tpart->get_int (PART_CONTOCL);
|
|
int tipomov = _tpart->get_int (PART_TIPOMOV);
|
|
TString descr (_tpart->get (PART_DESCR));
|
|
TString16 sezione (_tpart->get (PART_SEZ));
|
|
TString16 datapag (_tpart->get_date(PART_DATAPAG));
|
|
TString16 codval (_tpart->get (PART_CODVAL));
|
|
TString16 datacam (_tpart->get_date(PART_DATACAM));
|
|
TString16 numdoc (_tpart->get (PART_NUMDOC));
|
|
TString16 datadoc (_tpart->get_date(PART_DATADOC));
|
|
int tipopag = _tpart->get_int (PART_TIPOPAG);
|
|
real cambio (_tpart->get_real(PART_CAMBIO));
|
|
long numreg = _tpart->get_long(PART_NREG);
|
|
int numrig = _tpart->get_int (PART_NUMRIG);
|
|
|
|
|
|
TString d_conto,d_caus,d_contocl;
|
|
|
|
descr_conto(tipoc,gruppo,conto,sottoc,d_conto);
|
|
descr_caus(codcaus,d_caus);
|
|
descr_contocl(gruppocl,contocl,d_contocl);
|
|
|
|
TString16 str;
|
|
|
|
row.add(tipoc);
|
|
str.format("%3d", gruppo);
|
|
row.add(str);
|
|
str.format("%3d", conto);
|
|
row.add(str);
|
|
str.format("%6ld", sottoc);
|
|
row.add(str);
|
|
row.add(d_conto);
|
|
str.format("%4d", anno);
|
|
row.add(str);
|
|
row.add(numpart);
|
|
str.format("%4d", nriga);
|
|
row.add(str);
|
|
row.add(datadoc);
|
|
row.add(numdoc);
|
|
row.add(codcaus);
|
|
row.add(d_caus);
|
|
str.format("%7ld", numreg);
|
|
row.add(str);
|
|
str.format("%3d", numrig);
|
|
row.add(str);
|
|
row.add(datareg);
|
|
str.format("%3d", gruppocl);
|
|
row.add(str);
|
|
str.format("%3d", contocl);
|
|
row.add(str);
|
|
row.add(d_contocl);
|
|
str.format("%d", tipomov);
|
|
row.add(str);
|
|
row.add(descr);
|
|
row.add(sezione);
|
|
row.add(datapag);
|
|
str.format("%d", tipopag);
|
|
row.add(str);
|
|
row.add(codval);
|
|
row.add(datacam);
|
|
row.add(cambio.string());
|
|
row.add(tipoc);
|
|
str.format("%3d", gruppo);
|
|
row.add(str);
|
|
str.format("%3d", conto);
|
|
row.add(str);
|
|
str.format("%6ld", sottoc);
|
|
row.add(str);
|
|
row.add(d_conto);
|
|
row.add(tipoc);
|
|
str.format("%3d", gruppo);
|
|
row.add(str);
|
|
str.format("%3d", conto);
|
|
row.add(str);
|
|
str.format("%6ld", sottoc);
|
|
row.add(str);
|
|
row.add(d_conto);
|
|
}
|
|
}
|
|
|
|
bool TVar_sc::tipo_contocl(int g,int c,TString& tipo)
|
|
{
|
|
TLocalisamfile pcon (LF_PCON);
|
|
|
|
pcon.setkey(1);
|
|
pcon.zero();
|
|
pcon.put(PCN_GRUPPO, g);
|
|
pcon.put(PCN_CONTO, c);
|
|
pcon.read();
|
|
if ( (g == pcon.get_int(PCN_GRUPPO)) && (c == pcon.get_int(PCN_CONTO)) )
|
|
{
|
|
tipo = pcon.get(PCN_TMCF);
|
|
return TRUE;
|
|
}
|
|
else
|
|
{
|
|
tipo = "";
|
|
return FALSE;
|
|
}
|
|
return TRUE;
|
|
}
|
|
|
|
bool TVar_sc::codvaluta(const TString& codval)
|
|
{
|
|
TTable val ("%VAL");
|
|
TString dep;
|
|
|
|
dep.format("%-3s", (const char*) codval);
|
|
|
|
val.zero();
|
|
val.put("CODTAB", dep);
|
|
if (val.read() == NOERR)
|
|
return TRUE;
|
|
else
|
|
return FALSE;
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
int TVar_sc::tipo_movimento(char tipo,int gruppo,int conto,long sottoc,int anno,const TString& npart,int nriga,TMask& m)
|
|
{
|
|
int tipomov = 0;
|
|
|
|
TSheet_field& part = (TSheet_field&)m.field(F_RIGAPART);
|
|
|
|
for (int i = 0 ; i < part.items(); i++)
|
|
{
|
|
TToken_string& row = part.row(i);
|
|
|
|
char tp = row.get (0)[0];
|
|
int g = row.get_int (1);
|
|
int c = row.get_int (2);
|
|
long s = row.get_long(3);
|
|
int an = row.get_int (5);
|
|
TString np = row.get (6);
|
|
int nr = row.get_int (7);
|
|
|
|
if (tipo == tp && gruppo == g && conto == c && sottoc == s &&
|
|
anno == an && npart == np && nriga == nr)
|
|
{
|
|
tipomov = part.sheet_mask().get_int(119);
|
|
break;
|
|
}
|
|
}
|
|
return tipomov;
|
|
}
|
|
|
|
// *****************************************
|
|
// ***** HANDLER sulla riga di partita *****
|
|
// *****************************************
|
|
bool TVar_sc::tipocf_handler(TMask_field& f, KEY k)
|
|
{
|
|
if ( (k == K_TAB || k == K_ENTER) && f.mask().is_running())
|
|
{
|
|
TString16 tipocf(f.get());
|
|
if (tipocf != "" && tipocf != "C" && tipocf != "F")
|
|
return f.warning_box(TR("Tipo anagrafica errato"));
|
|
}
|
|
return TRUE;
|
|
}
|
|
|
|
bool TVar_sc::codcf_handler(TMask_field& f, KEY k)
|
|
{
|
|
if ( (k == K_TAB || k == K_ENTER) && f.mask().is_running())
|
|
{
|
|
TString tipocf = f.mask().get (101);
|
|
int gruppo = f.mask().get_int(102);
|
|
int conto = f.mask().get_int(103);
|
|
long sottoc = atol(f.get());
|
|
TString desc;
|
|
|
|
if (!app().descr_conto(tipocf,gruppo,conto,sottoc,desc))
|
|
return f.warning_box(TR("Codice anagrafica errato"));
|
|
}
|
|
return TRUE;
|
|
}
|
|
|
|
bool TVar_sc::rifpart_handler(TMask_field& f, KEY k)
|
|
{
|
|
if ( (k == K_TAB || k == K_ENTER) && f.mask().is_running())
|
|
{
|
|
int anno = f.mask().get_int(106);
|
|
TString numpart = f.mask().get (107);
|
|
int nriga = atoi(f.get());
|
|
|
|
if (anno == 0 || numpart.empty() || nriga == 0)
|
|
return f.warning_box(TR("Riferimento partita errato"));
|
|
}
|
|
return TRUE;
|
|
}
|
|
|
|
bool TVar_sc::datareg_handler(TMask_field& f, KEY k)
|
|
{
|
|
if ( (k == K_TAB || k == K_ENTER) && f.mask().is_running())
|
|
{
|
|
if ( !(TDate::isdate(f.get())) )
|
|
return warning_box(TR("Data errata o formato non valido"));
|
|
}
|
|
return TRUE;
|
|
}
|
|
|
|
bool TVar_sc::codcaus_handler(TMask_field& f, KEY k)
|
|
{
|
|
if ( (k == K_TAB || k == K_ENTER) && f.mask().is_running())
|
|
{
|
|
TString appoggio;
|
|
TString codcaus = f.get();
|
|
int tipomov = f.mask().get_int(119);
|
|
|
|
if (codcaus.not_empty())
|
|
if (!app().descr_caus(codcaus,appoggio))
|
|
return f.warning_box(TR("Valore non valido per codice causale"));
|
|
|
|
long nreg = f.mask().get_long(113);
|
|
if (nreg != 0 && codcaus.empty())
|
|
return f.warning_box(TR("Se e' indicato il numero di operazione la causale deve essere significativa"));
|
|
|
|
if (tipomov == 0)
|
|
f.mask().set(119,app()._tm_caus);
|
|
else
|
|
{
|
|
if (codcaus.not_empty())
|
|
if (tipomov != app()._tm_caus)
|
|
return f.warning_box(TR("Tipo movimento partita non congruo con tipo movimento indicato sulla causale"));
|
|
}
|
|
}
|
|
return TRUE;
|
|
}
|
|
|
|
bool TVar_sc::datadoc_handler(TMask_field& f, KEY k)
|
|
{
|
|
if ( (k == K_TAB || k == K_ENTER) && f.mask().is_running())
|
|
{
|
|
TString appoggio;
|
|
TString codcaus = f.mask().get(111);
|
|
TString datadoc = f.get();
|
|
datadoc.trim();
|
|
app().descr_caus(codcaus,appoggio);
|
|
if (datadoc.empty() && app()._dd_caus)
|
|
return f.warning_box(TR("Data documento obbligatoria"));
|
|
}
|
|
return TRUE;
|
|
}
|
|
|
|
bool TVar_sc::numdoc_handler(TMask_field& f, KEY k)
|
|
{
|
|
if ( (k == K_TAB || k == K_ENTER) && f.mask().is_running())
|
|
{
|
|
TString appoggio;
|
|
TString codcaus = f.mask().get(111);
|
|
TString numdoc = f.get();
|
|
app().descr_caus(codcaus,appoggio);
|
|
if (numdoc.empty() && app()._nd_caus)
|
|
return f.warning_box(TR("Numero documento obbligatorio"));
|
|
}
|
|
return TRUE;
|
|
}
|
|
|
|
bool TVar_sc::contocl_handler(TMask_field& f, KEY k)
|
|
{
|
|
if ( (k == K_TAB || k == K_ENTER) && f.mask().is_running())
|
|
{
|
|
TString tmcf;
|
|
int gruppo = f.mask().get_int(116);
|
|
int conto = atoi(f.get());
|
|
|
|
if (gruppo == 0 && conto == 0) return TRUE;
|
|
|
|
if (!app().tipo_contocl(gruppo,conto,tmcf))
|
|
return f.warning_box(TR("Codice conto non esistente su piano dei conti"));
|
|
|
|
TString tipo = f.mask().get(101);
|
|
if (tipo != tmcf)
|
|
return f.warning_box(TR("Tipo conto C/F non congruo con tipo anagrafica"));
|
|
}
|
|
return TRUE;
|
|
}
|
|
|
|
bool TVar_sc::tipomov_handler(TMask_field& f, KEY k)
|
|
{
|
|
if ( (k == K_TAB || k == K_ENTER) && f.mask().is_running())
|
|
{
|
|
int tipomov = atoi(f.get());
|
|
if (tipomov != 1 && tipomov != 2 && tipomov != 3 && tipomov != 5 && tipomov != 6)
|
|
return f.warning_box(TR("Tipo movimento errato"));
|
|
|
|
TString codcaus = f.mask().get(111);
|
|
if (codcaus.not_empty())
|
|
{
|
|
TString appoggio;
|
|
app().descr_caus(codcaus,appoggio);
|
|
if (tipomov != app()._tm_caus)
|
|
return f.warning_box("Tipo movimento partita non congruo con tipo movimento indicato sulla causale");
|
|
}
|
|
}
|
|
return TRUE;
|
|
}
|
|
|
|
bool TVar_sc::sezione_handler(TMask_field& f, KEY k)
|
|
{
|
|
if ( (k == K_TAB || k == K_ENTER) && f.mask().is_running())
|
|
{
|
|
TString sezione = f.get();
|
|
if (sezione != "D" && sezione != "A")
|
|
return f.warning_box(TR("Sezione dare/avere errata"));
|
|
}
|
|
return TRUE;
|
|
}
|
|
|
|
bool TVar_sc::tipopag_handler(TMask_field& f, KEY k)
|
|
{
|
|
if ( (k == K_TAB || k == K_ENTER) && f.mask().is_running())
|
|
{
|
|
int tipomov = f.mask().get_int(119);
|
|
int tipopag = atoi(f.get());
|
|
|
|
if (tipomov == 1 && tipopag != 0)
|
|
return f.warning_box(TR("In caso di fattura non e' possibile indicare il tipo pagamento"));
|
|
|
|
if (tipomov != 1 && tipomov != 2)
|
|
if (tipopag < 1 || tipopag > 9)
|
|
return f.warning_box(TR("Tipo pagamento errato"));
|
|
}
|
|
return TRUE;
|
|
}
|
|
|
|
bool TVar_sc::datapag_handler(TMask_field& f, KEY k)
|
|
{
|
|
if ( (k == K_TAB || k == K_ENTER) && f.mask().is_running())
|
|
{
|
|
int tipomov = f.mask().get_int(119);
|
|
TString datapag (f.get());
|
|
datapag.trim();
|
|
|
|
if (tipomov == 1 && datapag.not_empty())
|
|
return f.warning_box(TR("In caso di fattura non e' possibile indicare la data del pagamento"));
|
|
|
|
if (tipomov != 1)
|
|
if (datapag.empty() || !(TDate::isdate(datapag)))
|
|
return f.warning_box(TR("Se il movimento non e' una fattura la data di pagamento deve essere indicata"));
|
|
}
|
|
return TRUE;
|
|
}
|
|
|
|
bool TVar_sc::codval_handler(TMask_field& f, KEY k)
|
|
{
|
|
if ( (k == K_TAB || k == K_ENTER) && f.mask().is_running())
|
|
{
|
|
TString codval (f.get());
|
|
|
|
if (codval.not_empty())
|
|
{
|
|
if (!app().codvaluta(codval))
|
|
return f.warning_box(TR("Codice valuta non presente in tabella"));
|
|
|
|
TConfig conf (CONFIG_DITTA);
|
|
TString valuta = conf.get("GesVal");
|
|
if (codval.not_empty() && valuta.empty())
|
|
return f.warning_box(TR("Non e' possibile indicare il codice valuta se non indicata la gestione valuta sui parametri ditta"));
|
|
if (codval.empty() && valuta.not_empty())
|
|
return f.warning_box(TR("Il codice valuta deve essere indicato in quanto indicata la gestione in valuta sui parametri ditta"));
|
|
TString codcaus (f.mask().get(111));
|
|
if (codcaus.not_empty())
|
|
{
|
|
TString appoggio;
|
|
if (app().descr_caus(codcaus,appoggio))
|
|
{
|
|
if (app()._movval && codval.empty())
|
|
return f.warning_box(TR("Il codice valuta deve essere indicato in quanto indicata la gestione in valuta sulla causale"));
|
|
if (!app()._movval && codval.not_empty())
|
|
return f.warning_box(TR("Non e' possibile indicare il codice in valuta se non indicato il flag gestione valuta sulla causale"));
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
TDate datacam (f.mask().get_date(125));
|
|
real cambio (f.mask().get_real(126));
|
|
|
|
if (datacam.ok())
|
|
return f.warning_box(TR("Non e' possibile indicare la data cambio se non e' indicato il codice valuta"));
|
|
if (cambio != ZERO)
|
|
return f.warning_box(TR("Non e' possibile indicare il cambio se non e' indicato il codice valuta"));
|
|
}
|
|
}
|
|
return TRUE;
|
|
}
|
|
|
|
bool TVar_sc::datacam_handler(TMask_field& f, KEY k)
|
|
{
|
|
if ( (k == K_TAB || k == K_ENTER) && f.mask().is_running())
|
|
{
|
|
TString codval (f.mask().get(124));
|
|
TString datacam (f.get());
|
|
datacam.trim();
|
|
|
|
if (codval.not_empty())
|
|
if (datacam.empty() || !(TDate::isdate(datacam)))
|
|
return f.warning_box(TR("Se il codice valuta e' indicato la data cambio deve essere significativa"));
|
|
}
|
|
return TRUE;
|
|
}
|
|
|
|
bool TVar_sc::cambio_handler(TMask_field& f, KEY k)
|
|
{
|
|
if ( (k == K_TAB || k == K_ENTER) && f.mask().is_running())
|
|
{
|
|
TString codval (f.mask().get(124));
|
|
real cambio (f.get());
|
|
|
|
if (codval.not_empty())
|
|
if (cambio == ZERO)
|
|
return f.warning_box(TR("Se il codice valuta e' indicato il cambio deve essere significativo"));
|
|
}
|
|
return TRUE;
|
|
}
|
|
// ******************************************
|
|
// ***** HANDLER sulla riga di scadenza *****
|
|
// ******************************************
|
|
bool TVar_sc::nrata_handler(TMask_field& f, KEY k)
|
|
{
|
|
if ( (k == K_TAB || k == K_ENTER) && f.mask().is_running())
|
|
{
|
|
int nrata = atoi(f.get());
|
|
|
|
if (nrata == 0)
|
|
return f.warning_box(TR("Il numero di rata deve essere significativo"));
|
|
}
|
|
return TRUE;
|
|
}
|
|
|
|
bool TVar_sc::codpag_handler(TMask_field& f, KEY k)
|
|
{
|
|
if ( (k == K_TAB || k == K_ENTER) )
|
|
{
|
|
TString descr;
|
|
|
|
TString codpag = f.get();
|
|
|
|
if (codpag.not_empty())
|
|
{
|
|
if (f.mask().is_running())
|
|
{
|
|
TTable cpg ("%CPG");
|
|
TString dep (format("%-4s", (const char*) codpag));
|
|
|
|
cpg.zero();
|
|
cpg.put("CODTAB", dep);
|
|
if (cpg.read() != NOERR)
|
|
return f.warning_box(TR("Codice di pagamento errato o non presente in tabella"));
|
|
}
|
|
TTable rpg ("%RPG");
|
|
int tipo;
|
|
|
|
int tipopag = f.mask().get_int(112);
|
|
|
|
TString dep;
|
|
for (int i = 0; !rpg.eof(); rpg.next(), i++)
|
|
{
|
|
dep.format("%-s%3d", (const char*) codpag, i);
|
|
|
|
rpg.zero();
|
|
rpg.put("CODTAB", dep);
|
|
if (rpg.read() == NOERR)
|
|
{
|
|
tipo = rpg.get_int("I1");
|
|
if (tipo == tipopag)
|
|
{
|
|
switch(tipo)
|
|
{
|
|
case 1: descr = TR("Rimessa diretta");
|
|
break;
|
|
case 2: descr = TR("Tratta");
|
|
break;
|
|
case 3: descr = TR("Ricevuta bancaria");
|
|
break;
|
|
case 4: descr = TR("Cessione");
|
|
break;
|
|
case 5: descr = TR("Paghero'");
|
|
break;
|
|
case 6: descr = TR("Lettera di credito");
|
|
break;
|
|
case 7: descr = TR("Tratta accettata");
|
|
break;
|
|
case 8: descr = TR("Rapporti interbancari diretti");
|
|
break;
|
|
case 9: descr = TR("Bonifico");
|
|
break;
|
|
case 10: descr = TR("Altro");
|
|
break;
|
|
default: break;
|
|
};
|
|
break;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
descr = "";
|
|
break;
|
|
}
|
|
}
|
|
if (f.mask().is_running())
|
|
{
|
|
if (tipopag != 0)
|
|
{
|
|
if (tipopag != tipo)
|
|
return f.warning_box(TR("Il tipo pagamento della scadenza non e' congruo con il tipo pagamento del codice di pagamento"));
|
|
}
|
|
else
|
|
f.mask().set(112,tipo);
|
|
}
|
|
}
|
|
TString ultclass = f.mask().get(113);
|
|
if (ultclass.empty())
|
|
f.mask().set(114, descr);
|
|
}
|
|
return TRUE;
|
|
}
|
|
|
|
bool TVar_sc::tpscad_handler(TMask_field& f, KEY k)
|
|
{
|
|
if ( (k == K_TAB || k == K_ENTER) && f.mask().is_running())
|
|
{
|
|
TString codpag = f.mask().get(111);
|
|
|
|
if (codpag.empty()) return TRUE;
|
|
|
|
int tipopag = atoi(f.get());
|
|
|
|
if (tipopag < 1 || tipopag > 9)
|
|
return f.warning_box(TR("Tipo pagamento errato"));
|
|
|
|
TTable cpg ("%CPG");
|
|
TString dep (format("%-4s", (const char*) codpag));
|
|
|
|
int tipo = 0;
|
|
|
|
cpg.zero();
|
|
cpg.put("CODTAB", dep);
|
|
if (cpg.read() == NOERR)
|
|
tipo = atoi(cpg.get("S4"));
|
|
|
|
if (tipopag != tipo)
|
|
return f.warning_box(TR("Il tipo pagamento della scadenza non e' congruo con il tipo pagamento del codice di pagamento"));
|
|
}
|
|
return TRUE;
|
|
}
|
|
|
|
bool TVar_sc::ultclass_handler(TMask_field& f, KEY k)
|
|
{
|
|
if ( (k == K_TAB || k == K_ENTER) && f.mask().is_running())
|
|
{
|
|
TString descr;
|
|
TString ultclass = f.get();
|
|
int tipopag = f.mask().get_int(112);
|
|
|
|
if (ultclass.empty())
|
|
{
|
|
TTable rpg ("%RPG");
|
|
int tipo;
|
|
|
|
TString codpag = f.mask().get(111);
|
|
int tipopag = f.mask().get_int(112);
|
|
|
|
TString dep;
|
|
for (int i = 0; !rpg.eof(); rpg.next(), i++)
|
|
{
|
|
dep.format("%-s%3d", (const char*) codpag, i);
|
|
|
|
rpg.zero();
|
|
rpg.put("CODTAB", dep);
|
|
if (rpg.read() == NOERR)
|
|
{
|
|
tipo = rpg.get_int("I1");
|
|
if (tipo == tipopag)
|
|
{
|
|
switch(tipo)
|
|
{
|
|
case 1: descr = TR("Rimessa diretta");
|
|
break;
|
|
case 2: descr = TR("Tratta");
|
|
break;
|
|
case 3: descr = TR("Ricevuta bancaria");
|
|
break;
|
|
case 4: descr = TR("Cessione");
|
|
break;
|
|
case 5: descr = TR("Paghero'");
|
|
break;
|
|
case 6: descr = TR("Lettera di credito");
|
|
break;
|
|
case 7: descr = TR("Tratta accettata");
|
|
break;
|
|
case 8: descr = TR("Rapporti interbancari diretti");
|
|
break;
|
|
case 9: descr = TR("Bonifico");
|
|
break;
|
|
case 10: descr = TR("Altro");
|
|
break;
|
|
default: break;
|
|
};
|
|
break;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
descr = "";
|
|
break;
|
|
}
|
|
}
|
|
f.mask().set(114, descr);
|
|
return TRUE;
|
|
}
|
|
|
|
TTable clr ("%CLR");
|
|
TString dep (format("%d%s", tipopag,(const char*) ultclass));
|
|
|
|
clr.zero();
|
|
clr.put("CODTAB", dep);
|
|
if (clr.read() == NOERR)
|
|
descr = clr.get("S0");
|
|
else
|
|
return f.warning_box(TR("Ulteriore classificazione errata o non presente in tabella"));
|
|
|
|
f.mask().set(114, descr);
|
|
}
|
|
return TRUE;
|
|
}
|
|
|
|
bool TVar_sc::datascad_handler(TMask_field& f, KEY k)
|
|
{
|
|
if ( (k == K_TAB || k == K_ENTER) && f.mask().is_running())
|
|
{
|
|
TString datascad (f.get());
|
|
datascad.trim();
|
|
|
|
if (datascad.empty() || !(TDate::isdate(datascad)))
|
|
return f.warning_box(TR("Data scadenza errata"));
|
|
}
|
|
return TRUE;
|
|
}
|
|
|
|
bool TVar_sc::banca_handler(TMask_field& f, KEY k)
|
|
{
|
|
if ( (k == K_TAB || k == K_ENTER) && f.mask().is_running())
|
|
{
|
|
TString mess;
|
|
long abi;
|
|
long cab = atol(f.get());
|
|
int id = f.dlg();
|
|
if (id == 120)
|
|
{
|
|
abi = f.mask().get_long(119);
|
|
mess = TR("Codice nostra banca errato o non presente in tabella");
|
|
}
|
|
else
|
|
if (id == 122)
|
|
{
|
|
abi = f.mask().get_long(121);
|
|
mess = TR("Codice vostra banca errato o non presente in tabella");
|
|
}
|
|
else
|
|
if (id == 127)
|
|
{
|
|
abi = f.mask().get_long(126);
|
|
mess = TR("Codice nostra banca errato o non presente in tabella");
|
|
}
|
|
else
|
|
if (id == 129)
|
|
{
|
|
abi = f.mask().get_long(128);
|
|
mess = TR("Codice vostra banca errato o non presente in tabella");
|
|
}
|
|
|
|
if (abi == 0 && cab == 0) return TRUE;
|
|
|
|
TTable ban ("%BAN");
|
|
TString dep;
|
|
if (abi != 0 && cab != 0)
|
|
dep.format("%05ld%05ld", abi,cab);
|
|
if (abi != 0 && cab == 0)
|
|
dep.format("%05ld", abi);
|
|
|
|
ban.zero();
|
|
ban.put("CODTAB", dep);
|
|
if (ban.read() != NOERR)
|
|
return f.warning_box("%s", (const char*) mess);
|
|
}
|
|
return TRUE;
|
|
}
|
|
|
|
bool TVar_sc::datasoll_handler(TMask_field& f, KEY k)
|
|
{
|
|
if ( (k == K_TAB || k == K_ENTER) && f.mask().is_running())
|
|
{
|
|
TString datasoll (f.get());
|
|
datasoll.trim();
|
|
|
|
if (datasoll.empty())
|
|
return TRUE;
|
|
|
|
if (!(TDate::isdate(datasoll)))
|
|
return f.warning_box(TR("Data sollecito errata"));
|
|
}
|
|
return TRUE;
|
|
}
|
|
|
|
bool TVar_sc::importo_handler(TMask_field& f, KEY k)
|
|
{
|
|
if ( (k == K_TAB || k == K_ENTER) && f.mask().is_running())
|
|
{
|
|
real importo (f.get());
|
|
|
|
if (importo == ZERO)
|
|
return f.warning_box(TR("L'importo del pagamento deve essere significativo"));
|
|
}
|
|
return TRUE;
|
|
}
|
|
|
|
bool TVar_sc::impval_handler(TMask_field& f, KEY k)
|
|
{
|
|
if ( (k == K_TAB || k == K_ENTER) && f.mask().is_running())
|
|
{
|
|
TString codval;
|
|
real importo (f.get());
|
|
|
|
char tipo = f.mask().get (101)[0];
|
|
int g = f.mask().get_int (102);
|
|
int c = f.mask().get_int (103);
|
|
long s = f.mask().get_long(104);
|
|
int anno = f.mask().get_int (106);
|
|
TString npart = f.mask().get (107);
|
|
int nriga = f.mask().get_int (108);
|
|
|
|
app().sezione(tipo,g,c,s,anno,npart,nriga,codval,*(app()._mask));
|
|
|
|
if (codval.empty() && importo != ZERO)
|
|
return f.warning_box(TR("L'importo in valuta della scadenza non puo' essere indicato se non indicato il codice valuta"));
|
|
|
|
if (codval.not_empty() && importo == ZERO)
|
|
return f.warning_box(TR("L'importo in valuta della scadenza deve essere significativo"));
|
|
}
|
|
return TRUE;
|
|
}
|
|
|
|
// *******************************************
|
|
// ***** HANDLER sulla riga di pagamento *****
|
|
// *******************************************
|
|
bool TVar_sc::record_partite(char tipo,int g,int c,long s,int anno,TString& npart,int nriga)
|
|
{
|
|
TRecnotype nrec = _tpart->recno();
|
|
TIsamtempfile& part = *_tpart;
|
|
|
|
part.zero();
|
|
part.put(PART_TIPOCF, tipo);
|
|
part.put(PART_GRUPPO, g);
|
|
part.put(PART_CONTO, c);
|
|
part.put(PART_SOTTOCONTO, s);
|
|
part.put(PART_ANNO, anno);
|
|
part.put(PART_NUMPART, npart);
|
|
part.put(PART_NRIGA, nriga);
|
|
if (part.read() == NOERR)
|
|
{
|
|
_tpart->readat(nrec);
|
|
return TRUE;
|
|
}
|
|
_tpart->readat(nrec);
|
|
|
|
return FALSE;
|
|
}
|
|
|
|
bool TVar_sc::record_scadenze(char tipo,int g,int c,long s,int anno,TString& npart,int nriga,int nrata)
|
|
{
|
|
TRecnotype nrec = _tscad->recno();
|
|
TIsamtempfile& scad = *_tscad;
|
|
|
|
scad.zero();
|
|
scad.put(SCAD_TIPOCF, tipo);
|
|
scad.put(SCAD_GRUPPO, g);
|
|
scad.put(SCAD_CONTO, c);
|
|
scad.put(SCAD_SOTTOCONTO, s);
|
|
scad.put(SCAD_ANNO, anno);
|
|
scad.put(SCAD_NUMPART, npart);
|
|
scad.put(SCAD_NRIGA, nriga);
|
|
scad.put(SCAD_NRATA, nrata);
|
|
if (scad.read() == NOERR)
|
|
{
|
|
_tscad->readat(nrec);
|
|
return TRUE;
|
|
}
|
|
_tscad->readat(nrec);
|
|
|
|
return FALSE;
|
|
}
|
|
|
|
bool TVar_sc::rifpartita_handler(TMask_field& f, KEY k)
|
|
{
|
|
if ( (k == K_TAB || k == K_ENTER) && f.mask().is_running())
|
|
{
|
|
int nriga = f.mask().get_int(108);
|
|
int nrata = f.mask().get_int(109);
|
|
|
|
if (nriga == 9999 || nrata == 9999) return TRUE;
|
|
|
|
char t = f.mask().get (101)[0];
|
|
int g = f.mask().get_int (102);
|
|
int c = f.mask().get_int (103);
|
|
long s = f.mask().get_long(104);
|
|
int anno = f.mask().get_int (106);
|
|
TString npart = f.mask().get (107);
|
|
|
|
if (!app().record_partite(t,g,c,s,anno,npart,nriga))
|
|
return f.warning_box(TR("Non esiste la riga partita corrispondente"));
|
|
if (!app().record_scadenze(t,g,c,s,anno,npart,nriga,nrata))
|
|
return f.warning_box(TR("Non esiste la rata di scadenza corrispondente"));
|
|
}
|
|
return TRUE;
|
|
}
|
|
|
|
bool TVar_sc::accsal_handler(TMask_field& f, KEY k)
|
|
{
|
|
if ( (k == K_TAB || k == K_ENTER) && f.mask().is_running())
|
|
{
|
|
TString accsal = f.get();
|
|
|
|
char t = f.mask().get (101)[0];
|
|
int g = f.mask().get_int (102);
|
|
int c = f.mask().get_int (103);
|
|
long s = f.mask().get_long(104);
|
|
int anno = f.mask().get_int (106);
|
|
TString npart = f.mask().get (107);
|
|
int nriga = f.mask().get_int (110);
|
|
|
|
int tipo = app().tipo_movimento(t,g,c,s,anno,npart,nriga,*(app()._mask));
|
|
if ( (tipo == 2 || tipo == 5) && accsal == "S")
|
|
return f.warning_box(TR("Il flag in acconto / a saldo non puo' essere indicato in caso di Nota credito e Insoluto"));
|
|
|
|
if (accsal != "S" && accsal != "A")
|
|
return f.warning_box(TR("Flag in acconto / a saldo errato"));
|
|
}
|
|
return TRUE;
|
|
}
|
|
|
|
bool TVar_sc::passat_handler(TMask_field& f, KEY k)
|
|
{
|
|
if ( (k == K_TAB || k == K_ENTER) && f.mask().is_running())
|
|
{
|
|
real abbuoni (f.mask().get_real(117));
|
|
TString passat = f.get();
|
|
|
|
if (abbuoni != ZERO)
|
|
if (passat != "P" && passat != "A")
|
|
return f.warning_box(TR("Flag attivo / passivo errato"));
|
|
}
|
|
return TRUE;
|
|
}
|
|
|
|
bool TVar_sc::impvalp_handler(TMask_field& f, KEY k)
|
|
{
|
|
if ( (k == K_TAB || k == K_ENTER) && f.mask().is_running())
|
|
{
|
|
TString codval;
|
|
real importo (f.get());
|
|
|
|
char tipo = f.mask().get (101)[0];
|
|
int g = f.mask().get_int (102);
|
|
int c = f.mask().get_int (103);
|
|
long s = f.mask().get_long(104);
|
|
int anno = f.mask().get_int (106);
|
|
TString npart = f.mask().get (107);
|
|
int nriga = f.mask().get_int (110);
|
|
|
|
app().sezione(tipo,g,c,s,anno,npart,nriga,codval,*(app()._mask));
|
|
|
|
if (codval.empty() && importo != ZERO)
|
|
return f.warning_box(TR("L'importo in valuta del pagamento non puo' essere indicato se non indicato il codice valuta"));
|
|
|
|
if (codval.not_empty() && importo == ZERO)
|
|
return f.warning_box(TR("L'importo in valuta del pagamento deve essere significativo"));
|
|
}
|
|
return TRUE;
|
|
}
|
|
|
|
bool TVar_sc::sezione_abb_handler(TMask_field& f, KEY k)
|
|
{
|
|
if ( (k == K_TAB || k == K_ENTER) && f.mask().is_running())
|
|
{
|
|
TString sez (f.get());
|
|
real abbuoni (f.mask().get(117));
|
|
|
|
if (sez != "D" && sez != "A" && sez != "")
|
|
return f.warning_box(TR("Valore non valido per sezione"));
|
|
|
|
if (abbuoni != ZERO && sez.empty())
|
|
return f.warning_box(TR("Se gli abbuoni sono significativi la sezione deve essere indicata"));
|
|
|
|
if (sez == "D")
|
|
f.mask().set(131,"A");
|
|
else
|
|
if (sez == "A")
|
|
f.mask().set(131,"P");
|
|
else
|
|
f.mask().set(131,"");
|
|
|
|
}
|
|
return TRUE;
|
|
}
|
|
|
|
bool TVar_sc::ritenute_handler(TMask_field& f, KEY k)
|
|
{
|
|
if ( (k == K_TAB || k == K_ENTER) && f.mask().is_running())
|
|
{
|
|
TString codval;
|
|
|
|
char tipo = f.mask().get (101)[0];
|
|
int g = f.mask().get_int (102);
|
|
int c = f.mask().get_int (103);
|
|
long s = f.mask().get_long(104);
|
|
int anno = f.mask().get_int (106);
|
|
TString npart = f.mask().get (107);
|
|
int nriga = f.mask().get_int (110);
|
|
|
|
real ritenute (f.get());
|
|
int tipomov = app().tipo_movimento(tipo,g,c,s,anno,npart,nriga,*(app()._mask));
|
|
if ( (tipomov == 2 || tipomov == 5) && ritenute != ZERO)
|
|
return f.warning_box(TR("La ritenuta non puo' essere indicata in caso di Nota credito e Insoluto"));
|
|
|
|
char sez = app().sezione(tipo,g,c,s,anno,npart,nriga,codval,*(app()._mask));
|
|
|
|
TString str (format("%c", sez));
|
|
if (ritenute != ZERO)
|
|
f.mask().set(114,str);
|
|
else
|
|
f.mask().set(114,"");
|
|
}
|
|
return TRUE;
|
|
}
|
|
|
|
bool TVar_sc::abbuoni_handler(TMask_field& f, KEY k)
|
|
{
|
|
if (k == K_TAB)
|
|
{
|
|
TString codval;
|
|
|
|
char tipo = f.mask().get (101)[0];
|
|
int g = f.mask().get_int (102);
|
|
int c = f.mask().get_int (103);
|
|
long s = f.mask().get_long(104);
|
|
int anno = f.mask().get_int (106);
|
|
TString npart = f.mask().get (107);
|
|
int nriga = f.mask().get_int (110);
|
|
|
|
app().sezione(tipo,g,c,s,anno,npart,nriga,codval,*(app()._mask));
|
|
|
|
if (codval.not_empty())
|
|
((TReal_field&)f).set_decimals(3);
|
|
else
|
|
((TReal_field&)f).set_decimals(0);
|
|
}
|
|
if ( (k == K_TAB || k == K_ENTER) && f.mask().is_running())
|
|
{
|
|
TString accsal (f.mask().get(111));
|
|
real abbuoni (f.get());
|
|
if (accsal == "A" && abbuoni != ZERO)
|
|
return f.warning_box(TR("Gli abbuoni possono essere indicati solo se a SALDO"));
|
|
}
|
|
return TRUE;
|
|
}
|
|
|
|
bool TVar_sc::sezione_dc_handler(TMask_field& f, KEY k)
|
|
{
|
|
if ( (k == K_TAB || k == K_ENTER) && f.mask().is_running())
|
|
{
|
|
TString sez (f.get());
|
|
real diffcam (f.mask().get(119));
|
|
|
|
if (sez != "D" && sez != "A" && sez != "")
|
|
return f.warning_box(TR("Valore non valido per sezione"));
|
|
|
|
if (diffcam != ZERO && sez.empty())
|
|
return f.warning_box(TR("Se la differenza cambio e' significativa la sezione deve essere indicata"));
|
|
}
|
|
return TRUE;
|
|
}
|
|
|
|
bool TVar_sc::diffcambio_handler(TMask_field& f, KEY k)
|
|
{
|
|
if ( (k == K_TAB || k == K_ENTER) && f.mask().is_running())
|
|
{
|
|
TString codval;
|
|
|
|
char tipo = f.mask().get (101)[0];
|
|
int g = f.mask().get_int (102);
|
|
int c = f.mask().get_int (103);
|
|
long s = f.mask().get_long(104);
|
|
int anno = f.mask().get_int (106);
|
|
TString npart = f.mask().get (107);
|
|
int nriga = f.mask().get_int (110);
|
|
|
|
app().sezione(tipo,g,c,s,anno,npart,nriga,codval,*(app()._mask));
|
|
|
|
TString accsal (f.mask().get(111));
|
|
real diffcam (f.get());
|
|
if (accsal == "A" && diffcam != ZERO)
|
|
return f.warning_box(TR("La differenza cambio puo' essere indicata solo se a SALDO"));
|
|
if (codval.empty() && diffcam != ZERO)
|
|
return f.warning_box(TR("La differenza cambio puo' essere indicata solo in caso di valuta"));
|
|
}
|
|
return TRUE;
|
|
}
|
|
|
|
bool TVar_sc::contropartita_handler(TMask_field& f, KEY k)
|
|
{
|
|
if ( (k == K_TAB || k == K_ENTER) && f.mask().is_running())
|
|
{
|
|
char tipo = f.mask().get (101)[0];
|
|
int g = f.mask().get_int (102);
|
|
int c = f.mask().get_int (103);
|
|
long s = f.mask().get_long(104);
|
|
int anno = f.mask().get_int (106);
|
|
TString npart = f.mask().get (107);
|
|
int nriga = f.mask().get_int (110);
|
|
TString tipocf = f.mask().get(121);
|
|
|
|
if (tipocf == "C" || tipocf == "F")
|
|
{
|
|
long codcf = f.mask().get_long(124);
|
|
|
|
if (codcf == 0) return TRUE;
|
|
|
|
TLocalisamfile clifo (LF_CLIFO);
|
|
|
|
clifo.setkey(1);
|
|
clifo.zero();
|
|
clifo.put(CLI_TIPOCF, tipocf);
|
|
clifo.put(CLI_CODCF, codcf);
|
|
if (clifo.read() != NOERR)
|
|
return f.warning_box(TR("Codice di contropartita errato o non presente in anagrafica clienti/fornitori"));
|
|
}
|
|
else
|
|
{
|
|
int gruppo = f.mask().get_int (122);
|
|
int conto = f.mask().get_int (123);
|
|
long sottoc = f.mask().get_long(124);
|
|
|
|
if (gruppo == 0 && conto == 0 && sottoc == 0) return TRUE;
|
|
|
|
TLocalisamfile pcon (LF_PCON);
|
|
|
|
pcon.setkey(1);
|
|
pcon.zero();
|
|
pcon.put(PCN_GRUPPO, gruppo);
|
|
pcon.put(PCN_CONTO, conto);
|
|
pcon.put(PCN_SOTTOCONTO, sottoc);
|
|
if (pcon.read() != NOERR)
|
|
return f.warning_box(TR("Codice contropartita errato o non presente in piano conti"));
|
|
}
|
|
}
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
bool TVar_sc::registra_dati_comuni(TMask_field& f, KEY k)
|
|
{
|
|
if (k == K_ENTER && f.mask().is_running())
|
|
{
|
|
long nreg = f.mask().get_long(113);
|
|
int nrig = f.mask().get_int (114);
|
|
|
|
if (nreg != 0 && nrig != 0)
|
|
{
|
|
TDate datareg (f.mask().get_date(115));
|
|
TString numdoc (f.mask().get (110));
|
|
TDate datadoc (f.mask().get_date(109));
|
|
TString codcaus (f.mask().get (111));
|
|
|
|
TSheet_field& part = (TSheet_field&)app()._mask->field(F_RIGAPART);
|
|
|
|
for (int i = 0; i < part.items(); i++)
|
|
{
|
|
TToken_string& row = part.row(i);
|
|
|
|
long numreg = row.get_long(12);
|
|
int numrig = row.get_int (13);
|
|
|
|
if (nreg != numreg || nrig != numrig) continue;
|
|
|
|
TString d_caus;
|
|
|
|
app().descr_caus(codcaus,d_caus);
|
|
|
|
row.add(datadoc,8);
|
|
row.add(numdoc,9);
|
|
row.add(codcaus,10);
|
|
row.add(d_caus,11);
|
|
row.add(datareg,14);
|
|
}
|
|
part.force_update();
|
|
}
|
|
}
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
bool TVar_sc::cancella_partita(TMask_field& f)
|
|
{
|
|
TIsamtempfile& part = *_tpart;
|
|
|
|
char tipo = f.mask().get (101)[0];
|
|
int gruppo = f.mask().get_int (102);
|
|
int conto = f.mask().get_int (103);
|
|
long sottoc = f.mask().get_long(104);
|
|
int anno = f.mask().get_int (106);
|
|
TString numpart = f.mask().get (107);
|
|
int nriga = f.mask().get_int (108);
|
|
|
|
int tipomov = f.mask().get_int (119);
|
|
|
|
if (!controlla_abbuoni_diffcam(tipo,gruppo,conto,sottoc,anno,numpart,nriga,0))
|
|
return f.message_box(TR("Impossibile eliminare questa partita in quanto esistono uno o piu' pagamenti riferiti ad essa contenenti abbuoni o differenze cambio"));
|
|
|
|
part.setkey(1);
|
|
part.zero();
|
|
part.put(PART_TIPOCF, tipo);
|
|
part.put(PART_GRUPPO, gruppo);
|
|
part.put(PART_CONTO, conto);
|
|
part.put(PART_SOTTOCONTO, sottoc);
|
|
part.put(PART_ANNO, anno);
|
|
part.put(PART_NUMPART, numpart);
|
|
part.put(PART_NRIGA, nriga);
|
|
if (part.read() == NOERR)
|
|
{
|
|
part.remove();
|
|
if (tipomov == 1)
|
|
{
|
|
TIsamtempfile& scad = *_tscad;
|
|
|
|
scad.setkey(1);
|
|
scad.zero();
|
|
scad.put(SCAD_TIPOCF, tipo);
|
|
scad.put(SCAD_GRUPPO, gruppo);
|
|
scad.put(SCAD_CONTO, conto);
|
|
scad.put(SCAD_SOTTOCONTO, sottoc);
|
|
scad.put(SCAD_ANNO, anno);
|
|
scad.put(SCAD_NUMPART, numpart);
|
|
scad.put(SCAD_NRIGA, nriga);
|
|
|
|
TRectype scadenza (scad.curr());
|
|
|
|
for (scad.read(_isgteq); !scad.eof(); scad.next())
|
|
{
|
|
TString rec = scadenza.get(SCAD_NUMPART);
|
|
TString file = scad.get(SCAD_NUMPART);
|
|
|
|
if (scad.curr() != scadenza || file != rec) break;
|
|
|
|
int nrata = scad.get_int (SCAD_NRATA);
|
|
|
|
scad.remove();
|
|
|
|
sgancia_pagamenti(tipo,gruppo,conto,sottoc,anno,numpart,nriga,nrata);
|
|
}
|
|
}
|
|
else
|
|
if (tipomov != 1)
|
|
{
|
|
TIsamtempfile& pagsca = *_tpagsca;
|
|
|
|
pagsca.setkey(1);
|
|
pagsca.zero();
|
|
pagsca.put(PAGSCA_TIPOC, tipo);
|
|
pagsca.put(PAGSCA_GRUPPO, gruppo);
|
|
pagsca.put(PAGSCA_CONTO, conto);
|
|
pagsca.put(PAGSCA_SOTTOCONTO, sottoc);
|
|
pagsca.put(PAGSCA_ANNO, anno);
|
|
pagsca.put(PAGSCA_NUMPART, numpart);
|
|
|
|
TRectype pagamenti (pagsca.curr());
|
|
|
|
for (pagsca.read(_isgteq); !pagsca.eof(); pagsca.next())
|
|
{
|
|
TString rec = pagamenti.get(PAGSCA_NUMPART);
|
|
TString file = pagsca.get(PAGSCA_NUMPART);
|
|
|
|
if (pagsca.curr() != pagamenti || file != rec) break;
|
|
|
|
int nrigp = pagsca.get_int (PAGSCA_NRIGP);
|
|
|
|
if (nriga != nrigp) continue;
|
|
|
|
pagsca.remove();
|
|
}
|
|
}
|
|
}
|
|
else
|
|
return f.warning_box(TR("Non esiste la riga di partita richiesta sull'archivio delle partite"));
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
bool TVar_sc::controlla_abbuoni_diffcam(char tipo,int g,int c,long s,int anno,TString& npart,int nriga,int nrata)
|
|
{
|
|
TIsamtempfile& pagsca = *_tpagsca;
|
|
|
|
pagsca.setkey(1);
|
|
pagsca.zero();
|
|
pagsca.put(PAGSCA_TIPOC, tipo);
|
|
pagsca.put(PAGSCA_GRUPPO, g);
|
|
pagsca.put(PAGSCA_CONTO, c);
|
|
pagsca.put(PAGSCA_SOTTOCONTO, s);
|
|
pagsca.put(PAGSCA_ANNO, anno);
|
|
pagsca.put(PAGSCA_NUMPART, npart);
|
|
pagsca.put(PAGSCA_NRIGA, nriga);
|
|
if (nrata != 0)
|
|
pagsca.put(PAGSCA_NRATA, nrata);
|
|
|
|
TRectype pagamenti (pagsca.curr());
|
|
|
|
for (pagsca.read(_isgteq); !pagsca.eof(); pagsca.next())
|
|
{
|
|
TString rec = pagamenti.get(PAGSCA_NUMPART);
|
|
TString file = pagsca.get(PAGSCA_NUMPART);
|
|
|
|
if (pagsca.curr() != pagamenti || file != rec) break;
|
|
|
|
real abbuoni = pagsca.get_real(PAGSCA_ABBUONI);
|
|
real diffcam = pagsca.get_real(PAGSCA_DIFFCAM);
|
|
if (abbuoni != ZERO || diffcam != ZERO)
|
|
return FALSE;
|
|
}
|
|
return TRUE;
|
|
}
|
|
|
|
bool TVar_sc::elimina_partita(TMask_field& f, KEY k)
|
|
{
|
|
if (k == K_SPACE && f.mask().is_running())
|
|
if (!app().cancella_partita(f))
|
|
return FALSE;
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
void TVar_sc::sgancia_pagamenti(char tipo,int g,int c,long s,int anno,TString& npart,int nriga,int nrata)
|
|
{
|
|
TIsamtempfile& pagsca = *_tpagsca;
|
|
|
|
pagsca.setkey(1);
|
|
pagsca.zero();
|
|
pagsca.put(PAGSCA_TIPOC, tipo);
|
|
pagsca.put(PAGSCA_GRUPPO, g);
|
|
pagsca.put(PAGSCA_CONTO, c);
|
|
pagsca.put(PAGSCA_SOTTOCONTO, s);
|
|
pagsca.put(PAGSCA_ANNO, anno);
|
|
pagsca.put(PAGSCA_NUMPART, npart);
|
|
pagsca.put(PAGSCA_NRIGA, nriga);
|
|
pagsca.put(PAGSCA_NRATA, nrata);
|
|
|
|
TRectype pagamenti (pagsca.curr());
|
|
|
|
for (pagsca.read(_isgteq); !pagsca.eof(); pagsca.next())
|
|
{
|
|
TString rec = pagamenti.get(PAGSCA_NUMPART);
|
|
TString file = pagsca.get(PAGSCA_NUMPART);
|
|
|
|
if (pagsca.curr() != pagamenti || file != rec) break;
|
|
|
|
TRectype pag (pagsca.curr());
|
|
|
|
pag.put(PAGSCA_NRIGA, 9999);
|
|
pag.put(PAGSCA_NRATA, 9999);
|
|
|
|
TRecnotype nrec = pagsca.recno();
|
|
pagsca.remove();
|
|
pagsca.curr() = pag;
|
|
if (pagsca.read() == NOERR)
|
|
{
|
|
real importo = pagsca.get_real(PAGSCA_IMPORTO) + pag.get_real(PAGSCA_IMPORTO);
|
|
real impval = pagsca.get_real(PAGSCA_IMPORTOVAL) + pag.get_real(PAGSCA_IMPORTOVAL);
|
|
real ritenute = pagsca.get_real(PAGSCA_RITENUTE) + pag.get_real(PAGSCA_RITENUTE);
|
|
real ritsoc = pagsca.get_real(PAGSCA_RITSOC) + pag.get_real(PAGSCA_RITSOC);
|
|
pagsca.put(PAGSCA_IMPORTO, importo);
|
|
pagsca.put(PAGSCA_IMPORTOVAL, impval);
|
|
pagsca.put(PAGSCA_RITENUTE, ritenute);
|
|
pagsca.put(PAGSCA_RITSOC, ritsoc);
|
|
pagsca.put(PAGSCA_ACCSAL, "A");
|
|
pagsca.rewrite();
|
|
}
|
|
else
|
|
{
|
|
pagsca.curr() = pag;
|
|
pagsca.write();
|
|
}
|
|
pagsca.readat(nrec);
|
|
}
|
|
}
|
|
|
|
bool TVar_sc::elimina_scadenza(TMask_field& f, KEY k)
|
|
{
|
|
if (k == K_SPACE && f.mask().is_running())
|
|
if (!app().cancella_scadenza(f))
|
|
return FALSE;
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
bool TVar_sc::cancella_scadenza(TMask_field& f)
|
|
{
|
|
TIsamtempfile& scad = *_tscad;
|
|
|
|
char tipo = f.mask().get (101)[0];
|
|
int gruppo = f.mask().get_int (102);
|
|
int conto = f.mask().get_int (103);
|
|
long sottoc = f.mask().get_long(104);
|
|
int anno = f.mask().get_int (106);
|
|
TString numpart = f.mask().get (107);
|
|
int nriga = f.mask().get_int (108);
|
|
int nrata = f.mask().get_int (109);
|
|
|
|
if (!controlla_abbuoni_diffcam(tipo,gruppo,conto,sottoc,anno,numpart,nriga,nrata))
|
|
return f.message_box(TR("Impossibile eliminare questa scadenza in quanto esistono uno o piu' pagamenti riferiti ad essa contenenti abbuoni o differenze cambio"));
|
|
|
|
scad.setkey(1);
|
|
scad.zero();
|
|
scad.put(SCAD_TIPOCF, tipo);
|
|
scad.put(SCAD_GRUPPO, gruppo);
|
|
scad.put(SCAD_CONTO, conto);
|
|
scad.put(SCAD_SOTTOCONTO, sottoc);
|
|
scad.put(SCAD_ANNO, anno);
|
|
scad.put(SCAD_NUMPART, numpart);
|
|
scad.put(SCAD_NRIGA, nriga);
|
|
scad.put(SCAD_NRATA, nrata);
|
|
|
|
if (scad.read() == NOERR)
|
|
{
|
|
scad.remove();
|
|
|
|
sgancia_pagamenti(tipo,gruppo,conto,sottoc,anno,numpart,nriga,nrata);
|
|
}
|
|
else
|
|
return f.warning_box(TR("Non esiste la scadenza richiesta sull'archivio delle scadenze"));
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
bool TVar_sc::elimina_pagamenti(TMask_field& f, KEY k)
|
|
{
|
|
if (k == K_SPACE && f.mask().is_running())
|
|
if (!app().cancella_pagamenti(f))
|
|
return FALSE;
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
bool TVar_sc::cancella_pagamenti(TMask_field& f)
|
|
{
|
|
TIsamtempfile& pagsca = *_tpagsca;
|
|
|
|
char tipo = f.mask().get (101)[0];
|
|
int gruppo = f.mask().get_int (102);
|
|
int conto = f.mask().get_int (103);
|
|
long sottoc = f.mask().get_long(104);
|
|
int anno = f.mask().get_int (106);
|
|
TString numpart = f.mask().get (107);
|
|
int nriga = f.mask().get_int (108);
|
|
int nrata = f.mask().get_int (109);
|
|
int nrigp = f.mask().get_int (110);
|
|
|
|
pagsca.setkey(1);
|
|
pagsca.zero();
|
|
pagsca.put(PAGSCA_TIPOC, tipo);
|
|
pagsca.put(PAGSCA_GRUPPO, gruppo);
|
|
pagsca.put(PAGSCA_CONTO, conto);
|
|
pagsca.put(PAGSCA_SOTTOCONTO, sottoc);
|
|
pagsca.put(PAGSCA_ANNO, anno);
|
|
pagsca.put(PAGSCA_NUMPART, numpart);
|
|
pagsca.put(PAGSCA_NRIGA, nriga);
|
|
pagsca.put(PAGSCA_NRATA, nrata);
|
|
pagsca.put(PAGSCA_NRIGP, nrigp);
|
|
|
|
if (pagsca.read() == NOERR)
|
|
{
|
|
pagsca.remove();
|
|
}
|
|
else
|
|
return f.warning_box(TR("Non esiste il pagamento richiesto sull'archivio dei pagamenti"));
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
void TVar_sc::registra_partita(TMask& m)
|
|
{
|
|
TSheet_field& part = (TSheet_field&)m.field(F_RIGAPART);
|
|
|
|
for (int i = 0 ; i < part.items(); i++)
|
|
{
|
|
TToken_string& row = part.row(i);
|
|
|
|
char tipo = row.get (0)[0];
|
|
int gruppo = row.get_int (1);
|
|
int conto = row.get_int (2);
|
|
long sottoc = row.get_long(3);
|
|
int anno = row.get_int (5);
|
|
TString numpart = row.get (6);
|
|
int nriga = row.get_int (7);
|
|
|
|
TDate datadoc (row.get (8));
|
|
TString numdoc = row.get (9);
|
|
TString codcaus = row.get (10);
|
|
long nreg = row.get_long(12);
|
|
int nrig = row.get_int (13);
|
|
TDate datareg (row.get (14));
|
|
int gruppocl = row.get_int (15);
|
|
int contocl = row.get_int (16);
|
|
int tipomov = row.get_int (18);
|
|
TString descr = row.get (19);
|
|
char sez = row.get (20)[0];
|
|
TDate datapag (row.get (21));
|
|
int tipopag = row.get_int (22);
|
|
TString codval (row.get (23));
|
|
TDate datacam (row.get (24));
|
|
real cambio (row.get (25));
|
|
|
|
_tpart->setkey(1);
|
|
_tpart->zero();
|
|
_tpart->put(PART_TIPOCF, tipo);
|
|
_tpart->put(PART_GRUPPO, gruppo);
|
|
_tpart->put(PART_CONTO, conto);
|
|
_tpart->put(PART_SOTTOCONTO, sottoc);
|
|
_tpart->put(PART_ANNO, anno);
|
|
_tpart->put(PART_NUMPART, numpart);
|
|
_tpart->put(PART_NRIGA, nriga);
|
|
|
|
if (_tpart->read() == NOERR)
|
|
{
|
|
_tpart->put(PART_TIPOCF, tipo);
|
|
_tpart->put(PART_GRUPPO, gruppo);
|
|
_tpart->put(PART_CONTO, conto);
|
|
_tpart->put(PART_SOTTOCONTO, sottoc);
|
|
_tpart->put(PART_ANNO, anno);
|
|
_tpart->put(PART_NUMPART, numpart);
|
|
_tpart->put(PART_NRIGA, nriga);
|
|
_tpart->put(PART_DATADOC, datadoc);
|
|
_tpart->put(PART_NUMDOC, numdoc);
|
|
_tpart->put(PART_CODCAUS, codcaus);
|
|
_tpart->put(PART_NREG, nreg);
|
|
_tpart->put(PART_NUMRIG, nrig);
|
|
_tpart->put(PART_DATAREG, datareg);
|
|
_tpart->put(PART_GRUPPOCL, gruppocl);
|
|
_tpart->put(PART_CONTOCL, contocl);
|
|
_tpart->put(PART_TIPOMOV, tipomov);
|
|
_tpart->put(PART_DESCR, descr);
|
|
_tpart->put(PART_SEZ, sez);
|
|
_tpart->put(PART_DATAPAG, datapag);
|
|
_tpart->put(PART_TIPOPAG, tipopag);
|
|
_tpart->put(PART_CODVAL, codval);
|
|
_tpart->put(PART_DATACAM, datacam);
|
|
_tpart->put(PART_CAMBIO, cambio);
|
|
|
|
_tpart->rewrite();
|
|
}
|
|
else
|
|
{
|
|
_tpart->put(PART_TIPOCF, tipo);
|
|
_tpart->put(PART_GRUPPO, gruppo);
|
|
_tpart->put(PART_CONTO, conto);
|
|
_tpart->put(PART_SOTTOCONTO, sottoc);
|
|
_tpart->put(PART_ANNO, anno);
|
|
_tpart->put(PART_NUMPART, numpart);
|
|
_tpart->put(PART_NRIGA, nriga);
|
|
_tpart->put(PART_DATADOC, datadoc);
|
|
_tpart->put(PART_NUMDOC, numdoc);
|
|
_tpart->put(PART_CODCAUS, codcaus);
|
|
_tpart->put(PART_NREG, nreg);
|
|
_tpart->put(PART_NUMRIG, nrig);
|
|
_tpart->put(PART_DATAREG, datareg);
|
|
_tpart->put(PART_GRUPPOCL, gruppocl);
|
|
_tpart->put(PART_CONTOCL, contocl);
|
|
_tpart->put(PART_TIPOMOV, tipomov);
|
|
_tpart->put(PART_DESCR, descr);
|
|
_tpart->put(PART_SEZ, sez);
|
|
_tpart->put(PART_DATAPAG, datapag);
|
|
_tpart->put(PART_TIPOPAG, tipopag);
|
|
_tpart->put(PART_CODVAL, codval);
|
|
_tpart->put(PART_DATACAM, datacam);
|
|
_tpart->put(PART_CAMBIO, cambio);
|
|
|
|
_tpart->write();
|
|
}
|
|
}
|
|
}
|
|
|
|
void TVar_sc::registra_scadenze(TMask& m)
|
|
{
|
|
TSheet_field& scad = (TSheet_field&)m.field(F_RIGASCAD);
|
|
|
|
for (int i = 0 ; i < scad.items(); i++)
|
|
{
|
|
TToken_string& row = scad.row(i);
|
|
|
|
char tipo = row.get (0)[0];
|
|
int gruppo = row.get_int (1);
|
|
int conto = row.get_int (2);
|
|
long sottoc = row.get_long(3);
|
|
int anno = row.get_int (5);
|
|
TString numpart = row.get (6);
|
|
int nriga = row.get_int (7);
|
|
int nrata = row.get_int (8);
|
|
|
|
TDate datascad (row.get (9));
|
|
TString codpag = row.get (10);
|
|
int tipopag = row.get_int (11);
|
|
TString ultclass = row.get (12);
|
|
real importo (row.get (15));
|
|
real impval (row.get (16));
|
|
TString descr = row.get (17);
|
|
long nsabi = row.get_long(19);
|
|
long nscab = row.get_long(19);
|
|
long vsabi = row.get_long(20);
|
|
long vscab = row.get_long(21);
|
|
TString codag = row.get (22);
|
|
TDate datasoll (row.get (23));
|
|
int nsoll = row.get_int (24);
|
|
|
|
_tscad->setkey(1);
|
|
_tscad->zero();
|
|
_tscad->put(SCAD_TIPOCF, tipo);
|
|
_tscad->put(SCAD_GRUPPO, gruppo);
|
|
_tscad->put(SCAD_CONTO, conto);
|
|
_tscad->put(SCAD_SOTTOCONTO, sottoc);
|
|
_tscad->put(SCAD_ANNO, anno);
|
|
_tscad->put(SCAD_NUMPART, numpart);
|
|
_tscad->put(SCAD_NRIGA, nriga);
|
|
_tscad->put(SCAD_NRATA, nrata);
|
|
|
|
if (_tscad->read() == NOERR)
|
|
{
|
|
_tscad->put(SCAD_TIPOCF, tipo);
|
|
_tscad->put(SCAD_GRUPPO, gruppo);
|
|
_tscad->put(SCAD_CONTO, conto);
|
|
_tscad->put(SCAD_SOTTOCONTO, sottoc);
|
|
_tscad->put(SCAD_ANNO, anno);
|
|
_tscad->put(SCAD_NUMPART, numpart);
|
|
_tscad->put(SCAD_NRIGA, nriga);
|
|
_tscad->put(SCAD_NRATA, nrata);
|
|
_tscad->put(SCAD_DATASCAD, datascad);
|
|
_tscad->put(SCAD_CODPAG, codpag);
|
|
_tscad->put(SCAD_TIPOPAG, tipopag);
|
|
_tscad->put(SCAD_ULTCLASS, ultclass);
|
|
_tscad->put(SCAD_IMPORTO, importo);
|
|
_tscad->put(SCAD_IMPORTOVAL, impval);
|
|
_tscad->put(SCAD_DESCR, descr);
|
|
_tscad->put(SCAD_CODABIPR, nsabi);
|
|
_tscad->put(SCAD_CODCABPR, nscab);
|
|
_tscad->put(SCAD_CODABI, vsabi);
|
|
_tscad->put(SCAD_CODCAB, vscab);
|
|
_tscad->put(SCAD_CODAG, codag);
|
|
_tscad->put(SCAD_DATASOLL, datasoll);
|
|
_tscad->put(SCAD_NSOLL, nsoll);
|
|
|
|
_tscad->rewrite();
|
|
}
|
|
else
|
|
{
|
|
_tscad->put(SCAD_TIPOCF, tipo);
|
|
_tscad->put(SCAD_GRUPPO, gruppo);
|
|
_tscad->put(SCAD_CONTO, conto);
|
|
_tscad->put(SCAD_SOTTOCONTO, sottoc);
|
|
_tscad->put(SCAD_ANNO, anno);
|
|
_tscad->put(SCAD_NUMPART, numpart);
|
|
_tscad->put(SCAD_NRIGA, nriga);
|
|
_tscad->put(SCAD_NRATA, nrata);
|
|
_tscad->put(SCAD_DATASCAD, datascad);
|
|
_tscad->put(SCAD_CODPAG, codpag);
|
|
_tscad->put(SCAD_TIPOPAG, tipopag);
|
|
_tscad->put(SCAD_ULTCLASS, ultclass);
|
|
_tscad->put(SCAD_IMPORTO, importo);
|
|
_tscad->put(SCAD_IMPORTOVAL, impval);
|
|
_tscad->put(SCAD_DESCR, descr);
|
|
_tscad->put(SCAD_CODABIPR, nsabi);
|
|
_tscad->put(SCAD_CODCABPR, nscab);
|
|
_tscad->put(SCAD_CODABI, vsabi);
|
|
_tscad->put(SCAD_CODCAB, vscab);
|
|
_tscad->put(SCAD_CODAG, codag);
|
|
_tscad->put(SCAD_DATASOLL, datasoll);
|
|
_tscad->put(SCAD_NSOLL, nsoll);
|
|
|
|
_tscad->write();
|
|
}
|
|
}
|
|
}
|
|
|
|
void TVar_sc::registra_pagamenti(TMask& m)
|
|
{
|
|
TString passat;
|
|
|
|
TSheet_field& pag = (TSheet_field&)m.field(F_RIGAPAGSCA);
|
|
|
|
for (int i = 0 ; i < pag.items(); i++)
|
|
{
|
|
TToken_string& row = pag.row(i);
|
|
|
|
char tipo = row.get (0)[0];
|
|
int gruppo = row.get_int (1);
|
|
int conto = row.get_int (2);
|
|
long sottoc = row.get_long(3);
|
|
int anno = row.get_int (5);
|
|
TString numpart = row.get (6);
|
|
int nriga = row.get_int (7);
|
|
int nrata = row.get_int (8);
|
|
int nrigp = row.get_int (9);
|
|
|
|
TString accsal = row.get (10);
|
|
real importo (row.get (12));
|
|
real ritenute (row.get (14));
|
|
real abbuoni (row.get (16));
|
|
real diffcam (row.get (18));
|
|
real impval (row.get (19));
|
|
char tipoc = row.get (20)[0];
|
|
int gruppoc = row.get_int(21);
|
|
int contoc = row.get_int(22);
|
|
long sottocc = row.get_long(23);
|
|
long nsabi = row.get_long(25);
|
|
long nscab = row.get_long(26);
|
|
long vsabi = row.get_long(27);
|
|
long vscab = row.get_long(28);
|
|
TString codag = row.get (29);
|
|
real ritsoc (row.get (31));
|
|
|
|
TString codval = "";
|
|
char sez = sezione(tipo,gruppo,conto,sottoc,anno,numpart,nriga,codval,*_mask);
|
|
|
|
char sezab = row.get(15)[0];
|
|
|
|
if (sezab != sez)
|
|
abbuoni = abbuoni * -1;
|
|
|
|
if (sezab == 'A')
|
|
passat = "P";
|
|
else
|
|
if (sezab == 'D')
|
|
passat = "A";
|
|
|
|
char sezdc = row.get(17)[0];
|
|
|
|
if (sezdc != sez)
|
|
diffcam = diffcam * -1;
|
|
|
|
_tpagsca->setkey(1);
|
|
_tpagsca->zero();
|
|
_tpagsca->put(PAGSCA_TIPOC, tipo);
|
|
_tpagsca->put(PAGSCA_GRUPPO, gruppo);
|
|
_tpagsca->put(PAGSCA_CONTO, conto);
|
|
_tpagsca->put(PAGSCA_SOTTOCONTO, sottoc);
|
|
_tpagsca->put(PAGSCA_ANNO, anno);
|
|
_tpagsca->put(PAGSCA_NUMPART, numpart);
|
|
_tpagsca->put(PAGSCA_NRIGA, nriga);
|
|
_tpagsca->put(PAGSCA_NRATA, nrata);
|
|
_tpagsca->put(PAGSCA_NRIGP, nrigp);
|
|
|
|
if (_tpagsca->read() == NOERR)
|
|
{
|
|
_tpagsca->put(PAGSCA_TIPOC, tipo);
|
|
_tpagsca->put(PAGSCA_GRUPPO, gruppo);
|
|
_tpagsca->put(PAGSCA_CONTO, conto);
|
|
_tpagsca->put(PAGSCA_SOTTOCONTO, sottoc);
|
|
_tpagsca->put(PAGSCA_ANNO, anno);
|
|
_tpagsca->put(PAGSCA_NUMPART, numpart);
|
|
_tpagsca->put(PAGSCA_NRIGA, nriga);
|
|
_tpagsca->put(PAGSCA_NRATA, nrata);
|
|
_tpagsca->put(PAGSCA_NRIGP, nrigp);
|
|
_tpagsca->put(PAGSCA_ACCSAL, accsal);
|
|
_tpagsca->put(PAGSCA_IMPORTO, importo);
|
|
_tpagsca->put(PAGSCA_RITENUTE, ritenute);
|
|
_tpagsca->put(PAGSCA_RITSOC, ritsoc);
|
|
_tpagsca->put(PAGSCA_ABBUONI, abbuoni);
|
|
_tpagsca->put(PAGSCA_DIFFCAM, diffcam);
|
|
_tpagsca->put(PAGSCA_IMPORTOVAL, impval);
|
|
_tpagsca->put(PAGSCA_TIPOCC, tipoc);
|
|
_tpagsca->put(PAGSCA_GRUPPOC, gruppoc);
|
|
_tpagsca->put(PAGSCA_CONTOC, contoc);
|
|
_tpagsca->put(PAGSCA_SOTTOCONTC, sottocc);
|
|
_tpagsca->put(PAGSCA_CODABIPR, nsabi);
|
|
_tpagsca->put(PAGSCA_CODCABPR, nscab);
|
|
_tpagsca->put(PAGSCA_CODABI, vsabi);
|
|
_tpagsca->put(PAGSCA_CODCAB, vscab);
|
|
_tpagsca->put(PAGSCA_CODAG, codag);
|
|
_tpagsca->put(PAGSCA_PASSATT, passat);
|
|
|
|
_tpagsca->rewrite();
|
|
}
|
|
else
|
|
{
|
|
_tpagsca->put(PAGSCA_TIPOC, tipo);
|
|
_tpagsca->put(PAGSCA_GRUPPO, gruppo);
|
|
_tpagsca->put(PAGSCA_CONTO, conto);
|
|
_tpagsca->put(PAGSCA_SOTTOCONTO, sottoc);
|
|
_tpagsca->put(PAGSCA_ANNO, anno);
|
|
_tpagsca->put(PAGSCA_NUMPART, numpart);
|
|
_tpagsca->put(PAGSCA_NRIGA, nriga);
|
|
_tpagsca->put(PAGSCA_NRATA, nrata);
|
|
_tpagsca->put(PAGSCA_NRIGP, nrigp);
|
|
_tpagsca->put(PAGSCA_ACCSAL, accsal);
|
|
_tpagsca->put(PAGSCA_IMPORTO, importo);
|
|
_tpagsca->put(PAGSCA_RITENUTE, ritenute);
|
|
_tpagsca->put(PAGSCA_RITSOC, ritsoc);
|
|
_tpagsca->put(PAGSCA_ABBUONI, abbuoni);
|
|
_tpagsca->put(PAGSCA_DIFFCAM, diffcam);
|
|
_tpagsca->put(PAGSCA_IMPORTOVAL, impval);
|
|
_tpagsca->put(PAGSCA_TIPOCC, tipoc);
|
|
_tpagsca->put(PAGSCA_GRUPPOC, gruppoc);
|
|
_tpagsca->put(PAGSCA_CONTOC, contoc);
|
|
_tpagsca->put(PAGSCA_SOTTOCONTC, sottocc);
|
|
_tpagsca->put(PAGSCA_CODABIPR, nsabi);
|
|
_tpagsca->put(PAGSCA_CODCABPR, nscab);
|
|
_tpagsca->put(PAGSCA_CODABI, vsabi);
|
|
_tpagsca->put(PAGSCA_CODCAB, vscab);
|
|
_tpagsca->put(PAGSCA_CODAG, codag);
|
|
_tpagsca->put(PAGSCA_PASSATT, passat);
|
|
|
|
_tpagsca->write();
|
|
}
|
|
}
|
|
}
|
|
|
|
bool TVar_sc::leggi_trasfer()
|
|
{
|
|
_trasf = _tras_file.path(_dittaric);
|
|
_trasf << HEADER;
|
|
|
|
_tras_file.open(_trasf);
|
|
|
|
if (_tras_file.exist())
|
|
{
|
|
if (_tras_file.read_control_rec())
|
|
_control_rec = _tras_file.record();
|
|
else
|
|
return error_box(TR("Rilevati gravi errori negli archivi:procedura interrotta"));
|
|
}
|
|
else
|
|
return error_box(TR("Al momento non presenti trasferimenti attivi sulla ditta selezionata"));
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
bool TVar_sc::esegui_controlli()
|
|
{
|
|
TConfig conf(CONFIG_DITTA);
|
|
|
|
_std = conf.get("FlStTra");
|
|
|
|
if (!prefix().exist(_dittaric))
|
|
return error_box(TR("Gli archivi della ditta %05ld non esistono."), _dittaric);
|
|
|
|
if (!leggi_trasfer())
|
|
return FALSE;
|
|
|
|
if (!controlli())
|
|
return FALSE;
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
void TVar_sc::setta_parametri_record(const TString& sigla,const TString& flag)
|
|
{
|
|
TConfig conf (CONFIG_DITTA);
|
|
|
|
conf.set("FlStTra", flag);
|
|
|
|
leggi_record_controllo();
|
|
_control_rec.overwrite(sigla,240);
|
|
|
|
const int size = 1024;
|
|
|
|
_tras_file.write_control_rec(_control_rec, size);
|
|
}
|
|
|
|
bool TVar_sc::controlli()
|
|
{
|
|
TString16 chiave,sigla;
|
|
|
|
chiave = _control_rec.sub(241,256);
|
|
chiave.trim();
|
|
sigla = _control_rec.sub(240,241);
|
|
sigla.trim();
|
|
|
|
if (_std == "M" && sigla == "Z" && chiave != "")
|
|
return error_box(TR("Variazione NON POSSIBILE: trasferimento movimenti gia' iniziato"));
|
|
|
|
if (_std == "M" && sigla == "U")
|
|
return error_box(TR("Variazione NON POSSIBILE: trasferimento movimenti gia' iniziato"));
|
|
|
|
if (_std == "M" && sigla == "B")
|
|
return error_box(TR("Variazione NON POSSIBILE: trasferimento movimenti saldaconto gia' iniziato"));
|
|
|
|
if (_std == "*")
|
|
{
|
|
warning_box(TR("Trasferimento interamente completato: proseguire per cancellare il file"));
|
|
_tras_file.remove_all();
|
|
setta_parametri_record(" "," ");
|
|
return FALSE;
|
|
}
|
|
|
|
if (_std == "T")
|
|
return error_box(TR("Variazione NON POSSIBILE: eseguire prima la ricezione delle tabelle"));
|
|
|
|
const bool is_sc = _control_rec.sub(86,95).find('B') >= 0;
|
|
if (!is_sc)
|
|
return error_box(TR("Variazione NON POSSIBILE: non esistono movimenti saldaconto."));
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
bool TVar_sc::menu(MENU_TAG m)
|
|
{
|
|
if (m == BAR_ITEM_ID(1))
|
|
return main_loop();
|
|
return FALSE;
|
|
}
|
|
|
|
|