Files correlati : ve0.exe ve6.exe li0.exe li0100a.msk li0200a.msk
li0300a.msk limenu.men
Commento :
Modificato calcolo plafond per lo sconto di testata
Modificata la stampa della lista dichiarazioni
Aggiuto flag in configurazione per considerare tutti i documenti fattura/ nota di credito i qualsiasi stato non bloccato
Interno :
Il flag viene testat prima della configurazione attuale, se non spuntato il programma si deve comportare come ora.
il riepilogo lettere salvava aun file li0100a.ini nella cartella config che deve essere cancellato a mano
298 lines
7.2 KiB
C++
Executable File
298 lines
7.2 KiB
C++
Executable File
#include <applicat.h>
|
||
#include <automask.h>
|
||
#include <dongle.h>
|
||
#include <progind.h>
|
||
#include <relapp.h>
|
||
#include <reprint.h>
|
||
#include <tabutil.h>
|
||
|
||
#include "../ba/ba0100a.h"
|
||
|
||
#include "li0.h"
|
||
#include "li0500a.h"
|
||
#include "li0500b.h"
|
||
|
||
#include "letint.h"
|
||
|
||
//--------------------------------------------------------------
|
||
// MASCHERA
|
||
//--------------------------------------------------------------
|
||
class TPrint_letint_mask : public TAutomask
|
||
{
|
||
TDate _last_data;
|
||
protected:
|
||
bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
||
//bool ask_service_pwd();
|
||
|
||
public:
|
||
TPrint_letint_mask();
|
||
virtual ~TPrint_letint_mask() {}
|
||
};
|
||
|
||
TPrint_letint_mask::TPrint_letint_mask()
|
||
:TAutomask("li0500a")
|
||
{
|
||
_last_data = botime;
|
||
}
|
||
|
||
static TDate _da_data, _a_data;
|
||
static bool filtra_per_date(const TRelation* rel)
|
||
{
|
||
const TDate data = rel->curr().get(LETINT_DATAREG);
|
||
return data >= _da_data && data <= _a_data;
|
||
}
|
||
|
||
bool TPrint_letint_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||
{
|
||
|
||
switch (o.dlg())
|
||
{
|
||
case F_ANNO:
|
||
if (e == fe_modify || e == fe_init)
|
||
{
|
||
TTable reg("REG");
|
||
TString s(o.get()); s.lpad(4, '0');
|
||
|
||
_last_data = botime;
|
||
//o.mask().set(F_PAGINI, "");
|
||
reg.put("CODTAB", s);
|
||
|
||
for (int err = reg.read(_isgteq); s == reg.get("CODTAB").left(4) && err == NOERR; err = reg.next())
|
||
if (reg.get_int("I0") == 10)
|
||
{
|
||
//o.mask().set(F_PAGINI, reg.get("I1"));
|
||
_last_data = reg.get_date("D3");
|
||
}
|
||
|
||
}
|
||
break;
|
||
/*
|
||
case F_RIPRISTINA:
|
||
if (e == fe_button)
|
||
{
|
||
if (ask_service_pwd()) //chiede la pwd di servizio x ripristinare
|
||
{
|
||
TMask mask("li0500b"); //maschera per selezionare il mese ed anno da ripristinare
|
||
if (mask.run() == K_ENTER)
|
||
{
|
||
//ripristinare solo dichiarazioni del mese/anno selezionato
|
||
const int anno_rip = mask.get_int(F_ANNO);
|
||
const int mese_rip = mask.get_int(F_MESE);
|
||
|
||
TRectype darec(LF_LETINT), arec(LF_LETINT);
|
||
darec.put(LETINT_ANNO, anno_rip);
|
||
arec.put(LETINT_ANNO, anno_rip);
|
||
|
||
TRelation rel_letint(LF_LETINT);
|
||
|
||
_da_data = TDate(1, mese_rip, anno_rip);
|
||
if (mese_rip == 1)
|
||
_last_data = botime;
|
||
else
|
||
{
|
||
_last_data = _da_data;
|
||
--_last_data;
|
||
}
|
||
_a_data = TDate(31, 12, anno_rip);
|
||
|
||
TCursor cur_letint(&rel_letint, "", 1, &darec, &arec);
|
||
cur_letint.set_filterfunction(filtra_per_date);
|
||
|
||
const long items = cur_letint.items();
|
||
//ripristina solo se c'<27> qualcosa da ripristinare!
|
||
if (items > 0)
|
||
{
|
||
if (yesno_box(TR("Si desidera ripristinare %ld dichiarazioni?"), items))
|
||
if (yesno_box(TR("Si desidera veramente ripristinare %ld dichiarazioni?"), items))
|
||
{
|
||
cur_letint.freeze();
|
||
TProgind pi(items, "Ripristino dichiarazioni", false);
|
||
TRectype& rec_letint = rel_letint.curr();
|
||
|
||
for (cur_letint = 0; cur_letint.pos() < items; ++cur_letint)
|
||
{
|
||
pi.addstatus(1);
|
||
rec_letint.zero(LETINT_STAMPATO); //svuota il campo
|
||
rel_letint.rewrite(); //aggiorna fisicamente il file
|
||
}
|
||
|
||
TTable reg("REG");
|
||
TString s; s.format("%04d", anno_rip);
|
||
|
||
reg.put("CODTAB", s);
|
||
|
||
for (int err = reg.read(_isgteq); s == reg.get("CODTAB").left(4) && err == NOERR; err = reg.next())
|
||
if (reg.get_int("I0") == 10)
|
||
{
|
||
reg.put("D3", _last_data);
|
||
reg.rewrite();
|
||
}
|
||
else
|
||
reg.reread(_unlock);
|
||
}
|
||
else
|
||
return true;
|
||
else
|
||
return true;
|
||
} //end if(items>0)
|
||
else
|
||
message_box(TR("Non ci sono dichiarazioni da ripristinare nel periodo selezionato"));
|
||
} //end mask.run()
|
||
} //end ask_service_pwd()
|
||
} //end if(e==fe_button)
|
||
break;
|
||
*/
|
||
default:
|
||
break;
|
||
}
|
||
return true;
|
||
}
|
||
|
||
/*
|
||
bool TPrint_letint_mask::ask_service_pwd()
|
||
{
|
||
bool ok = false;
|
||
|
||
TMask mask("ba0100a");
|
||
mask.disable(F_USER);
|
||
mask.set(F_USER, "SERVIZIO");
|
||
|
||
if (mask.run() == K_ENTER)
|
||
{
|
||
const TDate oggi(TODAY);
|
||
TString16 pwd; pwd << dongle().administrator() << (oggi.month() + oggi.day());
|
||
ok = pwd == mask.get(F_PASSWORD);
|
||
}
|
||
if (!ok)
|
||
error_box(TR("Password di servizio errata!\nAccesso negato."));
|
||
|
||
return ok;
|
||
}
|
||
*/
|
||
|
||
//---------------------------------------------------------------
|
||
// REPORT
|
||
//---------------------------------------------------------------
|
||
class TLetint_report : public TProgram_report
|
||
{
|
||
word _last_printed_page;
|
||
|
||
protected:
|
||
virtual word last_printed_page() const { return _last_printed_page; }
|
||
|
||
public:
|
||
TLetint_report(int last_printed_page) : TProgram_report("li0500a") , _last_printed_page(last_printed_page) {}
|
||
~TLetint_report() {}
|
||
};
|
||
|
||
|
||
//---------------------------------------------------------------
|
||
// APPLICAZIONE
|
||
//---------------------------------------------------------------
|
||
class TPrint_letint : public TSkeleton_application
|
||
{
|
||
bool create();
|
||
void setta_stampato(TMask& mask, long last_page);
|
||
|
||
public:
|
||
virtual void main_loop();
|
||
};
|
||
|
||
void TPrint_letint::setta_stampato(TMask& mask, long last_page)
|
||
{
|
||
//settare solo dichiarazioni del mese/anno selezionato
|
||
const int anno = mask.get_int(F_ANNO);
|
||
const int mese = mask.get_int(F_MESE);
|
||
|
||
TRectype darec(LF_LETINT), arec(LF_LETINT);
|
||
darec.put(LETINT_ANNO, anno);
|
||
arec.put(LETINT_ANNO, anno);
|
||
|
||
TRelation rel_letint(LF_LETINT);
|
||
|
||
_da_data = TDate(1, mese, anno);
|
||
_a_data = _da_data;
|
||
_a_data.set_end_month();
|
||
|
||
TCursor cur_letint(&rel_letint, "", 1, &darec, &arec);
|
||
cur_letint.set_filterfunction(filtra_per_date);
|
||
|
||
const long items = cur_letint.items();
|
||
//trasferimento dati possibile solo se il file di destinazione e' vuoto
|
||
if (items > 0)
|
||
{
|
||
cur_letint.freeze();
|
||
TProgind pi(items, "Aggiornamento dichiarazioni", false);
|
||
TRectype& rec_letint = rel_letint.curr();
|
||
|
||
for (cur_letint = 0; cur_letint.pos() < items; ++cur_letint)
|
||
{
|
||
pi.addstatus(1);
|
||
rec_letint.put(LETINT_STAMPATO, "X"); //riempie il campo
|
||
rel_letint.rewrite(); //aggiorna fisicamente il file
|
||
}
|
||
} //end if(items>0)
|
||
|
||
TTable reg("REG");
|
||
TString s; s << anno; s.lpad(4, '0');
|
||
|
||
reg.put("CODTAB", s);
|
||
for (int err = reg.read(_isgteq, _lock); s == reg.get("CODTAB").left(4) && err == NOERR; err = reg.next())
|
||
if (reg.get_int("I0") == 10)
|
||
{
|
||
reg.put("I1", last_page);
|
||
reg.put("I2", last_page);
|
||
reg.put("D3", _a_data);
|
||
reg.rewrite();
|
||
}
|
||
else
|
||
reg.reread(_unlock);
|
||
}
|
||
|
||
bool TPrint_letint::create()
|
||
{
|
||
return TSkeleton_application::create();
|
||
}
|
||
|
||
void TPrint_letint::main_loop()
|
||
{
|
||
TFilename path;
|
||
TPrint_letint_mask m;
|
||
|
||
while (m.run() == K_ENTER)
|
||
{
|
||
TReport_book book;
|
||
word last_page = 0;
|
||
const int anno = m.get_int(F_ANNO);
|
||
|
||
_da_data = m.get_date(F_DAL);
|
||
if (!_da_data.ok())
|
||
_da_data = TDate(1, 1, anno);
|
||
_a_data = m.get_date(F_AL);
|
||
if (!_a_data.ok())
|
||
_a_data = TDate(31, 12, anno);
|
||
|
||
TLetint_report rep(last_page);
|
||
|
||
path = m.get(F_REPORT);
|
||
if (path.empty())
|
||
path = "li0500a";
|
||
rep.mask2report(m);
|
||
|
||
|
||
rep.recordset()->set_var("#DADATA", TVariant(_da_data));
|
||
rep.recordset()->set_var("#ADATA", TVariant(_a_data));
|
||
|
||
book.add(rep);
|
||
book.print_or_preview();
|
||
}
|
||
}
|
||
|
||
int li0500(int argc, char* argv[])
|
||
{
|
||
TPrint_letint a;
|
||
a.run(argc, argv, TR("Stampa dichiarazioni d'intento"));
|
||
return 0;
|
||
}
|
||
|