diff --git a/src/cg/Cg7 quadri.txt b/src/cg/Cg7 quadri.txt new file mode 100644 index 000000000..9e40f925d --- /dev/null +++ b/src/cg/Cg7 quadri.txt @@ -0,0 +1,17 @@ +Report Quadro +cg7400a Intestazione +cg7400b A-B +cg7500a C-D +cg7600a E +cg7700a F pag. 1 +cg7700b F pag. 2 +cg7800a J-I +cg7900a J-I +cg7a00a L +cg7b00a T +cg7c00a X +cg7d00a O pag.1 +cg7d00b O pag.2 +cg7e00a G +cg7f00a S +cg7g00a V-W-Y-Z diff --git a/src/cg/IVA_2017_istruzioni.pdf b/src/cg/IVA_2017_istruzioni.pdf new file mode 100644 index 000000000..c4b2b0acc Binary files /dev/null and b/src/cg/IVA_2017_istruzioni.pdf differ diff --git a/src/cg/IVA_2017_modello.pdf b/src/cg/IVA_2017_modello.pdf new file mode 100644 index 000000000..50723479e Binary files /dev/null and b/src/cg/IVA_2017_modello.pdf differ diff --git a/src/cg/cg0500a.uml b/src/cg/cg0500a.uml index 11ff499a4..9dd1ebf78 100755 --- a/src/cg/cg0500a.uml +++ b/src/cg/cg0500a.uml @@ -377,8 +377,19 @@ BEGIN ITEM "3|Acquisti beni e servizi da soggetti non residenti" ITEM "4|Operazioni di cui all'art.74,c.1,lett.e)" ITEM "5|Provvigioni corrisposte dalle agenzie di viaggio ai loro intermediari" + ITEM "6|Acquisti di rottami e mat.di di recupero art. 74, commi 7 e 8" + ITEM "7|Acquisti di oro industriale e argento puro (art. 17, comma 5)" + ITEM "8|Acquisti di oro da investimento imp.per opzione (art. 17, comma 5)" + ITEM "9|Acquisti intrac. di CPU,PC, tablet,cellulari,console,microproc." + item "10|Importazioni rottami e altri mat.di recupero imposta non è versata" ITEM "12|Acquisti di tartufi (art.1,c.109,legge 311/2004)" ITEM "13|Subappalti in edilizia (Reverse charge)" + ITEM "14|Acquisti di fabbricati (art. 17, comma 6, lett. a-bis)" + ITEM "15|Acquisti di telefoni cellulari (art. 17, comma 6, lett. b)" + ITEM "16|Acquisti di prodotti elettronici (art. 17, comma 6, lett. c)" + ITEM "17|Acquisti di servizi del comp.edile e sett.connessi art. 17, comma 6, lett. a-ter " + ITEM "18|Acquisti di beni e servizi del sett.energetico art. 17, c.6 d-bis,ter,d-quater" + ITEM "19|Acquisti delle P.A., titolari di partita IVA art. 17-ter" ITEM "50|Importazione di oro o argento (Reverse charge)" ITEM "51|Rottami (Reverse charge)" ITEM "52|Operazioni effettuate nei confronti di condominii" diff --git a/src/cg/cg7400.cpp b/src/cg/cg7400.cpp index 9c83bacb6..cc1830363 100644 --- a/src/cg/cg7400.cpp +++ b/src/cg/cg7400.cpp @@ -8,14 +8,14 @@ class TQuadro_VC_recordset : public TQuadro_IVA_recordset { protected: - virtual void load(const long year); + virtual void load(); public: - TQuadro_VC_recordset(const char* use, const int year) : TQuadro_IVA_recordset(use, year) {} + TQuadro_VC_recordset(TQuadro_IVA_mask * mask, const char* use, const int year) : TQuadro_IVA_recordset(mask, use, year) { load(); } virtual ~TQuadro_VC_recordset() {} }; -void TQuadro_VC_recordset::load(const long year) +void TQuadro_VC_recordset::load() { TArray _aliquote; TArray _codiva; @@ -23,7 +23,7 @@ void TQuadro_VC_recordset::load(const long year) TTable pem("PEM"); TString16 key; - key.format("%04d00", year); + key.format("%04d00", year()); pem.put("CODTAB", key); int err = pem.read(); @@ -32,14 +32,14 @@ void TQuadro_VC_recordset::load(const long year) { } else - warning_box(FR("Risultati liquidazione non presenti o da ricalcolare per l'anno %d."), year); + warning_box(FR("Risultati liquidazione non presenti o da ricalcolare per l'anno %d."), year()); } class TQuadro_VC_app : public TQuadro_IVA_app { public: - virtual TQuadro_IVA_recordset * app_recordset(const char* use, const int year) { return new TQuadro_VC_recordset(use, year); } + virtual TQuadro_IVA_recordset * app_recordset(const char* use, const int year) { return new TQuadro_VC_recordset(mask(), use, year); } TQuadro_VC_app() : TQuadro_IVA_app("Stampa Quadro VC", "cg7400a") {} virtual ~TQuadro_VC_app() {} }; diff --git a/src/cg/cg7400a.pdf b/src/cg/cg7400a.pdf index e2a2f6959..e73014a9d 100644 Binary files a/src/cg/cg7400a.pdf and b/src/cg/cg7400a.pdf differ diff --git a/src/cg/cg7400a.png b/src/cg/cg7400a.png index 2464f04a9..f27e3b8e6 100644 Binary files a/src/cg/cg7400a.png and b/src/cg/cg7400a.png differ diff --git a/src/cg/cg7400b.pdf b/src/cg/cg7400b.pdf new file mode 100644 index 000000000..4f788bbfc Binary files /dev/null and b/src/cg/cg7400b.pdf differ diff --git a/src/cg/cg7401.cpp b/src/cg/cg7401.cpp index a22195061..a742dfc48 100644 --- a/src/cg/cg7401.cpp +++ b/src/cg/cg7401.cpp @@ -2,7 +2,9 @@ // Programma per la stampa del quadri IVA #include #include +#include #include +#include #include "cg7401.h" @@ -93,31 +95,7 @@ void TQuadro_IVA_mask::build_report_sheet() TSheet_field & sf = sfield(F_REPORTS); sf.destroy(); - switch (quadro) - { - case '4': - { - TToken_string & row = sf.row(sf.items()); row.add("|1|Prova|cg7400b"); - } - break; - case '6' : - { - TToken_string & row1 = sf.row(sf.items()); row1.add("|1|Stampa esportazioni|cg7600b"); - TToken_string & row2 = sf.row(sf.items()); row2.add("|2|Stampa cessioni Intracomunitarie|cg7600c"); - TToken_string & row3 = sf.row(sf.items()); row3.add("|3|Stampa cessioni verso San Marino|cg7600d"); - TToken_string & row4 = sf.row(sf.items()); row4.add("|4|Stampa operazioni assimilate|cg7600e"); - TToken_string & row5 = sf.row(sf.items()); row5.add("|5|Stampa operazioni non imp. in seguito a dich. d'intenti|cg7600f"); - TToken_string & row6 = sf.row(sf.items()); row6.add("|6|Stampa altre operazioni non imponibili|cg7600g"); - TToken_string & row7 = sf.row(sf.items()); row7.add("|7|Stampa esenti art. 10|cg7600h"); - TToken_string & row8 = sf.row(sf.items()); row8.add("|8|Stampa operazioni non sogg. ai sensi art.7 da uno a septies|cg7600i"); - TToken_string & row9 = sf.row(sf.items()); row9.add("|9|Stampa operazioni reverse charge|cg7600l"); - TToken_string & row10 = sf.row(sf.items()); row10.add("|10|Stampa operazioni terremotati|cg7600m"); - TToken_string & row11 = sf.row(sf.items()); row11.add("|11|Stampa operazioni effettuate con PA ai sensi art.17|cg7600n"); - } - break; - default : - break; - } + ((TQuadro_IVA_app &) main_app()).load_sheet(sf); __stop.load("STOP"); const int items = sf.items(); @@ -181,22 +159,67 @@ bool TQuadro_IVA_mask::on_field_event(TOperable_field& o, TField_event e, long j return true; } +const real TQuadro_IVA_recordset::evaluate_recordset(const int code, const int year, const char * field, const char * expr) +{ + 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) + { + set->set_var("#ANNO", format("%d", year)); + + if (set->items() > 0) + for (set->move_first(); !set->eof(); set->move_next()) + { + int numvar = e.numvar(); + + for (int i = 0; i < numvar; i++) + { + const TString16 name = e.vars().varname(i); + const TString val = set->get(name).as_string(); + + e.setvar(name, val); + } + if ((bool)e) + val += set->get(field).as_real(); + } + set->freeze(); + } + + return val; +} + const TVariant& TQuadro_IVA_recordset::get(const char* column_name) const { const TFixed_string name(column_name); if (!name.starts_with("#") && name.find('.') > 0) { - TVariant & var = get_tmp_var(); - real * value = (real *) _values.objptr(name); - - if (value == NULL) - var = ZERO; - else + TObject * obj = _values.objptr(name); + TVariant & var = get_tmp_var(); var == NULL_VARIANT; + + if (TString(column_name) == "VF30.1") + int i = 1; + + if (obj != NULL) { - value->round(0); - var = *value; + TObject * typeobj = _types.objptr(name); + + if (typeobj != NULL && ((TString &) *typeobj) == "real") + { + real * value = (real *) obj; + + value->round(0); + var = *value; + } + else + var = (TString &) *obj; } + else + var = ZERO; + return var; } return TISAM_recordset::get(column_name); @@ -210,10 +233,23 @@ void TQuadro_IVA_recordset::add_value(const char *s, real value) { const TString8 key(s); _values.add(key, val = new real); + _types.add(key, TString("real")); } *val += value; } +void TQuadro_IVA_recordset::set_bool(const char *s, bool on) +{ + TString * val = (TString *)_values.objptr(s); + + if (val == NULL) + { + const TString8 key(s); + _values.add(key, val = new TString4); + } + *val = on ? "X" : ""; +} + TQuadro_IVA_report::TQuadro_IVA_report(const char * report_name) { load(report_name); @@ -234,25 +270,34 @@ void TQuadro_IVA_app::print() _mask->restart_ditte(); while ((ditta = _mask->get_ditta()) > 0) { - set_firm(ditta); - _name.ext("rep"); - if (_name.exist() || _name.custom_path()) - { - TQuadro_IVA_report rep(_name); - TRecordset * set = rep.recordset(); - - rep.set_recordset(app_recordset(set->query_text(), atoi(year))); - set = rep.recordset(); - TReport_section * sec = rep.find_section('B', 1); - TReport_field * fld = sec->find_field(100); - - if (fld != NULL) - fld->set(year); - set->set_var("#CODDITTA", ditta); - book.add(rep); - } - + TFilename name; + set_firm(ditta); + name = _name; + name.rtrim(1); + for (char c = 'a'; c <= last_quadro_report(); c++) + { + TFilename repname(name); + + repname << c; + repname.ext("rep"); + if (repname.exist() || repname.custom_path()) + { + TQuadro_IVA_report rep(repname); + TRecordset * set = rep.recordset(); + + rep.set_recordset(app_recordset(set->query_text(), atoi(year))); + set = rep.recordset(); + TReport_section * sec = rep.find_section('B', 1); + TReport_field * fld = sec->find_field(100); + + if (fld != NULL) + fld->set(year); + set->set_var("#CODDITTA", ditta); + set->set_var("#ANNO", year); + book.add(rep); + } + } _mask->restart_reports(); TProgram_report * rep = _mask->get_report(); TFilename repname = rep->filename(); @@ -288,3 +333,7 @@ void TQuadro_IVA_app::main_loop() set_firm(oldditta); } +TQuadro_IVA_app & app() +{ + return (TQuadro_IVA_app &) main_app(); +} \ No newline at end of file diff --git a/src/cg/cg7401.h b/src/cg/cg7401.h index 45447259b..e30715fd4 100644 --- a/src/cg/cg7401.h +++ b/src/cg/cg7401.h @@ -2,9 +2,13 @@ #include #include +#include +#include #include #include +#include + class TQuadro_IVA_mask : public TAutomask { int _year; @@ -23,6 +27,7 @@ public: long get_ditta(); TProgram_report * get_report(); TProgram_report & get_report(const int code) const { return (TProgram_report &) _reports[code];} + TISAM_recordset * get_recset(const int code) const { return (TISAM_recordset *)((TProgram_report &) _reports[code - 1]).recordset();} virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly); TQuadro_IVA_mask(const char * mask_name); @@ -32,15 +37,25 @@ public: class TQuadro_IVA_recordset : public TISAM_recordset { TAssoc_array _values; + TAssoc_array _types; + TQuadro_IVA_mask * _mask; + int _year; protected: void add_value(const char *s, real value); -// void add_value(const TString &s, real value); - virtual void load(const long year) pure; + void set_bool(const char *s, bool on = false); + virtual void load() pure; virtual const TVariant& get(const char* column_name) const; + void clear() { _values.destroy(); _types.destroy(); } + const real evaluate_recordset(const int code, const int year, const char * field, const char * expr = NULL); + const real evaluate_recordset_imponibile(const int code, const int year, const char * expr = NULL) { return evaluate_recordset(code, year, RMI_IMPONIBILE, expr); } + const real evaluate_recordset_imposta(const int code, const int year, const char * expr = NULL) { return evaluate_recordset(code, year, RMI_IMPOSTA, expr); } public: - TQuadro_IVA_recordset(const char* use, const int year) : TISAM_recordset(use) { } + TQuadro_IVA_recordset(TQuadro_IVA_mask * mask, const char* use, const int year) : TISAM_recordset(use), _mask(mask), _year(year) { } + TQuadro_IVA_recordset(const TQuadro_IVA_recordset * recset); + TQuadro_IVA_recordset(const TQuadro_IVA_recordset & recset); + int year() { return _year; } virtual ~TQuadro_IVA_recordset() {} }; @@ -62,9 +77,11 @@ protected: virtual bool create(); virtual void print(); virtual void main_loop(); + virtual char last_quadro_report() const { return 'a';} public: virtual TQuadro_IVA_recordset * app_recordset(const char* use, const int year) pure; + virtual void load_sheet(TSheet_field & sf) {} virtual bool firm_change_enabled() const { return false; } TQuadro_IVA_mask * mask() const { return _mask; } @@ -73,3 +90,4 @@ public: virtual ~TQuadro_IVA_app() {} }; +TQuadro_IVA_app & app(); \ No newline at end of file diff --git a/src/cg/cg7500a.pdf b/src/cg/cg7500a.pdf new file mode 100644 index 000000000..7ea5457b6 Binary files /dev/null and b/src/cg/cg7500a.pdf differ diff --git a/src/cg/cg7600.cpp b/src/cg/cg7600.cpp index 5036c7cce..f714187ce 100644 --- a/src/cg/cg7600.cpp +++ b/src/cg/cg7600.cpp @@ -1,292 +1,348 @@ -// Programma per la stampa del quadro VE -#include -#include -#include - -#include "cg7401.h" -#include "cgpim.h" - -#include "cg7400a.h" -#include "rmoviva.h" - -#define REP_EXPORT 1 -#define REP_INTRA 2 -#define REP_SANMARINO 3 -#define REP_OPASSIMIL 4 -#define REP_DICHINT 5 -#define REP_ALTREOP 6 -#define REP_ART10 7 -#define REP_ART7 8 -#define REP_REVCHARGE 9 -#define REP_TERREM 10 -#define REP_PAART17 11 - -enum tipo_sospensione { nessuna, normale, vol_affari, liquidazione }; - -class TQuadro_VE_recordset : public TQuadro_IVA_recordset -{ - TQuadro_IVA_mask * _mask; - -protected: - const real TQuadro_VE_recordset::evaluate_recordset(const int code, const int year); - virtual void load(const long year); - -public: - TQuadro_VE_recordset(TQuadro_IVA_mask * mask, const char* use, const int year) : TQuadro_IVA_recordset(use, year), _mask(mask) {load(year);} - virtual ~TQuadro_VE_recordset() {} -}; - -const real TQuadro_VE_recordset::evaluate_recordset(const int code, const int year) -{ - real val; - TProgram_report & rep = _mask->get_report(code - 1); - TISAM_recordset * set = (TISAM_recordset *) rep.recordset(); - - if (set != NULL) - { - set->set_var("#ANNO", format("%d", year)); - - if (set->items() > 0) - for (set->move_first(); !set->eof(); set->move_next()) - val += set->get(RMI_IMPONIBILE).as_real(); - set->freeze(); - } - return val; -} - - -void TQuadro_VE_recordset::load(const long year) -{ - TAssoc_array imponibile_agricolo; - TAssoc_array imposta_agricola; - TAssoc_array imponibile; - TAssoc_array imposta; - - imponibile_agricolo.add("2.00", TString8("VE01.1")); - 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("7.00", TString8("VE03.1")); - imposta_agricola.add("7.00", TString8("VE03.2")); - imponibile_agricolo.add("7.30", TString8("VE04.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("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("12.30", TString8("VE09.1")); - imposta_agricola.add("12.30", TString8("VE09.2")); - - imponibile.add("4.00", TString8("VE20.1")); - imposta.add("4.00", TString8("VE20.2")); - imponibile.add("10.00",TString8("VE21.1")); - imposta.add("10.00",TString8("VE21.2")); - imponibile.add("22.00", TString8("VE22.1")); - imposta.add("22.00", TString8("VE22.2")); - - TString80 query("USE PIM\nFROM CODTAB="); - - query << year << "\nTO CODTAB=" << year; - - TISAM_recordset pim(query); - bool good = false; - - for (pim.move_first(); !pim.eof(); pim.move_next()) - { - const TString80 codtab = pim.get("CODTAB").as_string(); - - const TString8 codreg(format("%d%-3s",year, (const char*)codtab.mid(10,3))); - const TRectype & reg = cache().get("REG", codreg); - const tiporec tipo = (tiporec) reg.get_int("I9"); - const bool vendite = reg.get_int("I0") == 1; - const int month = atoi(codtab.mid(13,2)); - - if (vendite && tipo != liquidazione && month == 13) - { - const TRectype& pimr = cache().get("PIM", codtab); - TString8 codiva(codtab.mid(16,4)); codiva.trim(); - const TRectype & ivar = cache().get("%IVA", codiva); - const TString8 aliquota = ivar.get("R0"); - - tiporec tipo; - real imp; - real iva; - - if (classify_pim(pimr, imp, iva, tipo, true)) - { - good = true; - switch (tipo) - { - case acq_norm: // acquisti normali - break; - case vend_norm: // vendite normali - case corr_norm: - if (aliquota.full()) - { - const bool agricolo = ivar.get_int("I4") != 0; - - if (agricolo) - { - const TString * field = (TString *) imponibile_agricolo.objptr(aliquota); - - if (field != NULL) add_value(*field, imp); - field = (TString *) imposta_agricola.objptr(aliquota); - if (field != NULL) add_value(*field, iva); - } - else - { - const TString * field = (TString *) imponibile.objptr(aliquota); - - if (field != NULL) add_value(*field, imp); - field = (TString *) imposta.objptr(aliquota); - if (field != NULL) add_value(*field, iva); - } - } - break; - case acq_simp: - break; - case vend_simp: // acq. e vend. sosp. imposta - break; - case bolle_doganali: // bolle doganali (acquisti) - break; - case acq_beni_riv : // acq. beni per rivendita - break; - 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. - break; - case acq_beni_ammort_nd: // beni ammort. non detraibili - break; - 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. - break; - case acq_ind_pass_int: // passaggi interni - if (vendite) - add_value("VE40.1", iva); - break; - case acq_ind_art_19: // indetr. art. 19 - break; - case cess_amm: // cessioni amministrative - add_value("VE40.1", iva); - break; - case vend_rimborso: // vendite valide per rimborso - break; - case acq_rimborso: // acq. validi per rimborso - break; - case acq_bd_ind_art_19: // acq. con tipo documento BD e tipo detr 9 - break; - default: - break; - - }; - } - else - { - const real imp = pimr.get_real("R0"); - const real iva = pimr.get_real("R1"); - const TString4 tipo_aliquota = ivar.get("S1"); - const TString4 tipo_iva11_ven = ivar.get("S2"); - const int int_tipo_iva11_ven = atoi(tipo_iva11_ven); - const bool non_imponibile = (tipo_aliquota == "NI"); - const bool esente = (tipo_aliquota == "ES"); - const bool reverse = int_tipo_iva11_ven >= 31 && int_tipo_iva11_ven <= 38; - const bool terremotati = int_tipo_iva11_ven == 25; - - if (non_imponibile) - { - if (int_tipo_iva11_ven == 21) - add_value("VE31.1", imp); - else - if (int_tipo_iva11_ven == 22) - add_value("VE32.1", imp); - } - if (esente) - { - if ((tipo_iva11_ven == "B1") || - (tipo_iva11_ven == "B2") || - (tipo_iva11_ven == "B3") || - (tipo_iva11_ven == "B4") || - (tipo_iva11_ven == "B5")) - add_value("VE33.1", imp); - else - if ((tipo_iva11_ven == "B6")) - add_value("VE34.1", imp); - } - - if (reverse) - { - const int tipo_reverse = int_tipo_iva11_ven; - - switch (tipo_reverse) - { - case 31 : add_value("VE35.2", imp); break; - case 32 : add_value("VE35.3", imp); break; - case 33 : add_value("VE35.4", imp); break; - case 34 : add_value("VE35.5", imp); break; - case 35 : add_value("VE35.6", imp); break; - case 36 : add_value("VE35.7", imp); break; - case 37 : add_value("VE35.8", imp); break; - case 38 : add_value("VE35.9", imp); break; - default : break; - } - } - if (terremotati) - add_value("VE36.1", imp); - } - } - } - - query = "USE LIM\n FROM CODTAB=="; - - query << year << "13\nTO CODTAB==" << year << "13"; - - TISAM_recordset lim(query); - good |= lim.items() > 0; - - for (lim.move_first(); !lim.eof(); lim.move_next()) - add_value("VE24.2", lim.get("R17").as_real()); - - real val = evaluate_recordset(REP_EXPORT, year); - - add_value("VE30.2", val); - val = evaluate_recordset(REP_INTRA, year); - add_value("VE30.3", val); - val = evaluate_recordset(REP_SANMARINO, year); - add_value("VE30.4", val); - val = evaluate_recordset(REP_OPASSIMIL, year); - add_value("VE30.5", val); - -// VE37.1 2 iva sospensione - - val = evaluate_recordset(REP_PAART17, year); // liquidazione - add_value("VE38.1", val); - -// VE39.1 iva sospensione incassata -// if (!good) -// warning_box(FR("Risultati liquidazione non presenti o da ricalcolare per l'anno %d."), year); -} - -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); } - TQuadro_VE_app() : TQuadro_IVA_app("Stampa Quadro VE", "cg7600a") {} - virtual ~TQuadro_VE_app() {} - -}; - -int cg7600(int argc, char* argv[]) -{ - TQuadro_VE_app a; - a.run(argc, argv, TR("Quadro VE")); - return 0; +// Programma per la stampa del quadro VE +#include +#include +#include + +#include "cg7401.h" +#include "cgpim.h" +#include "cg7400a.h" + +#include "ivadiff.h" + +#define REP_EXPORT 1 +#define REP_INTRA 2 +#define REP_SANMARINO 3 +#define REP_OPASSIMIL 4 +#define REP_DICHINT 5 +#define REP_ALTREOP 6 +#define REP_ART10 7 +#define REP_ART7 8 +#define REP_REVCHARGE 9 +#define REP_TERREM 10 +#define REP_PAART17 11 + +enum tipo_sospensione { nessuna, normale, vol_affari, liquidazione }; + +class TQuadro_VE_recordset : public TQuadro_IVA_recordset +{ +protected: + virtual void load(); + +public: + TQuadro_VE_recordset(TQuadro_IVA_mask * mask, const char* use, const int year) : TQuadro_IVA_recordset(mask, use, year) { load(); } + virtual ~TQuadro_VE_recordset() {} +}; + +void TQuadro_VE_recordset::load() +{ + clear(); + + TAssoc_array imponibile_agricolo; + TAssoc_array imposta_agricola; + TAssoc_array imponibile; + TAssoc_array imposta; + + imponibile_agricolo.add("2.00", TString8("VE01.1")); + 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("7.30", TString8("V03.1")); + imposta_agricola.add("7.30", TString8("VE03.2")); + imponibile_agricolo.add("7.50", TString8("VE04.1")); + imposta_agricola.add("7.50", TString8("VE04.2")); + imponibile_agricolo.add("7.65", TString8("VE05.1")); + imposta_agricola.add("7.65", TString8("VE05.2")); + imponibile_agricolo.add("7.95", TString8("VE06.1")); + imposta_agricola.add("7.65", TString8("VE06.2")); + imponibile_agricolo.add("8.30", TString8("VE07.1")); + imposta_agricola.add("8.30", TString8("VE07.2")); + imponibile_agricolo.add("8,50", TString8("VE08.1")); + imposta_agricola.add("8,50", TString8("VE08.2")); + imponibile_agricolo.add("8.80", TString8("VE09.1")); + imposta_agricola.add("8.80", 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")); + 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")); + imponibile.add("22.00", TString8("VE23.1")); + imposta.add("22.00", TString8("VE23.2")); + + TString256 query("USE PIM\nFROM CODTAB="); + + query << year() << "\nTO CODTAB=" << year(); + + TISAM_recordset pim(query); + bool good = false; + + for (pim.move_first(); !pim.eof(); pim.move_next()) + { + const TString80 codtab = pim.get("CODTAB").as_string(); + + const TString8 codreg(format("%d%-3s",year(), (const char*)codtab.mid(10,3))); + const TRectype & reg = cache().get("REG", codreg); + const tiporec tipo = (tiporec) reg.get_int("I9"); + const bool vendite = reg.get_int("I0") == 1; + const int month = atoi(codtab.mid(13,2)); + + if (vendite && tipo != liquidazione && month == 13) + { + const TRectype & pimr = pim.cursor()->curr(); + TString8 codiva(codtab.mid(16,4)); codiva.trim(); + const TRectype & ivar = cache().get("%IVA", codiva); + const TString8 aliquota = ivar.get("R0"); + + tiporec tipo; + real imp; + real iva; + + if (classify_pim(pimr, imp, iva, tipo, true)) + { + good = true; + switch (tipo) + { + case acq_norm: // acquisti normali + break; + case vend_norm: // vendite normali + case corr_norm: + if (aliquota.full()) + { + const bool agricolo = ivar.get_int("I4") != 0; + + if (agricolo) + { + const TString * field = (TString *) imponibile_agricolo.objptr(aliquota); + + if (field != NULL) add_value(*field, imp); + field = (TString *) imposta_agricola.objptr(aliquota); + if (field != NULL) add_value(*field, iva); + } + else + { + const TString * field = (TString *) imponibile.objptr(aliquota); + + if (field != NULL) add_value(*field, imp); + field = (TString *) imposta.objptr(aliquota); + if (field != NULL) add_value(*field, iva); + } + } + break; + case acq_simp: + break; + case vend_simp: // acq. e vend. sosp. imposta + break; + case bolle_doganali: // bolle doganali (acquisti) + break; + case acq_beni_riv : // acq. beni per rivendita + break; + 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. + break; + case acq_beni_ammort_nd: // beni ammort. non detraibili + break; + 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. + break; + case acq_ind_pass_int: // passaggi interni + if (vendite) + add_value("VE40.1", iva); + break; + case acq_ind_art_19: // indetr. art. 19 + break; + case cess_amm: // cessioni amministrative + add_value("VE40.1", iva); + break; + case vend_rimborso: // vendite valide per rimborso + break; + case acq_rimborso: // acq. validi per rimborso + break; + case acq_bd_ind_art_19: // acq. con tipo documento BD e tipo detr 9 + break; + default: + break; + + }; + } + else + { + const real imp = pimr.get_real("R0"); + const real iva = pimr.get_real("R1"); + const TString4 tipo_aliquota = ivar.get("S1"); + const TString4 tipo_iva11_ven = ivar.get("S2"); + const int int_tipo_iva11_ven = atoi(tipo_iva11_ven); + const bool non_imponibile = (tipo_aliquota == "NI"); + const bool esente = (tipo_aliquota == "ES"); + const bool reverse = int_tipo_iva11_ven >= 31 && int_tipo_iva11_ven <= 38; + const bool terremotati = int_tipo_iva11_ven == 25; + + if (non_imponibile) + { + if (int_tipo_iva11_ven == 21) + add_value("VE31.1", imp); + else + if (int_tipo_iva11_ven == 22) + add_value("VE32.1", imp); + } + if (esente) + { + if ((tipo_iva11_ven == "B1") || + (tipo_iva11_ven == "B2") || + (tipo_iva11_ven == "B3") || + (tipo_iva11_ven == "B4") || + (tipo_iva11_ven == "B5")) + add_value("VE33.1", imp); + else + if ((tipo_iva11_ven == "B6")) + add_value("VE34.1", imp); + } + + if (reverse) + { + const int tipo_reverse = int_tipo_iva11_ven; + + switch (tipo_reverse) + { + case 31 : add_value("VE35.2", imp); break; + case 32 : add_value("VE35.3", imp); break; + case 33 : add_value("VE35.4", imp); break; + case 34 : add_value("VE35.5", imp); break; + case 35 : add_value("VE35.6", imp); break; + case 36 : add_value("VE35.7", imp); break; + case 37 : add_value("VE35.8", imp); break; + case 38 : add_value("VE35.9", imp); break; + default : break; + } + } + if (terremotati) + add_value("VE36.1", imp); + } + } + } + + query = "USE LIM\n FROM CODTAB=="; + + query << year() << "13\nTO CODTAB==" << year() << "13"; + + TISAM_recordset lim(query); + good |= lim.items() > 0; + + for (lim.move_first(); !lim.eof(); lim.move_next()) + { + const real var_cred = lim.get("R17").as_real(); + + if (var_cred > ZERO) + add_value("VF25.2", var_cred); + } + + real val = evaluate_recordset_imponibile(REP_EXPORT, year()); + + add_value("VE30.2", val); + val = evaluate_recordset_imponibile(REP_INTRA, year()); + add_value("VE30.3", val); + val = evaluate_recordset_imponibile(REP_SANMARINO, year()); + add_value("VE30.4", val); + val = evaluate_recordset_imponibile(REP_OPASSIMIL, year()); + add_value("VE30.5", val); + val = evaluate_recordset_imponibile(REP_PAART17, year()); // liquidazione + add_value("VE38.1", val); + + query.zap() << "USE IVADIFF KEY 2 SELECT (BETWEEN(DATAREG,#DAL,#AL))&&(BETWEEN(DATAREGP,0,#AL))" + << "\nFROM ANNOLIQ=" << year(); + + TISAM_recordset id(query); + long cur_numreg = 0; + int cur_tipoiva = 0; + int cur_tipodiff = 0; + + id.set_var("#DAL", TDate(1, 1, year())); + id.set_var("#AL", TDate(31, 12, year())); + + + for (bool ok = id.move_first(); ok; ok = id.move_next()) + { + const long numreg = id.get(RMI_NUMREG).as_int(); + if (numreg != cur_numreg) + { + cur_numreg = numreg; + cur_tipoiva = id.get(ID_TIPOIVA).as_int(); + cur_tipodiff = id.get(ID_TIPODIFF).as_int(); + } + + const char sezione = id.get(ID_SEZIONE).as_string()[0]; + const int tipomov = id.get(ID_TIPOMOV).as_int(); + const real imp = id.get(RMI_IMPONIBILE).as_real(); + + if (!imp.is_zero() && cur_tipoiva == 1) // Vendite + { + switch (tipomov) + { + case 1: + add_value("VE37.1", (sezione == 'D') ? imp : -imp); // VE37.1 iva sospensione da incassare + if (cur_tipodiff == 2) + add_value("VE37.2", (sezione == 'D') ? imp : -imp); // VE37.2 iva per cassa da incassare + break; + case 2: + add_value("VE37.1", (sezione == 'A') ? -imp : imp); // VE37.1 2 iva sospensione da incassare + if (cur_tipodiff == 2) + add_value("VE37.2", (sezione == 'A') ? -imp : imp); // VE37.2 iva per cassa da incassare + break; + case 3: + add_value("VE37.1", (sezione == 'A') ? -imp : imp); // VE37.1 2 iva sospensione da incassare + add_value("VE39.1", (sezione == 'A') ? imp : -imp); // VE39.1 iva sospensione incassata + if (cur_tipodiff == 2) + add_value("VE37.2", (sezione == 'A') ? -imp : imp); // VE37.2 iva per cassa da incassare + break; + default: + break; + } + } + } + +} + + +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 void load_sheet(TSheet_field & sf); + + TQuadro_VE_app() : TQuadro_IVA_app("Stampa Quadro VE", "cg7600a") {} + virtual ~TQuadro_VE_app() {} + +}; + +void TQuadro_VE_app::load_sheet(TSheet_field & sf) +{ + TToken_string & row1 = sf.row(sf.items()); row1.add("|1|Stampa esportazioni|cg7600b"); + TToken_string & row2 = sf.row(sf.items()); row2.add("|2|Stampa cessioni intracomunitarie|cg7600c"); + TToken_string & row3 = sf.row(sf.items()); row3.add("|3|Stampa cessioni verso San Marino|cg7600d"); + TToken_string & row4 = sf.row(sf.items()); row4.add("|4|Stampa operazioni assimilate|cg7600e"); + TToken_string & row5 = sf.row(sf.items()); row5.add("|5|Stampa operazioni non imp. in seguito a dich. d'intenti|cg7600f"); + TToken_string & row6 = sf.row(sf.items()); row6.add("|6|Stampa altre operazioni non imponibili|cg7600g"); + TToken_string & row7 = sf.row(sf.items()); row7.add("|7|Stampa esenti art. 10|cg7600h"); + TToken_string & row8 = sf.row(sf.items()); row8.add("|8|Stampa operazioni non sogg. ai sensi art.7 da uno a septies|cg7600i"); + TToken_string & row9 = sf.row(sf.items()); row9.add("|9|Stampa operazioni reverse charge|cg7600l"); + TToken_string & row10 = sf.row(sf.items()); row10.add("|10|Stampa operazioni terremotati|cg7600m"); + TToken_string & row11 = sf.row(sf.items()); row11.add("|11|Stampa operazioni effettuate con PA ai sensi art.17|cg7600n"); +} + +int cg7600(int argc, char* argv[]) +{ + TQuadro_VE_app a; + a.run(argc, argv, TR("Quadro VE")); + return 0; } \ No newline at end of file diff --git a/src/cg/cg7600a.pdf b/src/cg/cg7600a.pdf index 2cb830e4d..f79559242 100644 Binary files a/src/cg/cg7600a.pdf and b/src/cg/cg7600a.pdf differ diff --git a/src/cg/cg7600a.png b/src/cg/cg7600a.png index 1c1a276c6..0a02c97cd 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 1e581a538..494672303 100644 --- a/src/cg/cg7600a.rep +++ b/src/cg/cg7600a.rep @@ -20,182 +20,189 @@ - + VE01.1 - MESSAGE ADD,#B1.2301 VE01.2 - + VE02.1 - MESSAGE ADD,#B1.2301 - VE01.2 + VE2.2 - - VE01.3 - MESSAGE ADD,#B1.2301 + + VE03.1 VE03.2 - + VE04.1 - MESSAGE ADD,#B1.2301 VE04.2 - + VE05.1 - MESSAGE ADD,#B1.2301 VE05.2 - + VE06.1 - MESSAGE ADD,#B1.2301 VE06.2 - + VE07.1 - MESSAGE ADD,#B1.2301 VE07.2 - + VE08.1 - MESSAGE ADD,#B1.2301 VE08.2 - + VE09.1 - MESSAGE ADD,#B1.2301 VE09.2 - - VE20.1 - MESSAGE ADD,#B1.2301 + + VE10.1 - + + VE10.2 + + + VE11.1 + + + VE11.2 + + + VE20.1 + + VE20.2 - - VE21.1 - MESSAGE ADD,#B1.2301 - - + VE21.1 - + + VE21.2 + + VE22.1 - MESSAGE ADD,#B1.2301 - + VE22.2 + MESSAGE ADD,#B1.2402 - - #101+#201+#301+#401+#501+#601+#701+#801+#901+#2001+#2101+#2201 + + VE23.1 - - #102+#202+#302+#402+#502+#602+#702+#802+#902+#2002+#2102+#2202+#2302 + + VE23.2 - - VE24.2 + + #101+#201+#301+#401+#501+#601+#701+#801+#901+#1001+#1101+#2001+#2101+#2201+#2301 - - #2302+#2402 + + #102+#202+#302+#402+#502+#602+#702+#802+#902+#1002+#1102+#2002+#2102+#2202+#2302 - + + VE25.2 + + + #2402+#2502 + + VE30.2 - + VE30.3 - + VE30.4 - + VE30.5 - + #3002+#3003+#3004+#3005 MESSAGE ADD,#B1.2301 - + VE31.1 - + VE32.1 - + VE33.1 - + VE34.1 MESSAGE ADD,#B1.2301 - + VE35.2 - + VE35.3 - + V35.4 - + VE35.5 - + V35.6 - + VE35.7 - + V35.8 - + VE35.9 - + #3502+#3503+#3504+#3505+#3506+#3507+#3508+#3509 MESSAGE ADD,#B1.2301 - + VE36.1 - + VE37.1 - + VE37.1 - + VE38.1 MESSAGE ADD,#B1.5001 - + VE39.1 MESSAGE SUB,#B1.5001 - + VE40.1 MESSAGE SUB,#B1.5001 - - #2301+#3010+#3101+#3201+#3301+#3401+#3510+#3601+#3701+#3801-#3901-#4001 + + #2401+#3010+#3101+#3201+#3301+#3401+#3510+#3601+#3701+#3801-#3901-#4001 MESSAGE ADD,#B1.2301 diff --git a/src/cg/cg7700.cpp b/src/cg/cg7700.cpp new file mode 100644 index 000000000..686b8d053 --- /dev/null +++ b/src/cg/cg7700.cpp @@ -0,0 +1,476 @@ +// Programma per la stampa del quadro VF +#include +#include +#include + +#include "cg7401.h" +#include "cgpim.h" + +#include "cg7400a.h" +#include +#include "ivadiff.h" + +#define REP_V12_V16 1 +#define REP_IMPORTAZIONI 2 +#define REP_INTRA 3 +#define REP_SANMARINO 4 +#define REP_RIPACQ 5 + +enum tipo_sospensione { nessuna, normale, vol_affari, liquidazione }; + +class TQuadro_VF_recordset : public TQuadro_IVA_recordset +{ + TQuadro_IVA_mask * _mask; + +protected: + virtual void load(); + +public: + TQuadro_VF_recordset(TQuadro_IVA_mask * mask, const char* use, const int year) : TQuadro_IVA_recordset(mask, use, year) { load(); } + virtual ~TQuadro_VF_recordset() {} +}; + +void TQuadro_VF_recordset::load() +{ + clear(); + + TAssoc_array imponibile; + TAssoc_array imposta; + TAssoc_array imponibile_agricolo; + TAssoc_array imposta_agricola; + + imponibile.add("2.00", TString8("VF01.1")); + imposta.add("2.00", TString8("VF01.2")); + imponibile.add("4.00", TString8("VF02.2")); + imposta.add("4.00", TString8("VF02.2")); + imponibile.add("5.00", TString8("VF03.1")); + imposta.add("5.00", TString8("VF03.2")); + imponibile.add("7.00", TString8("VF03.1")); + imposta.add("7.00", TString8("VF03.2")); + imponibile.add("7.30", TString8("VF04.1")); + imposta.add("7.30", TString8("VF04.2")); + imponibile.add("7.50", TString8("VF05.1")); + imposta.add("7.50", TString8("VF05.2")); + imponibile.add("7.65", TString8("VF06.1")); + imposta.add("7.65", TString8("VF06.2")); + imponibile.add("7.95", TString8("VF07.1")); + imposta.add("7.95", TString8("VF07.2")); + imponibile.add("8.30", TString8("VF08.1")); + imposta.add("8.30", TString8("VF08.2")); + imponibile.add("8,50", TString8("VF09.1")); + imposta.add("8,50", TString8("VF09.2")); + imponibile.add("8.80", TString8("VF09.1")); + imposta.add("8.80", TString8("VF09.2")); + imponibile.add("10.00",TString8("VF10.1")); + imposta.add("10.00",TString8("VF10.2")); + imponibile.add("12.30", TString8("VF12.1")); + imposta.add("12.30", TString8("VF12.2")); + imponibile.add("22.00", TString8("VF13.1")); + imposta.add("22.00", TString8("VF13.2")); + // VF30.1-8 METODO UTILIZZATO PER LA DETERMINAZIONE DELL’IVA AMMESSA IN DETRAZIONE + TString query; query << "USE ATTIV\nFROM CODDITTA=#F\nTO CODDITTA=#F"; + + TISAM_recordset at(query); + bool agenziaviaggio = false; + bool minori = false; + bool agricolo_misto = false; + bool agricolo = false; + bool prorata = false; + bool prorataprev = false; + bool prorata100 = false; + + at.set_var("#F", prefix().get_codditta()); + + for (bool ok = at.move_first(); ok; ok = at.move_next()) + { + agenziaviaggio |= at.get(ATT_REG74TER).as_bool(); + minori |= at.get(ATT_ART74_4).as_bool(); + if (!agricolo_misto) + { + if (!agricolo) + agricolo |= at.get(ATT_REGAGR).as_bool(); + else + if (at.get(ATT_REGAGR).as_bool()) + { + agricolo = false; + agricolo_misto = true; + } + } + + const TString16 codatt = at.get(ATT_CODATT).as_string(); + const int tipoatt = at.get(ATT_TIPOATT).as_int(); + + for (int t = 1; t < 3; t++) + { + const TString16 key = format("%4d%5s%1d13", year(), (const char *)codatt, t); + const TRectype & plm = cache().get("PLM", key); + + if (plm.full()) + { + prorataprev |= plm.get_real("R2") > CINQUANTA; + prorata |= plm.get_real("R2") > ZERO; + prorata100 &= plm.get_real("R2") >= CENTO; + } + } + } + + set_bool("VF30.1", agenziaviaggio); + set_bool("VF30.2"); + set_bool("VF30.3", prorataprev); + set_bool("VF30.4"); + set_bool("VF30.5"); + set_bool("VF30.6", minori); + set_bool("VF30.7", agricolo_misto); + set_bool("VF30.8", agricolo); + + imponibile_agricolo.add("2.00", TString8("V39.1")); + imposta_agricola.add("2.00", TString8("VF39.2")); + imponibile_agricolo.add("4.00", TString8("VF40.2")); + imposta_agricola.add("4.00", TString8("VF40.2")); + imponibile_agricolo.add("7.30", TString8("VF41.1")); + imposta_agricola.add("7.30", TString8("VF41.2")); + imponibile_agricolo.add("7.50", TString8("VF42.1")); + imposta_agricola.add("7.50", TString8("VF42.2")); + imponibile_agricolo.add("7.65", TString8("VF43.1")); + imposta_agricola.add("7.65", TString8("VF43.2")); + imponibile_agricolo.add("7.95", TString8("VF44.1")); + imposta_agricola.add("7.95", TString8("VF44.2")); + imponibile_agricolo.add("8.30", TString8("VF45.1")); + imposta_agricola.add("8.30", TString8("VF45.2")); + imponibile_agricolo.add("8,50", TString8("VF46.1")); + imposta_agricola.add("8,50", TString8("VF46.2")); + imponibile_agricolo.add("8.80", TString8("VF47.1")); + imposta_agricola.add("8.80", TString8("VF47.2")); + imponibile_agricolo.add("10.00",TString8("VF48.1")); + imposta_agricola.add("10.00",TString8("VF48.2")); + imponibile_agricolo.add("12.30", TString8("VF49.1")); + imposta_agricola.add("12.30", TString8("VF49.2")); + + query = "USE PIM\nFROM CODTAB="; + query << year() << "\nTO CODTAB=" << year(); + + TISAM_recordset pim(query); + bool good = false; + + for (pim.move_first(); !pim.eof(); pim.move_next()) + { + + const TString80 codtab = pim.get("CODTAB").as_string(); + + const TString8 codreg(format("%d%-3s",year(), (const char*)codtab.mid(10,3))); + const TRectype & reg = cache().get("REG", codreg); + const tiporec tipo = (tiporec) reg.get_int("I9"); + const bool acquisti = reg.get_int("I0") == 2; + const int month = atoi(codtab.mid(13,2)); + + if (acquisti && tipo != liquidazione && month == 13) + { + const TRectype & pimr = pim.cursor()->curr(); + TString8 codiva(codtab.mid(16,4)); codiva.trim(); + const TRectype & ivar = cache().get("%IVA", codiva); + const TString8 aliquota = ivar.get("R0"); + const int tipocr = atoi(codtab.mid(15,1)); // tipo costo_ricavo + tiporec tipo; + real imp; + real iva; + + if (classify_pim(pimr, imp, iva, tipo, true)) + { + good = true; + switch (tipo) + { + case acq_norm: // acquisti normali + if (prorata100) + { + if (aliquota.full()) + add_value("VF20.1", imp); + } + else + { + if (aliquota.full()) + { + const bool agricolo = ivar.get_int("I4") != 0; + + if (agricolo) + { + const TString * field = (TString *) imponibile_agricolo.objptr(aliquota); + + if (field != NULL) add_value(*field, imp); // VF39.1 VF48.1 Imprese agricole impobnibil e imposte + field = (TString *) imposta_agricola.objptr(aliquota); + if (field != NULL) add_value(*field, iva); // VF39.2 VF48.2 Imprese agricole impobnibil e imposte + + } + else + { + add_value("VF38.1", imp); // VF38.1 2 Riservato alle imprese agricole miste - Totale operazioni imponibili diverse + add_value("VF38.2", iva); + } + const TString * field = (TString *) imponibile.objptr(aliquota); + + if (field != NULL) add_value(*field, imp); + field = (TString *) imposta.objptr(aliquota); + if (field != NULL) add_value(*field, iva); + if (prorataprev) + { + add_value("VF31.1", imp); // VF31.1 Acquisti destinati alle operazioni imponibili occasionali + add_value("VF31.2", iva); // VF31.1 Acquisti destinati alle operazioni imponibili occasionali + } + } + } + break; + case vend_norm: // Vendite normali + case corr_norm: + break; + case acq_simp: + break; + case vend_simp: // acq. e vend. sosp. imposta + break; + case bolle_doganali: // bolle doganali (acquisti) + break; + case acq_beni_riv : // acq. beni per riVFndita + break; + 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. + break; + case acq_beni_ammort_nd: // beni ammort. non detraibili + break; + 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. + break; + case acq_ind_pass_int: // passaggi interni + break; + case acq_ind_art_19: // indetr. art. 19 + add_value("VF19.1", imp); + break; + case cess_amm: // cessioni amministrative + case vend_rimborso: // vendite valide per rimborso + break; + case acq_rimborso: // acq. validi per rimborso + break; + case acq_bd_ind_art_19: // acq. con tipo documento BD e tipo detr 9 + add_value("VF20.1", imp); // *** verificare !!!!! + break; + default: + break; + + }; + } + else + { + const TString4 tipo_aliquota = ivar.get("S1"); + const TString4 tipo_iva11_acq = ivar.get("S9"); + const int int_tipo_iva11_acq = atoi(tipo_iva11_acq); + const bool non_imponibile = (tipo_aliquota == "NI"); + const bool esente = (tipo_aliquota == "ES"); + const bool non_soggetto = (tipo_aliquota == "NS"); + const bool terremotati = int_tipo_iva11_acq == 16; + + if (non_imponibile) + { + if (int_tipo_iva11_acq == 12) + { + add_value("VF14.1", imp); + add_value("VF35.2", iva); // VF35.1 IVA non assolta sugli acquisti e importazioni indicati al rigo VF14 + } + else + if (int_tipo_iva11_acq == 13) + add_value("VF15.1", imp); + } + if (esente) + if (int_tipo_iva11_acq == 14) + add_value("VF16.1", imp); + if (non_soggetto) + { + if (tipo_iva11_acq == "15A" || int_tipo_iva11_acq == 15) + { + if (tipo_iva11_acq == "15A") + add_value("VF17.2", imp); + add_value("VF17.1", imp); + } + } + if (terremotati) + add_value("VF18.1", imp); + + } + + switch (tipocr) + { + case 0: + add_value("VF27.4", imp); + break; + case 1: + add_value("VF27.3", imp); + break; + case 2: + add_value("VF27.1", imp); + break; + case 3: + add_value("VF27.4", imp); + break; + case 5: + add_value("VF27.4", imp); + break; + case 8: + add_value("VF27.2", imp); + break; + case 9: + add_value("VF27.4", imp); + break; + case 17: + add_value("VF27.4", imp); + break; + default: + break; + } + } + } + + real val; + real val1; + real val2; + + query.zap() << "USE IVADIFF KEY 2 SELECT (BETWEEN(DATAREG,#DAL,#AL))&&(BETWEEN(DATAREGP,0,#AL))" + << "\nFROM ANNOLIQ=" << year(); + + TISAM_recordset id(query); + long cur_numreg = 0; + int cur_tipoiva = 0; + int cur_tipodiff = 0; + + id.set_var("#DAL", TDate(1, 1, year())); + id.set_var("#AL", TDate(31, 12, year())); + + for (bool ok = id.move_first(); ok; ok = id.move_next()) + { + const long numreg = id.get(RMI_NUMREG).as_int(); + if (numreg != cur_numreg) + { + cur_numreg = numreg; + cur_tipoiva = id.get(ID_TIPOIVA).as_int(); + cur_tipodiff = id.get(ID_TIPODIFF).as_int(); + } + + const char sezione = id.get(ID_SEZIONE).as_string()[0]; + const int tipomov = id.get(ID_TIPOMOV).as_int(); + const real imp = id.get(RMI_IMPONIBILE).as_real(); + + if (!imp.is_zero() && cur_tipoiva == 2) // Acquisti + { + switch (tipomov) + { + case 1: + add_value("VF21.1", (sezione == 'A') ? imp : -imp); // VF21.1 iva sospensione da pagare + if (cur_tipodiff == 2) + add_value("VF21.2", (sezione == 'A') ? imp : -imp); // VF21.2 iva per cassa da pagare + break; + case 2: + add_value("VF21.1", (sezione == 'D') ? -imp : imp); // VF21.1 iva sospensione da pagare + if (cur_tipodiff == 2) + add_value("VF21.2", (sezione == 'D') ? -imp : imp); // VF21.2 iva per cassa da pagare + break; + case 3: + add_value("VF21.1", (sezione == 'D') ? -imp : imp); // VF21.1 iva sospensione da pagare + add_value("VF22.1", (sezione == 'D') ? imp : -imp); // VF22.1 iva sospensione pagata + if (cur_tipodiff == 2) + add_value("VF21.2", (sezione == 'D') ? imp : -imp); // VF21.2 iva per cassa da pagare + break; + default: + break; + } + } + } + // VF21.1 iva sospensione da pagare + add_value("VF21.1", val); + // VF22.1 iva per cassa da pagare + add_value("Vf21.2", val); + // VF22.1 iva sospensione pagata + add_value("VF22.1", val); + + // V24.2 Variazioni e arrotondamenti d’imposta (indicare con il segno +/–) + // V50.2 Variazioni e arrotondamenti d’imposta (indicare con il segno +/–) + // VF70.2 TOTALE rettifiche (indicare con il segno +/–) + + query = "USE LIM\n FROM CODTAB=="; + query << year() << "13\nTO CODTAB==" << year() << "13"; + + TISAM_recordset lim(query); + good |= lim.items() > 0; + + for (lim.move_first(); !lim.eof(); lim.move_next()) + { + const real var_cred = lim.get("R17").as_real(); + + if (var_cred < ZERO) // ??? + { + add_value("VF24.2", -var_cred); + add_value("VF50.2", -var_cred); + } + add_value("VF70.2", var_cred); + } + + val = evaluate_recordset_imponibile(REP_INTRA, year()); // ??? + add_value("VF26.1", val); + val = evaluate_recordset_imposta(REP_INTRA, year()); + add_value("VF26.2", val); + val = evaluate_recordset_imponibile(REP_IMPORTAZIONI, year()); + add_value("VF26.3", val); + val = evaluate_recordset_imposta(REP_IMPORTAZIONI, year()); + add_value("VF26.4", val); + val = evaluate_recordset_imponibile(REP_SANMARINO, year()); + add_value("VF26.5", val); + val = evaluate_recordset_imposta(REP_SANMARINO, year()); + add_value("VF24.6", val); + + // VF32.1 Se per l’anno 2016 sono state effettuate esclusivamente operazioni esenti barrare la casella + set_bool("VF32.1", prorata100); + // VF33.1 Se per l’anno 2016 ha avuto effetto l’opzione di cui all’art. 36-bis barrare la casella + set_bool("VF33.1"); + // VF34.1-9 Dati per il calcolo della percentuale di detrazione + + // VF36.1 IVA detraibile per gli acquisti relativi all’oro effettuati dai soggetti diversi dai produttori e trasformatori ai sensi dell’art. 19, comma 5 bis + // VF53.2 Importo detraibile per le cessioni, anche intracomunitarie, dei prodotti agricoli di cui all’art.34, primo comma, effettuate ai sensi degli articoli 8, primo comma, 38 quater e 72 ??? + // VF60.1 Se le operazioni esenti effettuate sono occasionali ovvero riguardano esclusivamente operazioni di cui ai nn. da 1 a 9 dell’art.10, non rientranti nell’attività propria dell’impresa o accessorie ad operazioni imponibili barrare la casella + set_bool("VF60.1", prorata && !prorataprev); + // VF60.2 Se le operazioni imponibili effettuate sono occasionali barrare la casella + set_bool("VF60.2", prorataprev); + // VF61.1 Se sono state effettuate cessioni occasionali di beni usati con l’applicazione del regime del margine (d.l. n. 41/1995) barrare la casella + set_bool("VF61.1"); + // VF62.1 2 Operazioni occasionali rientranti nel regime previsto dall’art. 34-bis per le attività agricole connesse +} + +class TQuadro_VF_app : public TQuadro_IVA_app +{ + +protected: + virtual char last_quadro_report() const { return 'b';} + +public: + virtual TQuadro_IVA_recordset * app_recordset(const char* use, const int year) { return new TQuadro_VF_recordset(mask(), use, year); } + virtual void load_sheet(TSheet_field & sf); + + TQuadro_VF_app() : TQuadro_IVA_app("Stampa Quadro VF", "cg7700a") {} + virtual ~TQuadro_VF_app() {} + +}; + +void TQuadro_VF_app::load_sheet(TSheet_field & sf) +{ + TToken_string & row1 = sf.row(sf.items()); row1.add("|1|Dichiarazione IVA Quadro VF - VF12 - VF16|cg7700c"); + TToken_string & row2 = sf.row(sf.items()); row2.add("|2|Stampa importazioni|cg7700d"); + TToken_string & row3 = sf.row(sf.items()); row3.add("|3|Stampa acquisti intracomunitari|cg7700e"); + TToken_string & row4 = sf.row(sf.items()); row4.add("|4|Stampa cessioni verso San Marino|cg7700f"); + TToken_string & row5 = sf.row(sf.items()); row5.add("|5|Ripartizione acquisti|cg7700g"); +} + +int cg7700(int argc, char* argv[]) +{ + TQuadro_VF_app a; + a.run(argc, argv, TR("Quadro VF")); + return 0; +} \ No newline at end of file diff --git a/src/cg/cg7700a.pdf b/src/cg/cg7700a.pdf index d3f45729b..4848189ad 100644 Binary files a/src/cg/cg7700a.pdf and b/src/cg/cg7700a.pdf differ diff --git a/src/cg/cg7700a.png b/src/cg/cg7700a.png index a320ecb6d..113f87679 100644 Binary files a/src/cg/cg7700a.png and b/src/cg/cg7700a.png differ diff --git a/src/cg/cg7700a.rep b/src/cg/cg7700a.rep new file mode 100644 index 000000000..c377b9364 --- /dev/null +++ b/src/cg/cg7700a.rep @@ -0,0 +1,183 @@ + + + Stampa quadro VF + +
+
+
+ + "cg7700a.png" + +
+
+ + + + + #SYSTEM.CFPI_SPACED + + + + + + + VF01.1 + + + VF01.2 + + + VF02.1 + + + VF01.2 + + + V03.1 + + + VF03.2 + + + VF04.1 + + + VF04.2 + + + VF05.1 + + + VF05.2 + + + VF06.1 + + + VF06.2 + + + VF07.1 + + + VF07.2 + + + VF08.1 + + + VF08.2 + + + VF09.1 + + + VF09.2 + + + VF10.1 + + + VF10.2 + + + VF11.1 + + + V11.2 + + + VF12.1 + + + VF12.2 + + + VF13.1 + + + VF13.2 + + + VF14.1 + + + VF15.1 + + + VF16.1 + + + VF17.1 + + + VF17.2 + + + VF18.1 + + + VF19.1 + + + VF20.1 + + + VF21.1 + + + VF21.2 + + + VF22.1 + + + #101+#201+#301+#401+#501+#601+#701+#801+#901+#1001+#1101+#1201+#1301+#1401+#1501+#1601+#1701+#1801+#1901+#2001+#2101+#2201 + + + #102+#202+#302+#402+#502+#602+#702+#802+#902+#1002+#1102+#1202+#1302 + + + VF24.2 + + + VF25 + + + VF26.1 + + + VF26.2 + + + VF26.3 + + + VF26.4 + + + VF26.5 + + + VF26.6 + + + VF27.1 + + + VF27.2 + + + VF27.3 + + + VF27.4 + +
+
+
+ USE NDITTE SELECT CODDITTA==#CODDITTA + + + + \ No newline at end of file diff --git a/src/cg/cg7700b.pdf b/src/cg/cg7700b.pdf new file mode 100644 index 000000000..c259aeed3 Binary files /dev/null and b/src/cg/cg7700b.pdf differ diff --git a/src/cg/cg7700b.png b/src/cg/cg7700b.png index d4a6c9594..a411b1aaa 100644 Binary files a/src/cg/cg7700b.png and b/src/cg/cg7700b.png differ diff --git a/src/cg/cg7700b.rep b/src/cg/cg7700b.rep new file mode 100644 index 000000000..55769f670 --- /dev/null +++ b/src/cg/cg7700b.rep @@ -0,0 +1,218 @@ + + + Stampa quadro VF + +
+
+
+ + "cg7700b.png" + +
+
+ + + + + #SYSTEM.CFPI_SPACED + + + + + + VF30.1 + + + VF30.2 + + + VF30.3 + + + VF30.4 + + + VF30.5 + + + VF30.6 + + + VF30.7 + + + VF30.8 + + + VF31.1 + + + VF31.2 + + + VF32.1 + + + VF33.1 + + + VF34.1 + + + VF34.2 + + + VF34.3 + + + V34.4 + + + VF34.5 + + + V34.6 + + + VF34.7 + + + V34.8 + + + VF35.2 + + + VF36.2 + + + VF37.2 + + + VF38.1 + + + VF38.2 + + + VF39.1 + + + VF39.2 + + + VF40.1 + + + VF40.2 + + + VF41.1 + + + VF41.2 + + + VF42.1 + + + VF42.2 + + + VF43.1 + + + VF43.2 + + + VF44.1 + + + VF44.2 + + + VF45.1 + + + VF45.2 + + + VF46.1 + + + VF46.2 + + + VF47.1 + + + VF47.2 + + + VF48.1 + + + VF48.2 + + + VF49.1 + + + VF49.2 + + + VF50.2 + + + #3901+#4001+#4101+#4201+#4301+#4401+#4501+#4601+#4701+#4801+#4901 + + + #3902+#4002+#4102+#4202+#4302+#4402+#4502+#4602+#4702+#4802+#4902 + + + #3802 + + + VF53.2 + + + #5101+#5201+#5301 + + + VF60.1 + + + VF60.2 + + + VF61.1 + + + VF62.1 + + + VF62.2 + + + VF70.2 + + + NUM((#3003!="X")(#3004!="X")(#3005!="X")(#3006!="X")(#3007!="X")(#3008!="X"))*VF25.2 + + + NUM(#3003=="X")*VE37.2 + + + NUM((#3004=="X")(#3006=="X")(#3007=="X"))*VE26.2*0.5+NUM(#3005=="X")*VE26.2F;3+NUM(#3008=="X")*VE54.2 + + + NUM(#6001!="X"#6002!="X")*(#6202*0.5+#7002+#7003+#7004+#7005) + +
+
+
+ USE NDITTE SELECT CODDITTA==#CODDITTA + + + + \ No newline at end of file diff --git a/src/cg/cg7800.cpp b/src/cg/cg7800.cpp new file mode 100644 index 000000000..e1613f311 --- /dev/null +++ b/src/cg/cg7800.cpp @@ -0,0 +1,148 @@ +// Programma per la stampa del quadro VE +#include +#include +#include + +#include "cg7401.h" +#include "cgpim.h" + +#include "cg7400a.h" +#include "rmoviva.h" + +#define REP_QUADRO 1 + +enum tipo_sospensione { nessuna, normale, vol_affari, liquidazione }; + +class TQuadro_VJ_recordset : public TQuadro_IVA_recordset +{ + TQuadro_IVA_mask * _mask; + +protected: + virtual void load(); + +public: + TQuadro_VJ_recordset(TQuadro_IVA_mask * mask, const char* use, const int year) : TQuadro_IVA_recordset(mask, use, year) { load(); } + virtual ~TQuadro_VJ_recordset() {} +}; + +void TQuadro_VJ_recordset::load() +{ + clear(); + + TISAM_recordset * recset = app().mask()->get_recset(REP_QUADRO); + + recset->set_var("#ANNO", format("%d", year())); + for (recset->move_first(); !recset->eof(); recset->move_next()) + { + const int regspiva = recset->get("26.REGSPIVA").as_int(); + const real imp = recset->get(RMI_IMPONIBILE).as_real(); + const real iva = recset->get(RMI_IMPOSTA).as_real(); + + switch (regspiva) + { + case 1: + add_value("VJ01.1", imp); // VJ1.1 Acquisti di beni provenienti dallo Stato Città del Vaticano e dalla Repubblica di San Marino – art. 71, comma 2 – (inclusi acquisti di oro industriale,argento puro e beni di cui all’art. 74, commi 7 e 8) + add_value("VJ01.2", iva); // VJ1.2 Acquisti di beni provenienti dallo Stato Città del Vaticano e dalla Repubblica di San Marino – art. 71, comma 2 – (inclusi acquisti di oro industriale,argento puro e beni di cui all’art. 74, commi 7 e 8) + break; + case 2: + add_value("VJ02.1", imp); // VJ2.1 Estrazione di beni da depositi IVA (art. 50-bis, comma 6, d.l. n. 331/1993) + add_value("VJ02.2", iva); // VJ2.2 Estrazione di beni da depositi IVA (art. 50-bis, comma 6, d.l. n. 331/1993) + break; + case 3: + add_value("VJ03.1", imp); // VJ3.1 Acquisti di beni e servizi da soggettIi non residenti ai sensi dell’art. 17, comma 2 + add_value("VJ03.2", iva); // VJ3.2 Acquisti di beni e servizi da soggettIi non residenti ai sensi dell’art. 17, comma 2 + break; + case 4: + add_value("VJ04.1", imp); // VJ4.1 Operazioni di cui all’art. 74, comma 1, lett. e) + add_value("VJ04.2", iva); // VJ4.2 Operazioni di cui all’art. 74, comma 1, lett. e) + break; + case 5: + add_value("VJ05.1", imp); // VJ5.1 Provvigioni corrisposte dalle agenzie di viaggio ai loro intermediari + add_value("VJ05.2", iva); // VJ5.1 Provvigioni corrisposte dalle agenzie di viaggio ai loro intermediari + break; + case 6: + add_value("VJ06.1", imp); // VJ6.1 Acquisti all’interno di beni di cui all’art. 74, commi 7 e 8 + add_value("VJ6.2", iva); // VJ6.2 Acquisti all’interno di beni di cui all’art. 74, commi 7 e 8 + case 7: + add_value("VJ07.1", imp); // VJ7.1 Acquisti all’interno di oro industriale e argento puro (art. 17, comma 5) + add_value("VJ07.2", iva); // VJ7.2 Acquisti all’interno di oro industriale e argento puro (art. 17, comma 5) + break; + case 8: + add_value("VJ08.1", imp); // VJ8.1 Acquisti di oro da investimento imponibile per opzione (art. 17, comma 5) + add_value("VJ08.2", iva); // VJ8.1 Acquisti di oro da investimento imponibile per opzione (art. 17, comma 5) + break; + case 9: + add_value("VJ09.1", imp); // VJ9.1 Acquisti intracomunitari di beni (inclusi acquisti di oro industriale, argento puro e beni di cui all’art. 74, commi 7 e 8) + add_value("VJ09.2", iva); // VJ9.2 Acquisti intracomunitari di beni (inclusi acquisti di oro industriale, argento puro e beni di cui all’art. 74, commi 7 e 8) + break; + case 10: + add_value("VJ10.1", imp); // VJ10.1 Importazioni di beni di cui all’art. 74, commi 7 e 8 senza pagamento dell’IVA in dogana (art. 70, comma 6) + add_value("VJ10.2", iva); // VJ10.2 Importazioni di beni di cui all’art. 74, commi 7 e 8 senza pagamento dell’IVA in dogana (art. 70, comma 6) + add_value("VJ09.1", imp); // VJ9.1 Acquisti intracomunitari di beni (inclusi acquisti di oro industriale, argento puro e beni di cui all’art. 74, commi 7 e 8) + add_value("VJ09.2", iva); // VJ9.2 Acquisti intracomunitari di beni (inclusi acquisti di oro industriale, argento puro e beni di cui all’art. 74, commi 7 e 8) + break; + case 12: + add_value("VJ12.1", imp); // VJ12.1 Acquisti di tartufi da rivenditori dilettanti ed occasionali non muniti di partita IVA (art. 1, comma 109, legge n. 311/2004) + add_value("VJ12.2", iva); // VJ12.2 Acquisti di tartufi da rivenditori dilettanti ed occasionali non muniti di partita IVA (art. 1, comma 109, legge n. 311/2004) + break; + case 13: + add_value("VJ13.1", imp); // VJ13.1 Acquisti di servizi resi da subappaltatori nel settore edile (art. 17, comma 6, lett. a) + add_value("VJ13.2", iva); // VJ13.2 Acquisti di servizi resi da subappaltatori nel settore edile (art. 17, comma 6, lett. a) + break; + case 14: + add_value("VJ14.1", imp); // VJ14.1 Acquisti di fabbricati (art. 17, comma 6, lett. a-bis) + add_value("VJ14.2", iva); // VJ14.2 Acquisti di fabbricati (art. 17, comma 6, lett. a-bis) + break; + case 15: + add_value("VJ15.1", imp); // VJ15.1 Acquisti di telefoni cellulari (art. 17, comma 6, lett. b) + add_value("VJ15.2", iva); // VJ15 2 Acquisti di telefoni cellulari (art. 17, comma 6, lett. b) + break; + case 16: + add_value("VJ16.1", imp); // VJ16.1 Acquisti di prodotti elettronici (art. 17, comma 6, lett. c) + add_value("VJ16.2", iva); // VJ16.2 Acquisti di prodotti elettronici (art. 17, comma 6, lett. c) + break; + case 17: + add_value("VJ17.1", imp); // VJ17.1 Acquisti di servizi del comparto edile e settori connessi (art. 17, comma 6, lett. a-ter) + add_value("VJ17.2", iva); // VJ17.2 Acquisti di servizi del comparto edile e settori connessi (art. 17, comma 6, lett. a-ter) + break; + case 18: + add_value("VJ18.1", imp); // VJ18.1 Acquisti di beni e servizi del settore energetico (art. 17, comma 6, lett. d-bis, d-ter e d-quater) + add_value("VJ18.2", iva); // VJ18.2 Acquisti di beni e servizi del settore energetico (art. 17, comma 6, lett. d-bis, d-ter e d-quater) + break; + case 19: + add_value("VJ11.1", imp); // VJ19.1 Acquisti delle pubbliche amministrazioni, titolari di partita IVA, ai sensi dell’art. 17-ter + add_value("VJ11.2", iva); // VJ19.2 Acquisti delle pubbliche amministrazioni, titolari di partita IVA, ai sensi dell’art. 17-ter + add_value("VJ09.1", imp); // VJ9.1 Acquisti intracomunitari di beni (inclusi acquisti di oro industriale, argento puro e beni di cui all’art. 74, commi 7 e 8) + add_value("VJ09.2", iva); // VJ9.2 Acquisti intracomunitari di beni (inclusi acquisti di oro industriale, argento puro e beni di cui all’art. 74, commi 7 e 8) + default: + break; + } + } +} + +class TQuadro_VJ_app : public TQuadro_IVA_app +{ + +protected: + virtual void load_sheet(TSheet_field & sf); + +public: + virtual TQuadro_IVA_recordset * app_recordset(const char* use, const int year) { return new TQuadro_VJ_recordset(mask(), use, year); } + + TQuadro_VJ_app() : TQuadro_IVA_app("Stampa Quadro VJ", "cg7800a") {} + virtual ~TQuadro_VJ_app() {} + +}; + +void TQuadro_VJ_app::load_sheet(TSheet_field & sf) +{ + TToken_string & row1 = sf.row(sf.items()); row1.add("|1|Quadro VJ - VJ1 - VJ16|cg7800b"); +} + + +int cg7800(int argc, char* argv[]) +{ + TQuadro_VJ_app a; + a.run(argc, argv, TR("Quadro VJ")); + return 0; +} \ No newline at end of file diff --git a/src/cg/cg7800a.pdf b/src/cg/cg7800a.pdf index d24af4436..2ec1d2ce6 100644 Binary files a/src/cg/cg7800a.pdf and b/src/cg/cg7800a.pdf differ diff --git a/src/cg/cg7800a.png b/src/cg/cg7800a.png index dc5480b98..a0cc60ce9 100644 Binary files a/src/cg/cg7800a.png and b/src/cg/cg7800a.png differ diff --git a/src/cg/cg7800a.rep b/src/cg/cg7800a.rep new file mode 100644 index 000000000..91c7a77d1 --- /dev/null +++ b/src/cg/cg7800a.rep @@ -0,0 +1,149 @@ + + + Stampa quadro VJ + +
+
+
+ + "cg7800a.png" + +
+
+ + + + + #SYSTEM.CFPI_SPACED + + + + + + + VJ01.1 + + + VJ01.2 + + + VJ02.1 + + + VJ01.2 + + + VJ01.3 + + + VJ03.2 + + + VJ04.1 + + + VJ04.2 + + + VJ05.1 + + + VJ05.2 + + + VJ06.1 + + + VJ06.2 + + + VJ07.1 + + + VJ07.2 + + + VJ08.1 + + + VJ08.2 + + + VJ09.1 + + + VJ09.2 + + + VJ10.1 + + + VJ10.2 + + + VJ11.1 + + + VJ11.2 + + + VJ12.1 + + + VJ12.2 + + + VJ13.1 + + + VJ13.2 + + + VJ14.1 + + + VJ14.2 + + + VJ15.1 + + + VJ16.2 + + + VJ16.1 + + + VJ16.2 + + + VJ17.1 + + + VJ17.2 + + + VJ18.1 + + + VJ18.2 + + + VJ19.1 + + + VJ19.2 + + + #102+#202+#302+#402+#502+#602+#702+#802+#902+#1002+ #1102+#1202+#1302+#1402+#1502+#1602+#1702+#1802+#1902 + + +
+
+
+ USE NDITTE SELECT CODDITTA==#CODDITTA + + + + + \ No newline at end of file diff --git a/src/cg/cg7800b.rep b/src/cg/cg7800b.rep new file mode 100644 index 000000000..97136d8e5 --- /dev/null +++ b/src/cg/cg7800b.rep @@ -0,0 +1,213 @@ + + + Dichiarazione IVA Quadro VJ - VJ1 - VJ16 + +
+ + "Pag. " +#PAGE + + +
+
+ MESSAGE RESET,F1 + + + #SYSTEM.RAGSOC + + + "Data di Stampa: " +#SYSTEM.DATE + + + "ELENCO FATTURE ACQUISTO PARTICOLARI TIPOLOGIE DI OPERAZIONI - QUADRO VJ - " +#ANNO + +
+ +
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + #B1.5 + + + + #B1.15 + + + + #B1.25 + + + #B1.30 + + + #B1.35 + + + #B1.40 + + + MESSAGE ADD,F1.100 + + + MESSAGE ADD,F1.101 + + + #B1.105 + + + #B1.110 + +
+ USE RMOVIVA SELECT (23.ANNOIVA=#ANNO)(23.TIPO="F")(26.REGSPIVAE;0) +JOIN MOV INTO NUMREG==NUMREG +JOIN 20 TO MOV INTO TIPOCF==TIPO CODCF==CODCF +JOIN %IVA ALIAS 201 INTO CODTAB==CODIVA +JOIN 26 TO MOV INTO CODCAUS==CODCAUS +JOIN %STA TO CLIFO ALIAS 202 INTO CODTAB==STATOCF + \ No newline at end of file diff --git a/src/cg/cg7900a.pdf b/src/cg/cg7900a.pdf index 26b9121fb..385d4e4b4 100644 Binary files a/src/cg/cg7900a.pdf and b/src/cg/cg7900a.pdf differ diff --git a/src/cg/cg7900a.png b/src/cg/cg7900a.png index 819ed8654..92ef3e946 100644 Binary files a/src/cg/cg7900a.png and b/src/cg/cg7900a.png differ diff --git a/src/cg/cg7a00a.pdf b/src/cg/cg7a00a.pdf index 27703588e..dafa57d62 100644 Binary files a/src/cg/cg7a00a.pdf and b/src/cg/cg7a00a.pdf differ diff --git a/src/cg/cg7a00a.png b/src/cg/cg7a00a.png index bb17016e7..443987e75 100644 Binary files a/src/cg/cg7a00a.png and b/src/cg/cg7a00a.png differ diff --git a/src/cg/cg7b00a.pdf b/src/cg/cg7b00a.pdf index 2a9bc10d8..6e7f0de70 100644 Binary files a/src/cg/cg7b00a.pdf and b/src/cg/cg7b00a.pdf differ diff --git a/src/cg/cg7b00a.png b/src/cg/cg7b00a.png index 4a6f4e138..e781fd7b2 100644 Binary files a/src/cg/cg7b00a.png and b/src/cg/cg7b00a.png differ diff --git a/src/cg/cg7c00a.pdf b/src/cg/cg7c00a.pdf index e0ee0c654..562dfbb8a 100644 Binary files a/src/cg/cg7c00a.pdf and b/src/cg/cg7c00a.pdf differ diff --git a/src/cg/cg7c00a.png b/src/cg/cg7c00a.png index af72c7042..8e262eead 100644 Binary files a/src/cg/cg7c00a.png and b/src/cg/cg7c00a.png differ diff --git a/src/cg/cg7d00a.pdf b/src/cg/cg7d00a.pdf index 35d020ce2..50d78fb25 100644 Binary files a/src/cg/cg7d00a.pdf and b/src/cg/cg7d00a.pdf differ diff --git a/src/cg/cg7d00b.pdf b/src/cg/cg7d00b.pdf index 02703e0b5..89fb0ab0d 100644 Binary files a/src/cg/cg7d00b.pdf and b/src/cg/cg7d00b.pdf differ diff --git a/src/cg/cg7e00a.pdf b/src/cg/cg7e00a.pdf index 3cdd01403..b394a549f 100644 Binary files a/src/cg/cg7e00a.pdf and b/src/cg/cg7e00a.pdf differ diff --git a/src/cg/cg7f00a.pdf b/src/cg/cg7f00a.pdf index 1c347d2a3..45342740f 100644 Binary files a/src/cg/cg7f00a.pdf and b/src/cg/cg7f00a.pdf differ diff --git a/src/cg/cg7f00a.png b/src/cg/cg7f00a.png index 251a4d987..21017df10 100644 Binary files a/src/cg/cg7f00a.png and b/src/cg/cg7f00a.png differ diff --git a/src/cg/cg7g00a.pdf b/src/cg/cg7g00a.pdf new file mode 100644 index 000000000..c97cd0a7e Binary files /dev/null and b/src/cg/cg7g00a.pdf differ diff --git a/src/cg/cg7g00a.png b/src/cg/cg7g00a.png new file mode 100644 index 000000000..6daaae4d5 Binary files /dev/null and b/src/cg/cg7g00a.png differ diff --git a/src/cg/cgpim.cpp b/src/cg/cgpim.cpp index f87534f57..1e18c4deb 100755 --- a/src/cg/cgpim.cpp +++ b/src/cg/cgpim.cpp @@ -7,7 +7,7 @@ bool classify_pim(const TRectype& pimr, real& imp, real& iva, tiporec& t, bool tipost) { - static int last_checked = -1; + int last_checked = 0; // parse CODTAB of pim record const TString80 ctab = pimr.get("CODTAB"); @@ -25,11 +25,11 @@ bool classify_pim(const TRectype& pimr, real& imp, real& iva, tiporec& t, bool t // cominciamo cosi' imp = ZERO; iva = ZERO; + bool found = false; - for (int i = last_checked + 1; i <= MAX_TIPOREC+1; i++) + for (int i = 0; i <= stop_tiporec; i++) { tiporec tocheck = (tiporec)i; - bool found = FALSE; switch(tocheck) { @@ -236,16 +236,12 @@ bool classify_pim(const TRectype& pimr, real& imp, real& iva, tiporec& t, bool t } break; } - - if (i == MAX_TIPOREC+1) - last_checked = -1; - else if (found) + if (found) { t = tocheck; - last_checked = i; break; } } - return last_checked != -1; + return found; } diff --git a/src/cg/cgpim.h b/src/cg/cgpim.h index a3e6a0c65..cb789001e 100755 --- a/src/cg/cgpim.h +++ b/src/cg/cgpim.h @@ -32,14 +32,11 @@ enum tiporec { acq_norm = 0, vend_norm = 1, // acquisti e vendite normali cess_amm = 16, // cessioni amministrative vend_rimborso = 17, // vendite valide per rimborso acq_rimborso = 18, // acq. validi per rimborso - acq_bd_ind_art_19 = 19 // acq. con tipo documento BD e tipo detr 9 + acq_bd_ind_art_19 = 19, // acq. con tipo documento BD e tipo detr 9 + stop_tiporec = 20 // ACHTUNG: se si aggiunge, cambiare sotto!!! }; -// questo serve nel cpp ma lo metto qua se no -// non lo cambiero' mai quando serve -const int MAX_TIPOREC = 19; - // --------------------------------------------------------------- // "classifica" un record progressivo IVA passato per reference // mette l'imponibile in imp, l'imposta in iva, e in t mette