96f33c01ee
Files correlati : ve6.exe Ricompilazione Demo : [ ] Commento : Riportata la versione 3.1 patch 979 git-svn-id: svn://10.65.10.50/trunk@15623 c028cbd2-c16b-5b4b-a496-9718f37d4682
2347 lines
74 KiB
C++
Executable File
2347 lines
74 KiB
C++
Executable File
#include <incstr.h>
|
||
|
||
#include <applicat.h>
|
||
#include <mask.h>
|
||
#include <progind.h>
|
||
#include <recarray.h>
|
||
#include <relation.h>
|
||
#include <sheet.h>
|
||
#include <tabutil.h>
|
||
#include <text.h>
|
||
#include <utility.h>
|
||
|
||
#include "quadrif.h"
|
||
#include "quadroe2.h"
|
||
#include "quadrog.h"
|
||
#include "quadrogp.h"
|
||
#include "77cnva.h"
|
||
|
||
#define usage "Errore - uso : 77cnv [0|1|2|3|4|5|6|7|8|9] 0"
|
||
#define G_DUMP "quadrog.dmp" // File di scarico del quadro G
|
||
#define CNV_LOG "C770log.txt" // File di log della conversione
|
||
|
||
// struttura completa riga di pagamento
|
||
struct Pag_struct
|
||
{
|
||
TDate datapag;
|
||
real imponibile;
|
||
real perc;
|
||
real ritenuta;
|
||
real compenso;
|
||
real netto;
|
||
long numvers;
|
||
real spesa;
|
||
real ctssnperc;
|
||
real ctssncomp;
|
||
real ritlorda;
|
||
real controbb;
|
||
real detfamil;
|
||
real detlavdip;
|
||
real totdet;
|
||
int giolavdip;
|
||
real impcpa;
|
||
real somregconv;
|
||
real alqimp10;
|
||
TString16 cod10;
|
||
real utpagati;
|
||
real utspett;
|
||
real ritutpag;
|
||
real ritutspe;
|
||
real nquote;
|
||
real somnsrit;
|
||
real ammlordo;
|
||
real quotaprov;
|
||
real impnetto;
|
||
real comnetto;
|
||
};
|
||
|
||
// posizione flag quadri compilati
|
||
enum {A,A1,A2,A3,B,B1,C,D,D1,E,E1,E2,F,F1,F2,G,G1,H,I,L,N,P,Q,R,S,T,AB,DB,U};
|
||
|
||
// Items per causale quadro D
|
||
const int NUM_ITEMS_D = 1;
|
||
const char* ITEMS_D[] = {
|
||
"L|prestaz. di lavoro autonomo non esercitate abitualmente"};
|
||
|
||
// Items per causale quadro Dbis
|
||
const int NUM_ITEMS_DB = 2;
|
||
const char* ITEMS_DB[] = {
|
||
"A|prestaz. di lav. auton. ..... iscritti in albi senza cassa",
|
||
"T|altro titolo diverso dai precedenti"};
|
||
|
||
// Items per causale quadro E
|
||
const int NUM_ITEMS_E = 5;
|
||
const char* ITEMS_E[] = {
|
||
"A|redditi di capitale corrisp. a sogg. resid. non eserc......",
|
||
"B|prov. corrisp. a stabili organiz. estere di impr. resid....",
|
||
"C|comp. per avviamento commerc. assogg. alla rit. a tit. acc.",
|
||
"D|contrib. degli enti pubbl. e premi corrisp. dall'Unione....",
|
||
"E|interessi, premi e altri frutti dei tit. obbligaz. emessi.."};
|
||
|
||
// Items per causale quadro E1
|
||
const int NUM_ITEMS_E1 = 4;
|
||
const char* ITEMS_E1[] = {
|
||
"A|somme deriv. dal riscatto di contratti di assic. sulla vita",
|
||
"B|capitali corrisp. in dipend... per i quali rit. del 12,50..",
|
||
"C|capitali corrisp. in dipend. di contr. di assic. sulla vita",
|
||
"D|capitali corrisp. in dipend. di contr. di capitalizzazione"};
|
||
|
||
class TConvert_app : public TApplication
|
||
{
|
||
int _conv;
|
||
TTextfile* _M770_log;
|
||
|
||
protected:
|
||
virtual bool create();
|
||
|
||
bool dump_quadro_f1() const; // Funzioni per convertire quadro F/F1
|
||
bool load_quadro_f1() const;
|
||
bool convert_e2() const;
|
||
bool convert_f() const;
|
||
bool convert_f2() const;
|
||
bool dump_quadro_g() const; // Funzioni per convertire quadro G
|
||
bool load_quadro_g() const;
|
||
bool cnv_ca7_971() const; // conversione causali
|
||
bool cnv_quadroA_971() const; // conversione quadro A
|
||
bool cnv_quadroAB_971() const; // conversione quadro Abis
|
||
bool cnv_quadroA2_971() const; // conversione quadro A2
|
||
bool cnv_basebis_971() const; // conversione basebis
|
||
bool cnv_schede_971() const; // conversione schede percipiente
|
||
bool cnv_schede_man1_971() const; // conversione manuale schede percipiente
|
||
bool cnv_schede_man2_971() const; // conversione manuale schede percipiente
|
||
|
||
// azzera struttura pagamento
|
||
Pag_struct& clear_struct(Pag_struct& s) const;
|
||
|
||
// calcola una riga di pagamento dove <s> <20> la struttura con i dati,
|
||
// <c> <20> la struttura con i calcolati per eventuali controlli,
|
||
// <force> consente di forzare la sostituzione dei valori di riga
|
||
// con i calcolati anche se sono diversi da zero
|
||
Pag_struct& calcola_riga_pag(Pag_struct& s,
|
||
Pag_struct& c,
|
||
bool force,
|
||
const real h_PercAssImp,
|
||
const real h_PercCassaPrev,
|
||
const real h_PercRitenuta,
|
||
const real h_PercInps,
|
||
const real h_PercAssImpInps,
|
||
const real h_PercCommitInps) const;
|
||
|
||
// costruisce sheet con schede aventi prerequisiti di conversione
|
||
bool choicesheet(const long codditta, const TString& codcaus, const TString& codqua, const TString& causqua) const;
|
||
|
||
// handler maschera principale conversione cnv_schede_man2_971
|
||
static bool F_CODCAUS_handler(TMask_field& f, KEY k);
|
||
|
||
// ricalcolo complessivo schede
|
||
void totalrecalc() const;
|
||
|
||
public:
|
||
TConvert_app(int conv) : _conv(conv) { }
|
||
virtual ~TConvert_app() { }
|
||
};
|
||
|
||
inline TConvert_app& app() { return (TConvert_app&) main_app(); }
|
||
|
||
bool TConvert_app::create()
|
||
{
|
||
const long f = (argc() > 2) ? atol(argv(2)) : -1;
|
||
if (f != 0)
|
||
return FALSE;
|
||
|
||
// istanza file di log
|
||
_M770_log = new TTextfile(CNV_LOG);
|
||
|
||
switch(_conv)
|
||
{
|
||
// Numeri liberi per conversioni di Luciano;
|
||
case 0 : cnv_ca7_971(); cnv_basebis_971(); break;
|
||
case 1 : cnv_quadroA_971(); cnv_quadroAB_971(); cnv_quadroA2_971(); break;
|
||
case 2 : cnv_schede_971(); break;
|
||
case 4 : convert_e2(); convert_f(); convert_f2(); break;
|
||
case 5 : dump_quadro_g(); break; // Scarica alcuni campi del quadro G da trasportare sulle righe
|
||
case 6 : load_quadro_g(); break; // Ricarica gli stessi sulle righe del quadro G
|
||
case 7 : cnv_schede_man1_971(); break;
|
||
case 8 : cnv_schede_man2_971(); break;
|
||
case 9 : dump_quadro_f1(); break;
|
||
default:break;
|
||
}
|
||
|
||
// libera istanza file di log
|
||
delete _M770_log;
|
||
|
||
return FALSE;
|
||
}
|
||
|
||
bool TConvert_app::convert_e2() const
|
||
{
|
||
TLocalisamfile righe_e2(LF_QUAE2);
|
||
TProgind pi(righe_e2.items(), "Conversione quadro E2", FALSE, TRUE, 60);
|
||
|
||
TDecoder causali("%CA7");
|
||
|
||
TRectype& cur = righe_e2.curr();
|
||
for (int err = righe_e2.first(); err == NOERR; err = righe_e2.next())
|
||
{
|
||
pi.addstatus(1);
|
||
const TString& desc = causali.decode(cur.get(QE2_CODCAUS));
|
||
cur.put(QE2_DENCAUS, desc.left(50));
|
||
int ee = righe_e2.rewrite();
|
||
if (ee != NOERR)
|
||
{
|
||
const long ditta = cur.get_long(QE2_CODDITTA);
|
||
const int riga = cur.get_int(QE2_NPROG);
|
||
error_box("Impossibile aggiornare la riga %d del quadro E2\n"
|
||
"della ditta %ld: errore %d", riga, ditta, ee);
|
||
}
|
||
}
|
||
|
||
return TRUE;
|
||
}
|
||
|
||
bool TConvert_app::dump_quadro_f1() const
|
||
{
|
||
TToken_string str;
|
||
TLocalisamfile quadrof1(LF_QUAF1);
|
||
|
||
TFilename f; f.tempdir(); f.add("quaf1.txt");
|
||
ofstream ofs(f);
|
||
|
||
TProgind pi(quadrof1.items(), "Conversione quadro F1 - Scarico dati in corso...", FALSE, TRUE, 60);
|
||
for (int err = quadrof1.first(); err == NOERR; err = quadrof1.next())
|
||
{
|
||
pi.addstatus(1);
|
||
str.cut(0);
|
||
str.add(quadrof1.get("CODDITTA"));
|
||
str.add(quadrof1.get("F1_A1"));
|
||
str.add(quadrof1.get("F1_A2"));
|
||
ofs << str << endl;
|
||
}
|
||
return TRUE;
|
||
}
|
||
|
||
bool TConvert_app::load_quadro_f1() const
|
||
{
|
||
TFilename f; f.tempdir(); f.add("quaf1.txt");
|
||
if (!fexist(f))
|
||
return FALSE;
|
||
|
||
TProgind pi(1, "Conversione quadro F - Caricamento prospetto F...", FALSE, FALSE, 60);
|
||
TScanner osf(f);
|
||
|
||
TToken_string str;
|
||
TLocalisamfile righef(LF_RIGHEF);
|
||
|
||
while (osf.line().not_empty())
|
||
{
|
||
str = osf.token();
|
||
righef.zero();
|
||
long ditta = str.get_long(0);
|
||
righef.put("CODDITTA", ditta);
|
||
righef.put("TIPOPRO", "F");
|
||
righef.put("NPROG", "1");
|
||
righef.put("SOGRIT", str.get());
|
||
righef.put("ROPE", str.get());
|
||
int err = righef.write();
|
||
if (err != NOERR)
|
||
error_box("Impossibile creare la riga del prospetto F\n"
|
||
"della ditta %ld: errore %d", ditta, err);
|
||
}
|
||
remove(f);
|
||
return TRUE;
|
||
}
|
||
|
||
bool TConvert_app::convert_f() const
|
||
{
|
||
TLocalisamfile quadro_f(LF_QUAF);
|
||
TLocalisamfile righe_f(LF_RIGHEF);
|
||
TRectype& cur = righe_f.curr();
|
||
|
||
TProgind pi(quadro_f.items(), "Conversione quadro F", FALSE, TRUE, 60);
|
||
|
||
TDecoder causali("%CA7");
|
||
|
||
for (int err = quadro_f.first(); err == NOERR; err = quadro_f.next())
|
||
{
|
||
pi.addstatus(1);
|
||
const real e_aliq = quadro_f.get("E_ALIQUOTA");
|
||
|
||
if (e_aliq < 0.0)
|
||
{
|
||
// gia' stata convertita!
|
||
continue;
|
||
}
|
||
|
||
const long ditta = quadro_f.get_long(QUF_CODDITTA);
|
||
cur.zero();
|
||
cur.put(QUF_CODDITTA, ditta);
|
||
for (int e = righe_f.read(_isgteq); e == NOERR; e = righe_f.next())
|
||
{
|
||
if (cur.get_long(QUF_CODDITTA) != ditta)
|
||
break;
|
||
|
||
const TString& desc = causali.decode(cur.get("CODCAUS"));
|
||
cur.put("DENCAUS", desc.left(50));
|
||
|
||
const char prosp = toupper(cur.get_char("TIPOPRO"));
|
||
const int riga = cur.get_int("NPROG");
|
||
|
||
if (prosp >= 'B' && prosp <= 'D')
|
||
{
|
||
const char newprosp = prosp-1;
|
||
cur.put("TIPOPRO", newprosp);
|
||
err = righe_f.write();
|
||
if (err != NOERR)
|
||
{
|
||
error_box("Impossibile creare la riga %d del prospetto %c\n"
|
||
"della ditta %ld: errore %d", riga, newprosp, ditta, err);
|
||
}
|
||
}
|
||
cur.put("TIPOPRO", prosp);
|
||
if (err == NOERR)
|
||
{
|
||
int err = righe_f.remove();
|
||
if (err != NOERR)
|
||
{
|
||
error_box("Impossibile eliminare la riga %d del prospetto %c\n"
|
||
"della ditta %ld: errore %d", riga, prosp, ditta, err);
|
||
break;
|
||
}
|
||
}
|
||
else
|
||
err = righe_f.reread();
|
||
}
|
||
|
||
const real e_cambiali = quadro_f.get("E_CAMBIALI");
|
||
const real e_sogrit = quadro_f.get("E_SOGRIT");
|
||
const real e_rope = quadro_f.get("E_ROPE");
|
||
if (e_cambiali != ZERO || e_sogrit != ZERO ||
|
||
e_aliq != ZERO || e_rope != ZERO)
|
||
{
|
||
righe_f.zero();
|
||
righe_f.put("CODDITTA", ditta);
|
||
righe_f.put("TIPOPRO", "D");
|
||
righe_f.put("NPROG", "1");
|
||
righe_f.put("IMPCAMB", e_cambiali);
|
||
righe_f.put("ALIQUOTA", e_aliq);
|
||
righe_f.put("SOGRIT", e_sogrit);
|
||
righe_f.put("ROPE", e_rope);
|
||
int ed = righe_f.write();
|
||
if (ed != NOERR)
|
||
error_box("Impossibile creare la riga del prospetto D\n"
|
||
"della ditta %ld: errore %d", ditta, ed);
|
||
}
|
||
|
||
const real f_aliq = quadro_f.get("F_ALIQUOTA");
|
||
const real f_sogrit = quadro_f.get("F_SOGRIT");
|
||
const real f_rope = quadro_f.get("F_ROPE");
|
||
if (f_aliq != ZERO || f_sogrit != ZERO || f_rope != ZERO)
|
||
{
|
||
righe_f.zero();
|
||
righe_f.put("CODDITTA", ditta);
|
||
righe_f.put("TIPOPRO", "E");
|
||
righe_f.put("NPROG", "1");
|
||
righe_f.put("ALIQUOTA", f_aliq);
|
||
righe_f.put("SOGRIT", f_sogrit);
|
||
righe_f.put("ROPE", f_rope);
|
||
int ee = righe_f.write();
|
||
if (ee != NOERR)
|
||
error_box("Impossibile creare la riga del prospetto E\n"
|
||
"della ditta %ld: errore %d", ditta, ee);
|
||
}
|
||
|
||
// Marca la ditta come convertita
|
||
quadro_f.put("E_ALIQUOTA", -1);
|
||
quadro_f.rewrite();
|
||
}
|
||
|
||
// Carica nel prospetto f le testate del vecchio quadro f1
|
||
// Vale per tutte le ditte contemporaneamente
|
||
load_quadro_f1();
|
||
|
||
return TRUE;
|
||
}
|
||
|
||
bool TConvert_app::convert_f2() const
|
||
{
|
||
TLocalisamfile righe_f2(LF_RIGHEF2);
|
||
TProgind pi(righe_f2.items(), "Conversione quadro F2", FALSE, TRUE, 60);
|
||
|
||
TDecoder causali("%CA7");
|
||
|
||
TRectype& cur = righe_f2.curr();
|
||
for (int err = righe_f2.first(); err == NOERR; err = righe_f2.next())
|
||
{
|
||
pi.addstatus(1);
|
||
const long ditta = cur.get_long("CODDITTA");
|
||
|
||
const char oldtipo = cur.get_char("TIPOPRO");
|
||
if (oldtipo != 'A')
|
||
{
|
||
const int riga = cur.get_int("NPROG");
|
||
|
||
cur.put("TIPOPRO", "A");
|
||
const TString& desc = causali.decode(cur.get("CODCAUS"));
|
||
cur.put("DENCAUS", desc.left(50));
|
||
int ee = righe_f2.write();
|
||
if (ee == NOERR)
|
||
{
|
||
cur.put("TIPOPRO", oldtipo);
|
||
ee = righe_f2.remove();
|
||
if (ee != NOERR)
|
||
{
|
||
error_box("Impossibile eliminare la riga %d del quadro F2\n"
|
||
"della ditta %ld: errore %d", riga, ditta, ee);
|
||
}
|
||
}
|
||
else
|
||
{
|
||
error_box("Impossibile creare la riga %d del quadro F2\n"
|
||
"della ditta %ld: errore %d", riga, ditta, ee);
|
||
}
|
||
}
|
||
}
|
||
|
||
return TRUE;
|
||
}
|
||
|
||
/////////////////////////////////////////////////////////////////////////////////
|
||
// Scarico dei campi del prospetto 1 sez I e II da riportare sulle righe quadro G
|
||
/////////////////////////////////////////////////////////////////////////////////
|
||
bool TConvert_app::dump_quadro_g() const
|
||
{
|
||
TFilename f;
|
||
TLocalisamfile quadrog(LF_QUAG);
|
||
TToken_string t;
|
||
TString16 fld1,fld2,fld3,fld4;
|
||
TString s1,s2,s3,s4;
|
||
int err;
|
||
|
||
f.tempdir();
|
||
f << "/" << G_DUMP;
|
||
ofstream ofs(f);
|
||
|
||
TProgind pi(quadrog.items(), "Conversione quadro G - Scarico dati in corso...", FALSE, TRUE, 60);
|
||
for (err = quadrog.first(); err == NOERR; err = quadrog.next())
|
||
{
|
||
pi.addstatus(1);
|
||
const long ditta = quadrog.get_long("CODDITTA");
|
||
int riga_1 = 1, riga_2 = 1;
|
||
fld3 = "P1AMMQx"; fld4 = "P1AMMx";
|
||
for (int i = 1; i<=4; i++)
|
||
{
|
||
fld1 = "P1DATADx"; fld2 = "P1NUMQx"; // Prospetto 1 sez I
|
||
fld1.rtrim(1); fld1 << i;
|
||
fld2.rtrim(1); fld2 << i;
|
||
fld3.rtrim(1); fld3 << i;
|
||
fld4.rtrim(1); fld4 << i;
|
||
s1 = quadrog.get(fld1);
|
||
s2 = quadrog.get(fld2);
|
||
s3 = quadrog.get(fld3);
|
||
s4 = quadrog.get(fld4);
|
||
if (s1.not_empty() || s2.not_empty() || s3.not_empty() || s4.not_empty())
|
||
{ // Se tutti vuoti non scrive la riga
|
||
t = "";
|
||
t.add(ditta);
|
||
t.add("1"); t.add("1");t.add(riga_1++);
|
||
t.add(s1);
|
||
t.add(s2);
|
||
t.add(s3);
|
||
t.add(s4);
|
||
t << "\n";
|
||
ofs << t;
|
||
}
|
||
|
||
if (i < 4)
|
||
{
|
||
fld1 = "P2DESCx"; fld2 = "P2VALx"; // Prospetto 1 sez II
|
||
fld1.rtrim(1); fld1 << i;
|
||
fld2.rtrim(1); fld2 << i;
|
||
s1 = quadrog.get(fld1);
|
||
s2 = quadrog.get(fld2);
|
||
if (s1.not_empty() || s2.not_empty())
|
||
{ // Se tutti vuoti non scrive la riga
|
||
t = "";
|
||
t.add(ditta);
|
||
t.add("1"); t.add("2");t.add(riga_2++);
|
||
t.add(s1);
|
||
t.add(s2);
|
||
t << "\n";
|
||
ofs << t;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
return TRUE;
|
||
}
|
||
|
||
/////////////////////////////////////////////////////////////////////////////////
|
||
// Carico dei campi del prospetto 1 sez I e II da riportare sulle righe quadro G
|
||
/////////////////////////////////////////////////////////////////////////////////
|
||
bool TConvert_app::load_quadro_g() const
|
||
{
|
||
TFilename f;
|
||
f.tempdir();
|
||
f << "/" << G_DUMP;
|
||
if (fexist(f))
|
||
{
|
||
TLocalisamfile quadrogp(LF_QUAGP);
|
||
TToken_string t;
|
||
char buffer[256];
|
||
ifstream ifs(f);
|
||
int err;
|
||
TProgind pi(1, "Conversione quadro G - Caricamento righe in corso...", FALSE, FALSE, 60);
|
||
while (ifs.good())
|
||
{
|
||
ifs.getline(buffer,256,'\n');
|
||
t = buffer;
|
||
if (t.empty_items()) break;
|
||
quadrogp.zero();
|
||
quadrogp.put(QGP_CODDITTA,t.get(0));
|
||
quadrogp.put(QGP_PROSPETTO,t.get(1));
|
||
const char sez = t.get_char(2);
|
||
quadrogp.put(QGP_SEZIONE,sez);
|
||
quadrogp.put(QGP_NPROG,t.get(3));
|
||
if (sez == '1')
|
||
{
|
||
quadrogp.put(QGP_DATADEL,t.get(4));
|
||
quadrogp.put(QGP_NUMQUOTE,t.get(5));
|
||
quadrogp.put(QGP_UTILI1S,t.get(6));
|
||
quadrogp.put(QGP_UTILI2S,t.get(7));
|
||
}
|
||
else
|
||
{
|
||
quadrogp.put(QGP_DESCRBENI,t.get(4));
|
||
quadrogp.put(QGP_UTILI1S,t.get(5));
|
||
}
|
||
err = quadrogp.write();
|
||
if (err == _isreinsert)
|
||
err = quadrogp.rewrite();
|
||
if (err != NOERR)
|
||
error_box("Errore %d cercando di caricare le righe del quadro G.",err);
|
||
}
|
||
}
|
||
remove(f); // Let's ignore if the file exists or not
|
||
return TRUE;
|
||
}
|
||
|
||
|
||
///////////////////////////////////////////////////////////
|
||
// Conversione tabella causali versione 971
|
||
///////////////////////////////////////////////////////////
|
||
bool TConvert_app::cnv_ca7_971() const
|
||
{
|
||
// titolo log
|
||
char now[9];
|
||
TDate today(TODAY);
|
||
TString log_title("[Log Conversione Causali : ");
|
||
log_title << today << " " << _strtime(now) << "] Prassi SpA";
|
||
_M770_log->append(log_title);
|
||
TString log_space(" ");
|
||
_M770_log->append(log_space);
|
||
|
||
// conversione tabella
|
||
TTable ca7("%CA7");
|
||
TProgind pi(ca7.items(), "Conversione tabella causali", FALSE, FALSE, 60);
|
||
for (ca7.first(); ca7.good(); ca7.next())
|
||
{
|
||
// lettura campi soggetti a modifica
|
||
TString old_cod = ca7.get("CODTAB");
|
||
TString cod_qua = ca7.get("S1");// codice quadro
|
||
bool fl_Inps = ca7.get_bool("B4");// soggetto contributo Inps
|
||
bool fl_CT = ca7.get_bool("B2");// flag C.T.
|
||
bool fl_TS = ca7.get_bool("B3");// flag T.S.
|
||
char caus_C = ca7.get_char("S6");// causale quadro C
|
||
char caus_D = ca7.get_char("S2");// causale quadro D
|
||
char caus_D1 = ca7.get_char("S3");// causale quadro D1
|
||
char caus_DB = ca7.get_char("S7");// causale quadro DB
|
||
char caus_E = ca7.get_char("S8");// causale quadro E
|
||
char caus_E1 = ca7.get_char("S9");// causale quadro E1
|
||
real ass_imp_Inps = ca7.get_real("R2");// assoggettamento imponibile Inps
|
||
real Perc_Inps = ca7.get_real("R1");// percentuale contributo Inps
|
||
real Perc_Comm_Inps = ca7.get_real("R3");// percentuale contributo Inps committente
|
||
|
||
// salvo flag Inps per sapere se pulire i campi ad esso legato
|
||
bool old_fl_Inps = fl_Inps;
|
||
|
||
// conversione causale quadro D
|
||
switch(caus_D)
|
||
{
|
||
case 'A':
|
||
if (fl_Inps)
|
||
{
|
||
cod_qua = "DB";
|
||
caus_DB = 'A';
|
||
caus_D = ' ';
|
||
}
|
||
break;
|
||
case 'T':
|
||
if (fl_Inps)
|
||
{
|
||
cod_qua = "DB";
|
||
caus_DB = 'T';
|
||
caus_D = ' ';
|
||
}
|
||
break;
|
||
case 'E':
|
||
if (!fl_Inps)
|
||
caus_D = 'M';
|
||
else
|
||
{
|
||
TString log_line;
|
||
log_line << old_cod << ": ";
|
||
log_line << "causale quadro D: -E- con flag contributo Inps";
|
||
_M770_log->append(log_line);
|
||
}
|
||
break;
|
||
case 'G':
|
||
if (!fl_Inps)
|
||
caus_D = 'B';
|
||
else
|
||
{
|
||
TString log_line;
|
||
log_line << old_cod << ": ";
|
||
log_line << "causale quadro D: -G- con flag contributo Inps";
|
||
_M770_log->append(log_line);
|
||
}
|
||
break;
|
||
case 'H':
|
||
if (!fl_Inps)
|
||
caus_D = 'C';
|
||
else
|
||
{
|
||
TString log_line;
|
||
log_line << old_cod << ": ";
|
||
log_line << "causale quadro D: -H- con flag contributo Inps";
|
||
_M770_log->append(log_line);
|
||
}
|
||
break;
|
||
case 'I':
|
||
if (!fl_Inps)
|
||
caus_D = 'D';
|
||
else
|
||
{
|
||
TString log_line;
|
||
log_line << old_cod << ": ";
|
||
log_line << "causale quadro D: -I- con flag contributo Inps";
|
||
_M770_log->append(log_line);
|
||
}
|
||
break;
|
||
case 'L':
|
||
if (!fl_Inps)
|
||
caus_D = 'E';
|
||
else
|
||
{
|
||
TString log_line;
|
||
log_line << old_cod << ": ";
|
||
log_line << "causale quadro D: -L- con flag contributo Inps";
|
||
_M770_log->append(log_line);
|
||
}
|
||
break;
|
||
case 'M':
|
||
if (!fl_Inps)
|
||
caus_D = 'F';
|
||
else
|
||
{
|
||
TString log_line;
|
||
log_line << old_cod << ": ";
|
||
log_line << "causale quadro D: -M- con flag contributo Inps";
|
||
_M770_log->append(log_line);
|
||
}
|
||
break;
|
||
case 'P':
|
||
if (!fl_Inps)
|
||
caus_D = 'G';
|
||
else
|
||
{
|
||
TString log_line;
|
||
log_line << old_cod << ": ";
|
||
log_line << "causale quadro D: -P- con flag contributo Inps";
|
||
_M770_log->append(log_line);
|
||
}
|
||
break;
|
||
case 'Q':
|
||
if (!fl_Inps)
|
||
caus_D = 'H';
|
||
else
|
||
{
|
||
TString log_line;
|
||
log_line << old_cod << ": ";
|
||
log_line << "causale quadro D: -Q- con flag contributo Inps";
|
||
_M770_log->append(log_line);
|
||
}
|
||
break;
|
||
case 'R':
|
||
if (!fl_Inps)
|
||
caus_D = 'N';
|
||
else
|
||
{
|
||
TString log_line;
|
||
log_line << old_cod << ": ";
|
||
log_line << "causale quadro D: -R- con flag contributo Inps";
|
||
_M770_log->append(log_line);
|
||
}
|
||
break;
|
||
case 'S':
|
||
if (!fl_Inps)
|
||
caus_D = 'I';
|
||
else
|
||
{
|
||
TString log_line;
|
||
log_line << old_cod << ": ";
|
||
log_line << "causale quadro D: -S- con flag contributo Inps";
|
||
_M770_log->append(log_line);
|
||
}
|
||
break;
|
||
case 'F':
|
||
cod_qua = "DB";
|
||
caus_DB = 'E';
|
||
caus_D = ' ';
|
||
fl_Inps = TRUE;
|
||
break;
|
||
case 'N':
|
||
cod_qua = "DB";
|
||
caus_DB = 'F';
|
||
caus_D = ' ';
|
||
fl_Inps = TRUE;
|
||
break;
|
||
case 'B':
|
||
cod_qua = "DB";
|
||
caus_DB = 'B';
|
||
caus_D = ' ';
|
||
fl_Inps = TRUE;
|
||
break;
|
||
case 'C':
|
||
cod_qua = "DB";
|
||
caus_DB = 'C';
|
||
caus_D = ' ';
|
||
fl_Inps = TRUE;
|
||
break;
|
||
case 'D':
|
||
cod_qua = "DB";
|
||
caus_DB = 'D';
|
||
caus_D = ' ';
|
||
fl_Inps = TRUE;
|
||
break;
|
||
default:
|
||
if (fl_Inps && cod_qua == "D")
|
||
{
|
||
TString log_line;
|
||
log_line << old_cod << ": ";
|
||
log_line << "causale quadro D: -senza causale";
|
||
log_line << "- con flag contributo Inps";
|
||
_M770_log->append(log_line);
|
||
}
|
||
break;
|
||
}
|
||
|
||
// conversione causale quadro D1
|
||
switch(caus_D1)
|
||
{
|
||
case 'F':
|
||
cod_qua = "DB";
|
||
caus_DB = 'G';
|
||
caus_D1 = ' ';
|
||
fl_Inps = TRUE;
|
||
break;
|
||
case 'A':
|
||
case 'B':
|
||
case 'C':
|
||
case 'D':
|
||
case 'E':
|
||
if (fl_Inps)
|
||
{
|
||
TString log_line;
|
||
log_line << old_cod << ": ";
|
||
log_line << "causale quadro D1: -" << caus_D1;
|
||
log_line << "- con flag contributo Inps";
|
||
_M770_log->append(log_line);
|
||
}
|
||
break;
|
||
default:
|
||
if (fl_Inps && cod_qua == "D1")
|
||
{
|
||
TString log_line;
|
||
log_line << old_cod << ": ";
|
||
log_line << "causale quadro D1: -senza causale";
|
||
log_line << "- con flag contributo Inps";
|
||
_M770_log->append(log_line);
|
||
}
|
||
break;
|
||
}
|
||
|
||
// flag C.T.
|
||
if (fl_CT)
|
||
caus_C = 'A';
|
||
|
||
// flag T.S.
|
||
if (fl_TS)
|
||
{
|
||
fl_TS = FALSE;
|
||
TString log_line;
|
||
log_line << old_cod << ": ";
|
||
log_line << "era indicato il flag T.S.";
|
||
_M770_log->append(log_line);
|
||
}
|
||
|
||
// reset campi contributo Inps se disattivati
|
||
if (!old_fl_Inps)
|
||
{
|
||
ass_imp_Inps = ZERO;
|
||
Perc_Inps = ZERO;
|
||
Perc_Comm_Inps = ZERO;
|
||
}
|
||
|
||
// clear campi eliminati
|
||
ca7.zero("B0");
|
||
ca7.zero("B2");
|
||
|
||
// update campi modificati
|
||
ca7.put("S1",cod_qua);// codice quadro
|
||
ca7.put("B4",fl_Inps);// soggetto contributo Inps
|
||
ca7.put("B3",fl_TS);// flag T.S.
|
||
ca7.put("S6",caus_C);// causale quadro C
|
||
ca7.put("S2",caus_D);// causale quadro D
|
||
ca7.put("S3",caus_D1);// causale quadro D1
|
||
ca7.put("S7",caus_DB);// causale quadro DB
|
||
ca7.put("S8",caus_E);// causale quadro E
|
||
ca7.put("S9",caus_E1);// causale quadro E1
|
||
ca7.put("R2",ass_imp_Inps);// assoggettamento imponibile Inps
|
||
ca7.put("R1",Perc_Inps);// percentuale contributo Inps
|
||
ca7.put("R3",Perc_Comm_Inps);// percentuale contributo Inps committente
|
||
|
||
// riscrittura record
|
||
ca7.rewrite();
|
||
}
|
||
// fine log
|
||
_M770_log->append(log_space);
|
||
|
||
return TRUE;
|
||
}
|
||
|
||
|
||
///////////////////////////////////////////////////////////
|
||
// Conversione quadro A 770 versione 971
|
||
///////////////////////////////////////////////////////////
|
||
bool TConvert_app::cnv_quadroA_971() const
|
||
{
|
||
// titolo log
|
||
char now[9];
|
||
TDate today(TODAY);
|
||
TString log_title("[Log Conversione quadro A : ");
|
||
log_title << today << " " << _strtime(now) << "] Prassi SpA";
|
||
_M770_log->append(log_title);
|
||
TString log_space(" ");
|
||
_M770_log->append(log_space);
|
||
|
||
TLocalisamfile dip(LF_DIPEND);
|
||
TLocalisamfile qa(LF_QUAA);
|
||
TProgind pi(qa.items(), "Conversione quadro A", FALSE, TRUE, 60);
|
||
for (qa.first(); qa.good(); qa.next())
|
||
{
|
||
pi.addstatus(1);
|
||
|
||
// lettura campi soggetti a modifica
|
||
long cod_ditta = qa.get_long("CODDITTA");
|
||
long cod_dip = qa.get_long("CODDIP");
|
||
int A18 = qa.get_int("CAUSA");// causa
|
||
real A29 = qa.get_real("DENARO");// retribuzioni e pensioni
|
||
real EX_A21 = qa.get_real("NATURA");// ex in denaro
|
||
real A21 = qa.get_real("COBBDIP");// contr.prev.obblig.lav.dip.
|
||
real EX_A25 = qa.get_real("IACOBBCD");// ex contr.obbl.carico lav.dip.
|
||
real A24 = qa.get_real("NORIT");// somme a valori non assogg. a rit.
|
||
real EX_A27 = qa.get_real("TOTIMP");// ex totale imponibile
|
||
real EX_A50 = qa.get_real("SVNASSRI");// ex altre somme e valori non ass.rit.
|
||
int A11 = qa.get_int("QAQUALIF");// qualifica
|
||
|
||
// lettura campi dall'anagrafica dipendenti
|
||
int ana_qualifica = 0;// qualifica anagrafica
|
||
dip.setkey(1);
|
||
dip.zero();
|
||
dip.put("CODDITTA",cod_ditta);
|
||
dip.put("CODDIP",cod_dip);
|
||
if (dip.read() == NOERR)
|
||
ana_qualifica = dip.get_int("QUALIFICA");
|
||
else
|
||
{
|
||
TString log_line;
|
||
log_line.format("Anagrafica inesistente per il dipendente :%06ld, della ditta :%05ld",cod_dip,cod_ditta);
|
||
_M770_log->append(log_line);
|
||
}
|
||
|
||
// conversione causa
|
||
switch(A18)
|
||
{
|
||
case 6:
|
||
A18 = 0;
|
||
break;
|
||
case 7:
|
||
A18 = 0;
|
||
break;
|
||
}
|
||
|
||
// retribuzioni e pensioni
|
||
A29 = A29 + EX_A21 - A21 + EX_A27;
|
||
|
||
// contributi previd.assist.obbl.lav.dip.
|
||
A21 = A21 + EX_A25;
|
||
|
||
// somme e valori non assoggettati a ritenuta
|
||
A24 = A24 + EX_A50;
|
||
|
||
// qualifica
|
||
A11 = ana_qualifica;
|
||
|
||
// update campi modificati
|
||
qa.put("CAUSA",A18);// causa
|
||
qa.put("DENARO",A29);// retribuzioni e pensioni
|
||
qa.put("COBBDIP",A21);// contr.prev.obblig.lav.dip.
|
||
qa.put("NORIT",A24);// somme a valori non assogg. a rit.
|
||
qa.put("QAQUALIF",A11);// qualifica
|
||
|
||
// riscrittura record
|
||
qa.rewrite();
|
||
}
|
||
// fine log
|
||
_M770_log->append(log_space);
|
||
|
||
return TRUE;
|
||
}
|
||
|
||
///////////////////////////////////////////////////////////
|
||
// Conversione quadro Abis 770 versione 971
|
||
///////////////////////////////////////////////////////////
|
||
bool TConvert_app::cnv_quadroAB_971() const
|
||
{
|
||
// titolo log
|
||
char now[9];
|
||
TDate today(TODAY);
|
||
TString log_title("[Log Conversione quadro Abis : ");
|
||
log_title << today << " " << _strtime(now) << "] Prassi SpA";
|
||
_M770_log->append(log_title);
|
||
TString log_space(" ");
|
||
_M770_log->append(log_space);
|
||
|
||
// istanza file basebis per riporto flag quadro compilato
|
||
TLocalisamfile bb(LF_BASEBIS);
|
||
|
||
// istanza file Abis e prepara chiave precedente
|
||
// per rilevamento rottura del dipendente
|
||
TLocalisamfile qab(LF_QUAAB);
|
||
qab.setkey(1);
|
||
qab.zero();
|
||
TRectype prevkey(qab.curr());
|
||
int prog = 0;
|
||
|
||
// istanza conta rettifica di conguaglio
|
||
int count_RettA = 0;
|
||
int count_RettB = 0;
|
||
int count_RettC = 0;
|
||
int count_RettX = 0;
|
||
|
||
// istanza record per scrittura rettifica A
|
||
TRectype rec_RettA(qab.curr());
|
||
|
||
// elaborazione quadri A
|
||
TLocalisamfile qa(LF_QUAA);
|
||
TProgind pi(qa.items(), "Conversione quadro Abis", FALSE, TRUE, 60);
|
||
for (qa.first(); qa.good(); qa.next())
|
||
{
|
||
pi.addstatus(1);
|
||
|
||
// lettura campi da copiare su Abis
|
||
long cod_ditta = qa.get_long("CODDITTA");// codice ditta
|
||
long cod_dip = qa.get_long("CODDIP");// codice dipendente
|
||
int rigo = qa.get_int("NPROG");// progressivo rigo
|
||
char EX_A52 = qa.get_char("CONEFF");// conguagli non effettuati
|
||
real EX_A53 = qa.get_real("IMPVERS");// imposta trattenuta
|
||
real EX_A54 = qa.get_real("INTERE");// interessi
|
||
real EX_A55 = qa.get_real("CSSN95CV");// contributo trattenuto
|
||
real EX_A56 = qa.get_real("INTERE2");// interessi
|
||
char EX_A57 = qa.get_char("CNEFF");// conguagli non effettuati
|
||
char EX_A58 = qa.get_char("RETCON");// rettifica conguaglio
|
||
real EX_A59 = qa.get_real("IMPRIMB");// imposta rimborsata
|
||
real EX_A60 = qa.get_real("IMPVER");// imposta trattenuta
|
||
real EX_A61 = qa.get_real("INTIRPEF");// interessi
|
||
real EX_A62 = qa.get_real("IMPVER2");// imposta trattenuta
|
||
real EX_A63 = qa.get_real("INTER");// interessi
|
||
real EX_A64 = qa.get_real("STSIRPEF");// soprattasse su Irpef
|
||
real EX_A65 = qa.get_real("CONRIMB");// contributo a rimborso
|
||
real EX_A66 = qa.get_real("CONVER");// contributo trattenuto
|
||
real EX_A67 = qa.get_real("INTER2");// interessi
|
||
real EX_A68 = qa.get_real("CONVER2");// contributo trattenuto
|
||
real EX_A69 = qa.get_real("INTER3");// interessi
|
||
real EX_A70 = qa.get_real("STSCSSN70");// soprattasse su Cssn
|
||
int EX_A71 = qa.get_int("M730NLIQ");// Mod.730 non liquidabile
|
||
long EX_A72 = qa.get_long("CODCAAF");// codice CAAF
|
||
|
||
real tot =ZERO;
|
||
tot = tot+EX_A53+EX_A54+EX_A55+EX_A56+EX_A59+EX_A60+EX_A61+EX_A62;
|
||
tot = tot+EX_A63+EX_A64+EX_A65+EX_A66+EX_A67+EX_A68+EX_A69+EX_A70;
|
||
|
||
if (tot==ZERO && EX_A52==' ' && EX_A57==' ' && EX_A58==' ' && !EX_A71)
|
||
continue;
|
||
|
||
// preparazione chiave quadro Abis e istanza nuovo record per scrittura
|
||
qab.zero();
|
||
qab.put("CODDITTA",cod_ditta);
|
||
qab.put("CODDIP",cod_dip);
|
||
TRectype key(qab.curr());
|
||
TRectype newrec(qab.curr());
|
||
|
||
// controllo rottura dipendente
|
||
if (key > prevkey)
|
||
{
|
||
// creo record rettifica A + valori operazioni di conguaglio
|
||
if (count_RettA)
|
||
{
|
||
long ditta_RettA = rec_RettA.get_long("CODDITTA");
|
||
long dip_RettA = rec_RettA.get_long("CODDIP");
|
||
rec_RettA.put("NPROG",++prog);
|
||
qab.write(rec_RettA);
|
||
TString log_line;
|
||
log_line.format("Unificato quadro rettifica A con rettifica B per il dipendente :%06ld, della ditta :%05ld",dip_RettA,ditta_RettA);
|
||
_M770_log->append(log_line);
|
||
// set flag quadro compilato
|
||
bb.zero();
|
||
bb.put("CODDITTA",ditta_RettA);
|
||
if (bb.read() == NOERR)
|
||
{
|
||
TString qcomp(bb.get("QCOMP"));
|
||
TString newqcomp;
|
||
newqcomp.spaces(29);
|
||
newqcomp.overwrite(qcomp,0);
|
||
newqcomp[26] = 'X';
|
||
bb.put("QCOMP",newqcomp);
|
||
bb.rewrite();
|
||
}
|
||
}
|
||
// reimposto variabili di controllo
|
||
prevkey = key;
|
||
count_RettA = 0;
|
||
count_RettB = 0;
|
||
count_RettC = 0;
|
||
count_RettX = 0;
|
||
// inizializzo record rettifica A
|
||
rec_RettA = key;
|
||
}
|
||
|
||
// reperisce ultimo progressivo assegnato
|
||
prog = 0;
|
||
for (qab.read(_isgteq); qab.good() && qab.curr() == key; qab.next())
|
||
prog = qab.get_int("NPROG");
|
||
|
||
// non posso riportare un record con rettifica C,D,E oppure F,
|
||
// se ho gi<67> riportato un qualsiasi altro record
|
||
if ((EX_A58 == 'C' || EX_A58 == 'D' || EX_A58 == 'E' || EX_A58 == 'F') && count_RettX > 0)
|
||
{
|
||
TString log_line;
|
||
log_line.format("Non riportato quadro per il dipendente :%06ld, della ditta :%05ld, rigo :%03d",cod_dip,cod_ditta,rigo);
|
||
_M770_log->append(log_line);
|
||
log_line.format("- era un quadro con rettifica %c, ed erano gi<67> stati riportati altri quadri",EX_A58);
|
||
_M770_log->append(log_line);
|
||
continue;
|
||
}
|
||
|
||
// se gi<67> riportato record con rettifica C,D,E oppure F
|
||
// deve esistere solo quest'ultimo
|
||
if (count_RettC)
|
||
{
|
||
TString log_line;
|
||
log_line.format("Non riportato quadro per il dipendente :%06ld, della ditta :%05ld, rigo :%03d",cod_dip,cod_ditta,rigo);
|
||
_M770_log->append(log_line);
|
||
log_line.format("- erano gi<67> stati riportati quadri C,D,E oppure F");
|
||
_M770_log->append(log_line);
|
||
continue;
|
||
}
|
||
|
||
// deve esistere un solo record con rettifica A
|
||
if (EX_A58 == 'A' && count_RettA)
|
||
{
|
||
TString log_line;
|
||
log_line.format("Non riportato quadro per il dipendente :%06ld, della ditta :%05ld, rigo :%03d",cod_dip,cod_ditta,rigo);
|
||
_M770_log->append(log_line);
|
||
log_line.format("- era un quadro con rettifica %c, ed era gi<67> stato riportato un quadro A",EX_A58);
|
||
_M770_log->append(log_line);
|
||
continue;
|
||
}
|
||
|
||
// deve esistere un solo record con rettifica B
|
||
if (EX_A58 == 'B' && count_RettB)
|
||
{
|
||
TString log_line;
|
||
log_line.format("Non riportato quadro per il dipendente :%06ld, della ditta :%05ld, rigo :%03d",cod_dip,cod_ditta,rigo);
|
||
_M770_log->append(log_line);
|
||
log_line.format("- era un quadro con rettifica %c, ed era gi<67> stato riportato un quadro B",EX_A58);
|
||
_M770_log->append(log_line);
|
||
continue;
|
||
}
|
||
|
||
// riporto valori su Abis
|
||
switch (EX_A58)
|
||
{
|
||
// per record con rettifica A memorizzo valori su record rettifica A
|
||
case 'A':
|
||
rec_RettA.put("CONEFF",EX_A52);// conguagli non effettuati
|
||
rec_RettA.put("IMPVERS",EX_A53);// imposta trattenuta
|
||
rec_RettA.put("INTERE",EX_A54);// interessi
|
||
rec_RettA.put("CSSN95CV",EX_A55);// contributo trattenuto
|
||
rec_RettA.put("INTERE2",EX_A56);// interessi
|
||
rec_RettA.put("CNEFF",EX_A57);// conguagli non effettuati
|
||
rec_RettA.put("RETCON",EX_A58);// rettifica conguaglio
|
||
rec_RettA.put("IMPRIMB",EX_A59);// imposta rimborsata
|
||
rec_RettA.put("IMPVER",EX_A60);// imposta trattenuta
|
||
rec_RettA.put("INTIRPEF",EX_A61);// interessi
|
||
rec_RettA.put("IMPVER2",EX_A62);// imposta trattenuta
|
||
rec_RettA.put("INTER",EX_A63);// interessi
|
||
rec_RettA.put("STSIRPEF",EX_A64);// soprattasse su Irpef
|
||
rec_RettA.put("CONRIMB",EX_A65);// contributo a rimborso
|
||
rec_RettA.put("CONVER",EX_A66);// contributo trattenuto
|
||
rec_RettA.put("INTER2",EX_A67);// interessi
|
||
rec_RettA.put("CONVER2",EX_A68);// contributo trattenuto
|
||
rec_RettA.put("INTER3",EX_A69);// interessi
|
||
rec_RettA.put("STSCSSN70",EX_A70);// soprattasse su Cssn
|
||
rec_RettA.put("M730NLIQ",EX_A71);// Mod.730 non liquidabile
|
||
break;
|
||
// per record con rettifica B memorizzo valori su record rettifica A
|
||
case 'B':
|
||
rec_RettA.put("QABRCB19",EX_A62);
|
||
rec_RettA.put("QABRCB20",EX_A63);
|
||
rec_RettA.put("QABRCB21",EX_A64);
|
||
rec_RettA.put("QABRCB22",EX_A65);
|
||
rec_RettA.put("QABRCB23",EX_A66);
|
||
rec_RettA.put("QABRCB24",EX_A67);
|
||
rec_RettA.put("QABRCB25",EX_A68);
|
||
rec_RettA.put("QABRCB26",EX_A69);
|
||
break;
|
||
// per gli altri creo record Abis
|
||
default:
|
||
newrec.put("NPROG",++prog);
|
||
newrec.put("CONEFF",EX_A52);// conguagli non effettuati
|
||
newrec.put("IMPVERS",EX_A53);// imposta trattenuta
|
||
newrec.put("INTERE",EX_A54);// interessi
|
||
newrec.put("CSSN95CV",EX_A55);// contributo trattenuto
|
||
newrec.put("INTERE2",EX_A56);// interessi
|
||
newrec.put("CNEFF",EX_A57);// conguagli non effettuati
|
||
newrec.put("RETCON",EX_A58);// rettifica conguaglio
|
||
newrec.put("IMPRIMB",EX_A59);// imposta rimborsata
|
||
newrec.put("IMPVER",EX_A60);// imposta trattenuta
|
||
newrec.put("INTIRPEF",EX_A61);// interessi
|
||
newrec.put("IMPVER2",EX_A62);// imposta trattenuta
|
||
newrec.put("INTER",EX_A63);// interessi
|
||
newrec.put("STSIRPEF",EX_A64);// soprattasse su Irpef
|
||
newrec.put("CONRIMB",EX_A65);// contributo a rimborso
|
||
newrec.put("CONVER",EX_A66);// contributo trattenuto
|
||
newrec.put("INTER2",EX_A67);// interessi
|
||
newrec.put("CONVER2",EX_A68);// contributo trattenuto
|
||
newrec.put("INTER3",EX_A69);// interessi
|
||
newrec.put("STSCSSN70",EX_A70);// soprattasse su Cssn
|
||
newrec.put("M730NLIQ",EX_A71);// Mod.730 non liquidabile
|
||
qab.write(newrec);
|
||
// set flag quadro compilato
|
||
bb.zero();
|
||
bb.put("CODDITTA",cod_ditta);
|
||
if (bb.read() == NOERR)
|
||
{
|
||
TString qcomp(29);
|
||
qcomp = bb.get("QCOMP");
|
||
qcomp[(int)AB] = 'X';
|
||
bb.put("QCOMP",qcomp);
|
||
bb.rewrite();
|
||
}
|
||
}
|
||
|
||
// aggiorno conta rettifica di conguaglio
|
||
switch (EX_A58)
|
||
{
|
||
case 'A':
|
||
++count_RettA;
|
||
++count_RettX;
|
||
break;
|
||
case 'B':
|
||
++count_RettB;
|
||
++count_RettX;
|
||
break;
|
||
case 'C':
|
||
++count_RettC;
|
||
++count_RettX;
|
||
break;
|
||
case 'D':
|
||
++count_RettC;
|
||
++count_RettX;
|
||
break;
|
||
case 'E':
|
||
++count_RettC;
|
||
++count_RettX;
|
||
break;
|
||
case 'F':
|
||
++count_RettC;
|
||
++count_RettX;
|
||
break;
|
||
default:
|
||
++count_RettX;
|
||
}
|
||
}
|
||
// fine log
|
||
_M770_log->append(log_space);
|
||
|
||
return TRUE;
|
||
}
|
||
|
||
///////////////////////////////////////////////////////////
|
||
// Conversione quadro A2 770 versione 971
|
||
///////////////////////////////////////////////////////////
|
||
bool TConvert_app::cnv_quadroA2_971() const
|
||
{
|
||
// titolo log
|
||
char now[9];
|
||
TDate today(TODAY);
|
||
TString log_title("[Log Conversione quadro A2 : ");
|
||
log_title << today << " " << _strtime(now) << "] Prassi SpA";
|
||
_M770_log->append(log_title);
|
||
TString log_space(" ");
|
||
_M770_log->append(log_space);
|
||
|
||
// istanza file A2 e prepara chiave precedente
|
||
// per rilevamento rottura del dipendente
|
||
TLocalisamfile qa2(LF_QUAA2);
|
||
qa2.setkey(1);
|
||
qa2.zero();
|
||
TRectype prevkey(qa2.curr());
|
||
int prog = 0;
|
||
|
||
// istanza conta rettifica di conguaglio
|
||
int count_RettA = 0;
|
||
int count_RettB = 0;
|
||
int count_RettC = 0;
|
||
int count_RettX = 0;
|
||
|
||
// istanza record per scrittura rettifica A
|
||
TRectype rec_RettA(qa2.curr());
|
||
|
||
// istanza cursore per scansione quadri A2
|
||
TRelation rA2(LF_QUAA2);
|
||
TCursor cA2(&rA2);
|
||
|
||
// elaborazione quadri A2 (frizzati)
|
||
cA2.freeze();
|
||
cA2 = 0L;
|
||
TRectype& rc = cA2.curr();
|
||
TRecnotype items = cA2.items();
|
||
TProgind pi(items, "Conversione quadro A2", FALSE, TRUE, 60);
|
||
for (int i = 0; i < items; i++,++cA2)
|
||
{
|
||
pi.addstatus(1);
|
||
|
||
// lettura campi da copiare su A2
|
||
long cod_ditta = rc.get_long("CODDITTA");// codice ditta
|
||
long cod_dip = rc.get_long("CODDIP");// codice dipendente
|
||
int rigo = rc.get_int("NPROG");// progressivo rigo
|
||
char A2_9 = rc.get_char("RETCON");// rettifica conguaglio
|
||
real A2_10 = rc.get_real("SIRPEFRIMB");
|
||
real A2_11 = rc.get_real("VIRPEF");
|
||
real A2_12 = rc.get_real("INTIRPEF");
|
||
real A2_13 = rc.get_real("AIRPEFIV");
|
||
real A2_14 = rc.get_real("AIRPEFINT");
|
||
real A2_15 = rc.get_real("STASSA15");
|
||
real A2_16 = rc.get_real("CONTR16");
|
||
real A2_17 = rc.get_real("CONTRVER");
|
||
|
||
// preparazione chiave quadro A2
|
||
qa2.zero();
|
||
qa2.put("CODDITTA",cod_ditta);
|
||
qa2.put("CODDIP",cod_dip);
|
||
TRectype key(qa2.curr());
|
||
|
||
// controllo rottura dipendente
|
||
if (key > prevkey)
|
||
{
|
||
// aggiorno record rettifica A + valori operazioni di conguaglio
|
||
if (count_RettA)
|
||
{
|
||
long ditta_RettA = rec_RettA.get_long("CODDITTA");
|
||
long dip_RettA = rec_RettA.get_long("CODDIP");
|
||
qa2.rewrite(rec_RettA);
|
||
TString log_line;
|
||
log_line.format("Unificato quadro rettifica A con rettifica B per il dipendente :%06ld, della ditta :%05ld",dip_RettA,ditta_RettA);
|
||
_M770_log->append(log_line);
|
||
}
|
||
// reimposto variabili di controllo
|
||
prevkey = key;
|
||
count_RettA = 0;
|
||
count_RettB = 0;
|
||
count_RettC = 0;
|
||
count_RettX = 0;
|
||
}
|
||
|
||
// non posso riportare un record con rettifica C,D,E oppure F,
|
||
// se ho gi<67> riportato un qualsiasi altro record
|
||
if ((A2_9 == 'C' || A2_9 == 'D' || A2_9 == 'E' || A2_9 == 'F') && count_RettX > 0)
|
||
{
|
||
qa2.remove(rc);
|
||
TString log_line;
|
||
log_line.format("Eliminato quadro per il dipendente :%06ld, della ditta :%05ld, rigo :%03d",cod_dip,cod_ditta,rigo);
|
||
_M770_log->append(log_line);
|
||
log_line.format("- era un quadro con rettifica %c, ed erano gi<67> presenti altri quadri",A2_9);
|
||
_M770_log->append(log_line);
|
||
continue;
|
||
}
|
||
|
||
// se gi<67> riportato record con rettifica C,D,E oppure F
|
||
// deve esistere solo quest'ultimo
|
||
if (count_RettC)
|
||
{
|
||
qa2.remove(rc);
|
||
TString log_line;
|
||
log_line.format("Eliminato quadro per il dipendente :%06ld, della ditta :%05ld, rigo :%03d",cod_dip,cod_ditta,rigo);
|
||
_M770_log->append(log_line);
|
||
log_line.format("- erano gi<67> presenti quadri C,D,E oppure F");
|
||
_M770_log->append(log_line);
|
||
continue;
|
||
}
|
||
|
||
// deve esistere un solo record con rettifica A
|
||
if (A2_9 == 'A' && count_RettA)
|
||
{
|
||
qa2.remove(rc);
|
||
TString log_line;
|
||
log_line.format("Eliminato quadro per il dipendente :%06ld, della ditta :%05ld, rigo :%03d",cod_dip,cod_ditta,rigo);
|
||
_M770_log->append(log_line);
|
||
log_line.format("- era un quadro con rettifica %c, ed era gi<67> presente un quadro A",A2_9);
|
||
_M770_log->append(log_line);
|
||
continue;
|
||
}
|
||
|
||
// deve esistere un solo record con rettifica B
|
||
if (A2_9 == 'B' && count_RettB)
|
||
{
|
||
qa2.remove(rc);
|
||
TString log_line;
|
||
log_line.format("Eliminato quadro per il dipendente :%06ld, della ditta :%05ld, rigo :%03d",cod_dip,cod_ditta,rigo);
|
||
_M770_log->append(log_line);
|
||
log_line.format("- era un quadro con rettifica %c, ed era gi<67> presente un quadro B",A2_9);
|
||
_M770_log->append(log_line);
|
||
continue;
|
||
}
|
||
|
||
// riporto valori su A2
|
||
switch (A2_9)
|
||
{
|
||
// per record con rettifica A memorizzo valori su record rettifica A
|
||
case 'A':
|
||
rec_RettA = rc;
|
||
break;
|
||
// per record con rettifica B memorizzo valori su record rettifica A
|
||
// ed elimino il record
|
||
case 'B':
|
||
rec_RettA.put("QA2RCB10",A2_10);
|
||
rec_RettA.put("QA2RCB11",A2_11);
|
||
rec_RettA.put("QA2RCB12",A2_12);
|
||
rec_RettA.put("QA2RCB13",A2_13);
|
||
rec_RettA.put("QA2RCB14",A2_14);
|
||
rec_RettA.put("QA2RCB15",A2_15);
|
||
rec_RettA.put("QA2RCB16",A2_16);
|
||
rec_RettA.put("QA2RCB17",A2_17);
|
||
qa2.remove(rc);
|
||
break;
|
||
// per gli altri non f<> nulla
|
||
default:
|
||
break;
|
||
}
|
||
|
||
// aggiorno conta rettifica di conguaglio
|
||
switch (A2_9)
|
||
{
|
||
case 'A':
|
||
++count_RettA;
|
||
++count_RettX;
|
||
break;
|
||
case 'B':
|
||
++count_RettB;
|
||
++count_RettX;
|
||
break;
|
||
case 'C':
|
||
++count_RettC;
|
||
++count_RettX;
|
||
break;
|
||
case 'D':
|
||
++count_RettC;
|
||
++count_RettX;
|
||
break;
|
||
case 'E':
|
||
++count_RettC;
|
||
++count_RettX;
|
||
break;
|
||
case 'F':
|
||
++count_RettC;
|
||
++count_RettX;
|
||
break;
|
||
default:
|
||
++count_RettX;
|
||
}
|
||
}
|
||
// fine log
|
||
_M770_log->append(log_space);
|
||
|
||
return TRUE;
|
||
}
|
||
|
||
///////////////////////////////////////////////////////////
|
||
// Conversione basebis 770 versione 971
|
||
///////////////////////////////////////////////////////////
|
||
bool TConvert_app::cnv_basebis_971() const
|
||
{
|
||
// titolo log
|
||
char now[9];
|
||
TDate today(TODAY);
|
||
TString log_title("[Log Conversione base : ");
|
||
log_title << today << " " << _strtime(now) << "] Prassi SpA";
|
||
_M770_log->append(log_title);
|
||
TString log_space(" ");
|
||
_M770_log->append(log_space);
|
||
|
||
TLocalisamfile bb(LF_BASEBIS);
|
||
TLocalisamfile ql(LF_QUAL);
|
||
TProgind pi(bb.items(), "Conversione modello base", FALSE, TRUE, 60);
|
||
for (bb.first(); bb.good(); bb.next())
|
||
{
|
||
pi.addstatus(1);
|
||
|
||
// lettura campi soggetti a modifica
|
||
long codditta = bb.get_long("CODDITTA");
|
||
TString qcomp = bb.get("QCOMP");
|
||
|
||
// sistemazione flag quadri compilati come flag quadri inviati/ricevuti
|
||
const int Lpos = L;
|
||
TString newqcomp;
|
||
newqcomp.spaces(29);
|
||
int nchar = qcomp.len() < Lpos ? qcomp.len() : Lpos;
|
||
int i;
|
||
for (i=0; i<nchar; i++)
|
||
newqcomp[i] = qcomp[i];
|
||
for (i=Lpos; i<qcomp.len(); i++)
|
||
if ((i+1)<newqcomp.len())
|
||
newqcomp[i+1] = qcomp[i];
|
||
|
||
// set flag quadro L compilato
|
||
ql.zero();
|
||
ql.put("CODDITTA",codditta);
|
||
ql.put("QLAP",1996);
|
||
TRectype& currec = ql.curr();
|
||
TRectype keyrec = currec;
|
||
if (ql.read(_isgteq) == NOERR && currec == keyrec)
|
||
newqcomp[(int)L] = 'X';
|
||
|
||
// update campi modificati
|
||
bb.put("QCOMP",newqcomp);// flag quadri compilati
|
||
|
||
// riscrittura record
|
||
bb.rewrite();
|
||
}
|
||
// fine log
|
||
_M770_log->append(log_space);
|
||
|
||
return TRUE;
|
||
}
|
||
|
||
///////////////////////////////////////////////////////////
|
||
// Conversione schede percipienti versione 971
|
||
///////////////////////////////////////////////////////////
|
||
bool TConvert_app::cnv_schede_971() const
|
||
{
|
||
// titolo log
|
||
char now[9];
|
||
TDate today(TODAY);
|
||
TString log_title("[Log Conversione schede percipienti : ");
|
||
log_title << today << " " << _strtime(now) << "] Prassi SpA";
|
||
_M770_log->append(log_title);
|
||
TString log_space(" ");
|
||
_M770_log->append(log_space);
|
||
|
||
TLocalisamfile sch(LF_SCPERC);
|
||
TLocalisamfile pag(LF_RPAG);
|
||
TLocalisamfile ver(LF_RVER);
|
||
TTable ca7("%ca7");
|
||
TProgind pi(sch.items(), "Conversione Schede Percipienti", FALSE, TRUE, 60);
|
||
for (sch.first(); sch.good(); sch.next())
|
||
{
|
||
pi.addstatus(1);
|
||
|
||
// lettura campi soggetti a modifica
|
||
long codditta = sch.get_long("CODDITTA");
|
||
TString16 tipoa = sch.get("TIPOA");
|
||
long codanagr = sch.get_long("CODANAGR");
|
||
int nprog = sch.get_int("NPROG");
|
||
TString16 codcaus = sch.get("CODCAUS");
|
||
TString16 causqua = sch.get("CAUSQUA");
|
||
TString16 flagts = sch.get("FLAGTS");
|
||
real ritope = sch.get_real("RITOPE");
|
||
real ritver = sch.get_real("RITVER");
|
||
|
||
// decodifica valori da tabella causali
|
||
TString16 t_quadro = "";
|
||
TString16 t_causqc = "";
|
||
TString16 t_causqd = "";
|
||
TString16 t_causqdb = "";
|
||
TString16 t_causqd1 = "";
|
||
TString16 t_causqe = "";
|
||
TString16 t_causqe1 = "";
|
||
TString16 t_flagts = "";
|
||
real t_PercRit = ZERO;
|
||
real t_PercInps = ZERO;
|
||
real t_PercAssInps = ZERO;
|
||
real t_PercComInps = ZERO;
|
||
real t_PercAssImp = ZERO;
|
||
real t_PercCassaPrev = ZERO;
|
||
bool t_FlagInps = FALSE;
|
||
ca7.zero();
|
||
ca7.put("CODTAB", codcaus);
|
||
if (ca7.read() == NOERR)
|
||
{
|
||
t_quadro = ca7.get("S1");
|
||
t_causqc = ca7.get("S6");
|
||
t_causqd = ca7.get("S2");
|
||
t_causqdb = ca7.get("S7");
|
||
t_causqd1 = ca7.get("S3");
|
||
t_causqe = ca7.get("S8");
|
||
t_causqe1 = ca7.get("S9");
|
||
t_flagts = ca7.get("S4");
|
||
t_PercRit = ca7.get_real("R0");
|
||
t_PercInps = ca7.get_real("R1");
|
||
t_PercAssInps = ca7.get_real("R2");
|
||
t_PercComInps = ca7.get_real("R3");
|
||
t_PercAssImp = ca7.get_real("R4");
|
||
t_PercCassaPrev = ca7.get_real("R5");
|
||
t_FlagInps = ca7.get_bool("B4");
|
||
}
|
||
|
||
// conversione pagamenti collegati
|
||
pag.zero();
|
||
pag.put("CODDITTA", codditta);
|
||
pag.put("TIPOA", tipoa);
|
||
pag.put("CODANAGR", codanagr);
|
||
pag.put("NPROG", nprog);
|
||
TRectype& rec = pag.curr();
|
||
TRectype keypag = rec;
|
||
// azzero totali da riportare su scheda
|
||
ritope = ZERO;
|
||
// elaborazione pagamenti della scheda
|
||
for (pag.read(_isgteq); pag.good() && rec == keypag; pag.next())
|
||
{
|
||
// elimina pagamenti di quadro diverso da C,D,DB,D1,E,E1,G
|
||
if (t_quadro != "C" && t_quadro != "D" && t_quadro != "DB" && t_quadro != "D1" &&
|
||
t_quadro != "E" && t_quadro != "E1" && t_quadro != "G")
|
||
{
|
||
pag.remove();
|
||
continue;
|
||
}
|
||
|
||
// lettura campi soggetti a modifica
|
||
Pag_struct s;
|
||
s.datapag = rec.get_date("DATAPAG");
|
||
s.imponibile = rec.get_real("IMPONIBILE");
|
||
s.perc = rec.get_real("PERC");
|
||
s.ritenuta = rec.get_real("RITENUTA");
|
||
s.compenso = rec.get_real("COMPENSO");
|
||
s.netto = rec.get_real("NETTO");
|
||
s.numvers = rec.get_long("NUMVERS");
|
||
s.spesa = rec.get_real("SPESA");
|
||
s.ctssnperc = rec.get_real("CTSSNPERC");
|
||
s.ctssncomp = rec.get_real("CTSSNCOMP");
|
||
s.ritlorda = rec.get_real("RITLORDA");
|
||
s.controbb = rec.get_real("CONTROBB");
|
||
s.detfamil = rec.get_real("DETFAMIL");
|
||
s.detlavdip = rec.get_real("DETLAVDIP");
|
||
s.totdet = rec.get_real("TOTDET");
|
||
s.giolavdip = rec.get_int("GIOLAVDIP");
|
||
s.impcpa = rec.get_real("IMPCPA");
|
||
s.somregconv = rec.get_real("SOMREGCONV");
|
||
s.alqimp10 = rec.get_real("ALQIMP10");
|
||
s.cod10 = rec.get("COD10");
|
||
s.utpagati = rec.get_real("UTPAGATI");
|
||
s.utspett = rec.get_real("UTSPETT");
|
||
s.ritutpag = rec.get_real("RITUTPAG");
|
||
s.ritutspe = rec.get_real("RITUTSPE");
|
||
s.nquote = rec.get_real("NQUOTE");
|
||
s.somnsrit = rec.get_real("SOMNSRIT");
|
||
s.ammlordo = rec.get_real("AMMLORDO");
|
||
s.quotaprov = rec.get_real("QUOTAPROV");
|
||
s.impnetto = rec.get_real("IMPNETTO");
|
||
s.comnetto = rec.get_real("COMNETTO");
|
||
|
||
// riporto contributi obbligatori
|
||
if (t_quadro == "C")
|
||
s.controbb = s.ctssnperc;
|
||
|
||
// riporto percentuale assogg.imp.Inps
|
||
if (t_quadro == "DB")
|
||
s.alqimp10 = t_PercAssInps;
|
||
|
||
// codice contributo Inps
|
||
if (t_quadro == "DB")
|
||
{
|
||
s.cod10 = "B";
|
||
if ((t_PercAssInps == 95.00 || t_PercAssInps == 100.00) && t_PercInps == 10.00)
|
||
s.cod10 = "A";
|
||
if (t_PercAssInps == ZERO || t_PercInps == ZERO)
|
||
s.cod10 = "C";
|
||
}
|
||
|
||
// azzero valori Inps per quadri che non li gestiscono
|
||
if (t_quadro != "DB")
|
||
{
|
||
s.ctssnperc = ZERO;
|
||
s.ctssncomp = ZERO;
|
||
}
|
||
|
||
// azzero spesa per quadri che non la gestiscono
|
||
if (t_quadro == "G")
|
||
s.spesa = ZERO;
|
||
|
||
// ricalcolo riga pagamento
|
||
Pag_struct c;
|
||
calcola_riga_pag(s,
|
||
c,
|
||
FALSE,
|
||
t_PercAssImp,
|
||
t_PercCassaPrev,
|
||
t_PercRit,
|
||
t_PercInps,
|
||
t_PercAssInps,
|
||
t_PercComInps);
|
||
|
||
// totalizzo ritenuta per scheda
|
||
ritope += s.ritenuta;
|
||
|
||
// forzo -1 nel numero versamento collegato se uguale a zero
|
||
// perch<63> da luogo poi a malfunzionamenti in gestione
|
||
if (s.numvers == 0L)
|
||
s.numvers = -1L;
|
||
|
||
// update campi modificati
|
||
rec.put("DATAPAG",s.datapag);
|
||
rec.put("IMPONIBILE",s.imponibile);
|
||
rec.put("PERC",s.perc);
|
||
rec.put("RITENUTA",s.ritenuta);
|
||
rec.put("COMPENSO",s.compenso);
|
||
rec.put("NETTO",s.netto);
|
||
rec.put("NUMVERS",s.numvers);
|
||
rec.put("SPESA",s.spesa);
|
||
rec.put("CTSSNPERC",s.ctssnperc);
|
||
rec.put("CTSSNCOMP",s.ctssncomp);
|
||
rec.put("RITLORDA",s.ritlorda);
|
||
rec.put("CONTROBB",s.controbb);
|
||
rec.put("DETFAMIL",s.detfamil);
|
||
rec.put("DETLAVDIP",s.detlavdip);
|
||
rec.put("TOTDET",s.totdet);
|
||
rec.put("GIOLAVDIP",s.giolavdip);
|
||
rec.put("IMPCPA",s.impcpa);
|
||
rec.put("SOMREGCONV",s.somregconv);
|
||
rec.put("ALQIMP10",s.alqimp10);
|
||
rec.put("COD10",s.cod10);
|
||
rec.put("UTPAGATI",s.utpagati);
|
||
rec.put("UTSPETT",s.utspett);
|
||
rec.put("RITUTPAG",s.ritutpag);
|
||
rec.put("RITUTSPE",s.ritutspe);
|
||
rec.put("NQUOTE",s.nquote);
|
||
rec.put("SOMNSRIT",s.somnsrit);
|
||
rec.put("AMMLORDO",s.ammlordo);
|
||
rec.put("QUOTAPROV",s.quotaprov);
|
||
rec.put("IMPNETTO",s.impnetto);
|
||
rec.put("COMNETTO",s.comnetto);
|
||
|
||
// riscrittura record
|
||
pag.rewrite();
|
||
}
|
||
|
||
// conversione versamenti collegati
|
||
ver.zero();
|
||
ver.put("CODDITTA", codditta);
|
||
ver.put("TIPOA", tipoa);
|
||
ver.put("CODANAGR", codanagr);
|
||
ver.put("NPROG", nprog);
|
||
TRectype keyver = ver.curr();
|
||
// azzero totali da riportare su scheda
|
||
ritver =ZERO;
|
||
// elaborazione versamenti della scheda
|
||
for (ver.read(_isgteq); ver.good() && ver.curr() == keyver; ver.next())
|
||
{
|
||
// elimina versamenti di quadro diverso da C,D,DB,D1,E,E1,G
|
||
if (t_quadro != "C" && t_quadro != "D" && t_quadro != "DB" && t_quadro != "D1" &&
|
||
t_quadro != "E" && t_quadro != "E1" && t_quadro != "G")
|
||
{
|
||
ver.remove();
|
||
continue;
|
||
}
|
||
|
||
// totalizzo ritenuta per scheda
|
||
ritver += ver.get_real("RITENUTA");
|
||
}
|
||
|
||
// elimina scheda di quadro diverso da C,D,DB,D1,E,E1,G
|
||
if (t_quadro != "C" && t_quadro != "D" && t_quadro != "DB" && t_quadro != "D1" &&
|
||
t_quadro != "E" && t_quadro != "E1" && t_quadro != "G")
|
||
{
|
||
sch.remove();
|
||
TString log_line;
|
||
log_line.format("Eliminata scheda n.%04d di quadro %s per il percipiente :%s,%05ld, della ditta :%05ld",nprog,(const char*)t_quadro,(const char*)tipoa,codanagr,codditta);
|
||
_M770_log->append(log_line);
|
||
continue;
|
||
}
|
||
|
||
// riporto casuale quadro
|
||
if (t_quadro == "C")
|
||
causqua = t_causqc;
|
||
if (t_quadro == "D")
|
||
causqua = t_causqd;
|
||
if (t_quadro == "DB")
|
||
causqua = t_causqdb;
|
||
if (t_quadro == "D1")
|
||
causqua = t_causqd1;
|
||
if (t_quadro == "E")
|
||
causqua = t_causqe;
|
||
if (t_quadro == "E1")
|
||
causqua = t_causqe1;
|
||
|
||
// riporto flag TS
|
||
if (t_quadro == "C")
|
||
flagts = t_flagts;
|
||
|
||
// update campi modificati
|
||
sch.put("CAUSQUA",causqua);
|
||
sch.put("FLAGTS",flagts);
|
||
sch.put("RITOPE",ritope);
|
||
sch.put("RITVER",ritver);
|
||
|
||
// riscrittura record
|
||
sch.rewrite();
|
||
|
||
}
|
||
// fine log
|
||
_M770_log->append(log_space);
|
||
|
||
return TRUE;
|
||
}
|
||
|
||
///////////////////////////////////////////////////////////
|
||
// Conversione manuale schede percipienti versione 971
|
||
// calcolo valore CPA
|
||
///////////////////////////////////////////////////////////
|
||
bool TConvert_app::cnv_schede_man1_971() const
|
||
{
|
||
// conferma
|
||
if (!yesno_box("Conferma calcolo automatico del CPA in Schede Percipienti?"))
|
||
return FALSE;
|
||
|
||
// titolo log
|
||
char now[9];
|
||
TDate today(TODAY);
|
||
TString log_title("[Log Conversione schede percipienti : ");
|
||
log_title << today << " " << _strtime(now) << "] Prassi SpA";
|
||
_M770_log->append(log_title);
|
||
TString log_space(" ");
|
||
_M770_log->append(log_space);
|
||
TString log_line("Eseguita conversione manuale di riporto valore CPA");
|
||
_M770_log->append(log_line);
|
||
|
||
// almeno una scheda convertita
|
||
bool one_conv = FALSE;
|
||
|
||
TLocalisamfile sch(LF_SCPERC);
|
||
TLocalisamfile pag(LF_RPAG);
|
||
TTable ca7("%ca7");
|
||
TProgind pi(sch.items(), "Riporto valore CPA delle schede percipienti", FALSE, TRUE, 60);
|
||
for (sch.first(); sch.good(); sch.next())
|
||
{
|
||
pi.addstatus(1);
|
||
|
||
// lettura campi soggetti a modifica
|
||
long codditta = sch.get_long("CODDITTA");
|
||
TString16 tipoa = sch.get("TIPOA");
|
||
long codanagr = sch.get_long("CODANAGR");
|
||
int nprog = sch.get_int("NPROG");
|
||
TString16 codcaus = sch.get("CODCAUS");
|
||
|
||
// decodifica valori da tabella causali
|
||
TString16 t_quadro = "";
|
||
real t_PercCassaPrev = ZERO;
|
||
ca7.zero();
|
||
ca7.put("CODTAB", codcaus);
|
||
if (ca7.read() == NOERR)
|
||
{
|
||
t_quadro = ca7.get("S1");
|
||
t_PercCassaPrev = ca7.get_real("R5");
|
||
}
|
||
|
||
// conversione pagamenti collegati
|
||
pag.zero();
|
||
pag.put("CODDITTA", codditta);
|
||
pag.put("TIPOA", tipoa);
|
||
pag.put("CODANAGR", codanagr);
|
||
pag.put("NPROG", nprog);
|
||
TRectype& rec = pag.curr();
|
||
TRectype keypag = rec;
|
||
|
||
// elaborazione pagamenti della scheda
|
||
for (pag.read(_isgteq); pag.good() && rec == keypag; pag.next())
|
||
{
|
||
// lettura campi soggetti a modifica
|
||
Pag_struct s;
|
||
s.compenso = rec.get_real("COMPENSO");
|
||
s.impcpa = rec.get_real("IMPCPA");
|
||
|
||
// calcolo CPA
|
||
real c_impcpa = (s.compenso * t_PercCassaPrev) / (100.00 + t_PercCassaPrev);
|
||
c_impcpa.round();
|
||
if (s.impcpa == ZERO)
|
||
{
|
||
s.impcpa = c_impcpa;
|
||
one_conv = TRUE;
|
||
}
|
||
|
||
// update campi modificati
|
||
rec.put("IMPCPA",s.impcpa);
|
||
|
||
// riscrittura record
|
||
pag.rewrite();
|
||
}
|
||
}
|
||
|
||
// ricalcolo totale schede
|
||
if (one_conv)
|
||
totalrecalc();
|
||
|
||
// fine log
|
||
_M770_log->append(log_space);
|
||
|
||
return TRUE;
|
||
}
|
||
|
||
///////////////////////////////////////////////////////////
|
||
// Conversione manuale schede percipienti versione 971
|
||
// modifica causali in schede percipienti
|
||
///////////////////////////////////////////////////////////
|
||
bool TConvert_app::cnv_schede_man2_971() const
|
||
{
|
||
// titolo log
|
||
char now[9];
|
||
TDate today(TODAY);
|
||
TString log_title("[Log Conversione schede percipienti : ");
|
||
log_title << today << " " << _strtime(now) << "] Prassi SpA";
|
||
_M770_log->append(log_title);
|
||
TString log_space(" ");
|
||
_M770_log->append(log_space);
|
||
|
||
// almeno una scheda convertita
|
||
bool one_conv = FALSE;
|
||
|
||
// istanza maschera principale
|
||
TMask mainmsk("77cnva.msk");
|
||
mainmsk.set_handler(F_CODCAUS, F_CODCAUS_handler);
|
||
|
||
// prima escuzione maschera principale
|
||
mainmsk.open_modal();
|
||
KEY tasto = mainmsk.run();
|
||
|
||
// gestione maschera principale
|
||
while (tasto != K_ESC)
|
||
{
|
||
// gestione schede convertibili
|
||
if (choicesheet(mainmsk.get_long(F_CODDITTA), mainmsk.get(F_CODCAUS), mainmsk.get(F_CODQUA), mainmsk.get(F_CAUSQUA)))
|
||
one_conv = TRUE;
|
||
|
||
// riesecuzione maschera
|
||
tasto = mainmsk.run();
|
||
}
|
||
|
||
// chiusura maschera principale
|
||
mainmsk.close_modal();
|
||
|
||
// ricalcolo totale schede
|
||
if (one_conv)
|
||
totalrecalc();
|
||
|
||
// fine log
|
||
_M770_log->append(log_space);
|
||
|
||
return TRUE;
|
||
}
|
||
|
||
Pag_struct& TConvert_app::clear_struct(Pag_struct& s) const
|
||
{
|
||
s.datapag = NULLDATE;
|
||
s.imponibile = ZERO;
|
||
s.perc = ZERO;
|
||
s.ritenuta = ZERO;
|
||
s.compenso = ZERO;
|
||
s.netto = ZERO;
|
||
s.numvers = -1L;
|
||
s.spesa = ZERO;
|
||
s.ctssnperc = ZERO;
|
||
s.ctssncomp = ZERO;
|
||
s.ritlorda = ZERO;
|
||
s.controbb = ZERO;
|
||
s.detfamil = ZERO;
|
||
s.detlavdip = ZERO;
|
||
s.totdet = ZERO;
|
||
s.giolavdip = 0;
|
||
s.impcpa = ZERO;
|
||
s.somregconv = ZERO;
|
||
s.alqimp10 = ZERO;
|
||
s.cod10 = "";
|
||
s.utpagati = ZERO;
|
||
s.utspett = ZERO;
|
||
s.ritutpag = ZERO;
|
||
s.ritutspe = ZERO;
|
||
s.nquote = ZERO;
|
||
s.somnsrit = ZERO;
|
||
s.ammlordo = ZERO;
|
||
s.quotaprov = ZERO;
|
||
s.impnetto = ZERO;
|
||
s.comnetto = ZERO;
|
||
|
||
return s;
|
||
}
|
||
|
||
|
||
Pag_struct& TConvert_app::calcola_riga_pag(Pag_struct& s,
|
||
Pag_struct& c,
|
||
bool force,
|
||
const real h_PercAssImp,
|
||
const real h_PercCassaPrev,
|
||
const real h_PercRitenuta,
|
||
const real h_PercInps,
|
||
const real h_PercAssImpInps,
|
||
const real h_PercCommitInps) const
|
||
{
|
||
|
||
// azzera struttura di valori calcolati
|
||
clear_struct(c);
|
||
|
||
// calcolo imponibile
|
||
c.imponibile = ((s.compenso - s.impcpa) * h_PercAssImp) / 100.00;
|
||
c.imponibile.round();
|
||
if (s.imponibile == ZERO || force)
|
||
s.imponibile = c.imponibile;
|
||
|
||
// percentuale ritenuta acconto
|
||
if (s.perc == ZERO || force)
|
||
s.perc = h_PercRitenuta;
|
||
|
||
// calcolo ritenuta lorda
|
||
c.ritlorda = (s.imponibile * s.perc) / 100.00;
|
||
c.ritlorda.round();
|
||
s.ritlorda = c.ritlorda;
|
||
|
||
// calcolo totale detrazioni
|
||
c.totdet = s.detfamil + s.detlavdip;
|
||
if (c.totdet > s.ritlorda)
|
||
c.totdet = s.ritlorda;
|
||
s.totdet = c.totdet;
|
||
|
||
// calcolo ritenuta
|
||
c.ritenuta = s.ritlorda - s.totdet;
|
||
if (s.ritenuta == ZERO || force)
|
||
s.ritenuta = c.ritenuta;
|
||
|
||
// percentuale assoggettamento Inps
|
||
if (s.alqimp10 == ZERO || force)
|
||
s.alqimp10 = h_PercAssImpInps;
|
||
|
||
// calcolo contributo Inps complessivo
|
||
c.ctssncomp = (((s.compenso * s.alqimp10) / 100.00) * h_PercInps) / 100.00;
|
||
c.ctssncomp.round();
|
||
if (s.ctssncomp == ZERO || force)
|
||
s.ctssncomp = c.ctssncomp;
|
||
|
||
// calcolo contributo Inps del percipiente
|
||
if (h_PercCommitInps == ZERO)
|
||
c.ctssnperc = s.ctssncomp - ((s.ctssncomp * 2) / 3);
|
||
else
|
||
c.ctssnperc = s.ctssncomp - ((s.ctssncomp * h_PercCommitInps) / 100.00);
|
||
c.ctssnperc.round();
|
||
if (s.ctssnperc == ZERO || force)
|
||
s.ctssnperc = c.ctssnperc;
|
||
|
||
// calcolo utili pagati
|
||
c.utpagati = s.imponibile;
|
||
if (s.utpagati == ZERO || force)
|
||
s.utpagati = c.utpagati;
|
||
if (abs(s.utpagati) > abs(s.imponibile))
|
||
s.utpagati = s.imponibile;
|
||
|
||
// calcolo ritenute utili pagati
|
||
c.ritutpag = (s.utpagati * s.perc) / 100.00;
|
||
c.ritutpag.round();
|
||
if (s.ritutpag == ZERO || force)
|
||
s.ritutpag = c.ritutpag;
|
||
if (abs(s.ritutpag) > abs(s.ritenuta))
|
||
s.ritutpag = s.ritenuta;
|
||
|
||
// calcolo utili spettanti
|
||
s.utspett = s.imponibile - s.utpagati;
|
||
|
||
// calcolo ritenute utili spettanti
|
||
s.ritutspe = s.ritenuta - s.ritutpag;
|
||
|
||
// calcolo compenso netto
|
||
s.netto = s.compenso + s.spesa - s.ritenuta - s.ctssnperc;
|
||
|
||
// calcolo somme non soggette a ritenuta
|
||
s.somnsrit = s.compenso - s.imponibile + s.spesa - s.impcpa - s.somregconv;
|
||
|
||
// calcolo ammontare lordo
|
||
s.ammlordo = s.imponibile + s.somnsrit + s.controbb + s.somregconv;
|
||
|
||
// calcolo quota provvigioni
|
||
s.quotaprov = s.somnsrit - s.spesa;
|
||
|
||
// calcolo imponibile al netto delle ritenute
|
||
s.impnetto = s.imponibile - s.ritenuta;
|
||
|
||
// calcolo compenso al netto delle ritenute
|
||
s.comnetto = s.compenso - s.ritenuta;
|
||
|
||
return s;
|
||
}
|
||
|
||
///////////////////////////////////////////////////////////
|
||
// Conversione manuale schede percipienti versione 971
|
||
// modifica causali in schede percipienti
|
||
// Costruisce ed esegue sheet con schede selezionabili
|
||
///////////////////////////////////////////////////////////
|
||
bool TConvert_app::choicesheet(const long codditta, const TString& codcaus, const TString& codqua, const TString& causqua) const
|
||
{
|
||
// almeno una scheda convertita
|
||
bool one_conv = FALSE;
|
||
|
||
// istanza relation
|
||
TRelation* rel = new TRelation(LF_SCPERC);
|
||
rel->add(LF_ANAG, "TIPOA=TIPOA|CODANAGR=CODANAGR");
|
||
rel->add("%CA7", "CODTAB=CODCAUS", 1, LF_SCPERC, 101);
|
||
|
||
// costruisce range per cursor
|
||
TRectype fromto = rel->curr();
|
||
fromto.zero();
|
||
fromto.put("CODDITTA", codditta);
|
||
|
||
// costruisce espressione filtro per cursor
|
||
TString exprfilter;
|
||
if (codqua == "DB" && causqua == "A")
|
||
exprfilter = "(101@->S1==\"D\") && (CAUSQUA==\"A\")";
|
||
if (codqua == "DB" && causqua == "T")
|
||
exprfilter = "(101@->S1==\"D\") && (CAUSQUA== \"T\")";
|
||
if (codqua == "D" && causqua == "L")
|
||
exprfilter = "(101@->S1==\"D\") && (CAUSQUA== \"T\")";
|
||
if (codqua == "E" || codqua == "E1")
|
||
exprfilter.format("(101@->S1==\"%s\")", (const char*)codqua);
|
||
|
||
// istanza cursor
|
||
TCursor* cur = new TCursor(rel, "", 1, &fromto, &fromto);
|
||
|
||
// attiva espressione filtro + update (perch<63> uso campi non del file principale)
|
||
cur->setfilter(exprfilter, TRUE);
|
||
|
||
// caption dello sheet
|
||
TString caption = "Schede percipienti convertibili";
|
||
|
||
// intestazione colonne dello sheet
|
||
TString head = "@1|";
|
||
head << "Percipiente@30|";
|
||
head << "Data docum.@R|";
|
||
head << "N<EFBFBD>docum.|";
|
||
head << "Quadro|";
|
||
head << "Caus.|";
|
||
head << "Rit.operate@15@R|";
|
||
head << "Rit.versate@15@R|";
|
||
head << "Tipo|";
|
||
head << "Codice@R|";
|
||
head << "Scheda@R|";
|
||
|
||
// colonne dello sheet
|
||
TString columns = " |";
|
||
columns << LF_ANAG << "->RAGSOC|";
|
||
columns << "DATADOC|";
|
||
columns << "NUMDOC|";
|
||
columns << "101@->S1|";
|
||
columns << "CAUSQUA|";
|
||
columns << "RITOPE|";
|
||
columns << "RITVER|";
|
||
columns << "TIPOA|";
|
||
columns << "CODANAGR|";
|
||
columns << "NPROG";
|
||
|
||
// istanza cursor sheet
|
||
TCursor_sheet* she = new TCursor_sheet(cur, columns, caption, head, 0, 3);
|
||
|
||
// esecuzione sheet
|
||
KEY retkey = she->run();
|
||
|
||
// conversione schede selezionate
|
||
if (retkey == K_ENTER && she->one_checked())
|
||
{
|
||
TString log_line;
|
||
log_line.format("Eseguita conversione manuale di modifica causale, ditta:%05ld, nuova causale:%s, causale quadro:%s", codditta, (const char*)codcaus, (const char*)causqua);
|
||
_M770_log->append(log_line);
|
||
|
||
TLocalisamfile& scperc = cur->file();
|
||
TLocalisamfile pag(LF_RPAG);
|
||
long items = she->items();
|
||
// scansione schede convertibili
|
||
for (long i=0; i<items; i++)
|
||
if (she->checked(i))
|
||
{
|
||
// modifica valori su scheda selezionata
|
||
TToken_string& t = she->row(i);
|
||
TString16 tipoa = t.get(8);
|
||
long codanagr = t.get_long(9);
|
||
int nprog = t.get_int(10);
|
||
scperc.zero();
|
||
scperc.put("CODDITTA", codditta);
|
||
scperc.put("TIPOA", tipoa);
|
||
scperc.put("CODANAGR", codanagr);
|
||
scperc.put("NPROG", nprog);
|
||
if (scperc.read() == NOERR)
|
||
{
|
||
log_line.format("- convertita scheda n.%04d per il percipiente :%s,%05ld",nprog,(const char*)tipoa,codanagr);
|
||
_M770_log->append(log_line);
|
||
scperc.put("CODCAUS", codcaus);
|
||
scperc.put("CAUSQUA", causqua);
|
||
scperc.rewrite();
|
||
one_conv = TRUE;
|
||
// set codice 10% nelle righe pagamento
|
||
// se causale nuova di quadro Dbis
|
||
if (codqua == "DB")
|
||
{
|
||
pag.zero();
|
||
pag.put("CODDITTA", codditta);
|
||
pag.put("TIPOA", tipoa);
|
||
pag.put("CODANAGR", codanagr);
|
||
pag.put("NPROG", nprog);
|
||
TRectype& rec = pag.curr();
|
||
TRectype keypag = rec;
|
||
for (pag.read(_isgteq); pag.good() && rec == keypag; pag.next())
|
||
{
|
||
rec.put("COD10", "C");
|
||
pag.rewrite();
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
delete she;
|
||
delete cur;
|
||
delete rel;
|
||
|
||
return one_conv;
|
||
}
|
||
|
||
///////////////////////////////////////////////////////////
|
||
// Conversione manuale schede percipienti versione 971
|
||
// modifica causali in schede percipienti
|
||
// Handler codice causale su maschera principale
|
||
///////////////////////////////////////////////////////////
|
||
bool TConvert_app::F_CODCAUS_handler(TMask_field& f, KEY k)
|
||
{
|
||
TMask& m = f.mask();
|
||
TString16 cod_qua(m.get(F_CODQUA));
|
||
|
||
// creo run-time gli items per la causale quadro
|
||
TEdit_field& f_causqua = m.efield(F_CAUSQUA);
|
||
// refernce allo sheet del campo causale quadro
|
||
TString_array& Items = f_causqua.sheet()->rows_array();
|
||
// rimuovo tutti gli items
|
||
Items.destroy();
|
||
// genero i nuovi items
|
||
if (cod_qua == "D")
|
||
for (int i=0; i<NUM_ITEMS_D; i++)
|
||
Items.add(ITEMS_D[i]);
|
||
if (cod_qua == "DB")
|
||
for (int i=0; i<NUM_ITEMS_DB; i++)
|
||
Items.add(ITEMS_DB[i]);
|
||
if (cod_qua == "E")
|
||
for (int i=0; i<NUM_ITEMS_E; i++)
|
||
Items.add(ITEMS_E[i]);
|
||
if (cod_qua == "E1")
|
||
for (int i=0; i<NUM_ITEMS_E1; i++)
|
||
Items.add(ITEMS_E1[i]);
|
||
|
||
// cose da fare solo se viene modificato il codice causale
|
||
if (f.to_check(k) && k != K_ENTER)
|
||
{
|
||
// forzo causale quadro con il valore in tabella
|
||
f_causqua.reset();
|
||
if (cod_qua == "D")
|
||
f_causqua.set(m.get(F_TABCAUSQUAD));
|
||
if (cod_qua == "DB")
|
||
f_causqua.set(m.get(F_TABCAUSQUADB));
|
||
if (cod_qua == "E")
|
||
f_causqua.set(m.get(F_TABCAUSQUAE));
|
||
if (cod_qua == "E1")
|
||
f_causqua.set(m.get(F_TABCAUSQUAE1));
|
||
}
|
||
|
||
return TRUE;
|
||
}
|
||
|
||
///////////////////////////////////////////////////////////
|
||
// Ricalcolo complessivo schede percipienti
|
||
///////////////////////////////////////////////////////////
|
||
void TConvert_app::totalrecalc() const
|
||
{
|
||
TLocalisamfile sch(LF_SCPERC);
|
||
TLocalisamfile pag(LF_RPAG);
|
||
TTable ca7("%ca7");
|
||
TProgind pi(sch.items(), "Ricalcolo Schede Percipienti", FALSE, TRUE, 60);
|
||
for (sch.first(); sch.good(); sch.next())
|
||
{
|
||
pi.addstatus(1);
|
||
|
||
// lettura campi soggetti a modifica
|
||
long codditta = sch.get_long("CODDITTA");
|
||
TString16 tipoa = sch.get("TIPOA");
|
||
long codanagr = sch.get_long("CODANAGR");
|
||
int nprog = sch.get_int("NPROG");
|
||
TString16 codcaus = sch.get("CODCAUS");
|
||
real ritope = sch.get_real("RITOPE");
|
||
|
||
// decodifica valori da tabella causali
|
||
TString16 t_quadro = "";
|
||
ca7.zero();
|
||
ca7.put("CODTAB", codcaus);
|
||
if (ca7.read() == NOERR)
|
||
t_quadro = ca7.get("S1");
|
||
|
||
// conversione pagamenti collegati
|
||
pag.zero();
|
||
pag.put("CODDITTA", codditta);
|
||
pag.put("TIPOA", tipoa);
|
||
pag.put("CODANAGR", codanagr);
|
||
pag.put("NPROG", nprog);
|
||
TRectype& rec = pag.curr();
|
||
TRectype keypag = rec;
|
||
// azzero totali da riportare su scheda
|
||
ritope = ZERO;
|
||
// elaborazione pagamenti della scheda
|
||
for (pag.read(_isgteq); pag.good() && rec == keypag; pag.next())
|
||
{
|
||
// lettura campi soggetti a modifica
|
||
Pag_struct s;
|
||
s.datapag = rec.get_date("DATAPAG");
|
||
s.imponibile = rec.get_real("IMPONIBILE");
|
||
s.perc = rec.get_real("PERC");
|
||
s.ritenuta = rec.get_real("RITENUTA");
|
||
s.compenso = rec.get_real("COMPENSO");
|
||
s.netto = rec.get_real("NETTO");
|
||
s.numvers = rec.get_long("NUMVERS");
|
||
s.spesa = rec.get_real("SPESA");
|
||
s.ctssnperc = rec.get_real("CTSSNPERC");
|
||
s.ctssncomp = rec.get_real("CTSSNCOMP");
|
||
s.ritlorda = rec.get_real("RITLORDA");
|
||
s.controbb = rec.get_real("CONTROBB");
|
||
s.detfamil = rec.get_real("DETFAMIL");
|
||
s.detlavdip = rec.get_real("DETLAVDIP");
|
||
s.totdet = rec.get_real("TOTDET");
|
||
s.giolavdip = rec.get_int("GIOLAVDIP");
|
||
s.impcpa = rec.get_real("IMPCPA");
|
||
s.somregconv = rec.get_real("SOMREGCONV");
|
||
s.alqimp10 = rec.get_real("ALQIMP10");
|
||
s.cod10 = rec.get("COD10");
|
||
s.utpagati = rec.get_real("UTPAGATI");
|
||
s.utspett = rec.get_real("UTSPETT");
|
||
s.ritutpag = rec.get_real("RITUTPAG");
|
||
s.ritutspe = rec.get_real("RITUTSPE");
|
||
s.nquote = rec.get_real("NQUOTE");
|
||
s.somnsrit = rec.get_real("SOMNSRIT");
|
||
s.ammlordo = rec.get_real("AMMLORDO");
|
||
s.quotaprov = rec.get_real("QUOTAPROV");
|
||
s.impnetto = rec.get_real("IMPNETTO");
|
||
s.comnetto = rec.get_real("COMNETTO");
|
||
|
||
// azzero CPA se quadro diverso da D
|
||
if (t_quadro != "D")
|
||
s.impcpa = ZERO;
|
||
|
||
// calcolo ritenuta lorda
|
||
s.ritlorda = (s.imponibile * s.perc) / 100.00;
|
||
s.ritlorda.round();
|
||
|
||
// calcolo totale detrazioni
|
||
s.totdet = s.detfamil + s.detlavdip;
|
||
if (s.totdet > s.ritlorda)
|
||
s.totdet = s.ritlorda;
|
||
|
||
// calcolo utili spettanti
|
||
s.utspett = s.imponibile - s.utpagati;
|
||
|
||
// calcolo ritenute utili spettanti
|
||
s.ritutspe = s.ritenuta - s.ritutpag;
|
||
|
||
// calcolo compenso netto
|
||
s.netto = s.compenso + s.spesa - s.ritenuta - s.ctssnperc;
|
||
|
||
// calcolo somme non soggette a ritenuta
|
||
s.somnsrit = s.compenso - s.imponibile + s.spesa - s.impcpa - s.somregconv;
|
||
|
||
// calcolo ammontare lordo
|
||
s.ammlordo = s.imponibile + s.somnsrit + s.controbb + s.somregconv;
|
||
|
||
// calcolo quota provvigioni
|
||
s.quotaprov = s.somnsrit - s.spesa;
|
||
|
||
// calcolo imponibile al netto delle ritenute
|
||
s.impnetto = s.imponibile - s.ritenuta;
|
||
|
||
// calcolo compenso al netto delle ritenute
|
||
s.comnetto = s.compenso - s.ritenuta;
|
||
|
||
// totalizzo ritenuta per scheda
|
||
ritope += s.ritenuta;
|
||
|
||
// update campi modificati
|
||
rec.put("NETTO",s.netto);
|
||
rec.put("RITLORDA",s.ritlorda);
|
||
rec.put("TOTDET",s.totdet);
|
||
rec.put("IMPCPA",s.impcpa);
|
||
rec.put("UTSPETT",s.utspett);
|
||
rec.put("RITUTSPE",s.ritutspe);
|
||
rec.put("SOMNSRIT",s.somnsrit);
|
||
rec.put("AMMLORDO",s.ammlordo);
|
||
rec.put("QUOTAPROV",s.quotaprov);
|
||
rec.put("IMPNETTO",s.impnetto);
|
||
rec.put("COMNETTO",s.comnetto);
|
||
|
||
// riscrittura record
|
||
pag.rewrite();
|
||
}
|
||
|
||
// update campi modificati
|
||
sch.put("RITOPE",ritope);
|
||
|
||
// riscrittura record
|
||
sch.rewrite();
|
||
|
||
}
|
||
}
|
||
|
||
///////////////////////////////////////////////////////////
|
||
// Programma di conversione archivi 770
|
||
///////////////////////////////////////////////////////////
|
||
|
||
int main(int argc,char** argv)
|
||
{
|
||
const int r = (argc > 1) ? abs(atoi(argv[1])) : -1;
|
||
|
||
if (r >= 0 && r <= 9)
|
||
{
|
||
TConvert_app a(r) ;
|
||
a.run(argc, argv, "Conversione archivi 770");
|
||
}
|
||
else
|
||
error_box(usage);
|
||
exit(0);
|
||
return 0;
|
||
}
|
||
|