campo-sirio/src/ve/ve5800.cpp
francescofucarino 47de958f1a Patch level : 12.0 1024
Files correlati     : ve5.exe
Commento            :

Modificati i ve5800.cpp velib04.cpp ed .h aggiunti un filtro per selezionare solo i documenti da raggruppare.
2020-12-23 17:33:41 +01:00

143 lines
3.6 KiB
C++

#include "ve5.h"
#include "velib.h"
#include "ve5800a.h"
#include <applicat.h>
#include <automask.h>
#include <config.h>
#include <defmask.h>
#include <execp.h>
#include <incstr.h>
#include <golem.h>
#include <prefix.h>
#include <clifo.h>
#include <doc.h>
#include <rdoc.h>
#include "velib04.h"
#include "../mg/mglib.h"
///////////////////////////////////////////////////////////
// Maschera principale
///////////////////////////////////////////////////////////
class TRaggruppamento_documenti_mask : public TAutomask
{
protected:
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
public:
TRaggruppamento_documenti_mask();
virtual ~TRaggruppamento_documenti_mask() {}
};
bool selectfunc(const TRelation* r);
TRaggruppamento_documenti_mask::TRaggruppamento_documenti_mask() : TAutomask("ve5800a")
{
TEdit_field & da = efield(F_FRNDOC);
TCursor * cur_da = da.browse()->cursor();
cur_da->set_filterfunction(selectfunc); //nome funzione
TEdit_field & a = efield(F_FRNDOC);
TCursor * cur_a = a.browse()->cursor();
cur_a->set_filterfunction(selectfunc); //nome funzione
};
bool TRaggruppamento_documenti_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
{
switch (o.dlg())
{
case DLG_SAVEREC:
if (e == fe_button)
stop_run(K_AUTO_ENTER);
break;
default:
break;
}
return TRUE;
}
///////////////////////////////////////////////////////////
// Applicazione principale
///////////////////////////////////////////////////////////
class TRaggruppamento_documenti : public TSkeleton_application
{
TMask *_mask;
public:
void set_mask(TMask * m) { _mask = m; }
const TMask * get_mask() const { return _mask; }
void raggruppa_doc(const TMask & m);
virtual void main_loop();
};
TRaggruppamento_documenti & app() { return (TRaggruppamento_documenti &)main_app(); }
void TRaggruppamento_documenti::raggruppa_doc(const TMask & m)
{
TRaggruppamento_documento ragg(m.get(F_CODICE_ELAB));
TLista_documenti doc_ingresso;
TLista_documenti doc_uscita;
TToken_string tipi_iniziali;
TToken_string stati_iniziali;
TString numerazione_iniziale = ragg.codice_numerazione_iniziale();
const int anno = m.get_int(F_ANNO);
const long dal_ndoc = m.get_long(F_FRNDOC);
const long al_ndoc = m.get_long(F_TONDOC);
ragg.tipi_stati_iniziali(tipi_iniziali, stati_iniziali);
if (doc_ingresso.read('D', ' ', 0L, anno, tipi_iniziali, stati_iniziali,
nulldate, nulldate, numerazione_iniziale, dal_ndoc, al_ndoc) > 0)
{
if (ragg.elabora(doc_ingresso, doc_uscita, today))
{
if (doc_uscita.write(true) == NOERR)
{
if (doc_ingresso.rewrite() != NOERR)
fatal_box(TR("Errore nella scrittura documenti d'ingresso"));
}
else
fatal_box(TR("Errore nella scrittura documenti di destinazione"));
}
}
}
bool selectfunc(const TRelation* r)
{
const TMask * m = app().get_mask();
TRaggruppamento_documento ragg(m->get(F_CODICE_ELAB));
const TRectype & curr = r->lfile().curr();
return ragg.doc_ok(curr);
};
void TRaggruppamento_documenti::main_loop()
{
open_files(LF_TAB, LF_TABCOM, LF_DOC, LF_RIGHEDOC, LF_MOVMAG, NULL);
open_files(LF_ANAMAG, LF_CLIFO, LF_CFVEN, LF_OCCAS, LF_RMOVMAG, NULL);
TRaggruppamento_documenti_mask m;
m.set(F_CODDITTA, prefix().get_codditta(), true);
set_mask(&m);
while (m.run()==K_ENTER)
raggruppa_doc(m);
}
int ve5800(int argc, char** argv)
{
TRaggruppamento_documenti app;
app.run(argc, argv, TR("Raggruppamento documenti"));
return 0;
}