diff --git a/src/cg/IVA_2023_istr.pdf b/src/cg/IVA_2023_istr.pdf new file mode 100644 index 000000000..45fe84eda Binary files /dev/null and b/src/cg/IVA_2023_istr.pdf differ diff --git a/src/cg/IVA_2023_mod.pdf b/src/cg/IVA_2023_mod.pdf new file mode 100644 index 000000000..b7899702f Binary files /dev/null and b/src/cg/IVA_2023_mod.pdf differ diff --git a/src/cg/cg7400.cpp b/src/cg/cg7400.cpp index e5de46233..14412157f 100644 --- a/src/cg/cg7400.cpp +++ b/src/cg/cg7400.cpp @@ -14,15 +14,16 @@ class TQuadro_VIAB_recordset : public TQuadro_IVA_recordset { + protected: - virtual void load(); + virtual void load(const char repid); public: - TQuadro_VIAB_recordset(TQuadro_IVA_mask * mask, const char* use, const int year) : TQuadro_IVA_recordset(mask, use, year) { load(); } + TQuadro_VIAB_recordset(TQuadro_IVA_mask * mask, const char* use, const int year, const char repid) : TQuadro_IVA_recordset(mask, use, year, repid) { load(repid); } virtual ~TQuadro_VIAB_recordset() {} }; -void TQuadro_VIAB_recordset::load() +void TQuadro_VIAB_recordset::load(const char repid) { const TRectype & ditta = cache().get(LF_NDITTE, app().get_firm()); const TString4 tipoa(ditta.get(NDT_TIPOA)); @@ -102,7 +103,7 @@ class TQuadro_VIAB_app : public TQuadro_IVA_app virtual char last_quadro_report() const { return 'c'; } public: - virtual TQuadro_IVA_recordset * app_recordset(const char* use, const int year) { return new TQuadro_VIAB_recordset(mask(), use, year); } + virtual TQuadro_IVA_recordset * app_recordset(const char* use, const int year, const char repid) { return new TQuadro_VIAB_recordset(mask(), use, year, repid); } void load_sheet(TSheet_field & sf); TQuadro_VIAB_app() : TQuadro_IVA_app("Stampa Quadro VC", "cg7400a") {} diff --git a/src/cg/cg7400a.png b/src/cg/cg7400a.png index 2258376dc..7f0567f4f 100644 Binary files a/src/cg/cg7400a.png and b/src/cg/cg7400a.png differ diff --git a/src/cg/cg7400b.png b/src/cg/cg7400b.png index 214e4f30e..103204e11 100644 Binary files a/src/cg/cg7400b.png and b/src/cg/cg7400b.png differ diff --git a/src/cg/cg7400c.png b/src/cg/cg7400c.png index 5f1b87673..c05148c56 100644 Binary files a/src/cg/cg7400c.png and b/src/cg/cg7400c.png differ diff --git a/src/cg/cg7401.cpp b/src/cg/cg7401.cpp index fca6351bd..d889cf4cb 100644 --- a/src/cg/cg7401.cpp +++ b/src/cg/cg7401.cpp @@ -171,16 +171,19 @@ TISAM_recordset & TQuadro_IVA_recordset::get_recordset(const int code, const int return *set; } -const real TQuadro_IVA_recordset::evaluate_recordset(const int code, const int year, const char * field, const char * expr) +const real TQuadro_IVA_recordset::evaluate_recordset(const int code, const int year, const char * field, const char * expr, long codditta) { real val; TProgram_report & rep = _mask->get_report(code - 1); TISAM_recordset * set = (TISAM_recordset *) rep.recordset(); TExpression e(expr == NULL ? "\"X\"" : expr); - if (set != NULL) + if (set != nullptr) { + if (codditta < 0) + codditta = prefix().get_codditta(); set->set_var("#ANNO", format("%d", year)); + set->set_var("#DITTA", codditta); if (set->items() > 0) for (set->move_first(); !set->eof(); set->move_next()) @@ -252,9 +255,28 @@ void TQuadro_IVA_recordset::add_value(const char *s, const real value) _types.add(key, TString("real")); } *val += value; +#ifdef DBG + double t = val->ld(); + double v = value.ld(); + static const char * codici[] = { "VE23.1", "VE23.2", "VE40.1" , "VF13.1", "VF13.2", nullptr }; + + for (int i = 0; codici[i] != nullptr; i++) + if (strcmp(s, codici[i]) == 0) + int z = 1; +#endif } } +real TQuadro_IVA_recordset::get_real_value(const char *s) +{ + const TString * t = (const TString *)_types.objptr(s); + + if (t != nullptr && *t == "real") + return *((real *) _values.objptr(s)); + else + return ZERO; +} + void TQuadro_IVA_recordset::set_bool(const char *s, bool on) { TString * val = (TString *)_values.objptr(s); @@ -262,7 +284,9 @@ void TQuadro_IVA_recordset::set_bool(const char *s, bool on) if (val == nullptr) { const TString8 key(s); + _values.add(key, val = new TString4); + _types.add(key, TString("bool")); } *val = on ? "X" : ""; } @@ -274,7 +298,9 @@ void TQuadro_IVA_recordset::set(const char *s, const char * value) if (val == nullptr) { const TString8 key(s); + _values.add(key, val = new TString); + _types.add(key, TString("string")); } *val = value; } @@ -314,7 +340,7 @@ void TQuadro_IVA_app::print() TQuadro_IVA_report rep(repname); TRecordset * set = rep.recordset(); - rep.set_recordset(app_recordset(set->query_text(), atoi(year))); + rep.set_recordset(app_recordset(set->query_text(), atoi(year), c)); set = rep.recordset(); TReport_section * sec = rep.find_section('B', 1); TReport_field * fld = sec->find_field(100); @@ -326,6 +352,7 @@ void TQuadro_IVA_app::print() book.add(rep); } } + _mask->restart_reports(); TProgram_report * rep = _mask->get_report(); TFilename repname = rep->filename(); diff --git a/src/cg/cg7401.h b/src/cg/cg7401.h index bf1c3807c..9d7b8c596 100644 --- a/src/cg/cg7401.h +++ b/src/cg/cg7401.h @@ -40,23 +40,25 @@ class TQuadro_IVA_recordset : public TISAM_recordset TAssoc_array _types; TQuadro_IVA_mask * _mask; int _year; + char _repid; protected: const TMask & mask() { return *_mask; } void add_value(const char *s, const real value); void sub_value(const char *s, const real value) { add_value(s, -value); } void set_bool(const char *s, bool on = false); + real get_real_value(const char *s); void set(const char *s,const char * value); - virtual void load() pure; + virtual void load(const char repid) pure; virtual const TVariant& get(const char* column_name) const; void clear() { _values.destroy(); _types.destroy(); } TISAM_recordset & get_recordset(const int code, const int year = 0); - const real evaluate_recordset(const int code, const int year, const char * field, const char * expr = nullptr); + const real evaluate_recordset(const int code, const int year, const char * field, const char * expr = nullptr, long codditta = -1); const real evaluate_recordset_imponibile(const int code, const int year, const char * expr = nullptr) { return evaluate_recordset(code, year, RMI_IMPONIBILE, expr); } const real evaluate_recordset_imposta(const int code, const int year, const char * expr = nullptr) { return evaluate_recordset(code, year, RMI_IMPOSTA, expr); } public: - TQuadro_IVA_recordset(TQuadro_IVA_mask * mask, const char* use, const int year) : TISAM_recordset(use), _mask(mask), _year(year) { } + TQuadro_IVA_recordset(TQuadro_IVA_mask * mask, const char* use, const int year, const char repid) : TISAM_recordset(use), _mask(mask), _year(year), _repid(repid) { } TQuadro_IVA_recordset(const TQuadro_IVA_recordset * recset); TQuadro_IVA_recordset(const TQuadro_IVA_recordset & recset); int year() { return _year; } @@ -84,7 +86,7 @@ protected: virtual char last_quadro_report() const { return 'a';} public: - virtual TQuadro_IVA_recordset * app_recordset(const char* use, const int year) pure; + virtual TQuadro_IVA_recordset * app_recordset(const char* use, const int year, const char repid) pure; virtual void load_sheet(TSheet_field & sf) {} virtual bool firm_change_enabled() const { return false; } TQuadro_IVA_mask * mask() const { return _mask; } diff --git a/src/cg/cg7500a.png b/src/cg/cg7500a.png index 273c02e57..b8176bd08 100644 Binary files a/src/cg/cg7500a.png and b/src/cg/cg7500a.png differ diff --git a/src/cg/cg7600.cpp b/src/cg/cg7600.cpp index d0de36141..d0dddf75c 100644 --- a/src/cg/cg7600.cpp +++ b/src/cg/cg7600.cpp @@ -27,14 +27,14 @@ class TQuadro_VE_recordset : public TQuadro_IVA_recordset { protected: - virtual void load(); + virtual void load(const char repid); public: - TQuadro_VE_recordset(TQuadro_IVA_mask * mask, const char* use, const int year) : TQuadro_IVA_recordset(mask, use, year) { load(); } + TQuadro_VE_recordset(TQuadro_IVA_mask * mask, const char* use, const int year, const char repid) : TQuadro_IVA_recordset(mask, use, year, repid) { load(repid); } virtual ~TQuadro_VE_recordset() {} }; -void TQuadro_VE_recordset::load() +void TQuadro_VE_recordset::load(const char repid) { clear(); @@ -47,26 +47,24 @@ void TQuadro_VE_recordset::load() imposta_agricola.add("2.00", TString8("VE01.2")); imponibile_agricolo.add("4.00", TString8("VE02.2")); imposta_agricola.add("4.00", TString8("VE02.2")); - imponibile_agricolo.add("6.00", TString8("V03.1")); - imposta_agricola.add("6.00", TString8("VE03.2")); + imponibile_agricolo.add("6.40", TString8("V03.1")); + imposta_agricola.add("6.40", TString8("VE03.2")); imponibile_agricolo.add("7.30", TString8("V04.1")); imposta_agricola.add("7.30", TString8("VE04.2")); imponibile_agricolo.add("7.50", TString8("VE05.1")); imposta_agricola.add("7.50", TString8("VE05.2")); - imponibile_agricolo.add("7.65", TString8("VE06.1")); - imposta_agricola.add("7.65", TString8("VE06.2")); - imponibile_agricolo.add("7.95", TString8("VE07.1")); - imposta_agricola.add("7.65", TString8("VE07.2")); - imponibile_agricolo.add("8.30", TString8("VE08.1")); - imposta_agricola.add("8.30", TString8("VE08.2")); - imponibile_agricolo.add("8,50", TString8("VE09.1")); - imposta_agricola.add("8,50", TString8("VE09.2")); - imponibile_agricolo.add("8.80", TString8("VE10.1")); - imposta_agricola.add("8.80", TString8("VE10.2")); - imponibile_agricolo.add("10.00", TString8("VE11.1")); - imposta_agricola.add("10.00", TString8("VE11.2")); - imponibile_agricolo.add("12.30", TString8("VE12.1")); - imposta_agricola.add("12.30", TString8("VE12.2")); + imponibile_agricolo.add("8.30", TString8("VE06.1")); + imposta_agricola.add("8.30", TString8("VE06.2")); + imponibile_agricolo.add("8.50", TString8("VE07.1")); + imposta_agricola.add("8.50", TString8("VE07.2")); + imponibile_agricolo.add("8.80", TString8("VE08.1")); + imposta_agricola.add("8.80", TString8("VE08.2")); + imponibile_agricolo.add("9,50", TString8("VE09.1")); + imposta_agricola.add("9,50", TString8("VE09.2")); + imponibile_agricolo.add("10.00", TString8("VE10.1")); + imposta_agricola.add("10.00", TString8("VE10.2")); + imponibile_agricolo.add("12.30", TString8("VE11.1")); + imposta_agricola.add("12.30", TString8("VE11.2")); imponibile.add("4.00", TString8("VE20.1")); imposta.add("4.00", TString8("VE20.2")); @@ -75,17 +73,19 @@ void TQuadro_VE_recordset::load() imponibile.add("10.00",TString8("VE22.1")); imposta.add("10.00",TString8("VE22.2")); - imponibile.add("4.00", TString8("VE20.1")); +/* imponibile.add("4.00", TString8("VE20.1")); imposta.add("4.00", TString8("VE20.2")); imponibile.add("5.00", TString8("VE21.1")); imposta.add("5.00", TString8("VE21.2")); imponibile.add("10.00", TString8("VE22.1")); - imposta.add("10.00", TString8("VE22.2")); + imposta.add("10.00", TString8("VE22.2")); */ // le imposte che non esisto più le mette nella più vicina - imponibile.add("20.00", TString8("VE23.1")); - imposta.add("20.00", TString8("VE23.2")); + imponibile.add("19.00", TString8("VE23.1")); + imposta.add("19.00", TString8("VE23.2")); + imponibile.add("20.00", TString8("VE23.1")); + imposta.add("20.00", TString8("VE23.2")); imponibile.add("21.00", TString8("VE23.1")); imposta.add("21.00", TString8("VE23.2")); @@ -97,7 +97,6 @@ void TQuadro_VE_recordset::load() query << year() << "\nTO CODTAB=" << year(); TISAM_recordset pim(query); - bool good = false; for (pim.move_first(); !pim.eof(); pim.move_next()) { @@ -127,17 +126,21 @@ void TQuadro_VE_recordset::load() codatt.add(codtab.mid(4, 5)); const TRectype& attiv = cache().get(LF_ATTIV, codatt); const bool attivita_commerciale = !attiv.get_bool(ATT_ATTNONCOM); + TArray imponibili; + TArray imposte; - tiporec tipo; - real imp; - real iva; - int last_tiporec= -1; - - if (classify_pim(pimr, imp, iva, tipo, true, last_tiporec, true)) + classify_pim_array(pimr, imponibili, imposte, true, true); + FOR_EACH_ARRAY_ITEM(imponibili, t, obj) { - good = true; - switch (tipo) + tiporec tipo = (tiporec) t; + + if (obj != nullptr) { + real & imp = (real &)*obj; + real & iva = (real &)imposte[t]; + + switch (tipo) + { case acq_norm: // acquisti normali break; case vend_norm: // vendite normali @@ -148,34 +151,29 @@ void TQuadro_VE_recordset::load() if (agricolo) { - add_value(*(TString *)imponibile_agricolo.objptr(aliquota), imp); - add_value(*(TString *)imposta_agricola.objptr(aliquota), iva); + add_value(STRING_TOKEN(imponibile_agricolo.objptr(aliquota)), imp); + add_value(STRING_TOKEN(imposta_agricola.objptr(aliquota)), iva); } else { - if (aliquota == "20.00" || aliquota == "21.00") - { - real imposta_corretta = imp; + if (aliquota == "22.00") + int q = 1; + if (aliquota == "19.00" || aliquota == "20.00" || aliquota == "21.00") + { + real imposta_corretta = imp; - imposta_corretta *= 0.22; - imposta_corretta.round(0); - add_value("VE25.2", iva - imposta_corretta); - iva = imposta_corretta; - } + imposta_corretta *= 0.22; + imposta_corretta.round(0); + add_value("VE25.2", iva - imposta_corretta); + iva = imposta_corretta; + } + if (aliquota == "22.00") + int q = 1; add_value(STRING_TOKEN(imponibile.objptr(aliquota)), imp); add_value(STRING_TOKEN(imposta.objptr(aliquota)), iva); } } - else - { - const int tipocr = atoi(codtab.mid(15, 1)); // tipo costo_ricavo - if (tipocr == 4) - { - if (reverse || int_tipo_iva11_ven == acq_ind_pass_int || int_tipo_iva11_ven == cess_amm) - add_value("VE40.1", imp); - } - } break; case acq_simp: break; @@ -183,47 +181,46 @@ void TQuadro_VE_recordset::load() break; case bolle_doganali: // bolle doganali (acquisti) break; - case acq_beni_riv : // acq. beni per rivendita + case acq_beni_riv: // acq. beni per rivendita break; - case base_ventilazione: // base calcolo per ventil. + case base_ventilazione: // base calcolo per ventil. break; case corr_simp: // corrispettivi n. e s. imp. break; - case acq_beni_ammort: // acq. beni ammortizz. detr. + case acq_beni_ammort: // acq. beni ammortizz. detr. break; - case acq_beni_ammort_nd: // beni ammort. non detraibili + case acq_beni_ammort_nd: // beni ammort. non detraibili break; - case acq_beni_leasing: // beni strum. acq in leasing + case acq_beni_leasing: // beni strum. acq in leasing break; case acq_amm_ultdetr: // beni amm. ult. detr 6% break; - case acq_ind_op_es: // acq. indetr. su op.es. + case acq_ind_op_es: // acq. indetr. su op.es. break; - case acq_ind_pass_int: // passaggi interni - if (vendite) - add_value("VE40.1", imp); + case acq_ind_pass_int: // passaggi interni +// add_value("VE40.1", imp); break; - case acq_ind_art_19: // indetr. art. 19 + case acq_ind_art_19: // indetr. art. 19 break; - case cess_amm: // cessioni amministrative - add_value("VE40.1", imp); + case cess_amm: // cessioni beni ammortizzabili +// add_value("VE40.1", imp); break; - case vend_rimborso: // vendite valide per rimborso + case vend_rimborso: // vendite valide per rimborso break; - case acq_rimborso: // acq. validi per rimborso + case acq_rimborso: // acq. validi per rimborso break; - case acq_bd_ind_art_19: // acq. con tipo documento BD e tipo detr 9 + case acq_bd_ind_art_19: // acq. con tipo documento BD e tipo detr 9 break; default: break; - }; - } - else - { - imp = pimr.get_real("R0"); - iva = pimr.get_real("R1"); + }; + } } + + const real imp = pimr.get_real("R0"); + const real iva = pimr.get_real("R1"); + if (non_imponibile) { if (int_tipo_iva11_ven == 21) @@ -267,40 +264,11 @@ void TQuadro_VE_recordset::load() } } - TISAM_recordset exp = get_recordset(REP_PAART17); - - query = exp.query_text(); - - int pos = query.find("BY") - 1; - - query.insert("&&(ATTIV.ATTNONCOM != \"X\")", pos); - exp.set(query); - exp.requery(); - exp.set_var("#DITTA", prefix().get_codditta()); - exp.set_var("#ANNO", format("%d", year())); - for (exp.move_first(); !exp.eof(); exp.move_next()) - { - TString8 cod(exp.get(FIELD_NAME(LF_RMOVIVA, RMI_CODIVA)).as_string()); - const TCodiceIVA & codiva = cached_codIVA(cod); - const TString & aliquota = codiva.aliquota(); - const TRectype & mov = cache().get(LF_MOV, exp.get(FIELD_NAME(LF_RMOVIVA, RMI_NUMREG)).as_int()); - - if (aliquota.full()) - { - const real imp = exp.get(FIELD_NAME(LF_RMOVIVA, RMI_IMPONIBILE)).as_real(); - real iva = exp.get(FIELD_NAME(LF_RMOVIVA, RMI_IMPOSTA)).as_real(); - - if (codiva.is_agricola()) - sub_value(STRING_TOKEN(imponibile_agricolo.objptr(aliquota)), imp); - else - sub_value(STRING_TOKEN(imponibile.objptr(aliquota)), imp); - } - } TISAM_recordset reg = get_recordset(REP_REGOLARIZ); query = reg.query_text(); - pos = query.find("JOIN") - 1; + int pos = query.find("JOIN") - 1; query.insert("&&(ATTIV.ATTNONCOM != \"X\")", pos); reg.set(query); reg.requery(); @@ -333,6 +301,8 @@ void TQuadro_VE_recordset::load() sub_value("VE25.2", imposta_corretta - iva); iva = imposta_corretta; } + if (aliquota == "22.00" && iva != (imp * real(0.22)).round(2)) + int q = 1; sub_value(STRING_TOKEN(imponibile.objptr(aliquota)), imp); sub_value(STRING_TOKEN(imposta.objptr(aliquota)), iva); } @@ -343,7 +313,6 @@ void TQuadro_VE_recordset::load() query << year() << "13\nTO CODTAB==" << year() << "13"; TISAM_recordset lim(query); - good |= lim.items() > 0; for (lim.move_first(); !lim.eof(); lim.move_next()) { @@ -390,34 +359,38 @@ void TQuadro_VE_recordset::load() TISAM_recordset id(query); - TString8 tipo_aliquota, codiva; + TString8 cod; TImporto imp371, imp372; for (bool ok = id.move_first(); ok; ok = id.move_next()) - { - const long numreg = id.get(RMI_NUMREG).as_int(); - const int tipoiva = id.get(ID_TIPOIVA).as_int(); - const int tipodiff = id.get(ID_TIPODIFF).as_int(); - const TRectype & mov = cache().get(LF_MOV, numreg); - const char sezione = id.get(ID_SEZIONE).as_string()[0]; - const int tipomov = id.get(ID_TIPOMOV).as_int(); - const TImporto imp(sezione, id.get(RMI_IMPONIBILE).as_real()); - const int annoliq = id.get(ID_ANNOLIQ).as_int(); - const TDate datapag = id.get(ID_DATAREGP).as_date(); + { + const long numreg = id.get_long(RMI_NUMREG); + const int tipoiva = id.get_int(ID_TIPOIVA); - key.cut(0); - key.add(numreg); - key.add(id.get(ID_NUMRIG).as_string()); - codiva = cache().get(LF_RMOVIVA, key, RMI_CODIVA); - key = codiva; - tipo_aliquota = cache().get("%IVA", key, "S1"); + if (tipoiva == 1) // Vendite + { + const int tipodiff = id.get_int(ID_TIPODIFF); + const TRectype & mov = cache().get(LF_MOV, numreg); + const char sezione = id.get_string(ID_SEZIONE)[0]; + const int tipomov = id.get_int(ID_TIPOMOV); + const TImporto imp(sezione, id.get_real(RMI_IMPONIBILE)); + const int annoliq = id.get_int(ID_ANNOLIQ); + const TDate datapag = id.get_date(ID_DATAREGP); - if (tipo_aliquota.blank() && datapag <= a_datareg && tipoiva == 1) // Vendite - { - imp371 += imp; - if (tipodiff == 2) - imp372 += imp; - } + key.cut(0); + key.add(numreg); + key.add(id.get_string(ID_NUMRIG)); + cod = cache().get(LF_RMOVIVA, key, RMI_CODIVA); + + const TCodiceIVA & codiva = cached_codIVA(cod); + + if (codiva.iva_imponibile() && datapag <= a_datareg) + { + imp371 += imp; + if (tipodiff == 2) + imp372 += imp; + } + } } imp371.normalize('D'); add_value("VE37.1", imp371.valore()); // VE37.1 2 iva sospensione da incassare @@ -435,31 +408,56 @@ void TQuadro_VE_recordset::load() for (bool ok = idp.move_first(); ok; ok = idp.move_next()) { - const long numreg = idp.get(RMI_NUMREG).as_int(); - const int tipoiva = idp.get(ID_TIPOIVA).as_int(); - const TRectype & mov = cache().get(LF_MOV, numreg); - const char sezione = idp.get(ID_SEZIONE).as_string()[0]; - const int tipomov = idp.get(ID_TIPOMOV).as_int(); - const TImporto imp(sezione, idp.get(RMI_IMPONIBILE).as_real()); - const int annoliq = idp.get(ID_DATAREG).as_date().year(); - const int annopag = idp.get(ID_DATAREGP).as_date().year(); - - key.cut(0); - key.add(numreg); - key.add(idp.get(ID_NUMRIG).as_string()); - codiva = cache().get(LF_RMOVIVA, key, RMI_CODIVA); - key = codiva; - tipo_aliquota = cache().get("%IVA", key, "S1"); - - if (tipo_aliquota.blank() && tipoiva == 1) // Vendite + const long numreg = idp.get_long(RMI_NUMREG); + const int tipoiva = idp.get_int(ID_TIPOIVA); + + if (tipoiva == 1) // Vendite { - if (annoliq < year() && tipomov == 3) + const int tipodiff = idp.get_int(ID_TIPODIFF); + const TRectype & mov = cache().get(LF_MOV, numreg); + const char sezione = idp.get_string(ID_SEZIONE)[0]; + const int tipomov = idp.get_int(ID_TIPOMOV); + const TImporto imp(sezione, idp.get_real(RMI_IMPONIBILE)); + const int annoliq = idp.get_date(ID_DATAREG).year(); + const int annopag = idp.get_date(ID_DATAREGP).year(); + + key.cut(0); + key.add(numreg); + key.add(idp.get(ID_NUMRIG).as_string()); + cod = cache().get(LF_RMOVIVA, key, RMI_CODIVA); + const TCodiceIVA & codiva = cached_codIVA(cod); + + if (annoliq < year() && tipomov == 3 && codiva.iva_imponibile()) imp391 += imp; } } - imp391.normalize('A'); add_value("VE39.1", imp391.valore()); // VE39.1 iva differita incassi di anni precedenti + + query.zap(); + + query << "USE RMOVIVA SELECT BETWEEN(" << FIELD_NAME(LF_MOV, MOV_DATAREG) << ",\""<< da_datareg.date2ansi() << "\",\"" << a_datareg.date2ansi() << "\")&&((" << RMI_TIPOCR << "== 1" << ")||(" << RMI_TIPOCR << "== 4))"; + query << "\nJOIN " << LF_MOV << " INTO " << MOV_NUMREG << "=" << RMV_NUMREG; + + + TISAM_recordset movces(query); + real imp401; + + for (bool ok = movces.move_first(); ok; ok = movces.move_next()) + { + const long numreg = movces.get_long(RMI_NUMREG); + const TRectype & mov = cache().get(LF_MOV, numreg); + const bool ivaxcassa = mov.get_bool(MOV_IVAXCASSA); + + if (ivaxcassa) + { + const real imp = movces.get_real(RMI_IMPONIBILE); + + imp401 += imp; + } + } + + add_value("VE40.1", imp401); // VE40.1 vendita cespiti } @@ -467,7 +465,7 @@ class TQuadro_VE_app : public TQuadro_IVA_app { public: - virtual TQuadro_IVA_recordset * app_recordset(const char* use, const int year) { return new TQuadro_VE_recordset(mask(), use, year); } + virtual TQuadro_IVA_recordset * app_recordset(const char* use, const int year, const char repid) { return new TQuadro_VE_recordset(mask(), use, year, repid); } virtual void load_sheet(TSheet_field & sf); TQuadro_VE_app() : TQuadro_IVA_app("Stampa Quadro VE", "cg7600a") {} diff --git a/src/cg/cg7600a.png b/src/cg/cg7600a.png index b64d2dd9c..0f0c4ee03 100644 Binary files a/src/cg/cg7600a.png and b/src/cg/cg7600a.png differ diff --git a/src/cg/cg7600a.rep b/src/cg/cg7600a.rep index 0a2917903..04fb14906 100644 --- a/src/cg/cg7600a.rep +++ b/src/cg/cg7600a.rep @@ -26,8 +26,7 @@ #SYSTEM.CFPI_SPACED -