Cancellaggio partite inutili
git-svn-id: svn://10.65.10.50/trunk@1143 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
c40612059d
commit
7151add9d7
138
sc/sc1100.cpp
138
sc/sc1100.cpp
@ -7,20 +7,37 @@
|
||||
#include <scadenze.h>
|
||||
#include <partite.h>
|
||||
#include <lffiles.h>
|
||||
|
||||
#include <assoc.h>
|
||||
|
||||
#include "sc1100.h"
|
||||
|
||||
class _BoolObj : public TObject
|
||||
{
|
||||
public:
|
||||
|
||||
bool _val;
|
||||
int _count;
|
||||
|
||||
_BoolObj() { _val = FALSE; _count = 0; }
|
||||
virtual ~_BoolObj() {}
|
||||
};
|
||||
|
||||
class TDeletepart_app : public TApplication
|
||||
{
|
||||
static TDate _datalimite;
|
||||
TDate _datalimite;
|
||||
|
||||
protected:
|
||||
|
||||
virtual bool create();
|
||||
virtual bool destroy();
|
||||
virtual bool menu(MENU_TAG m);
|
||||
static bool partchiuseal(const TRelation *r);
|
||||
static TDeletepart_app& app() { return (TDeletepart_app&)main_app(); }
|
||||
|
||||
public:
|
||||
|
||||
TDate& datalimite() { return _datalimite; }
|
||||
|
||||
TDeletepart_app() {};
|
||||
~TDeletepart_app() {};
|
||||
};
|
||||
@ -39,7 +56,8 @@ bool TDeletepart_app::destroy()
|
||||
|
||||
bool TDeletepart_app::partchiuseal(const TRelation *r)
|
||||
{
|
||||
return (r->lfile().get_bool(PART_CHIUSA) && (r->lfile().get_date(PART_DATAREG) <= _datalimite));
|
||||
return (/* r->lfile().get_bool(PART_CHIUSA) && */
|
||||
(app().datalimite() >= r->lfile().get_date(PART_DATAREG)));
|
||||
}
|
||||
|
||||
bool TDeletepart_app::menu(MENU_TAG)
|
||||
@ -48,6 +66,7 @@ bool TDeletepart_app::menu(MENU_TAG)
|
||||
TRelation partite(LF_PARTITE);
|
||||
TCursor cur(&partite);
|
||||
TLocalisamfile scadenze(LF_SCADENZE);
|
||||
TAssoc_array to_zap;
|
||||
|
||||
while (m.run() != K_QUIT)
|
||||
{
|
||||
@ -59,20 +78,41 @@ bool TDeletepart_app::menu(MENU_TAG)
|
||||
TRecnotype total = 0;
|
||||
int lastanno = -1;
|
||||
TString16 lastpart = "";
|
||||
TToken_string id(12);
|
||||
|
||||
for (cur = 0; cur.pos() <= last; ++cur)
|
||||
{
|
||||
{
|
||||
// build key
|
||||
id = cur.curr().get(PART_ANNO);
|
||||
id.add(cur.curr().get(PART_NUMPART));
|
||||
|
||||
if (!to_zap.is_key(id))
|
||||
to_zap.add(id, new _BoolObj);
|
||||
|
||||
_BoolObj& bobj = (_BoolObj&)to_zap[id];
|
||||
|
||||
bobj._count ++;
|
||||
if (cur.curr().get_bool(PART_CHIUSA))
|
||||
bobj._val = TRUE;
|
||||
|
||||
if (lastanno != cur.curr().get_int(PART_ANNO) ||
|
||||
lastpart != cur.curr().get(PART_NUMPART));
|
||||
{
|
||||
{
|
||||
total++;
|
||||
lastanno = cur.curr().get_int(PART_ANNO);
|
||||
lastpart = cur.curr().get(PART_NUMPART);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (total == 0)
|
||||
{
|
||||
warning_box("Nessuna partita da cancellare");
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
TString80 caption("Cancellazione di ");
|
||||
|
||||
caption.add_plural(total, "cur.curr()");
|
||||
caption.add_plural(total, "partita");
|
||||
if (!yesno_box(caption) || total < 1)
|
||||
continue;
|
||||
|
||||
@ -80,53 +120,65 @@ bool TDeletepart_app::menu(MENU_TAG)
|
||||
|
||||
cur.freeze();
|
||||
lastanno = -1;
|
||||
int err = NOERR;
|
||||
int err = NOERR;
|
||||
|
||||
for (cur = 0; cur.pos() <= last; ++cur)
|
||||
{
|
||||
const int anno = cur.curr().get_int(PART_ANNO);
|
||||
const TString16 partita = cur.curr().get(PART_NUMPART);
|
||||
|
||||
id = cur.curr().get(PART_ANNO);
|
||||
id.add(cur.curr().get(PART_NUMPART));
|
||||
|
||||
_BoolObj& bobj = (_BoolObj&)to_zap[id];
|
||||
|
||||
err = cur.lock();
|
||||
if (err == NOERR && (lastanno != cur.curr().get_int(PART_ANNO) ||
|
||||
lastpart != cur.curr().get(PART_NUMPART)));
|
||||
if (err == NOERR && bobj._val == TRUE);
|
||||
{
|
||||
for (int rig = 1; err == NOERR; rig++)
|
||||
{
|
||||
scadenze.put(PART_ANNO, lastanno);
|
||||
scadenze.put(PART_NUMPART, lastpart);
|
||||
scadenze.put(PART_NRIGA, rig);
|
||||
if (scadenze.read(_isequal, _lock) == NOERR)
|
||||
err = scadenze.remove();
|
||||
if (err != NOERR)
|
||||
caption.format("riga scadenza %d", rig);
|
||||
{
|
||||
scadenze.zero();
|
||||
scadenze.put(SCAD_ANNO, anno);
|
||||
scadenze.put(SCAD_NUMPART, partita);
|
||||
scadenze.put(SCAD_NRATA, rig);
|
||||
if ((err = scadenze.read(_isequal, _lock)) == NOERR)
|
||||
if (scadenze.remove() != NOERR)
|
||||
{
|
||||
caption.format("riga scadenza %d", rig);
|
||||
break;
|
||||
}
|
||||
}
|
||||
pi.addstatus(1);
|
||||
lastanno = cur.curr().get_int(PART_ANNO);
|
||||
lastpart = cur.curr().get(PART_NUMPART);
|
||||
}
|
||||
if (err == NOERR)
|
||||
{
|
||||
err = cur.file().remove();
|
||||
if (err != NOERR)
|
||||
caption = "riga %d";
|
||||
}
|
||||
else
|
||||
{
|
||||
error_box("Errore %d nella cancellazione della %s della partita %d/%s",
|
||||
err, (const char*)caption, anno, partita);
|
||||
break;
|
||||
}
|
||||
}
|
||||
for (int rig = 1; lastanno > 0 && err == NOERR; rig++)
|
||||
{
|
||||
scadenze.put(SCAD_ANNO, lastanno);
|
||||
scadenze.put(SCAD_NUMPART, lastpart);
|
||||
scadenze.put(SCAD_NRATA, rig);
|
||||
if (scadenze.read(_isequal, _lock) == NOERR)
|
||||
err = scadenze.remove();
|
||||
|
||||
err = cur.file().remove();
|
||||
if (err != NOERR)
|
||||
caption.format("riga scadenza %d", rig);
|
||||
caption = "riga partite";
|
||||
}
|
||||
} // eliminate partite e scadenze scelte
|
||||
|
||||
// cerca scadenze senza partita
|
||||
TLocalisamfile& part = cur.file();
|
||||
|
||||
for (scadenze.first(); !scadenze.eof() && err == NOERR; scadenze.next())
|
||||
{
|
||||
part.zero();
|
||||
part.put(PART_ANNO, scadenze.get(SCAD_ANNO));
|
||||
part.put(PART_NUMPART, scadenze.get(SCAD_NUMPART));
|
||||
|
||||
// se non c'e'
|
||||
if (part.read(_isgteq) != NOERR)
|
||||
err = scadenze.remove();
|
||||
if (err != NOERR)
|
||||
caption = "riga scadenze";
|
||||
}
|
||||
|
||||
if (err != NOERR)
|
||||
{
|
||||
error_box("Errore %d nella cancellazione della %s della partita %d/%s",
|
||||
err, (const char*)caption, lastanno, lastpart);
|
||||
break;
|
||||
}
|
||||
|
||||
cur.freeze(FALSE);
|
||||
}
|
||||
|
||||
@ -137,6 +189,6 @@ bool TDeletepart_app::menu(MENU_TAG)
|
||||
int sc1100(int argc, char** argv)
|
||||
{
|
||||
TDeletepart_app a;
|
||||
a.run(argc, argv, "Eliminazione partita chiuse");
|
||||
a.run(argc, argv, "Eliminazione partite chiuse");
|
||||
return 0;
|
||||
}
|
||||
|
@ -1,25 +1,21 @@
|
||||
#include "sc1100.h"
|
||||
|
||||
PAGE "Eliminazione Partite Chiuse" -1 -1 42 9
|
||||
PAGE "Eliminazione Partite Chiuse" -1 -1 48 10
|
||||
|
||||
TEXT DLG_NULL 40 3
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 1 1 "Attenzione "
|
||||
PROMPT 2 1 " ATTENZIONE"
|
||||
FLAGS "UM"
|
||||
END
|
||||
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 19 1 "ATTENZIONE"
|
||||
PROMPT 1 3 "La cancellazione della partite puo' richiedere"
|
||||
END
|
||||
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 2 3 "La cancellazione della partite puo' richiedere"
|
||||
END
|
||||
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 6 4 "tempo. Siate certi di voler proseguire."
|
||||
PROMPT 1 4 " tempo. Siate certi di voler proseguire."
|
||||
END
|
||||
|
||||
DATE F_DATE
|
||||
@ -28,6 +24,7 @@ BEGIN
|
||||
HELP "Data Sino a cui eliminare le partite"
|
||||
CHECKTYPE REQUIRED
|
||||
WARNING "Si deve specificare la data sino a cui eliminare le partite chiuse"
|
||||
FLAGS "A"
|
||||
END
|
||||
|
||||
BUTTON DLG_OK 10 2
|
||||
|
@ -5,6 +5,8 @@
|
||||
#include <saldi.h>
|
||||
#include <partite.h>
|
||||
#include <scadenze.h>
|
||||
#include <lffiles.h>
|
||||
#include <relation.h>
|
||||
|
||||
#include "sc1200.h"
|
||||
|
||||
@ -34,37 +36,38 @@ bool TCreatepart_app::destroy()
|
||||
bool TCreatepart_app::menu(MENU_TAG)
|
||||
{
|
||||
TMask m("sc1200a");
|
||||
TRelation saldi(LF_SALDI);
|
||||
TLocalisamfile conti(LF_CONTI);
|
||||
|
||||
saldi.zero();
|
||||
TRelation saldi(LF_SALDI);
|
||||
TLocalisamfile conti(LF_PCON);
|
||||
saldi.zero();
|
||||
|
||||
while (m.run() != K_QUIT)
|
||||
{
|
||||
const int anno = m.get_int(F_ANNO);
|
||||
|
||||
saldi.put(SLD_ANNO, anno);
|
||||
TCursor cur(&saldi, "", 1, saldi.curr(), saldi.curr());
|
||||
const int items = cur.items();
|
||||
long npart = 0L;
|
||||
// saldi.curr().put(SLD_ANNO, anno);
|
||||
TCursor cur(&saldi, "", 1, &saldi.curr(), &saldi.curr());
|
||||
const long items = cur.items();
|
||||
long npart = 0L;
|
||||
|
||||
if (items > 0)
|
||||
{
|
||||
for (cur = 0 ; cur.pos() < items; cur++)
|
||||
{
|
||||
if (is_clifo(cur.curr().get_int(SLD_GRUPPO), cur.curr().get_int(SLD_CONTO))
|
||||
{
|
||||
TSaldo s(????);
|
||||
Timporto saldo(s.saldo??);
|
||||
// if (items > 0)
|
||||
// {
|
||||
// for (cur = 0 ; cur.pos() < items; ++cur)
|
||||
// {
|
||||
// if (is_clifo(cur.curr().get_int(SLD_GRUPPO), cur.curr().get_int(SLD_CONTO)))
|
||||
// {
|
||||
// TSaldo s(????);
|
||||
// Timporto saldo(s.saldo??);
|
||||
|
||||
if (saldo != ZERO)
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
message_box("Nessun saldo presente per l'anno %d", anno);
|
||||
|
||||
// if (saldo != ZERO)
|
||||
// {
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// else
|
||||
// message_box("Nessun saldo presente per l'anno %d", anno);
|
||||
|
||||
} // while run
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
@ -1,2 +1,2 @@
|
||||
|
||||
|
||||
#define F_ANNO 101
|
110
sc/sc1200a.uml
110
sc/sc1200a.uml
@ -1,55 +1,55 @@
|
||||
#include "sc1200.h"
|
||||
|
||||
PAGE "Apertura partite da saldi contabili" -1 -1 47 10
|
||||
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 18 1 "ATTENZIONE"
|
||||
END
|
||||
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 2 3 "La generazione della partite puo' richiedere"
|
||||
END
|
||||
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 5 4 "tempo. Siate certi di voler proseguire."
|
||||
END
|
||||
|
||||
NUMBER F_ANNO 4
|
||||
BEGIN
|
||||
PROMPT 3 6 "Anno di esercizio "
|
||||
USE ESC
|
||||
INPUT CODTAB F_ANNO
|
||||
DISPLAY "Anno Esercizio" CODTAB
|
||||
DISPLAY "Data inizio esercizio" D0
|
||||
DISPLAY "Data fine esercizio " D1
|
||||
OUTPUT F_ANNO CODTAB
|
||||
CHECKTYPE REQUIRED
|
||||
HELP "Anno di esercizio del quale si desidera la generazione delle partite"
|
||||
WARNING "L' anno di esercizio e' obbligatorio"
|
||||
END
|
||||
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 2 3 "La generazione delle partite puo' richiedere"
|
||||
END
|
||||
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 5 4 "tempo. Siate certi di voler proseguire."
|
||||
END
|
||||
|
||||
BUTTON DLG_OK 9 2
|
||||
BEGIN
|
||||
PROMPT -12 -1 "Conferma"
|
||||
END
|
||||
|
||||
BUTTON DLG_QUIT 9 2
|
||||
BEGIN
|
||||
PROMPT -22 -1 ""
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
ENDMASK
|
||||
#include "sc1200.h"
|
||||
|
||||
PAGE "Apertura partite da saldi contabili" -1 -1 47 10
|
||||
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 18 1 "ATTENZIONE"
|
||||
END
|
||||
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 2 3 "La generazione della partite puo' richiedere"
|
||||
END
|
||||
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 5 4 "tempo. Siate certi di voler proseguire."
|
||||
END
|
||||
|
||||
NUMBER F_ANNO 4
|
||||
BEGIN
|
||||
PROMPT 3 6 "Anno di esercizio "
|
||||
USE ESC
|
||||
INPUT CODTAB F_ANNO
|
||||
DISPLAY "Anno Esercizio" CODTAB
|
||||
DISPLAY "Data inizio esercizio" D0
|
||||
DISPLAY "Data fine esercizio " D1
|
||||
OUTPUT F_ANNO CODTAB
|
||||
CHECKTYPE REQUIRED
|
||||
HELP "Anno di esercizio del quale si desidera la generazione delle partite"
|
||||
WARNING "L' anno di esercizio e' obbligatorio"
|
||||
END
|
||||
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 2 3 "La generazione delle partite puo' richiedere"
|
||||
END
|
||||
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 5 4 "tempo. Siate certi di voler proseguire."
|
||||
END
|
||||
|
||||
BUTTON DLG_OK 9 2
|
||||
BEGIN
|
||||
PROMPT -12 -1 "Conferma"
|
||||
END
|
||||
|
||||
BUTTON DLG_QUIT 9 2
|
||||
BEGIN
|
||||
PROMPT -22 -1 ""
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
ENDMASK
|
||||
|
Loading…
x
Reference in New Issue
Block a user