Patch level : 12.0 1040

Files correlati     : tutto in
Commento            :

Aggiornato il modulo intra

Interno :

Primo rilascio mancano  la generazione riepiloghi e l'invio delle righe di servizio
This commit is contained in:
Alessandro Bonazzi 2021-03-16 13:42:00 +01:00
parent 0d18d1808a
commit 77e13fc725
2 changed files with 130 additions and 77 deletions

View File

@ -447,6 +447,7 @@ public: // TObject
int regime_speciale() const { return get_int("I5");} int regime_speciale() const { return get_int("I5");}
const TString& natura() const { return get("S12"); } const TString& natura() const { return get("S12"); }
const TString& tipo_intra() const { return get("S13"); }
TCodiceIVA(const char* codice = nullptr); TCodiceIVA(const char* codice = nullptr);
TCodiceIVA(const TRectype & rec) : TRectype(rec) {} TCodiceIVA(const TRectype & rec) : TRectype(rec) {}
@ -940,8 +941,8 @@ public:
virtual const TString& query_text() const; virtual const TString& query_text() const;
virtual unsigned int columns() const { return _info.items(); } virtual unsigned int columns() const { return _info.items(); }
virtual const TRecordset_column_info& column_info(unsigned int column) const { return (const TRecordset_column_info&)_info[column]; } virtual const TRecordset_column_info& column_info(unsigned int column) const { return (const TRecordset_column_info&)_info[column]; }
// const TString& col2name(unsigned int column) const;
virtual const TVariant& get(unsigned int column) const; virtual const TVariant& get(unsigned int column) const;
const TVariant& get(const char * name) const;
void set_from(const TDate& from) { set_var("#FROMDATE", from, true); ; } void set_from(const TDate& from) { set_var("#FROMDATE", from, true); ; }
void set_to(const TDate& to) { set_var("#TODATE", to, true); } void set_to(const TDate& to) { set_var("#TODATE", to, true); }
@ -960,6 +961,8 @@ public:
bool set_annual(bool on) { return _annuale = on; } bool set_annual(bool on) { return _annuale = on; }
bool annuale() const { return _annuale; } bool annuale() const { return _annuale; }
virtual bool is_competenza() const { return false; } virtual bool is_competenza() const { return false; }
virtual int is_intra() const { return false; }
virtual const char * remap_IVA(const char * codIVA, const TISAM_recordset & rmov) const { return codIVA; }
TRiepilogoIVA_recordset(); TRiepilogoIVA_recordset();
virtual ~TRiepilogoIVA_recordset() { } virtual ~TRiepilogoIVA_recordset() { }

View File

@ -72,7 +72,7 @@ void TRiepilogoIVA_recordset::requery()
TAssoc_array work_array; TAssoc_array work_array;
TISAM_recordset recset(query_text()); TISAM_recordset recset(query_text());
recset.set_var("#FROMDATE", from(), true); recset.set_var("#FROMDATE", from(), true);
recset.set_var("#TODATE", to(), true); recset.set_var("#TODATE", to(), true);
recset.set_var("#ANNO", (long)anno(), true); recset.set_var("#ANNO", (long)anno(), true);
if (codatt().full()) if (codatt().full())
@ -81,79 +81,84 @@ void TRiepilogoIVA_recordset::requery()
recset.set_var("#AMESE", (long)a_mese(), true); recset.set_var("#AMESE", (long)a_mese(), true);
for (bool ok = recset.move_first(); ok; ok = recset.move_next()) for (bool ok = recset.move_first(); ok; ok = recset.move_next())
{ {
TString cod = recset.get(RMI_CODIVA).as_string(); TString cod = remap_IVA(recset.get(RMI_CODIVA).as_string(), recset);
TRiepilogoIVA_record * rec = (TRiepilogoIVA_record *)work_array.objptr(cod);
long gruppo = recset.get(RMI_GRUPPO).as_int();
long conto = recset.get(RMI_CONTO).as_int();
long sottoconto = recset.get(RMI_SOTTOCONTO).as_int();
int indetr = recset.get(RMI_TIPODET).as_int();
TRegistro reg(recset.get(FIELD_NAME(LF_MOV, MOV_REG)).as_string()); if (cod.full())
TipoIVA t = reg.iva(); {
TDate data = recset.get(FIELD_NAME(LF_MOV, MOV_DATAREG)).as_date(); TRiepilogoIVA_record * rec = (TRiepilogoIVA_record *)work_array.objptr(cod);
const int meseliq = recset.get(FIELD_NAME(LF_MOV, MOV_MESELIQ)).as_int();
const TDate datadoc = recset.get(FIELD_NAME(LF_MOV, MOV_DATADOC)).as_date(); long gruppo = recset.get(RMI_GRUPPO).as_int();
const TipoIVA tipo = reg.iva(); // 1=Vendite; 2=Acquisti long conto = recset.get(RMI_CONTO).as_int();
const bool fatt_rit_2018 = recset.get(FIELD_NAME(LF_MOV, MOV_RITFATT)).as_bool() && (data.year() >= 2018); long sottoconto = recset.get(RMI_SOTTOCONTO).as_int();
const int year_diff = data.year() - datadoc.year(); int indetr = recset.get(RMI_TIPODET).as_int();
const bool fattritind = ((tipo == iva_acquisti) && fatt_rit_2018) && ((year_diff > 2) || ((year_diff >= 1) && data.month() >= 5));
const bool fattrit = ((tipo == iva_acquisti) && !fattritind && fatt_rit_2018) && (year_diff >= 1);
if (is_competenza()) TRegistro reg(recset.get(FIELD_NAME(LF_MOV, MOV_REG)).as_string());
{ TipoIVA t = reg.iva();
if (meseliq != 0) TDate data = recset.get(FIELD_NAME(LF_MOV, MOV_DATAREG)).as_date();
{ const int meseliq = recset.get(FIELD_NAME(LF_MOV, MOV_MESELIQ)).as_int();
if (meseliq > data.month()) const TDate datadoc = recset.get(FIELD_NAME(LF_MOV, MOV_DATADOC)).as_date();
data.addyear(-1); const TipoIVA tipo = reg.iva(); // 1=Vendite; 2=Acquisti
data.set_month(meseliq); const bool fatt_rit_2018 = recset.get(FIELD_NAME(LF_MOV, MOV_RITFATT)).as_bool() && (data.year() >= 2018);
data.set_end_month(); const int year_diff = data.year() - datadoc.year();
} const bool fattritind = ((tipo == iva_acquisti) && fatt_rit_2018) && ((year_diff > 2) || ((year_diff >= 1) && data.month() >= 5));
} const bool fattrit = ((tipo == iva_acquisti) && !fattritind && fatt_rit_2018) && (year_diff >= 1);
if (fattrit)
{ if (is_competenza())
data.addyear(-1); {
data.set_month(12); if (meseliq != 0)
data.set_end_month(); {
} if (meseliq > data.month())
if (data.year() != anno() || (data.year() == anno() && (data.month() < da_mese() || data.month() > a_mese()))) data.addyear(-1);
continue; data.set_month(meseliq);
if (rec == nullptr) data.set_end_month();
work_array.add(cod, rec = new TRiepilogoIVA_record(cod)); }
if (t == iva_acquisti) }
{ if (fattrit)
if (indetr == 0) {
{ data.addyear(-1);
real & r = rec->impacq(); data.set_month(12);
r += recset.get(RMI_IMPONIBILE).as_real(); data.set_end_month();
real & r1 = rec->ivaacq(); }
r1 += recset.get(RMI_IMPOSTA).as_real(); if (data.year() != anno() || (data.year() == anno() && (data.month() < da_mese() || data.month() > a_mese())))
} continue;
else if (rec == nullptr)
{ work_array.add(cod, rec = new TRiepilogoIVA_record(cod));
real & r = rec->impacqind(); if (t == iva_acquisti)
r += recset.get(RMI_IMPONIBILE).as_real(); {
real & r1 = rec->ivaacqind(); if (indetr == 0)
r1 += recset.get(RMI_IMPOSTA).as_real(); {
} real & r = rec->impacq();
} r += recset.get(RMI_IMPONIBILE).as_real();
else real & r1 = rec->ivaacq();
if (t == iva_vendite) r1 += recset.get(RMI_IMPOSTA).as_real();
{ }
if (reg.corrispettivi()) else
{ {
real & r = rec->impcorr(); real & r = rec->impacqind();
r += recset.get(RMI_IMPONIBILE).as_real(); r += recset.get(RMI_IMPONIBILE).as_real();
real & r1 = rec->ivacorr(); real & r1 = rec->ivaacqind();
r1 += recset.get(RMI_IMPOSTA).as_real(); r1 += recset.get(RMI_IMPOSTA).as_real();
} }
else }
{ else
real & r = rec->impven(); if (t == iva_vendite)
r += recset.get(RMI_IMPONIBILE).as_real(); {
real & r1 = rec->ivaven(); if (reg.corrispettivi())
r1 += recset.get(RMI_IMPOSTA).as_real(); {
} real & r = rec->impcorr();
} r += recset.get(RMI_IMPONIBILE).as_real();
real & r1 = rec->ivacorr();
r1 += recset.get(RMI_IMPOSTA).as_real();
}
else
{
real & r = rec->impven();
r += recset.get(RMI_IMPONIBILE).as_real();
real & r1 = rec->ivaven();
r1 += recset.get(RMI_IMPOSTA).as_real();
}
}
}
} }
TString_array keys; TString_array keys;
@ -187,9 +192,11 @@ const TString& TRiepilogoIVA_recordset::query_text() const
{ {
TString & query = get_tmp_string(); TString & query = get_tmp_string();
// query << "USE " << LF_RMOVIVA << " KEY 1 SELECT BETWEEN(" << FIELD_NAME(LF_MOV, MOV_DATAREG) << ";" << '"' << "FROMDATE" << '"' << ";" << '"' << "TODATE" << '"' << ")";
query << "USE " << LF_RMOVIVA << " KEY 1 SELECT BETWEEN(" << FIELD_NAME(LF_MOV, MOV_DATAREG) << "; #FROMDATE; #TODATE)"; query << "USE " << LF_RMOVIVA << " KEY 1 SELECT BETWEEN(" << FIELD_NAME(LF_MOV, MOV_DATAREG) << "; #FROMDATE; #TODATE)";
if (codatt().full()) if (is_intra())
query << "&&(" << FIELD_NAME(LF_CAUSALI, CAU_INTRACOM) << "==\"X\")&&("
<< FIELD_NAME(REG, "I0") << "=\"2\")";
if (codatt().full())
{ {
// query << "&&(" << FIELD_NAME(REG, "S8") << "==\"" << _codatt << "\")"; // query << "&&(" << FIELD_NAME(REG, "S8") << "==\"" << _codatt << "\")";
query << "&&(" << FIELD_NAME(REG, "S8") << "=#CODATT)"; query << "&&(" << FIELD_NAME(REG, "S8") << "=#CODATT)";
@ -198,7 +205,13 @@ const TString& TRiepilogoIVA_recordset::query_text() const
} }
else else
query << "\nJOIN " << LF_MOV << " INTO " << MOV_NUMREG << "==" << RMI_NUMREG; query << "\nJOIN " << LF_MOV << " INTO " << MOV_NUMREG << "==" << RMI_NUMREG;
// query << "USE " << LF_RMOVIVA << " KEY 1 SELECT BETWEEN(" << LF_MOV << "." << MOV_DATAREG << ";FROMDATE;TODATE) \nJOIN " << LF_MOV << " INTO NUMREG==NUMREG"; if (is_intra())
{
query << "\nJOIN " << LF_CAUSALI << " TO " << LF_MOV << " INTO " << CAU_CODCAUS << "==" << MOV_CODCAUS;
query << "\nJOIN REG TO " << LF_MOV << " INTO CODTAB==" << MAIN_SUB_FIELD_NAME(MOV_DATAREG, 7, 10) << "+" << MOV_REG;
query << "\nJOIN " << LF_CLIFO << " TO " << LF_MOV << " INTO " << CLI_TIPOCF << "==" << MOV_TIPO << " " << CLI_CODCF << "==" << MOV_CODCF;
}
return query; return query;
} }
@ -291,6 +304,44 @@ void TRiepilogoIVA_recordset::add_field(TFieldtypes tipo, short id, int width, c
_info.add(i); _info.add(i);
} }
const TVariant& TRiepilogoIVA_recordset::get(const char * name) const
{
const TString16 fldname(name);
TVariant & v = get_tmp_var();
if (fldname == COD)
return v = get((unsigned int) 0);
else
if (fldname == DESC)
v = get(1);
else
if (fldname == IMPACQ)
v = get(2);
else
if (fldname == IVAACQ)
v = get(3);
else
if (fldname == IMPCORR)
v = get(4);
else
if (fldname == IVACORR)
v = get(5);
else
if (fldname == IMPVEN)
v = get(6);
else
if (fldname == IVAVEN)
v = get(7);
else
if (fldname == IMPACQIND)
v = get(8);
else
if (fldname == IVAACQIND)
v = get(9);
return v;
}
const TVariant& TRiepilogoIVA_recordset::get(unsigned int column) const const TVariant& TRiepilogoIVA_recordset::get(unsigned int column) const
{ {
TVariant & v = get_tmp_var(); TVariant & v = get_tmp_var();
@ -300,7 +351,6 @@ const TVariant& TRiepilogoIVA_recordset::get(unsigned int column) const
v = get_field(0, info._name); v = get_field(0, info._name);
} }
return v; return v;
} }