115 lines
2.8 KiB
C++
115 lines
2.8 KiB
C++
|
#include <applicat.h>
|
|||
|
|
|||
|
#include "../ve/velib.h"
|
|||
|
|
|||
|
class TAggiungi_listini_haba_app : public TSkeleton_application
|
|||
|
{
|
|||
|
private:
|
|||
|
TFilename _ini_name;
|
|||
|
|
|||
|
protected:
|
|||
|
virtual void main_loop();
|
|||
|
void check_doc();
|
|||
|
|
|||
|
public:
|
|||
|
bool load_ini(bool check);
|
|||
|
};
|
|||
|
|
|||
|
|
|||
|
/////////// Definizione delle funzioni membro ////////////
|
|||
|
|
|||
|
bool TAggiungi_listini_haba_app::load_ini(bool check)
|
|||
|
{
|
|||
|
//argc <20> un intero che specifica quanti parametri vengono passati al programma dalla linea di comando
|
|||
|
const int args = argc();
|
|||
|
|
|||
|
const int narg = check ? 3 : 2;
|
|||
|
|
|||
|
//argv <20> un array di null-terminated strings
|
|||
|
if (args <= narg)
|
|||
|
return false;
|
|||
|
|
|||
|
const TFixed_string arg = argv(narg);
|
|||
|
if ((arg[0] != '-' && arg[0] != '/') || (arg[1] != 'i' && arg[1] != 'I'))
|
|||
|
return false;
|
|||
|
|
|||
|
_ini_name = arg.mid(2);
|
|||
|
if (_ini_name.blank() && args > 3)
|
|||
|
_ini_name = argv(3);
|
|||
|
|
|||
|
//controlla che il file su cui deve scrivere ci sia; se non c'<27> d<> una segnalazione di errore
|
|||
|
if (!_ini_name.exist())
|
|||
|
return false;
|
|||
|
|
|||
|
return true;
|
|||
|
}
|
|||
|
|
|||
|
void TAggiungi_listini_haba_app::check_doc()
|
|||
|
{
|
|||
|
TConfig ini(_ini_name, "33");
|
|||
|
TString4 para; para.format("%d", LF_DOC);
|
|||
|
const int anno = ini.get_int(DOC_ANNO, para);
|
|||
|
TString4 mese; mese.format("%2d", TDate(ini.get(DOC_DATADOC)).month());
|
|||
|
|
|||
|
TTable listini("LGM");
|
|||
|
|
|||
|
for(int i = 1; ; i++)
|
|||
|
{
|
|||
|
TString4 riga; riga.format("%d,%d", LF_RIGHEDOC, i);
|
|||
|
|
|||
|
if(!ini.set_paragraph(riga))
|
|||
|
break;
|
|||
|
|
|||
|
if(ini.get(RDOC_CODARTMAG).empty())
|
|||
|
continue;
|
|||
|
|
|||
|
const TString& codart = ini.get(RDOC_CODART);
|
|||
|
const real importo(ini.get(RDOC_PREZZO));
|
|||
|
const TString& spessore = ini.get(RDOC_LIVELLO);
|
|||
|
|
|||
|
const TRectype& art = cache().get(LF_ANAMAG, codart);
|
|||
|
const TString16 gruppo = art.get(ANAMAG_GRMERC);
|
|||
|
|
|||
|
TString80 codtab;
|
|||
|
codtab << gruppo << mese << spessore;
|
|||
|
|
|||
|
listini.put("CODTAB", codtab);
|
|||
|
if(listini.read() != NOERR)
|
|||
|
{
|
|||
|
listini.put("CODTAB", codtab);
|
|||
|
listini.put("R0", importo);
|
|||
|
listini.rewrite_write();
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
void TAggiungi_listini_haba_app::main_loop() //definizione della member function main_loop, della classe TAggiungi_listini_haba_app
|
|||
|
{
|
|||
|
TString sw(argv(2)); sw.upper();
|
|||
|
const bool chk_doc = sw == "-V";
|
|||
|
|
|||
|
open_files(LF_TAB, LF_DOC, LF_RIGHEDOC, 0);
|
|||
|
|
|||
|
//mostra un messaggio di errore se non riesce ad aprire il file richiesto; nota la conversione dei tipi che
|
|||
|
//<2F> da eseguire quando devo passare una TString ad un %s
|
|||
|
if(!load_ini(chk_doc))
|
|||
|
{
|
|||
|
error_box(TR("Impossibile aprire il file '%s'"), (const char*)_ini_name);
|
|||
|
return;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
check_doc();
|
|||
|
message_box(TR("Importazione listini completata"));
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
////// Esecuzione del programma ///////////
|
|||
|
|
|||
|
int pd6411200(int argc, char** argv)
|
|||
|
{
|
|||
|
TAggiungi_listini_haba_app app;
|
|||
|
app.run(argc,argv,"Listini Haba");
|
|||
|
return 0;
|
|||
|
}
|