cacddb21b7
which included commits to RCS files with non-trunk default branches. git-svn-id: svn://10.65.10.50/trunk@3808 c028cbd2-c16b-5b4b-a496-9718f37d4682
213 lines
4.7 KiB
C++
Executable File
213 lines
4.7 KiB
C++
Executable File
#include <relapp.h>
|
|
#include <msksheet.h>
|
|
#include <sheet.h>
|
|
#include <utility.h>
|
|
#include <lffiles.h>
|
|
#include <clifo.h>
|
|
#include <effetti.h>
|
|
#include <cession.h>
|
|
#include "ef0.h"
|
|
#include "ef0100.h"
|
|
#include "ef0101.h"
|
|
|
|
class Variazione_Effetti: public TRelation_application
|
|
{
|
|
TMask* _msk;
|
|
TEffObb *_rel;
|
|
|
|
virtual const char* get_next_key();
|
|
TSheet_field& obb_sheet() const;
|
|
void obb_pack();
|
|
void common_f(const TMask& m);
|
|
virtual int read(TMask& m);
|
|
virtual int rewrite(const TMask& m);
|
|
virtual int write(const TMask& m);
|
|
bool user_create();
|
|
bool user_destroy();
|
|
virtual TMask* get_mask(int mode) {return _msk;}
|
|
virtual bool changing_mask(int mode) {return FALSE;}
|
|
public:
|
|
static bool codcf_handler(TMask_field& f, KEY k);
|
|
static bool effcomp_handler(TMask_field& f, KEY k);
|
|
virtual TRelation* get_relation() const {return _rel;}
|
|
Variazione_Effetti() {}
|
|
};
|
|
|
|
|
|
const char* Variazione_Effetti::get_next_key()
|
|
{
|
|
TLocalisamfile& effetti=_rel->lfile();
|
|
long nprogtr=1L;
|
|
|
|
if (!effetti.empty())
|
|
{
|
|
effetti.zero();
|
|
effetti.setkey(1);
|
|
effetti.last();
|
|
if (effetti.good())
|
|
nprogtr+=effetti.get_long(EFF_NPROGTR);
|
|
}
|
|
return format("%d|%ld",F_NPROGTR,nprogtr);
|
|
}
|
|
|
|
TSheet_field& Variazione_Effetti::obb_sheet() const
|
|
{
|
|
TSheet_field& o_sheet=(TSheet_field&) _msk->field(F_SHEET_EFF);
|
|
return o_sheet;
|
|
}
|
|
|
|
void Variazione_Effetti::obb_pack()
|
|
{
|
|
TArray& rows=obb_sheet().rows_array();
|
|
int nr=rows.items();
|
|
|
|
for (int i=0;i<nr;i++)
|
|
{
|
|
TToken_string& riga=(TToken_string&)rows[i];
|
|
if (riga.empty_items())
|
|
rows.destroy(i,FALSE);
|
|
}
|
|
}
|
|
|
|
void Variazione_Effetti::common_f(const TMask& m)
|
|
{
|
|
long nprogtr=m.get_long(F_NPROGTR);
|
|
|
|
_rel->lfile().zero();
|
|
m.autosave(_rel);
|
|
// LF_CESS SAVER!
|
|
_rel->destroy_rows();
|
|
obb_pack();
|
|
TArray& rows=obb_sheet().rows_array();
|
|
for (int i=0; i<rows.items();i++)
|
|
{
|
|
TToken_string& row=(TToken_string&)rows[i];
|
|
TRectype& rec=_rel->obbligato(i);
|
|
row.restart();
|
|
rec.zero();
|
|
rec.put(CES_NPROGTR,nprogtr);
|
|
rec.put(CES_NRIGA,i+1);
|
|
rec.put(CES_RAGSOC,row.get());
|
|
rec.put(CES_LOCALITA,row.get());
|
|
rec.put(CES_STATO,row.get_int());
|
|
rec.put(CES_COM,row.get());
|
|
}
|
|
}
|
|
|
|
int Variazione_Effetti::read(TMask& m)
|
|
{
|
|
m.autoload(_rel);
|
|
// LF_CESS loader!
|
|
TToken_string riga(80);
|
|
obb_sheet().reset();
|
|
for (int i=0; i<_rel->obbligati_items();i++)
|
|
{
|
|
TRectype& rec=_rel->obbligato(i);
|
|
riga.cut(0);
|
|
riga.add(rec.get(CES_RAGSOC));
|
|
riga.add(rec.get(CES_LOCALITA));
|
|
riga.add(rec.get(CES_STATO));
|
|
riga.add(rec.get(CES_COM));
|
|
obb_sheet().row(i)=riga;
|
|
}
|
|
return _rel->status();
|
|
}
|
|
|
|
int Variazione_Effetti::rewrite(const TMask& m)
|
|
{
|
|
common_f(m);
|
|
return _rel->rewrite(TRUE);
|
|
}
|
|
|
|
int Variazione_Effetti::write(const TMask& m)
|
|
{
|
|
common_f(m);
|
|
return _rel->write(TRUE);
|
|
}
|
|
|
|
|
|
bool Variazione_Effetti::user_create()
|
|
{
|
|
_msk = new TMask("ef0100a") ;
|
|
_rel = new TEffObb;
|
|
|
|
_msk->set_handler(F_CODCF,codcf_handler);
|
|
_msk->set_handler(F_EFFCOMP,effcomp_handler);
|
|
return TRUE;
|
|
}
|
|
|
|
bool Variazione_Effetti::user_destroy()
|
|
{
|
|
delete _msk;
|
|
delete _rel;
|
|
return TRUE;
|
|
}
|
|
|
|
bool Variazione_Effetti::codcf_handler(TMask_field& f, KEY k)
|
|
{
|
|
long codcf=atol(f.get()),n=0;
|
|
TString ragsoc(50);
|
|
TToken_string line;
|
|
TLocalisamfile clifo(LF_CLIFO);
|
|
TArray_sheet cli(-1,-1,59,20,"Clienti","Codice|Ragione sociale@50|Sospeso|Codice fiscale@18");
|
|
|
|
switch (k)
|
|
{
|
|
case K_TAB:
|
|
if (f.focusdirty()) // When changing focus put customer's name
|
|
{
|
|
clifo.zero();
|
|
clifo.setkey(1);
|
|
clifo.put(CLI_TIPOCF,"C");
|
|
clifo.put(CLI_CODCF,codcf);
|
|
clifo.read();
|
|
if (clifo.good())
|
|
{
|
|
ragsoc=clifo.get(CLI_RAGSOC);
|
|
f.mask().set(F_CFRAGSOC,(const char*)ragsoc);
|
|
} else
|
|
return FALSE;
|
|
}
|
|
break;
|
|
case K_F8: // If F8 was pressed perform customer's search
|
|
clifo.setkey(1);
|
|
clifo.first();
|
|
while (clifo.good() && clifo.get(CLI_TIPOCF)=="C")
|
|
{
|
|
line.cut(0);
|
|
if (codcf == clifo.get_long(CLI_CODCF)) n=cli.items();
|
|
line.add(clifo.get(CLI_CODCF));
|
|
line.add(clifo.get(CLI_RAGSOC));
|
|
line.add(clifo.get(CLI_SOSPESO));
|
|
line.add(clifo.get(CLI_COFI));
|
|
cli.add(line);
|
|
clifo.next();
|
|
}
|
|
cli.select(n);
|
|
if (cli.run()==K_ENTER)
|
|
{
|
|
line=cli.row(-1);
|
|
f.set(line.get(0));
|
|
f.mask().set(F_CFRAGSOC,line.get(1));
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
return TRUE;
|
|
}
|
|
|
|
bool Variazione_Effetti::effcomp_handler(TMask_field& f, KEY k)
|
|
{
|
|
if (!f.mask().get(F_NRATA).empty())
|
|
f.set("X");
|
|
return TRUE;
|
|
}
|
|
|
|
int ef0100(int argc, char* argv[])
|
|
{
|
|
Variazione_Effetti a ;
|
|
a.run(argc, argv, "Gestione effetti");
|
|
return 0;
|
|
}
|