1996-10-21 14:34:51 +00:00
|
|
|
#include <applicat.h>
|
|
|
|
#include <mask.h>
|
|
|
|
#include <maskfld.h>
|
|
|
|
#include <sheet.h>
|
|
|
|
#include <msksheet.h>
|
|
|
|
#include <urldefid.h>
|
|
|
|
#include <lffiles.h>
|
|
|
|
#include <clifo.h>
|
1996-10-23 17:18:20 +00:00
|
|
|
#include "effetti.h"
|
1996-10-21 14:34:51 +00:00
|
|
|
#include "ef0.h"
|
|
|
|
#include "ef0200.h"
|
|
|
|
|
|
|
|
class Creazione_Effetti_da_EC : public TApplication
|
|
|
|
{
|
|
|
|
TMask * _msk;
|
|
|
|
TArray_sheet * _Partite_aperte;
|
|
|
|
real _residuo;
|
|
|
|
|
|
|
|
void Load_Partite_Aperte(const long cli);
|
|
|
|
static bool Gen_Handler(TMask_field& f, KEY k);
|
1996-10-23 17:18:20 +00:00
|
|
|
static bool Gen_Notify(TSheet_field& sheet, int r, KEY k);
|
1996-10-21 14:34:51 +00:00
|
|
|
static bool Cli_Handler(TMask_field& f, KEY k);
|
|
|
|
virtual bool create();
|
|
|
|
virtual bool destroy();
|
|
|
|
virtual bool menu(MENU_TAG m);
|
|
|
|
public:
|
|
|
|
real get_res() {return _residuo;}
|
1996-10-23 17:18:20 +00:00
|
|
|
void set_res(const real& a) {_residuo = a;}
|
1996-10-21 14:34:51 +00:00
|
|
|
TMask* get_msk() {return _msk;}
|
|
|
|
Creazione_Effetti_da_EC() : _residuo(0.0) {}
|
|
|
|
};
|
|
|
|
|
|
|
|
inline Creazione_Effetti_da_EC& app() {return (Creazione_Effetti_da_EC&)main_app();}
|
|
|
|
|
|
|
|
void Creazione_Effetti_da_EC::Load_Partite_Aperte(const long cli)
|
|
|
|
{
|
|
|
|
/*
|
|
|
|
Caricamento partite aperte da E.C.
|
|
|
|
|
|
|
|
Questo che segue e' pseudo-codice; andra' verificato non appena
|
|
|
|
sara' completato lo scadenziario.
|
|
|
|
|
|
|
|
TLocalisamfile Ec(LF_........);
|
|
|
|
|
|
|
|
* Carica tutte le partite aperte del cliente *
|
|
|
|
|
|
|
|
Ec.zero();
|
|
|
|
Ec.put(EC_CODCLI,cli);
|
|
|
|
Ec.read();
|
|
|
|
|
|
|
|
Finche' si tratta dello stesso cliente...
|
|
|
|
|
|
|
|
while (Ec.good() && Ec.get_long(EC_CODCLI) == cli)
|
|
|
|
{
|
|
|
|
|
|
|
|
Controlla se la partita esaminata e' aperta...
|
|
|
|
|
|
|
|
if (Ec.get(EC_APERTA))
|
|
|
|
{
|
|
|
|
Con questo le carica tutte nello sheet...
|
|
|
|
|
|
|
|
TToken_string riga(80);
|
|
|
|
riga.cut(0);
|
|
|
|
riga.add(Ec.get(EC_ANNO));
|
|
|
|
riga.add(Ec.get(EC_NUMERO));
|
|
|
|
riga.add(Ec.get(EC_DATADOC));
|
|
|
|
riga.add(Ec.get(EC_SALDO));
|
|
|
|
_Partite_aperte->add(riga);
|
|
|
|
}
|
|
|
|
|
|
|
|
Legge il prossimo record
|
|
|
|
|
|
|
|
Ec.next()
|
|
|
|
}
|
|
|
|
*/
|
|
|
|
TToken_string riga(80);
|
|
|
|
riga.cut(0);
|
|
|
|
riga.add("");
|
|
|
|
riga.add("1994");
|
|
|
|
riga.add("1");
|
|
|
|
riga.add("10-11-94");
|
|
|
|
riga.add("19000000");
|
|
|
|
_Partite_aperte->add(riga);
|
|
|
|
riga.cut(0);
|
|
|
|
riga.add("");
|
|
|
|
riga.add("1994");
|
|
|
|
riga.add("2");
|
|
|
|
riga.add("11-11-94");
|
|
|
|
riga.add("18000000");
|
|
|
|
_Partite_aperte->add(riga);
|
|
|
|
riga.cut(0);
|
|
|
|
riga.add("");
|
|
|
|
riga.add("1994");
|
|
|
|
riga.add("3");
|
|
|
|
riga.add("16-11-94");
|
|
|
|
riga.add("23009000");
|
|
|
|
_Partite_aperte->add(riga);
|
|
|
|
riga.cut(0);
|
|
|
|
riga.add("");
|
|
|
|
riga.add("1994");
|
|
|
|
riga.add("4");
|
|
|
|
riga.add("19-11-94");
|
|
|
|
riga.add("450600");
|
|
|
|
_Partite_aperte->add(riga);
|
|
|
|
}
|
|
|
|
|
|
|
|
bool Creazione_Effetti_da_EC::Gen_Handler(TMask_field& f, KEY k)
|
|
|
|
{
|
|
|
|
if (k==K_TAB && f.focusdirty())
|
|
|
|
{
|
|
|
|
real importo=(real)(const char*)f.mask().get(F_RATA);
|
|
|
|
importo+=(real)(const char*)f.mask().get(F_SPESE);
|
|
|
|
importo+=(real)(const char*)f.mask().get(F_BOLLI);
|
|
|
|
f.mask().set(F_IMPEFF,importo.string("."));
|
|
|
|
f.set_focusdirty(FALSE);
|
|
|
|
}
|
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
|
1996-10-23 17:18:20 +00:00
|
|
|
bool Creazione_Effetti_da_EC::Gen_Notify(TSheet_field& sheet, int r, KEY k)
|
1996-10-21 14:34:51 +00:00
|
|
|
{
|
1996-12-17 12:06:03 +00:00
|
|
|
if (k == K_CTRL + K_DEL)
|
|
|
|
return TRUE;
|
|
|
|
if (k == K_INS)
|
1996-10-21 14:34:51 +00:00
|
|
|
{
|
|
|
|
if (app().get_res().is_zero())
|
|
|
|
{
|
|
|
|
warning_box("Residuo da ripartire gia' annullato");
|
|
|
|
return FALSE;
|
|
|
|
}
|
1996-12-17 12:06:03 +00:00
|
|
|
else
|
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
|
|
|
|
TToken_string & row = sheet.row(r);
|
|
|
|
const real importo(row.get(1));
|
|
|
|
static real old_rata;
|
|
|
|
|
|
|
|
switch (k)
|
|
|
|
{
|
1996-10-21 14:34:51 +00:00
|
|
|
case K_SPACE:
|
1996-10-23 17:18:20 +00:00
|
|
|
old_rata = importo;
|
1996-10-21 14:34:51 +00:00
|
|
|
break;
|
1996-10-23 17:18:20 +00:00
|
|
|
case K_DEL:
|
|
|
|
{
|
|
|
|
const real new_res = app().get_res() + importo;
|
|
|
|
|
|
|
|
app().set_res(new_res);
|
|
|
|
}
|
1996-10-21 14:34:51 +00:00
|
|
|
break;
|
|
|
|
case K_ENTER:
|
|
|
|
{
|
1996-10-23 17:18:20 +00:00
|
|
|
const real new_res = app().get_res() - importo + old_rata;
|
|
|
|
if (new_res < ZERO)
|
1996-10-21 14:34:51 +00:00
|
|
|
{
|
1996-10-23 17:18:20 +00:00
|
|
|
warning_box("Non e' possibile superare l'importo da ripartire");
|
|
|
|
if (old_rata.is_zero())
|
|
|
|
{
|
|
|
|
row.add(app().get_res().string(),1);
|
|
|
|
app().set_res(ZERO);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
row.add(old_rata.string(),1);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
app().set_res(new_res);
|
|
|
|
real totale = importo;
|
|
|
|
|
|
|
|
totale+= real(row.get(2));
|
|
|
|
totale+= real(row.get(3));
|
|
|
|
row.add(totale.string(),4);
|
|
|
|
}
|
1996-10-21 14:34:51 +00:00
|
|
|
break;
|
|
|
|
default:
|
|
|
|
break;
|
|
|
|
}
|
1996-10-23 17:18:20 +00:00
|
|
|
sheet.mask().set(F_RESIDUO,app().get_res().string("."));
|
1996-10-21 14:34:51 +00:00
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool Creazione_Effetti_da_EC::Cli_Handler(TMask_field&f, KEY k)
|
|
|
|
{
|
|
|
|
if (f.focusdirty())
|
|
|
|
{
|
1996-10-23 17:18:20 +00:00
|
|
|
TSheet_field& sheet =(TSheet_field&)f.mask().field(F_SHEET_EFF);
|
|
|
|
sheet.reset();
|
|
|
|
sheet.force_update();
|
1996-10-21 14:34:51 +00:00
|
|
|
}
|
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool Creazione_Effetti_da_EC::create()
|
|
|
|
{
|
|
|
|
_msk = new TMask("ef0200a");
|
1996-10-23 17:18:20 +00:00
|
|
|
TSheet_field& sheet = (TSheet_field&) _msk->field(F_SHEET_EFF);
|
|
|
|
sheet.set_notify(Gen_Notify);
|
|
|
|
sheet.enable_column(4,FALSE);
|
|
|
|
TMask& mask= sheet.sheet_mask();
|
|
|
|
mask.set_handler(F_RATA,Gen_Handler);
|
|
|
|
mask.set_handler(F_SPESE,Gen_Handler);
|
|
|
|
mask.set_handler(F_BOLLI,Gen_Handler);
|
1996-10-21 14:34:51 +00:00
|
|
|
_msk->set_handler(F_CODCF,Cli_Handler);
|
|
|
|
dispatch_e_menu(BAR_ITEM(1));
|
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool Creazione_Effetti_da_EC::destroy()
|
|
|
|
{
|
|
|
|
if (_msk != NULL) delete _msk;
|
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool Creazione_Effetti_da_EC::menu(MENU_TAG)
|
|
|
|
{
|
|
|
|
KEY tasto;
|
|
|
|
|
|
|
|
do {
|
|
|
|
tasto=get_msk()->run();
|
|
|
|
switch (tasto)
|
|
|
|
{
|
|
|
|
case K_ENTER: // first check if the application can write effects
|
|
|
|
{
|
1996-10-23 17:18:20 +00:00
|
|
|
TSheet_field& sheet =(TSheet_field&)get_msk()->field(F_SHEET_EFF);
|
|
|
|
if (!_residuo && sheet.items()>0)
|
1996-10-21 14:34:51 +00:00
|
|
|
message_box("Perform writing procedure...");
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case K_F6: //Selects opened counts from E.C.
|
|
|
|
{
|
|
|
|
_residuo=0.0;
|
|
|
|
_Partite_aperte = new TArray_sheet(-1,-1,0,0,"Selezione partite aperte","@1|Anno|Numero|Data documento|Saldo@15");
|
|
|
|
Load_Partite_Aperte(get_msk()->get_long(F_CODCF));
|
|
|
|
_Partite_aperte->run();
|
|
|
|
for (int i=0; i<_Partite_aperte->items(); i++)
|
|
|
|
if (_Partite_aperte->checked(i))
|
|
|
|
_residuo+=(real)_Partite_aperte->row(i).get(4);
|
|
|
|
delete _Partite_aperte;
|
|
|
|
get_msk()->set(F_RESIDUO,_residuo.string("."));
|
1996-10-23 17:18:20 +00:00
|
|
|
TSheet_field& sheet = (TSheet_field&)get_msk()->field(F_SHEET_EFF);
|
|
|
|
sheet.reset();
|
1996-10-21 14:34:51 +00:00
|
|
|
break;
|
|
|
|
}
|
|
|
|
default:
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
} while (tasto!=K_QUIT);
|
|
|
|
return FALSE;
|
|
|
|
}
|
|
|
|
|
|
|
|
int ef0200(int argc, char* argv[])
|
|
|
|
{
|
|
|
|
Creazione_Effetti_da_EC a ;
|
|
|
|
a.run(argc, argv, "Creazione effetti da E.C.");
|
|
|
|
return 0;
|
|
|
|
}
|