Patch level : Personalizzazione OMASA

Files correlati     : cgp4100a.msk cgp4.exe
Ricompilazione Demo : [ ]
Commento            : sistemata importazione stipendi con richieste Cinzia


git-svn-id: svn://10.65.10.50/trunk@12114 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
cris 2004-05-26 08:19:05 +00:00
parent aaf0b5ad9e
commit 9752ae07ed
3 changed files with 220 additions and 122 deletions

View File

@ -6,6 +6,7 @@
#include <execp.h> #include <execp.h>
#include <filetext.h> #include <filetext.h>
#include <progind.h> #include <progind.h>
#include <recarray.h>
#include <strings.h> #include <strings.h>
#include <utility.h> #include <utility.h>
@ -14,7 +15,9 @@
#include "cgp4100b.h" #include "cgp4100b.h"
#include "cglib01.h" #include "cglib01.h"
#include <causali.h>
#include <mov.h> #include <mov.h>
#include <pconti.h>
#include <rmov.h> #include <rmov.h>
@ -89,11 +92,6 @@ class TOmasa : public TSkeleton_application
long _numreg; long _numreg;
protected:
long ultima_registrazione();
void compila_testata(int anno,const TDate& datareg,const TString& codcaus,const TDate& datacomp);
void registra_pn();
public: public:
virtual bool create(); virtual bool create();
virtual bool destroy(); virtual bool destroy();
@ -130,26 +128,11 @@ bool TOmasa::destroy()
return TApplication::destroy(); return TApplication::destroy();
} }
long TOmasa::ultima_registrazione()
{
TLocalisamfile mov(LF_MOV);
// Leggo il numero di registrazione dell'ultimo record di mov, e lo
// incremento di uno per ottenere un numero di registrazione sicuramente non esistente.
if (_numreg == 0)
{
mov.last();
_numreg = mov.get_long(MOV_NUMREG) + 1;
}
else
_numreg++;
return _numreg;
}
void TOmasa::main_loop() void TOmasa::main_loop()
{ {
KEY tasto; KEY tasto;
_msk->set(F_PERCORSO, _configfile->get("PERCORSO", "MAIN")); _msk->set(F_PERCORSO, _configfile->get("PERCORSO", "MAIN"));
_msk->set(F_CODCAUS, _configfile->get("CODCAUS", "MOVIMENTO"));
tasto = _msk->run(); tasto = _msk->run();
if (tasto == K_ENTER) if (tasto == K_ENTER)
{ {
@ -157,6 +140,7 @@ void TOmasa::main_loop()
if (transfer()) if (transfer())
{ {
_configfile->set("PERCORSO", _msk->get(F_PERCORSO), "MAIN"); _configfile->set("PERCORSO", _msk->get(F_PERCORSO), "MAIN");
_configfile->set("CODCAUS", _msk->get(F_CODCAUS), "MOVIMENTO");
message_box(TR("Importazione stipendi completata")); message_box(TR("Importazione stipendi completata"));
} }
} }
@ -164,96 +148,216 @@ void TOmasa::main_loop()
bool TOmasa::transfer() bool TOmasa::transfer()
{ {
TString_array transactions; TString_array transactions;
list_files("omat*.ini", transactions); TFilename tempdir;
tempdir.tempdir();
TString80 listfiles = tempdir;
listfiles << "\\oo*.ini";
list_files(listfiles, transactions);
FOR_EACH_ARRAY_ROW(transactions, row, name) FOR_EACH_ARRAY_ROW(transactions, row, name)
remove(*name); remove(*name);
int ntransac=0; // contatore di transazione
TConfig* movpn=NULL; TConfig* movpn=NULL;
_trasfile = new TOmasa_file(_msk->get(F_PERCORSO)); _trasfile = new TOmasa_file(_msk->get(F_PERCORSO));
_trasfile->open(_msk->get(F_PERCORSO),'r'); _trasfile->open(_msk->get(F_PERCORSO),'r');
// creazione file temporanei per commessa e conto dare e avere
const long dimension = fsize(_msk->get(F_PERCORSO)); const long dimension = fsize(_msk->get(F_PERCORSO));
TProgind pi(dimension,"Importazione in corso..."); TProgind pi(dimension,"Importazione in corso...");
const TDate datareg = _msk->get_date(F_DATAREG);
const int annoes = _esc->date2esc(datareg);
TString16 olddip = "**";
int numrig = 0;
TRecord_text curr; TRecord_text curr;
while (_trasfile->read(curr) == NOERR) while (_trasfile->read(curr) == NOERR)
{ {
pi.setstatus(_trasfile->read_file()->tellg()); pi.setstatus(_trasfile->read_file()->tellg());
TString impstr = curr.get(F_IMPORTO); TString impstr = curr.get(F_IMPORTO);
impstr.insert(",",11); impstr.insert(".",11);
const real importo(impstr); const real importo(impstr);
TString16 contodare = curr.get(F_CONTODARE); TString16 contodare = curr.get(F_CONTODARE);
TString16 contoavere = curr.get(F_CONTOAVERE); TString16 contoavere = curr.get(F_CONTOAVERE);
if ((!real::is_null(impstr)) && (!contodare.blank() || !contoavere.blank())) if ((!real::is_null(impstr)) && (!contodare.blank() || !contoavere.blank()))
{ {
TString16 coddip = curr.get(F_CODDIP); TString16 codcms = curr.get(F_CENTROCOSTO);
if (coddip != olddip) codcms.trim();
{ TFilename name;
ntransac++; name.tempdir();
TFilename name; name.add(format("oo%s", (const char*) codcms));
name.tempdir(); name.ext(".ini");
name.add(format("omat%04d", ntransac)); movpn = new TConfig(name);
name.ext(".ini"); movpn->set_paragraph("MAIN");
movpn = new TConfig(name); movpn->set("CODCMS",codcms);
movpn->set_paragraph("Transaction");
movpn->set("Action","INSERT");
movpn->set("Mode","AUTO");
movpn->set_paragraph(format("%d",LF_MOV));
movpn->set("ANNOES", annoes);
movpn->set("DATACOMP", datareg);
movpn->set("DATAREG", datareg);
movpn->set("DESCR", "Importazione stipendi");
//movpn->set("NUMREG", ultima_registrazione());
movpn->set("CODCAUS", _configfile->get("CODCAUS","MOVIMENTO"));
numrig = 0;
}
if (!contodare.blank()) if (!contodare.blank())
{ {
movpn->set_paragraph("DARE");
contodare.trim(); contodare.trim();
TToken_string conto = _configfile->get(contodare, "CONTI"); impstr = movpn->get(contodare, "DARE");
if (conto.empty()) real importomem(impstr);
importomem+=importo;
movpn->set(contodare, importomem.string());
}
if (!contoavere.blank())
{
movpn->set_paragraph("AVERE");
contoavere.trim();
impstr = movpn->get(contoavere, "AVERE");
real importomem(impstr);
importomem+=importo;
movpn->set(contoavere, importomem.string());
}
delete movpn;
if (pi.iscancelled())
return TRUE;
}
}
_trasfile->close();
delete _trasfile;
// creazione .ini per la prima nota
const TDate datareg = _msk->get_date(F_DATAREG);
const int annoes = _esc->date2esc(datareg);
const TString8 codcaus = _msk->get(F_CODCAUS);
listfiles = tempdir;
listfiles << "\\oo*.ini";
list_files(listfiles, transactions);
FOR_EACH_ARRAY_ROW(transactions, row_oo, name_oo)
{
TConfig* movpn=NULL;
TConfig file_oo(*name_oo);
TString16 codcms = file_oo.get("CODCMS", "MAIN");
codcms.trim();
TFilename name;
name.tempdir();
name.add(format("ooo%s", (const char*) codcms));
name.ext(".ini");
movpn = new TConfig(name);
movpn->set_paragraph("Transaction");
movpn->set("Action","INSERT");
movpn->set("Mode","AUTO");
movpn->set_paragraph(format("%d",LF_MOV));
movpn->set("ANNOES", annoes);
movpn->set("DATACOMP", datareg);
movpn->set("DATAREG", datareg);
movpn->set("DESCR", cache().get(LF_CAUSALI, codcaus, CAU_DESCR));
movpn->set("CODCAUS", codcaus);
int numrig = 0;
TString_array vl;
file_oo.list_variables(vl,TRUE, "DARE", TRUE);
FOR_EACH_ARRAY_ROW(vl,rd,sd)
{
TString16 contodare = (*sd).get();
TString16 importodare = (*sd).get();
TToken_string conto = _configfile->get(contodare, "CONTI");
if (conto.empty())
{
TMask mskconto("cgp4100b");
mskconto.set(F_CONTOOMASA, contodare);
if (mskconto.run() == K_ENTER)
{ {
TMask mskconto("cgp4100b"); const int gr = mskconto.get_int(F_GRUPPO);
mskconto.set(F_CONTOOMASA, contodare); const int co = mskconto.get_int(F_CONTO);
if (mskconto.run() == K_ENTER) const long so = mskconto.get_long(F_SOTTOCONTO);
{ conto.format("%d|%d|%ld", gr, co, so);
const int gr = mskconto.get_int(F_GRUPPO); _configfile->set(contodare, conto, "CONTI");
const int co = mskconto.get_int(F_CONTO);
const long so = mskconto.get_long(F_SOTTOCONTO);
conto.format("%d|%d|%ld", gr, co, so);
_configfile->set(contodare, conto, "CONTI");
}
else
return TRUE;
} }
else
return TRUE;
}
numrig++;
movpn->set_paragraph(format("%d,%d",LF_RMOV, numrig));
movpn->set("ANNOES", annoes);
movpn->set("DATAREG", datareg);
movpn->set("NUMRIG", numrig);
movpn->set("IMPORTO", importodare);
movpn->set("SEZIONE", "D");
const int indbil = cache().get(LF_PCON, conto, PCN_INDBIL)[0];
if ((indbil != 1) && (indbil != 2))
movpn->set("CODCMS", codcms);
movpn->set("GRUPPO", conto.get(0));
movpn->set("CONTO", conto.get(1));
movpn->set("SOTTOCONTO", conto.get(2));
}
file_oo.list_variables(vl,TRUE, "AVERE", TRUE);
FOR_EACH_ARRAY_ROW(vl,ra,sa)
{
TString16 contoavere = (*sa).get();
TString16 importoavere = (*sa).get();
TToken_string conto = _configfile->get(contoavere, "CONTI");
if (conto.empty())
{
TMask mskconto("cgp4100b");
mskconto.set(F_CONTOOMASA, contoavere);
if (mskconto.run() == K_ENTER)
{
const int gr = mskconto.get_int(F_GRUPPO);
const int co = mskconto.get_int(F_CONTO);
const long so = mskconto.get_long(F_SOTTOCONTO);
conto.format("%d|%d|%ld", gr, co, so);
_configfile->set(contoavere, conto, "CONTI");
}
else
return TRUE;
}
numrig++;
movpn->set_paragraph(format("%d,%d",LF_RMOV, numrig));
movpn->set("ANNOES", annoes);
movpn->set("DATAREG", datareg);
movpn->set("NUMRIG", numrig);
movpn->set("IMPORTO", importoavere);
movpn->set("SEZIONE", "A");
const int indbil = cache().get(LF_PCON, conto, PCN_INDBIL)[0];
if ((indbil != 1) && (indbil != 2))
movpn->set("CODCMS", codcms);
movpn->set("GRUPPO", conto.get(0));
movpn->set("CONTO", conto.get(1));
movpn->set("SOTTOCONTO", conto.get(2));
}
}
tempdir.tempdir();
TString80 applicat = "cg2.exe -0 -i";
applicat << tempdir;
applicat << "\\ooo*.ini";
TExternal_app primanota(applicat);
primanota.run();
listfiles = tempdir;
listfiles << "\\oo*.ini";
list_files(listfiles, transactions);
FOR_EACH_ARRAY_ROW(transactions, rowf, namef)
remove(*namef);
return TRUE;
}
int cgp4100 (int argc, char* argv[])
{
TOmasa main_app;
main_app.run(argc, argv, TR("Importazione stipendi"));
return TRUE;
}
/*
numrig++; numrig++;
movpn->set_paragraph(format("%d,%d",LF_RMOV, numrig)); movpn->set_paragraph(format("%d,%d",LF_RMOV, numrig));
movpn->set("ANNOES", annoes); movpn->set("ANNOES", annoes);
//movpn->set("NUMREG", _numreg);
movpn->set("DATAREG", datareg); movpn->set("DATAREG", datareg);
movpn->set("NUMRIG", numrig); movpn->set("NUMRIG", numrig);
movpn->set("IMPORTO", importo.string()); movpn->set("IMPORTO", importo.string());
movpn->set("SEZIONE", "D"); movpn->set("SEZIONE", "D");
movpn->set("CODCMS", F_CENTROCOSTO); movpn->set("CODCMS", codcms);
movpn->set("GRUPPO", conto.get(0)); movpn->set("GRUPPO", conto.get(0));
movpn->set("CONTO", conto.get(1)); movpn->set("CONTO", conto.get(1));
movpn->set("SOTTOCONTO", conto.get(2)); movpn->set("SOTTOCONTO", conto.get(2));
} }
if (!contoavere.blank())
{
contoavere.trim();
TToken_string conto = _configfile->get(contoavere, "CONTI"); TToken_string conto = _configfile->get(contoavere, "CONTI");
if (conto.empty()) if (conto.empty())
{ {
@ -273,7 +377,6 @@ bool TOmasa::transfer()
numrig++; numrig++;
movpn->set_paragraph(format("%d,%d",LF_RMOV, numrig)); movpn->set_paragraph(format("%d,%d",LF_RMOV, numrig));
movpn->set("ANNOES", annoes); movpn->set("ANNOES", annoes);
//movpn->set("NUMREG", _numreg);
movpn->set("DATAREG", datareg); movpn->set("DATAREG", datareg);
movpn->set("NUMRIG", numrig); movpn->set("NUMRIG", numrig);
movpn->set("IMPORTO", importo.string()); movpn->set("IMPORTO", importo.string());
@ -282,42 +385,4 @@ bool TOmasa::transfer()
movpn->set("GRUPPO", conto.get(0)); movpn->set("GRUPPO", conto.get(0));
movpn->set("CONTO", conto.get(1)); movpn->set("CONTO", conto.get(1));
movpn->set("SOTTOCONTO", conto.get(2)); movpn->set("SOTTOCONTO", conto.get(2));
} */
delete movpn;
if (pi.iscancelled())
return TRUE;
}
}
_trasfile->close();
delete _trasfile;
TFilename tempdir;
tempdir.tempdir();
TString80 applicat = "cg2.exe -0 -i";
applicat << tempdir;
applicat << "\\omat*.ini";
TExternal_app primanota(applicat);
primanota.run();
TString80 listfiles = tempdir;
listfiles << "\\omat*.ini";
list_files(listfiles, transactions);
FOR_EACH_ARRAY_ROW(transactions, rowf, namef)
remove(*namef);
return TRUE;
}
int cgp4100 (int argc, char* argv[])
{
TOmasa main_app;
main_app.run(argc, argv, TR("Importazione stipendi"));
return TRUE;
}

View File

@ -1,8 +1,12 @@
// campi della maschera // campi della maschera principale
#define F_PERCORSO 101 #define F_PERCORSO 101
#define F_DATAREG 102 #define F_DATAREG 102
#define F_CODCAUS 103 #define F_CODCAUS 103
#define F_DESCR 104
// campi della maschera di conversione conti
// campi del tracciato record // campi del tracciato record

View File

@ -4,12 +4,12 @@ TOOLBAR "" 0 20 0 2
BUTTON DLG_OK 10 2 BUTTON DLG_OK 10 2
BEGIN BEGIN
PROMPT -12 -1 "" PROMPT -12 -1 ""
END END
BUTTON DLG_QUIT 10 2 BUTTON DLG_QUIT 10 2
BEGIN BEGIN
PROMPT -22 -1 "" PROMPT -22 -1 ""
END END
ENDPAGE ENDPAGE
@ -18,7 +18,7 @@ PAGE "Importazione stipendi" 0 -1 0 19
STRING F_PERCORSO 50 STRING F_PERCORSO 50
BEGIN BEGIN
PROMPT 2 2 "File da trasferire " PROMPT 2 2 "File da trasferire "
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
VALIDATE FILENAME_FUNC VALIDATE FILENAME_FUNC
FLAGS "A" FLAGS "A"
@ -28,12 +28,41 @@ END
DATE F_DATAREG DATE F_DATAREG
BEGIN BEGIN
PROMPT 2 3 "Data registrazione movimenti " PROMPT 2 3 "Data registrazione "
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
HELP "Data di registrazione dei movimenti contabili" HELP "Data di registrazione dei movimenti contabili"
WARNING "E' necessario specificare la data di registrazione" WARNING "E' necessario specificare la data di registrazione"
END
STRING F_CODCAUS 4
BEGIN
PROMPT 2 4 "Causale "
FLAGS "UZ"
USE LF_CAUSALI
INPUT CODCAUS F_CODCAUS
DISPLAY "Codice" CODCAUS
DISPLAY "Descrizione@60" DESCR
OUTPUT F_CODCAUS CODCAUS
OUTPUT F_DESCR DESCR
CHECKTYPE SEARCH
END
STRING F_DESCR 50
BEGIN
PROMPT 17 4 ""
USE LF_CAUSALI KEY 2
INPUT DESCR F_DESCR
DISPLAY "Descrizione@60" DESCR
DISPLAY "Codice" CODCAUS
COPY OUTPUT F_CODCAUS
CHECKTYPE SEARCH
END END
ENDPAGE ENDPAGE
PAGE "Tabella conversione conti" 0 -1 0 19
ENDPAGE
ENDMASK ENDMASK