Patch level : 10.0 396
Files correlati : tc9.exe Ricompilazione Demo : [ ] Commento Invio sispac git-svn-id: svn://10.65.10.50/trunk@19161 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
3374e34987
commit
70a4320ee4
664
tc/tc9300.cpp
664
tc/tc9300.cpp
@ -26,7 +26,8 @@
|
||||
|
||||
#define SLF_MOV "23"
|
||||
#define ALIAS_REG 100
|
||||
|
||||
#define REG_OFFSET 1000000L
|
||||
#define GIRO_OFFSET 2000000L
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// TRiclassifica_cache
|
||||
@ -40,6 +41,11 @@ protected:
|
||||
public:
|
||||
const char * sdecode(const char* tab, const TString& cod);
|
||||
long decode(const char* tab, const TString& cod);
|
||||
const TString & sdecode_caufor(const TString& cod);
|
||||
const TString & sdecode_caureg(const TString& cod);
|
||||
const TString & sdecode_caugiro(const TString& cod);
|
||||
const TString & sdecode_contov(const TString& cod);
|
||||
bool sdecode_rc(const TString& cod);
|
||||
TRiclassifica_cache() : _multirel(LF_MULTIREL) { _multirel.setkey(2);}
|
||||
};
|
||||
|
||||
@ -68,6 +74,111 @@ long TRiclassifica_cache::decode(const char* tab, const TString& cod)
|
||||
return (ric ? atol(*ric) : 0);
|
||||
}
|
||||
|
||||
const TString & TRiclassifica_cache::sdecode_caufor(const TString& cod)
|
||||
{
|
||||
TString & codricl = get_tmp_string();
|
||||
TToken_string tok;
|
||||
|
||||
tok.add("SCCAU");
|
||||
tok.add(cod);
|
||||
const TString* ric = (const TString*) objptr(tok);
|
||||
if (ric && *ric)
|
||||
{
|
||||
_multirel.setkey(1);
|
||||
_multirel.put(MULTI_COD, "SCCAU");
|
||||
_multirel.put(MULTI_FIRST, cod);
|
||||
_multirel.put(MULTI_SECOND, *ric);
|
||||
int err = _multirel.read(_isequal);
|
||||
if (err == NOERR)
|
||||
codricl = _multirel.get(MULTI_DATA).sleft(5);
|
||||
}
|
||||
return codricl;
|
||||
}
|
||||
|
||||
const TString & TRiclassifica_cache::sdecode_caureg(const TString& cod)
|
||||
{
|
||||
TString & codricl = get_tmp_string();
|
||||
TToken_string tok;
|
||||
|
||||
tok.add("SCCAU");
|
||||
tok.add(cod);
|
||||
const TString* ric = (const TString*) objptr(tok);
|
||||
if (ric && *ric)
|
||||
{
|
||||
_multirel.setkey(1);
|
||||
_multirel.put(MULTI_COD, "SCCAU");
|
||||
_multirel.put(MULTI_FIRST, cod);
|
||||
_multirel.put(MULTI_SECOND, *ric);
|
||||
int err = _multirel.read(_isequal);
|
||||
if (err == NOERR)
|
||||
codricl = _multirel.get(MULTI_DATA).smid(6, 5);
|
||||
}
|
||||
return codricl;
|
||||
}
|
||||
|
||||
bool TRiclassifica_cache::sdecode_rc(const TString& cod)
|
||||
{
|
||||
TString & codricl = get_tmp_string();
|
||||
TToken_string tok;
|
||||
|
||||
tok.add("SCCAU");
|
||||
tok.add(cod);
|
||||
const TString* ric = (const TString*) objptr(tok);
|
||||
if (ric && *ric)
|
||||
{
|
||||
_multirel.setkey(1);
|
||||
_multirel.put(MULTI_COD, "SCCAU");
|
||||
_multirel.put(MULTI_FIRST, cod);
|
||||
_multirel.put(MULTI_SECOND, *ric);
|
||||
int err = _multirel.read(_isequal);
|
||||
if (err == NOERR)
|
||||
codricl = _multirel.get(MULTI_DATA).smid(5, 1);
|
||||
}
|
||||
return codricl.full();
|
||||
}
|
||||
|
||||
const TString & TRiclassifica_cache::sdecode_caugiro(const TString& cod)
|
||||
{
|
||||
TString & codricl = get_tmp_string();
|
||||
TToken_string tok;
|
||||
|
||||
tok.add("SCCAU");
|
||||
tok.add(cod);
|
||||
const TString* ric = (const TString*) objptr(tok);
|
||||
if (ric && *ric)
|
||||
{
|
||||
_multirel.setkey(1);
|
||||
_multirel.put(MULTI_COD, "SCCAU");
|
||||
_multirel.put(MULTI_FIRST, cod);
|
||||
_multirel.put(MULTI_SECOND, *ric);
|
||||
int err = _multirel.read(_isequal);
|
||||
if (err == NOERR)
|
||||
codricl = _multirel.get(MULTI_DATA).smid(11, 5);
|
||||
}
|
||||
return codricl;
|
||||
}
|
||||
|
||||
const TString & TRiclassifica_cache::sdecode_contov(const TString& cod)
|
||||
{
|
||||
TString & codricl = get_tmp_string();
|
||||
TToken_string tok;
|
||||
|
||||
tok.add("SCCAU");
|
||||
tok.add(cod);
|
||||
const TString* ric = (const TString*) objptr(tok);
|
||||
if (ric && *ric)
|
||||
{
|
||||
_multirel.setkey(1);
|
||||
_multirel.put(MULTI_COD, "SCCAU");
|
||||
_multirel.put(MULTI_FIRST, cod);
|
||||
_multirel.put(MULTI_SECOND, *ric);
|
||||
int err = _multirel.read(_isequal);
|
||||
if (err == NOERR)
|
||||
codricl = _multirel.get(MULTI_DATA).smid(16, 12);
|
||||
}
|
||||
return codricl;
|
||||
}
|
||||
|
||||
const char * TRiclassifica_cache::sdecode(const char* tab, const TString& cod)
|
||||
{
|
||||
TToken_string tok;
|
||||
@ -586,13 +697,28 @@ protected:
|
||||
void invio_sispac();
|
||||
void sispac_cli();
|
||||
void sispac_for();
|
||||
void sispac_reverse_movim(long numreg, TMovim_set & recset, long firstmov, long lastmov,
|
||||
const TString & cofi, const TString & paiv,
|
||||
const TString & ragsoc, const TString & esiva,
|
||||
const TString & annoes, bool comp);
|
||||
void sispac_reverse_giro(long numreg, TMovim_set & recset, long firstmov, long lastmov,
|
||||
const TString & cofi, const TString & paiv,
|
||||
const TString & ragsoc, const TString & esiva,
|
||||
const TString & annoes, bool comp);
|
||||
void sispac_movim();
|
||||
void sispac_reverse_moviva(long numreg, TIvamov_set & recset, const TString & cofi,
|
||||
const TString & paiv, const TString & ragsoc);
|
||||
void sispac_moviva();
|
||||
void sispac_intramov();
|
||||
void sispac_movpart();
|
||||
void conferma(bool conf = true);
|
||||
const TString & scod2ricl(const char* tab, const TString& cod);
|
||||
const TString & scod2caucf(const TString& cod);
|
||||
const TString & scod2ricl(const char* tab, const TVariant& cod);
|
||||
const TString & scod2caureg(const TString& cod);
|
||||
const TString & scod2caugiro(const TString& cod);
|
||||
const TString & scod2contov(const TString& cod);
|
||||
bool scod2rc(const TString& cod);
|
||||
const long cod2ricl(const char* tab, const TString& cod);
|
||||
|
||||
public:
|
||||
@ -607,6 +733,7 @@ inline TInvioSispac& app() { return (TInvioSispac&) main_app();}
|
||||
const TString & TInvioSispac::scod2ricl(const char* tab, const TString& cod)
|
||||
{
|
||||
TString & codricl = get_tmp_string();
|
||||
|
||||
if (cod.full())
|
||||
{
|
||||
codricl = _tabelle->sdecode(tab, cod);
|
||||
@ -615,6 +742,50 @@ const TString & TInvioSispac::scod2ricl(const char* tab, const TString& cod)
|
||||
}
|
||||
return codricl;
|
||||
}
|
||||
const TString & TInvioSispac::scod2caucf(const TString& cod)
|
||||
{
|
||||
|
||||
if (cod.full())
|
||||
return _tabelle->sdecode_caufor(cod);
|
||||
return EMPTY_STRING;
|
||||
}
|
||||
|
||||
const TString & TInvioSispac::scod2caureg(const TString& cod)
|
||||
{
|
||||
TString & codricl = get_tmp_string();
|
||||
|
||||
if (cod.full())
|
||||
codricl = _tabelle->sdecode_caureg(cod);
|
||||
return codricl;
|
||||
}
|
||||
|
||||
const TString & TInvioSispac::scod2caugiro(const TString& cod)
|
||||
{
|
||||
TString & codricl = get_tmp_string();
|
||||
|
||||
if (cod.full())
|
||||
codricl = _tabelle->sdecode_caugiro(cod);
|
||||
return codricl;
|
||||
}
|
||||
|
||||
|
||||
const TString & TInvioSispac::scod2contov(const TString& cod)
|
||||
{
|
||||
TString & codricl = get_tmp_string();
|
||||
|
||||
if (cod.full())
|
||||
codricl = _tabelle->sdecode_contov(cod);
|
||||
return codricl;
|
||||
}
|
||||
|
||||
bool TInvioSispac::scod2rc(const TString& cod)
|
||||
{
|
||||
TString & codricl = get_tmp_string();
|
||||
|
||||
if (cod.full())
|
||||
return _tabelle->sdecode_rc(cod);
|
||||
return false;
|
||||
}
|
||||
|
||||
const TString & TInvioSispac::scod2ricl(const char* tab, const TVariant& cod)
|
||||
{
|
||||
@ -767,12 +938,299 @@ void TInvioSispac::sispac_for()
|
||||
recset.save_as(outputname);
|
||||
}
|
||||
|
||||
void TInvioSispac::sispac_reverse_movim(long numreg, TMovim_set & recset, long firstmov, long lastmov,
|
||||
const TString & cofi, const TString & paiv,
|
||||
const TString & ragsoc, const TString & esiva,
|
||||
const TString & annoes, bool comp)
|
||||
{
|
||||
TString query;
|
||||
TString key;
|
||||
|
||||
query << "USE " << LF_RMOV << " SELECT " << RMV_NUMREG << "==" << numreg
|
||||
<< "\nJOIN " << LF_MOV << " INTO " << MOV_NUMREG << "==" << RMV_NUMREG;
|
||||
|
||||
TISAM_recordset input(query);
|
||||
TVariant var;
|
||||
TVariant treg;
|
||||
TVariant tpart;
|
||||
TArray tipoart;
|
||||
int rdare = 0;
|
||||
int ravere = 0;
|
||||
|
||||
for (bool ok = input.move_first(); ok ; ok = input.move_next())
|
||||
{
|
||||
const long codes = input.get(RMV_ANNOES).as_int();
|
||||
const TString4 rowtype = input.get(RMV_ROWTYPE).as_string();
|
||||
|
||||
if (rowtype == "F")
|
||||
continue;
|
||||
recset.new_rec();
|
||||
var = cofi;
|
||||
recset.set("COFI", var);
|
||||
var = paiv;
|
||||
recset.set("PAIV", var);
|
||||
var = ragsoc;
|
||||
recset.set("RAGSOC", var);
|
||||
var = esiva;
|
||||
recset.set("ESIVA", var);
|
||||
var = annoes;
|
||||
recset.set("ESCOGE", var);
|
||||
|
||||
var = "V";
|
||||
treg = "03";
|
||||
recset.set("ARGOMENTO", var);
|
||||
var = "N";
|
||||
|
||||
const TDate datareg(input.get(SLF_MOV "." MOV_DATAREG).as_date());
|
||||
|
||||
if (comp)
|
||||
var = "1";
|
||||
recset.set("COMPETENZA", var);
|
||||
var = format("%07ld", input.get(RMV_NUMREG).as_int() + REG_OFFSET);
|
||||
recset.set("NUMPART", var);
|
||||
var = format("%03ld", input.get(RMV_NUMRIG).as_int());
|
||||
recset.set("NUMINT", var);
|
||||
recset.set("DATAOP", datareg.string(brief, '\0', full, full, amg_date));
|
||||
TString16 codice;
|
||||
long gruppo = input.get(RMV_GRUPPO).as_int();
|
||||
const long conto = input.get(RMV_CONTO).as_int();
|
||||
const long sottoconto = input.get(RMV_SOTTOCONTO).as_int();
|
||||
TString8 ccaus(input.get(SLF_MOV "." MOV_CODCAUS).as_string());
|
||||
|
||||
if (gruppo == 10)
|
||||
gruppo = 0;
|
||||
|
||||
if (rowtype == "I") // verificare
|
||||
codice = scod2contov(ccaus);
|
||||
else
|
||||
if (input.get(RMV_TIPOC).as_string().full())
|
||||
codice.format("%01ld%02ld000%06ld", gruppo, conto, sottoconto);
|
||||
else
|
||||
codice.format("%01ld%02ld%03ld000000", gruppo, conto, sottoconto);
|
||||
var = codice;
|
||||
recset.set("CODCONTO", var);
|
||||
recset.set("TIPOREG", treg);
|
||||
recset.set("CODREG", TVariant("01")); // in futuro campo su registro
|
||||
const long prot = input.get(SLF_MOV "." MOV_PROTIVA).as_int();
|
||||
var = format("%07ld", prot);
|
||||
recset.set("NUMPROT", var);
|
||||
const real * v = (real *) tipoart.objptr(lastmov - firstmov); // qui
|
||||
|
||||
if (v != NULL)
|
||||
recset.set("TIPOART", *v);
|
||||
|
||||
TString8 codcaus = scod2caureg(ccaus);
|
||||
|
||||
if (input.get(RMV_TIPOC).as_string().full())
|
||||
{
|
||||
const TString8 codcauscf = scod2caucf(ccaus);
|
||||
if (codcauscf.full())
|
||||
codcaus = codcauscf;
|
||||
}
|
||||
var = "R";
|
||||
if (codcaus == "00255")
|
||||
var = "S";
|
||||
recset.set("TIPOMOV", var);
|
||||
recset.set("CODCOST", TVariant("000"));
|
||||
var = codcaus;
|
||||
recset.set("CODCAUS", var);
|
||||
|
||||
recset.set("NUMDESC", TVariant("0"));
|
||||
|
||||
real importo = input.get(RMV_IMPORTO).as_real();
|
||||
|
||||
if (rowtype == "T")
|
||||
importo += input.get(SLF_MOV "." MOV_RITFIS).as_real();
|
||||
var = "P";
|
||||
if (importo < ZERO)
|
||||
{
|
||||
importo = -importo;
|
||||
var = "N";
|
||||
}
|
||||
|
||||
recset.set("SGNIMPT", var);
|
||||
importo *= CENTO;
|
||||
var = importo.string(13, 0, '0');
|
||||
recset.set("IMPORTO", var);
|
||||
const bool dare = input.get(RMV_SEZIONE).as_string() == "D";
|
||||
const char * s = dare ? "A" : "D";
|
||||
|
||||
recset.set("SGNCONTIMP", s);
|
||||
const TDate datadoc(input.get(SLF_MOV "." MOV_DATADOC).as_date());
|
||||
var = datadoc.string(brief, '\0', full, full, amg_date);
|
||||
recset.set("DATADOC", var);
|
||||
recset.set("NUMDOC", input.get(SLF_MOV "." MOV_NUMDOC).as_int());
|
||||
|
||||
const long codcf = input.get(SLF_MOV "." MOV_CODCF).as_int();
|
||||
|
||||
var = "";
|
||||
if (codcf > 0L)
|
||||
{
|
||||
key = input.get(MOV_TIPO).as_string(); key << codcf;
|
||||
const TRectype & clifo = cache().get(LF_CLIFO, key);
|
||||
const int cflen = input.get(CLI_COFI).as_string().len();
|
||||
|
||||
if (cflen > 11)
|
||||
var = "2";
|
||||
}
|
||||
recset.set("TIPOANAG", var);
|
||||
recset.set("FINEREC", "\r\n");
|
||||
}
|
||||
}
|
||||
|
||||
void TInvioSispac::sispac_reverse_giro(long numreg, TMovim_set & recset, long firstmov, long lastmov,
|
||||
const TString & cofi, const TString & paiv,
|
||||
const TString & ragsoc, const TString & esiva,
|
||||
const TString & annoes, bool comp)
|
||||
{
|
||||
TString query;
|
||||
TString key;
|
||||
|
||||
query << "USE " << LF_RMOV << " SELECT " << RMV_NUMREG << "==" << numreg
|
||||
<< "\nJOIN " << LF_MOV << " INTO " << MOV_NUMREG << "==" << RMV_NUMREG;
|
||||
|
||||
TISAM_recordset input(query);
|
||||
TVariant var;
|
||||
TVariant treg;
|
||||
TString codice_cf;
|
||||
TVariant tpart;
|
||||
TArray tipoart;
|
||||
int rdare = 0;
|
||||
int ravere = 0;
|
||||
|
||||
for (bool ok = input.move_first(); ok ; ok = input.move_next())
|
||||
{
|
||||
const long codes = input.get(RMV_ANNOES).as_int();
|
||||
const TString4 rowtype = input.get(RMV_ROWTYPE).as_string();
|
||||
|
||||
if (rowtype == "F")
|
||||
continue;
|
||||
|
||||
recset.new_rec();
|
||||
var = cofi;
|
||||
recset.set("COFI", var);
|
||||
var = paiv;
|
||||
recset.set("PAIV", var);
|
||||
var = ragsoc;
|
||||
recset.set("RAGSOC", var);
|
||||
var = esiva;
|
||||
recset.set("ESIVA", var);
|
||||
var = annoes;
|
||||
recset.set("ESCOGE", var);
|
||||
|
||||
var = "P";
|
||||
treg = "01";
|
||||
recset.set("ARGOMENTO", var);
|
||||
var = "N";
|
||||
|
||||
const TDate datareg(input.get(SLF_MOV "." MOV_DATAREG).as_date());
|
||||
|
||||
if (comp)
|
||||
var = "1";
|
||||
recset.set("COMPETENZA", var);
|
||||
var = format("%07ld", input.get(RMV_NUMREG).as_int() + GIRO_OFFSET);
|
||||
recset.set("NUMPART", var);
|
||||
var = format("%03ld", input.get(RMV_NUMRIG).as_int());
|
||||
recset.set("NUMINT", var);
|
||||
recset.set("DATAOP", datareg.string(brief, '\0', full, full, amg_date));
|
||||
TString16 codice;
|
||||
long gruppo = input.get(RMV_GRUPPO).as_int();
|
||||
const long conto = input.get(RMV_CONTO).as_int();
|
||||
const long sottoconto = input.get(RMV_SOTTOCONTO).as_int();
|
||||
TString8 ccaus(input.get(SLF_MOV "." MOV_CODCAUS).as_string());
|
||||
|
||||
if (gruppo == 10)
|
||||
gruppo = 0;
|
||||
|
||||
if (rowtype == "I") // verificare
|
||||
codice = scod2contov(ccaus);
|
||||
else
|
||||
if (rowtype == "D" || rowtype == "N") // verificare
|
||||
codice = codice_cf;
|
||||
else
|
||||
if (input.get(RMV_TIPOC).as_string().full())
|
||||
{
|
||||
codice.format("%01ld%02ld000%06ld", gruppo, conto, sottoconto);
|
||||
codice_cf = codice;
|
||||
}
|
||||
else
|
||||
codice.format("%01ld%02ld%03ld000000", gruppo, conto, sottoconto);
|
||||
var = codice;
|
||||
recset.set("CODCONTO", var);
|
||||
recset.set("TIPOREG", treg);
|
||||
recset.set("CODREG", TVariant("01")); // in futuro campo su registro
|
||||
const long prot = input.get(SLF_MOV "." MOV_PROTIVA).as_int();
|
||||
var = format("%07ld", prot);
|
||||
recset.set("NUMPROT", var);
|
||||
const real * v = (real *) tipoart.objptr(lastmov - firstmov); // qui
|
||||
|
||||
if (v != NULL)
|
||||
recset.set("TIPOART", *v);
|
||||
|
||||
TString8 codcaus = scod2caugiro(ccaus);
|
||||
|
||||
if (input.get(RMV_TIPOC).as_string().full())
|
||||
{
|
||||
const TString8 codcauscf = scod2caucf(ccaus);
|
||||
if (codcauscf.full())
|
||||
codcaus = codcauscf;
|
||||
}
|
||||
var = "R";
|
||||
if (codcaus == "00255")
|
||||
var = "S";
|
||||
recset.set("TIPOMOV", var);
|
||||
recset.set("CODCOST", TVariant("000"));
|
||||
var = codcaus;
|
||||
recset.set("CODCAUS", var);
|
||||
|
||||
recset.set("NUMDESC", TVariant("0"));
|
||||
|
||||
real importo = input.get(RMV_IMPORTO).as_real();
|
||||
|
||||
if (rowtype == "T")
|
||||
importo += input.get(SLF_MOV "." MOV_RITFIS).as_real();
|
||||
var = "P";
|
||||
if (importo < ZERO)
|
||||
{
|
||||
importo = -importo;
|
||||
var = "N";
|
||||
}
|
||||
|
||||
recset.set("SGNIMPT", var);
|
||||
importo *= CENTO;
|
||||
var = importo.string(13, 0, '0');
|
||||
recset.set("IMPORTO", var);
|
||||
recset.set("SGNCONTIMP", input.get(RMV_SEZIONE));
|
||||
const TDate datadoc(input.get(SLF_MOV "." MOV_DATADOC).as_date());
|
||||
var = datadoc.string(brief, '\0', full, full, amg_date);
|
||||
recset.set("DATADOC", var);
|
||||
recset.set("NUMDOC", input.get(SLF_MOV "." MOV_NUMDOC).as_int());
|
||||
|
||||
const long codcf = input.get(SLF_MOV "." MOV_CODCF).as_int();
|
||||
|
||||
var = "";
|
||||
if (codcf > 0L)
|
||||
{
|
||||
key = input.get(MOV_TIPO).as_string(); key << codcf;
|
||||
const TRectype & clifo = cache().get(LF_CLIFO, key);
|
||||
const int cflen = input.get(CLI_COFI).as_string().len();
|
||||
|
||||
if (cflen > 11)
|
||||
var = "2";
|
||||
}
|
||||
recset.set("TIPOANAG", var);
|
||||
recset.set("FINEREC", "\r\n");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void TInvioSispac::sispac_movim()
|
||||
{
|
||||
TMovim_set recset;
|
||||
TString query;
|
||||
TString key;
|
||||
TEsercizi_contabili esc;
|
||||
long numregrev = -1L;
|
||||
|
||||
key << prefix().get_codditta();
|
||||
|
||||
@ -857,7 +1315,22 @@ void TInvioSispac::sispac_movim()
|
||||
for (bool ok = input.move_first(); ok ; ok = input.move_next())
|
||||
{
|
||||
const long codes = input.get(RMV_ANNOES).as_int();
|
||||
const TString4 rowtype = input.get(RMV_ROWTYPE).as_string();
|
||||
const TString8 ccaus(input.get(SLF_MOV "." MOV_CODCAUS).as_string());
|
||||
const long numreg = input.get(RMV_NUMREG).as_int();
|
||||
const TDate datareg(input.get(SLF_MOV "." MOV_DATAREG).as_date());
|
||||
const bool comp = codes != esc.date2esc(datareg);
|
||||
|
||||
if (numregrev < 0L && scod2rc(ccaus))
|
||||
numregrev = numreg;
|
||||
if (numregrev > 0L && rowtype == "F")
|
||||
continue;
|
||||
if (numregrev > 0L && numreg != numregrev)
|
||||
{
|
||||
sispac_reverse_movim(numregrev, recset, firstmov, lastmov, cofi, paiv, ragsoc, esiva, annoes, comp);
|
||||
sispac_reverse_giro(numregrev, recset, firstmov, lastmov, cofi, paiv, ragsoc, esiva, annoes, comp);
|
||||
numregrev = -1L;
|
||||
}
|
||||
recset.new_rec();
|
||||
var = cofi;
|
||||
recset.set("COFI", var);
|
||||
@ -905,13 +1378,10 @@ void TInvioSispac::sispac_movim()
|
||||
}
|
||||
recset.set("ARGOMENTO", var);
|
||||
var = "N";
|
||||
|
||||
const TDate datareg(input.get(SLF_MOV "." MOV_DATAREG).as_date());
|
||||
|
||||
if (codes != esc.date2esc(datareg))
|
||||
if (comp)
|
||||
var = "1";
|
||||
recset.set("COMPETENZA", var);
|
||||
var = format("%07ld", input.get(RMV_NUMREG).as_int());
|
||||
var = format("%07ld", numreg);
|
||||
recset.set("NUMPART", var);
|
||||
var = format("%03ld", input.get(RMV_NUMRIG).as_int());
|
||||
recset.set("NUMINT", var);
|
||||
@ -940,9 +1410,15 @@ void TInvioSispac::sispac_movim()
|
||||
if (v != NULL)
|
||||
recset.set("TIPOART", *v);
|
||||
|
||||
TString8 ccaus(input.get(SLF_MOV "." MOV_CODCAUS).as_string());
|
||||
TString8 codcaus = scod2ricl("SCCAU", ccaus);
|
||||
const TString4 tipocf = input.get(RMV_TIPOC).as_string();
|
||||
|
||||
if (tipocf == "C" || tipocf == "F")
|
||||
{
|
||||
const TString8 codcauscf = scod2caucf(ccaus);
|
||||
if (codcauscf.full())
|
||||
codcaus = codcauscf;
|
||||
}
|
||||
var = "R";
|
||||
if (codcaus == "00255")
|
||||
var = "S";
|
||||
@ -954,6 +1430,8 @@ void TInvioSispac::sispac_movim()
|
||||
recset.set("NUMDESC", TVariant("0"));
|
||||
|
||||
real importo = input.get(RMV_IMPORTO).as_real();
|
||||
if (numregrev > 0L && rowtype == "T")
|
||||
importo += input.get(SLF_MOV "." MOV_RITFIS).as_real();
|
||||
|
||||
var = "P";
|
||||
if (importo < ZERO)
|
||||
@ -997,37 +1475,17 @@ void TInvioSispac::sispac_movim()
|
||||
recset.save_as(outputname);
|
||||
}
|
||||
|
||||
void TInvioSispac::sispac_moviva()
|
||||
void TInvioSispac::sispac_reverse_moviva(long numreg, TIvamov_set & recset, const TString & cofi,
|
||||
const TString & paiv, const TString & ragsoc)
|
||||
{
|
||||
TIvamov_set recset;
|
||||
TString query;
|
||||
TString key;
|
||||
TEsercizi_contabili esc;
|
||||
|
||||
key << prefix().get_codditta();
|
||||
|
||||
const TRectype & ditta = cache().get(LF_NDITTE, key);
|
||||
|
||||
key = ditta.get(NDT_TIPOA);
|
||||
key << "|" <<ditta.get_long(NDT_CODANAGR);
|
||||
|
||||
const TRectype & anagr = cache().get(LF_ANAG, key);
|
||||
|
||||
const TString16 paiv(anagr.get(ANA_PAIV));
|
||||
const TString16 cofi(anagr.get(ANA_COFI));
|
||||
const TString80 ragsoc(anagr.get(ANA_RAGSOC));
|
||||
const int esiva = _dataini.year() % 100 ;
|
||||
TString4 annoes; annoes << esiva << esiva ;
|
||||
|
||||
query << "USE " << LF_RMOVIVA << " SELECT BETWEEN(" << LF_MOV << "." << MOV_DATAREG << "," << _dataini.date2ansi() << "," << _datafin.date2ansi() << ")&&("
|
||||
<< LF_MOV << "." << MOV_INVIATO << "!=\"X\")"
|
||||
<< "\nJOIN " << LF_MOV << " INTO " << MOV_NUMREG << "==" << RMV_NUMREG;
|
||||
query << "USE " << LF_RMOVIVA << " SELECT " << RMV_NUMREG << "==" << numreg <<
|
||||
"\nJOIN " << LF_MOV << " INTO " << MOV_NUMREG << "==" << RMV_NUMREG;
|
||||
|
||||
TISAM_recordset input(query);
|
||||
TVariant var;
|
||||
|
||||
TProgind p(input.items(), TR("Esportazione Movimenti IVA"), true, true); // qui
|
||||
|
||||
for (bool ok = input.move_first(); ok ; ok = input.move_next())
|
||||
{
|
||||
recset.new_rec();
|
||||
@ -1037,7 +1495,7 @@ void TInvioSispac::sispac_movim()
|
||||
recset.set("PAIV", var);
|
||||
var = ragsoc;
|
||||
recset.set("RAGSOC", var);
|
||||
var = format("%07ld", input.get(RMI_NUMREG).as_int());
|
||||
var = format("%07ld", input.get(RMI_NUMREG).as_int() + REG_OFFSET);
|
||||
recset.set("NUMPART", var);
|
||||
var = format("%03ld", input.get(RMI_NUMRIG).as_int());
|
||||
recset.set("NUMINT", var);
|
||||
@ -1070,8 +1528,150 @@ void TInvioSispac::sispac_movim()
|
||||
var = imposta.string(13, 0, '0');
|
||||
recset.set("IMPOSTA", var);
|
||||
const TString8 ccaus(input.get(SLF_MOV "." MOV_CODCAUS).as_string());
|
||||
TString8 codcaus = scod2caureg(ccaus);
|
||||
|
||||
if (input.get(RMI_TIPOC).as_string().full())
|
||||
{
|
||||
const TString8 codcauscf = scod2caucf(ccaus);
|
||||
if (codcauscf.full())
|
||||
codcaus = codcauscf;
|
||||
}
|
||||
var = codcaus;
|
||||
recset.set("CODCAUS", var);
|
||||
|
||||
const TString8 civa(input.get(RMI_CODIVA).as_string());
|
||||
TString8 codiva = scod2ricl("SCIVA", civa);
|
||||
|
||||
var = codiva;
|
||||
recset.set("CODIVA", var);
|
||||
recset.set("FILLER", TVariant("00"));
|
||||
TVariant var1("M");
|
||||
|
||||
var = "";
|
||||
if (codcaus == "00100")
|
||||
{
|
||||
var = "S";
|
||||
var1 = "S";
|
||||
}
|
||||
else
|
||||
if (codcaus == "00110")
|
||||
{
|
||||
var = "N";
|
||||
var1 = "N";
|
||||
}
|
||||
else
|
||||
if (codcaus == "00200" || codcaus == "00220" ||
|
||||
codcaus == "00255" || codcaus == "00301")
|
||||
var1 ="M";
|
||||
|
||||
recset.set("MERCIVEN", var1);
|
||||
recset.set("QUADROA", var);
|
||||
int tipodet;
|
||||
TCausale cau(ccaus, _dataini.year());
|
||||
const real percdetr = (CENTO - indetraibile_al(input.get(RMI_TIPODET).as_string(), cau, _dataini.year(), tipodet)) * CENTO;
|
||||
|
||||
var = percdetr.string(5, 0, '0');
|
||||
recset.set("DETRAIB", percdetr);
|
||||
recset.set("FINEREC", "\r\n");
|
||||
}
|
||||
}
|
||||
|
||||
void TInvioSispac::sispac_moviva()
|
||||
{
|
||||
TIvamov_set recset;
|
||||
TString query;
|
||||
TString key;
|
||||
TEsercizi_contabili esc;
|
||||
long numregrev = -1L;
|
||||
|
||||
key << prefix().get_codditta();
|
||||
|
||||
const TRectype & ditta = cache().get(LF_NDITTE, key);
|
||||
|
||||
key = ditta.get(NDT_TIPOA);
|
||||
key << "|" <<ditta.get_long(NDT_CODANAGR);
|
||||
|
||||
const TRectype & anagr = cache().get(LF_ANAG, key);
|
||||
|
||||
const TString16 paiv(anagr.get(ANA_PAIV));
|
||||
const TString16 cofi(anagr.get(ANA_COFI));
|
||||
const TString80 ragsoc(anagr.get(ANA_RAGSOC));
|
||||
const int esiva = _dataini.year() % 100 ;
|
||||
TString4 annoes; annoes << esiva << esiva ;
|
||||
|
||||
query << "USE " << LF_RMOVIVA << " SELECT BETWEEN(" << LF_MOV << "." << MOV_DATAREG << "," << _dataini.date2ansi() << "," << _datafin.date2ansi() << ")&&("
|
||||
<< LF_MOV << "." << MOV_INVIATO << "!=\"X\")"
|
||||
<< "\nJOIN " << LF_MOV << " INTO " << MOV_NUMREG << "==" << RMV_NUMREG;
|
||||
|
||||
TISAM_recordset input(query);
|
||||
TVariant var;
|
||||
|
||||
TProgind p(input.items(), TR("Esportazione Movimenti IVA"), true, true); // qui
|
||||
|
||||
for (bool ok = input.move_first(); ok ; ok = input.move_next())
|
||||
{
|
||||
const TString8 ccaus(input.get(SLF_MOV "." MOV_CODCAUS).as_string());
|
||||
const long numreg = input.get(RMI_NUMREG).as_int();
|
||||
TString16 key;
|
||||
|
||||
key << numreg <<"|1";
|
||||
if (cache().get(LF_RMOV, key).empty())
|
||||
continue;
|
||||
|
||||
if (scod2rc(ccaus))
|
||||
numregrev = numreg;
|
||||
if (numregrev > 0L && numreg != numregrev)
|
||||
{
|
||||
sispac_reverse_moviva(numregrev, recset, cofi, paiv, ragsoc);
|
||||
numregrev = -1L;
|
||||
}
|
||||
recset.new_rec();
|
||||
var = cofi;
|
||||
recset.set("COFI", var);
|
||||
var = paiv;
|
||||
recset.set("PAIV", var);
|
||||
var = ragsoc;
|
||||
recset.set("RAGSOC", var);
|
||||
var = format("%07ld", numreg);
|
||||
recset.set("NUMPART", var);
|
||||
var = format("%03ld", input.get(RMI_NUMRIG).as_int());
|
||||
recset.set("NUMINT", var);
|
||||
|
||||
real imponibile = input.get(RMI_IMPONIBILE).as_real();
|
||||
|
||||
var = "P";
|
||||
if (imponibile < ZERO)
|
||||
{
|
||||
imponibile = -imponibile;
|
||||
var = "N";
|
||||
}
|
||||
|
||||
recset.set("SGNIMPB", var);
|
||||
imponibile *= CENTO;
|
||||
var = imponibile.string(13, 0, '0');
|
||||
recset.set("IMPONIBILE", var);
|
||||
|
||||
real imposta = input.get(RMI_IMPOSTA).as_real();
|
||||
|
||||
var = "P";
|
||||
if (imposta < ZERO)
|
||||
{
|
||||
imposta = -imposta;
|
||||
var = "N";
|
||||
}
|
||||
|
||||
recset.set("SGNIMPIVA", var);
|
||||
imposta *= CENTO;
|
||||
var = imposta.string(13, 0, '0');
|
||||
recset.set("IMPOSTA", var);
|
||||
TString8 codcaus = scod2ricl("SCCAU", ccaus);
|
||||
|
||||
if (input.get(RMI_TIPOC).as_string().full())
|
||||
{
|
||||
const TString8 codcauscf = scod2caucf(ccaus);
|
||||
if (codcauscf.full())
|
||||
codcaus = codcauscf;
|
||||
}
|
||||
var = codcaus;
|
||||
recset.set("CODCAUS", var);
|
||||
|
||||
|
@ -13,8 +13,9 @@ protected:
|
||||
virtual bool has_filtered_cursor() const { return true; }
|
||||
virtual bool user_create();
|
||||
virtual void init_query_mode(TMask& m);
|
||||
virtual void init_query_insert_mode(TMask& m);
|
||||
virtual void init_query_insert_mode(TMask& m);
|
||||
virtual void init_modify_mode(TMask& m);
|
||||
virtual void init_insert_mode(TMask& m);
|
||||
|
||||
public:
|
||||
|
||||
@ -38,6 +39,7 @@ void TSispac_multirel_app::init_query_mode(TMask& m)
|
||||
TMultirel_application::init_query_mode(m);
|
||||
m.show(-1);
|
||||
m.hide(-2);
|
||||
m.enable(-4);
|
||||
}
|
||||
|
||||
void TSispac_multirel_app::init_query_insert_mode(TMask& m)
|
||||
@ -45,6 +47,7 @@ void TSispac_multirel_app::init_query_insert_mode(TMask& m)
|
||||
TMultirel_application::init_query_insert_mode(m);
|
||||
m.hide(-1);
|
||||
m.show(-2);
|
||||
m.enable(-4);
|
||||
}
|
||||
void TSispac_multirel_app::init_modify_mode(TMask& m)
|
||||
{
|
||||
@ -52,6 +55,16 @@ void TSispac_multirel_app::init_modify_mode(TMask& m)
|
||||
m.show(-1);
|
||||
m.hide(-2);
|
||||
m.enable(-3);
|
||||
m.disable(-4);
|
||||
}
|
||||
|
||||
void TSispac_multirel_app::init_insert_mode(TMask& m)
|
||||
{
|
||||
TMultirel_application::init_insert_mode(m);
|
||||
m.show(-1);
|
||||
m.hide(-2);
|
||||
m.enable(-3);
|
||||
m.disable(-4);
|
||||
}
|
||||
|
||||
bool TSispac_multirel_app::user_create()
|
||||
|
@ -1,5 +1,10 @@
|
||||
#define F_COD 101
|
||||
#define F_CODTAB 102
|
||||
#define F_DESC 103
|
||||
#define F_COD_CAMPO 104
|
||||
#define F_COD_CAUS 104
|
||||
#define F_CODTAB1 105
|
||||
#define F_COD_CAUSCF 106
|
||||
#define F_IN_RC 107
|
||||
#define F_COD_CAUSRG 108
|
||||
#define F_COD_CAUSGC 109
|
||||
#define F_COD_CONTOV 110
|
||||
|
@ -1,7 +1,9 @@
|
||||
#include "tcsc.h"
|
||||
|
||||
TOOLBAR "topbar" 0 0 0 2
|
||||
#include <relapbar.h>
|
||||
TOOLBAR "" 0 -3 0 3
|
||||
|
||||
#include <toolbar.h>
|
||||
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Causali" -1 -1 78 15
|
||||
@ -24,17 +26,17 @@ STRING F_CODTAB 3
|
||||
BEGIN
|
||||
PROMPT 2 2 ""
|
||||
USE LF_MULTIREL
|
||||
JOIN LF_CAUSALI INTO CODCAUS==FIRST
|
||||
INPUT COD F_COD SELECT
|
||||
INPUT FIRST F_CODTAB
|
||||
INPUT SECOND F_COD_CAMPO
|
||||
INPUT SECOND F_COD_CAUS
|
||||
DISPLAY "Codice" FIRST
|
||||
DISPLAY "Descrizione@60" DATA
|
||||
DISPLAY "Codice causale Sispac" SECOND
|
||||
DISPLAY "Descrizione@60" LF_CAUSALI->DESCR
|
||||
DISPLAY "Causale Sispac/Cosmo" SECOND
|
||||
OUTPUT F_CODTAB FIRST
|
||||
OUTPUT F_CODTAB1 FIRST
|
||||
OUTPUT F_DESC DATA
|
||||
OUTPUT F_COD_CAMPO SECOND
|
||||
// CHECKTYPE REQUIRED
|
||||
OUTPUT F_COD_CAUS SECOND
|
||||
OUTPUT F_DESC LF_CAUSALI->DESCR
|
||||
FIELD FIRST
|
||||
FLAGS "U"
|
||||
GROUP 1
|
||||
@ -48,12 +50,6 @@ BEGIN
|
||||
INPUT CODCAUS F_CODTAB1
|
||||
DISPLAY "Cod." CODCAUS
|
||||
DISPLAY "Descrizione@50" DESCR
|
||||
DISPLAY "Documento" TIPODOC
|
||||
DISPLAY "Registro" REG
|
||||
DISPLAY "Tipo movimento" TIPOMOV
|
||||
DISPLAY "Inc./Pag." CODCAUSIM
|
||||
DISPLAY "770" M770
|
||||
DISPLAY "Cespiti" COLLCESP
|
||||
OUTPUT F_CODTAB CODCAUS
|
||||
OUTPUT F_CODTAB1 CODCAUS
|
||||
OUTPUT F_DESC DESCR
|
||||
@ -67,21 +63,29 @@ END
|
||||
STRING F_DESC 50
|
||||
BEGIN
|
||||
PROMPT 10 2 "Descrizione "
|
||||
USE LF_MULTIREL KEY 2
|
||||
INPUT COD F_COD SELECT
|
||||
INPUT DATA F_DESC
|
||||
DISPLAY "Descrizione@60" DATA
|
||||
DISPLAY "Codice" FIRST
|
||||
DISPLAY "Causale Sispac" SECOND
|
||||
COPY OUTPUT F_CODTAB
|
||||
FIELD DATA
|
||||
KEY 3
|
||||
CHECKTYPE REQUIRED
|
||||
USE LF_CAUSALI KEY 2
|
||||
JOIN LF_MULTIREL INTO FIRST==CODCAUS
|
||||
INPUT DESCR F_DESC
|
||||
DISPLAY "Cod." CODCAUS
|
||||
DISPLAY "Descrizione@50" DESCR
|
||||
DISPLAY "Documento" TIPODOC
|
||||
DISPLAY "Registro" REG
|
||||
DISPLAY "Tipo movimento" TIPOMOV
|
||||
DISPLAY "Inc./Pag." CODCAUSIM
|
||||
DISPLAY "770" M770
|
||||
DISPLAY "Cespiti" COLLCESP
|
||||
OUTPUT F_CODTAB LF_MULTIREL->FIRST
|
||||
OUTPUT F_CODTAB1 LF_MULTIREL->FIRST
|
||||
OUTPUT F_COD_CAUS LF_MULTIREL->SECOND
|
||||
OUTPUT F_DESC DESCR
|
||||
KEY 2
|
||||
GROUP 4
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
NUMBER F_COD_CAMPO 5
|
||||
NUMBER F_COD_CAUS 5
|
||||
BEGIN
|
||||
PROMPT 2 4 "Causale Sispac "
|
||||
PROMPT 2 4 "Causale Sispac "
|
||||
FIELD SECOND
|
||||
FLAGS "Z"
|
||||
KEY 1
|
||||
@ -89,6 +93,45 @@ BEGIN
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
NUMBER F_COD_CAUSCF 5
|
||||
BEGIN
|
||||
PROMPT 2 6 "Causale Sispac For./Cli. "
|
||||
FIELD DATA[1,5]
|
||||
FLAGS "Z"
|
||||
END
|
||||
|
||||
BOOLEAN F_IN_RC
|
||||
BEGIN
|
||||
PROMPT 2 8 "Causale reverse charge "
|
||||
FIELD DATA[6,6]
|
||||
MESSAGE FALSE CLEAR,5@
|
||||
MESSAGE TRUE ENABLE,5@
|
||||
END
|
||||
|
||||
NUMBER F_COD_CAUSRG 5
|
||||
BEGIN
|
||||
PROMPT 2 10 "Causale Sispac Regolariz."
|
||||
FIELD DATA[7,11]
|
||||
FLAGS "Z"
|
||||
GROUP 5
|
||||
END
|
||||
|
||||
NUMBER F_COD_CAUSGC 5
|
||||
BEGIN
|
||||
PROMPT 2 12 "Causale Sispac Giroconto "
|
||||
FIELD DATA[12,16]
|
||||
FLAGS "Z"
|
||||
GROUP 5
|
||||
END
|
||||
|
||||
NUMBER F_COD_CONTOV 12
|
||||
BEGIN
|
||||
PROMPT 2 13 "Conto Sispac Vendite "
|
||||
FIELD DATA[17,28]
|
||||
FLAGS "Z"
|
||||
GROUP 5
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
||||
|
@ -37,7 +37,6 @@ BEGIN
|
||||
OUTPUT F_COD_CAMPO SECOND
|
||||
// CHECKTYPE REQUIRED
|
||||
FIELD FIRST
|
||||
FLAGS "Z"
|
||||
KEY 1
|
||||
GROUP 1
|
||||
END
|
||||
|
Loading…
x
Reference in New Issue
Block a user