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:
alex 2009-07-29 11:28:18 +00:00
parent 3374e34987
commit 70a4320ee4
5 changed files with 721 additions and 61 deletions

View File

@ -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);

View File

@ -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()

View File

@ -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

View File

@ -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

View File

@ -37,7 +37,6 @@ BEGIN
OUTPUT F_COD_CAMPO SECOND
// CHECKTYPE REQUIRED
FIELD FIRST
FLAGS "Z"
KEY 1
GROUP 1
END