d030bbabe2
Files correlati : Ricompilazione Demo : [ ] Commento : Riportata la versione 3.1 patch 766 git-svn-id: svn://10.65.10.50/trunk@14628 c028cbd2-c16b-5b4b-a496-9718f37d4682
149 lines
3.7 KiB
C++
Executable File
149 lines
3.7 KiB
C++
Executable File
#include <applicat.h>
|
|
#include <automask.h>
|
|
#include <progind.h>
|
|
#include <relation.h>
|
|
|
|
#include "ve5300.h"
|
|
#include "velib.h"
|
|
|
|
///////////////////////////////////////////////////////////
|
|
// TPackdoc mask
|
|
///////////////////////////////////////////////////////////
|
|
|
|
class TPackdoc_mask : public TAutomask
|
|
{
|
|
protected:
|
|
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
|
|
|
public:
|
|
TPackdoc_mask() : TAutomask("ve5500a") { open(); }
|
|
};
|
|
|
|
bool TPackdoc_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
|
{
|
|
switch (o.dlg())
|
|
{
|
|
case F_FROM_NUM:
|
|
case F_TO_NUM:
|
|
case F_FROM_FRNDOC:
|
|
case F_FROM_TONDOC:
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
return TRUE;
|
|
}
|
|
|
|
///////////////////////////////////////////////////////////
|
|
// Main program
|
|
///////////////////////////////////////////////////////////
|
|
|
|
class TPackdoc_app : public TSkeleton_application
|
|
{
|
|
|
|
protected:
|
|
|
|
public:
|
|
virtual void main_loop();
|
|
};
|
|
|
|
void TPackdoc_app::main_loop()
|
|
{
|
|
open_files(LF_TAB, LF_TABCOM, LF_DOC, LF_RIGHEDOC, LF_CONDV, LF_RCONDV, LF_MOV,
|
|
LF_ANAMAG, LF_SCONTI, LF_UMART, LF_CLIFO, LF_CFVEN, LF_INDSP,
|
|
LF_OCCAS, LF_MOVMAG, LF_RMOVMAG, LF_SVRIEP, LF_AGENTI, LF_PERCPROV, 0);
|
|
|
|
TPackdoc_mask m;
|
|
while (m.run() == K_ENTER)
|
|
{
|
|
TRectype rec_from(LF_DOC);
|
|
rec_from.put(DOC_ANNO, m.get(F_FROM_ANNO));
|
|
rec_from.put(DOC_CODNUM, m.get(F_FROM_NUM));
|
|
rec_from.put(DOC_PROVV, m.get(F_FROM_PROVV));
|
|
rec_from.put(DOC_NDOC, m.get(F_FROM_FRNDOC));
|
|
|
|
TRectype rec_to(rec_from);
|
|
rec_to.put(DOC_NDOC, m.get(F_FROM_TONDOC));
|
|
|
|
TRelation rel(LF_DOC);
|
|
TCursor cur(&rel, "", 1, &rec_from, &rec_to);
|
|
|
|
long newdocnum = m.get_long(F_FROM_FRNDOC);
|
|
const long tot = cur.items();
|
|
|
|
cur.freeze();
|
|
if (newdocnum <= 0L)
|
|
newdocnum = 1L;
|
|
if (tot > 0L)
|
|
{
|
|
TProgind pi(tot, "Compattamento in corso...", FALSE, TRUE);
|
|
for (cur = 0; cur.pos() < tot; ++cur)
|
|
{
|
|
pi.addstatus(1);
|
|
|
|
TDocumento doc(cur.curr());
|
|
const char provv = doc.get_char(DOC_PROVV);
|
|
const int anno = doc.get_int(DOC_ANNO);
|
|
const TString4 codnum = doc.get(DOC_CODNUM);
|
|
const long ndoc = doc.get_long(DOC_NDOC);
|
|
|
|
if (ndoc > newdocnum)
|
|
{
|
|
TLocalisamfile rdocfile(LF_RIGHEDOC);
|
|
|
|
rdocfile.setkey(4);
|
|
rdocfile.put(RDOC_DAPROVV, provv);
|
|
rdocfile.put(RDOC_DAANNO, anno);
|
|
rdocfile.put(RDOC_DACODNUM, codnum);
|
|
rdocfile.put(RDOC_DANDOC, ndoc);
|
|
TRectype r(rdocfile.curr());
|
|
const int err = rdocfile.read(_isgteq);
|
|
|
|
if (rdocfile.curr() != r && (doc.get_long(DOC_NUMREG) == 0) && (doc.get_long(DOC_NUMANT) == 0))
|
|
{
|
|
TDocumento newdoc(doc);
|
|
newdoc.renum_ndoc(newdocnum);
|
|
newdoc.zero(DOC_MOVMAG);
|
|
newdoc.zero(DOC_NUMREG);
|
|
newdoc.zero(DOC_NUMANT);
|
|
newdoc.zero(DOC_NUMREGCA);
|
|
|
|
// Devo azzerare anche il numero di movmag sulle righe per rigenerarlo corretto
|
|
for (int r = newdoc.physical_rows(); r > 0; r--)
|
|
newdoc[r].zero(RDOC_MOVMAG);
|
|
|
|
int err = newdoc.write();
|
|
if (err == NOERR)
|
|
{
|
|
err = doc.remove();
|
|
if (err != NOERR)
|
|
{
|
|
error_box("Errore n.ro %d,nella cancellazione del\n documento %ld", err, ndoc);
|
|
break;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
error_box("Errore n.ro %d,nella creazione del\n documento %ld da l documento %ld", err, newdocnum, ndoc);
|
|
break;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
message_box("Il Documento %ld e' riferito in un altro documento.\nCompattamento interrotto", ndoc);
|
|
break;
|
|
}
|
|
}
|
|
newdocnum++;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
int ve5500(int argc, char* argv[])
|
|
{
|
|
TPackdoc_app a;
|
|
a.run(argc, argv, "Compattamento documenti");
|
|
return 0;
|
|
}
|