Aggiunto programma di conversione per la conversione righe movimento
git-svn-id: svn://10.65.10.50/trunk@667 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
c8435b75c9
commit
00bfa3954b
169
ba/bacnv.cpp
Executable file
169
ba/bacnv.cpp
Executable file
@ -0,0 +1,169 @@
|
||||
#include <xvt.h>
|
||||
#include <applicat.h>
|
||||
#include <checks.h>
|
||||
#include <isam.h>
|
||||
#include <mailbox.h>
|
||||
#include <lffiles.h>
|
||||
#include <utility.h>
|
||||
#include <urldefid.h>
|
||||
#include <progind.h>
|
||||
#include <rmov.h>
|
||||
#include <prefix.h>
|
||||
|
||||
#define usage "Errore - uso : bacnv -1"
|
||||
|
||||
class TConversione_archivi : public TApplication
|
||||
{
|
||||
int _nconv;
|
||||
long _codditta;
|
||||
long _oldditta;
|
||||
int _error;
|
||||
|
||||
virtual bool create() ;
|
||||
virtual bool destroy() ;
|
||||
bool menu(MENU_TAG);
|
||||
bool convert_rmov(TLocalisamfile & rmov, TArray & recs, int nrecs);
|
||||
void contropartita_rmov();
|
||||
|
||||
public:
|
||||
TConversione_archivi() : _oldditta(0), _codditta(0), _error(0) {}
|
||||
};
|
||||
|
||||
bool TConversione_archivi::create()
|
||||
{
|
||||
if (argc() < 3)
|
||||
{
|
||||
_error = 101;
|
||||
TMessage msg("ba1100", 0, format("%d", _error));
|
||||
|
||||
msg.send();
|
||||
return FALSE;
|
||||
}
|
||||
else
|
||||
{
|
||||
_oldditta = get_firm();
|
||||
_codditta = atol(argv(argc() - 1));
|
||||
_nconv = atoi(argv(1));
|
||||
if (_codditta != _oldditta)
|
||||
{
|
||||
if (_codditta == 0) prefhndl->set("com");
|
||||
else set_firm(_codditta);
|
||||
}
|
||||
dispatch_e_menu(MENU_ITEM(1));
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
bool TConversione_archivi::destroy()
|
||||
{
|
||||
if (_codditta != _oldditta)
|
||||
{
|
||||
if (_oldditta == 0) prefhndl->set("com");
|
||||
else set_firm(_oldditta);
|
||||
}
|
||||
if (_error > 0)
|
||||
{
|
||||
TMessage msg("ba1100", 0, format("%d", _error));
|
||||
msg.send();
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool TConversione_archivi::menu(MENU_TAG)
|
||||
{
|
||||
switch (_nconv)
|
||||
{
|
||||
case 1:
|
||||
contropartita_rmov();
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool TConversione_archivi::convert_rmov(TLocalisamfile & rmov, TArray & recs, int nrecs)
|
||||
{
|
||||
const TRecnotype pos = rmov.recno();
|
||||
|
||||
for (int i = 0; i < nrecs; i++)
|
||||
{
|
||||
TRectype & r0 = (TRectype &) recs[i];
|
||||
const int rcontr = r0.get_int(RMV_RCONTR) - 1;
|
||||
|
||||
if (rcontr >= 0 && rcontr < nrecs)
|
||||
{
|
||||
const TRectype & r1 = (const TRectype &) recs[rcontr];
|
||||
|
||||
r0.put(RMV_TIPOCC, r1.get(RMV_TIPOC));
|
||||
r0.put(RMV_GRUPPOC, r1.get_int(RMV_GRUPPO));
|
||||
r0.put(RMV_CONTOC, r1.get_int(RMV_CONTO));
|
||||
r0.put(RMV_SOTTOCONTOC, r1.get_long(RMV_SOTTOCONTO));
|
||||
}
|
||||
r0.zero(RMV_RCONTR);
|
||||
if (rmov.rewrite(r0) != NOERR)
|
||||
{
|
||||
const long reg = r0.get_long(RMV_NUMREG);
|
||||
error_box("Non riesco ad aggiornare la riga contabile %ld / %d\nErrore n. %d", reg, i + 1, rmov.status());
|
||||
rmov.readat(pos);
|
||||
_error = 102;
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
rmov.readat(pos);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void TConversione_archivi::contropartita_rmov()
|
||||
{
|
||||
TDir d;
|
||||
d.get(LF_RMOV);
|
||||
if (d.eox() == 0) return;
|
||||
|
||||
TLocalisamfile rmov(LF_RMOV);
|
||||
const TRecnotype nitems = rmov.items();
|
||||
TArray recs;
|
||||
long oldreg = -1;
|
||||
long reg = -1;
|
||||
int nrow = 0;
|
||||
TProgind p(nitems ? nitems : 1,
|
||||
format("Conversione righe di movimento della ditta %ld", get_firm()),
|
||||
TRUE, TRUE, 70);
|
||||
for (rmov.first(); rmov.good(); rmov.next())
|
||||
{
|
||||
p.addstatus(1);
|
||||
reg = rmov.get_long(RMV_NUMREG);
|
||||
if (oldreg != reg)
|
||||
{
|
||||
if (oldreg > 0)
|
||||
if (convert_rmov(rmov, recs, nrow) == FALSE)
|
||||
return;
|
||||
oldreg = reg;
|
||||
nrow = 0;
|
||||
}
|
||||
recs.add(rmov.curr(), nrow++);
|
||||
CHECKD(nrow == rmov.get_int(RMV_NUMRIG), "Missed row ", nrow);
|
||||
}
|
||||
if (oldreg > 0)
|
||||
if (convert_rmov(rmov, recs, nrow) == FALSE)
|
||||
return;
|
||||
}
|
||||
|
||||
HIDDEN void bacnv(int argc, char** argv)
|
||||
{
|
||||
TConversione_archivi a ;
|
||||
a.run(argc, argv, "Conversione archivi");
|
||||
}
|
||||
|
||||
int main(int argc,char** argv)
|
||||
{
|
||||
const int r = (argc > 1) ? atoi(argv[1]) : 0;
|
||||
|
||||
if (r <= 0 || r > 1)
|
||||
{
|
||||
error_box(usage);
|
||||
return 100;
|
||||
}
|
||||
|
||||
bacnv(argc, argv);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
5
ba/bacnv.url
Executable file
5
ba/bacnv.url
Executable file
@ -0,0 +1,5 @@
|
||||
#include <default.url>
|
||||
|
||||
MENU TASK_MENUBAR
|
||||
SUBMENU MENU_FILE "~File"
|
||||
|
@ -2,5 +2,7 @@
|
||||
F(3)=COD=CODTAB[1,3]|CODTAB=CODTAB[4,]
|
||||
F(4)=COD=CODTAB[1,3]|CODTAB=CODTAB[4,]
|
||||
F(5)=COD=CODTAB[1,3]|CODTAB=CODTAB[4,]
|
||||
[199404]
|
||||
ACNV(24)=bacnv 1
|
||||
[EOF]
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user