Files correlati : pd6411 Ricompilazione Demo : [ ] Commento : Se la riga no e' di tipo A1, la salto git-svn-id: svn://10.65.10.50/branches/R_10_00@21220 c028cbd2-c16b-5b4b-a496-9718f37d4682
139 lines
3.9 KiB
C++
Executable File
139 lines
3.9 KiB
C++
Executable File
#include <applicat.h>
|
|
|
|
#include "../ve/velib.h"
|
|
|
|
//////////////////////////////////////////
|
|
//// TAGGIUNGI_LISTINI_HABA_APP ////
|
|
//////////////////////////////////////////
|
|
|
|
//Classe TAggiungi_listini_app
|
|
class TAggiungi_listini_haba_app : public TSkeleton_application
|
|
{
|
|
private:
|
|
TFilename _ini_name;
|
|
|
|
protected:
|
|
virtual bool check_autorization() const {return false;}
|
|
virtual const char * extra_modules() const {return "cg";}
|
|
|
|
virtual void main_loop();
|
|
void check_doc();
|
|
|
|
public:
|
|
bool load_ini(bool check);
|
|
};
|
|
|
|
|
|
//LOAD_INI: carica il file ini che contiene il documento
|
|
bool TAggiungi_listini_haba_app::load_ini(bool check)
|
|
{
|
|
//argc é 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 é 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'é dá una segnalazione di errore
|
|
if (!_ini_name.exist())
|
|
return false;
|
|
|
|
return true;
|
|
}
|
|
|
|
//CHECK_DOC: scorro il file ini e aggiungo alla tabella dei listini le righe mancanti
|
|
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("%02d", TDate(ini.get(DOC_DATADOC)).month());
|
|
|
|
TTable listini("LGM");
|
|
|
|
//scorro le righe documento, saltando quelle che non sono articoli,
|
|
//e fermandomi quando la set_paragraph fallisce dal momento che non so a priori
|
|
//quante sono le righe del documento
|
|
for(int i = 1; ; i++)
|
|
{
|
|
TString4 riga; riga.format("%d,%d", LF_RIGHEDOC, i);
|
|
|
|
if(!ini.set_paragraph(riga))
|
|
break;
|
|
|
|
if(ini.get(RDOC_TIPORIGA) != "A1")
|
|
continue;
|
|
|
|
if(ini.get(RDOC_CODARTMAG).empty())
|
|
continue;
|
|
|
|
const TString& codart = ini.get(RDOC_CODART);
|
|
|
|
//devo prendere il prezzo al Kg (salvato in USER9, campo virtuale) e non il prezzo della riga
|
|
const TString& r1 = ini.get(ini.get(RDOC_RG1));
|
|
const int inizio = r1.find("USER9=");
|
|
const int fine = r1.find("\\n", inizio);
|
|
TToken_string tmp(r1.sub(inizio, fine), '=');
|
|
const real importo(tmp.get(1));
|
|
|
|
real spessore(ini.get(RDOC_LIVELLO));
|
|
spessore.ceil();
|
|
|
|
//il gruppo va letto dall'anagrafica magazzino
|
|
const TString16 gruppo = cache().get(LF_ANAMAG, codart, ANAMAG_GRMERC);
|
|
|
|
TString80 codtab;
|
|
codtab << gruppo << mese << spessore;
|
|
|
|
listini.put("CODTAB", codtab);
|
|
//se fallisce la read, allora aggiungo la riga
|
|
if(listini.read() != NOERR)
|
|
{
|
|
listini.zero();
|
|
listini.put("CODTAB", codtab);
|
|
listini.put("R0", importo);
|
|
listini.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
|
|
//é 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;
|
|
}
|