campo-sirio/ve/ve6200.cpp
guy 23400d464d Corretta la selezione sulla data documenti, put_str su TDocumento e
inizializzazione di _sconto in un costruttore di TDocumento.


git-svn-id: svn://10.65.10.50/trunk@3832 c028cbd2-c16b-5b4b-a496-9718f37d4682
1996-10-28 11:56:48 +00:00

129 lines
3.8 KiB
C++
Executable File

#include <applicat.h>
#include <mask.h>
#include <progind.h>
#include <urldefid.h>
#include "velib01.h"
#include "ve6200a.h"
class TFatturazione_bolle_app : public TApplication
{
TArray _file;
void open_files(int logicnum, ...);
protected: // TApplication
virtual bool create();
virtual bool menu(MENU_TAG mt);
public:
TFatturazione_bolle_app() { }
virtual ~TFatturazione_bolle_app() { }
};
void TFatturazione_bolle_app::open_files(int logicnum, ...)
{
va_list marker;
va_start(marker, logicnum);
while (logicnum > 0)
{
CHECKD(_file.objptr(logicnum) == NULL, "File gia' aperto: ", logicnum);
_file.add(new TLocalisamfile(logicnum), logicnum);
logicnum = va_arg(marker, int);
}
}
bool TFatturazione_bolle_app::create()
{
open_files(LF_TABCOM, LF_CLIFO, LF_CFVEN, LF_DOC, LF_RIGHEDOC, 0);
dispatch_e_menu(MENU_ITEM(1));
return TRUE;
}
bool TFatturazione_bolle_app::menu(MENU_TAG)
{
TMask m("ve6200a");
while (m.run() == K_ENTER)
{
TIndwin iw(48, "Inizializzazione ...\n ", TRUE, FALSE, 48);
begin_wait();
const TDate data_elab = m.get(F_DATA_ELAB);
const int anno = data_elab.year();
const long dc = m.get_long(F_CODICE_CLIFO_DA);
const long ac = m.get_long(F_CODICE_CLIFO_A);
const long da = m.get_long(F_CODICE_AGENTE_DA);
const long aa = m.get_long(F_CODICE_AGENTE_A);
const long dz = m.get_long(F_CODICE_ZONA_DA);
const long az = m.get_long(F_CODICE_ZONA_A);
const TDate dd = m.get(F_DATA_DOCUMENTO_DA);
TString st_da = m.get(F_DATA_DOCUMENTO_A);
const TDate ad = st_da.not_empty() ? (const char*)st_da : data_elab;
const TString& codnum = m.get(F_CODICE_NUMERAZIONE);
const long dn = m.get_long(F_NUMERO_DOCUMENTO_DA);
const long an = m.get_long(F_NUMERO_DOCUMENTO_A);
TFatturazione_bolle eld(m.get(F_CODICE_ELAB));
TToken_string tipidoc(24), statidoc(10);
eld.tipi_validi(tipidoc);
eld.stati_validi(statidoc);
TLista_clienti clienti;
const int tot_cli = clienti.leggi(dc, ac, da, aa, dz, az);
TString msg(80);
for (int c = 0; c < tot_cli && !iw.iscancelled(); c++)
{
const long codcli = clienti[c]; // Codice cliente in esame
msg = "Elaborazione dei documenti del cliente ";
msg << codcli << " ...";
iw.set_text(msg); // Messaggio sul cliente
do_events(); // Attende visualizzazione
TLista_documenti din, dout; // Legge tutti i documenti di input
din.read('D', 'C', codcli, anno, tipidoc, statidoc, dd, ad, codnum, dn, an);
if (din.items() == 0)
continue;
// Crea documenti di output
bool ok = eld.elabora(din, dout, data_elab);
if (ok)
{
msg << '\n' << din.items() << " documenti raggruppati in " << dout.items();
iw.set_text(msg); // Messaggio sul cliente
do_events(); // Attende visualizzazione
int err = dout.write(); // Scrive documenti di output
if (err == NOERR)
{
err = din.rewrite(); // Aggiorna stato dei documenti di input
if (err != NOERR)
ok = error_box("Errore %d durante la scrittura dei documenti raggruppati!", err);
}
else
ok = error_box("Errore %d durante l'aggiornamento dei documenti da raggruppare!", err);
}
else
{
ok = error_box("I documenti relativi al cliente %ld non sono stati elaborati.",
codcli);
}
if (!ok) // In case di errore ...
break; // ... termina qui l'elaborazione.
}
end_wait();
}
return FALSE;
}
int ve6200 (int argc, char **argv)
{
TFatturazione_bolle_app a;
a.run (argc, argv, "Fatturazione Bolle");
return TRUE;
}