campo-sirio/src/li/li0500.cpp
Alessandro Bonazzi 3b5937c9ea Patch level : 12.0 1064
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
2021-06-20 23:58:31 +02:00

298 lines
7.2 KiB
C++
Executable File
Raw Blame History

#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;
}