From 9c0dbd5406fcc2d83f058c314d631dd06bdeef85 Mon Sep 17 00:00:00 2001 From: guy Date: Fri, 28 Oct 2011 15:12:48 +0000 Subject: [PATCH] Patch level : Files correlati : fe0.exe fe0100.rep fe0100a.msk Ricompilazione Demo : [ ] Commento : Implementato report stampa record inviati. Corretta gestitione righe immesse manualmente git-svn-id: svn://10.65.10.50/branches/R_10_00@22469 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- fe/fe0100.cpp | 294 +++++++++++++++++++++++++++++-------------------- fe/fe0100.rep | 113 +++++++++++++++++++ fe/fe0100a.uml | 6 + 3 files changed, 291 insertions(+), 122 deletions(-) create mode 100644 fe/fe0100.rep diff --git a/fe/fe0100.cpp b/fe/fe0100.cpp index c9d5612ad..6b50e9735 100755 --- a/fe/fe0100.cpp +++ b/fe/fe0100.cpp @@ -646,6 +646,10 @@ public: void add_control_rec(int zero_o_nove, int num_inv = 1, int tot_inv = 1); bool split(const TFilename& name, const TRecnotype maxalleg = 15000); int anno() const { return _anno; } + + void set_ragsoc(const TString& ragsoc) { row(-1).overwrite(ragsoc, 1000); } + const TString& ragsoc() const { return row(-1).mid(1000, 50); } + TDati_rilevanti_set(int anno); TDati_rilevanti_set(const TFilename& file); }; @@ -950,130 +954,150 @@ public: bool TDati_rilevanti_rep::get_usr_val(const TString& name, TVariant& var) const { - if (name.starts_with("#FLD")) + const TDati_rilevanti_set& set = *(TDati_rilevanti_set*)recordset(); + const int tipo = set.rec_type()[0] - '0'; + + if (name == "ANNO") { - const char* fld = (const char*)name + 4; - const TDati_rilevanti_set& set = *(TDati_rilevanti_set*)recordset(); - if (fld[1] != '.') - { - const int t = atoi(set.rec_type()); - if ((t >= 0 && t <= 5) || t == 9) - { - TString8 n; - n.format("%d.%s", t, fld); - var = set.get(n); - } - else - { - var.set_null(); - return true; - } - } - else - var = set.get(fld); - return !var.is_null(); - } else - if (name.starts_with("#ANNO")) - { - const TDati_rilevanti_set& set = *(TDati_rilevanti_set*)recordset(); var.set(set.anno()); return true; } + if (name == "TIPO") + { + var.set(tipo); + return true; + } + if (name == "COFI") + { + switch (tipo) + { + case 1: var = set.get("1.2"); break; + case 4: var = set.get("4.3"); break; + default: var.set_null(); break; + } + return true; + } + if (name == "PAIV") + { + switch (tipo) + { + case 2: var = set.get("2.2"); break; + case 4: var = set.get("4.2"); break; + default: var.set_null(); break; + } + return true; + } + if (name == "RAGSOC") + { + var.set(set.ragsoc()); + return true; + } + if (name == "DATAREG") + { + switch (tipo) + { + case 1: var = set.get("1.3"); break; + case 2: var = set.get("2.3"); break; + case 3: var = set.get("3.12"); break; + case 4: var = set.get("4.4"); break; + case 5: var = set.get("5.12"); break; + default: var.set_null(); break; + } + return true; + } + if (name == "NUMDOC") + { + switch (tipo) + { + case 2: var = set.get("2.4"); break; + case 3: var = set.get("3.13"); break; + case 4: var = set.get("4.5"); break; + case 5: var = set.get("5.13"); break; + default: var.set_null(); break; + } + return true; + } + if (name == "IMPORTO") + { + switch (tipo) + { + case 1: var = set.get("1.5"); break; + case 2: var = set.get("2.6"); break; + case 3: var = set.get("3.15"); break; + case 4: var = set.get("4.6"); break; + case 5: var = set.get("5.14"); break; + default: var.set_null(); break; + } + return true; + } + if (name == "IMPOSTA") + { + switch (tipo) + { + case 2: var = set.get("2.7"); break; + case 3: var = set.get("3.16"); break; + case 4: var = set.get("4.7"); break; + case 5: var = set.get("5.15"); break; + default: var.set_null(); break; + } + return true; + } + if (name == "DATARETT") + { + switch (tipo) + { + case 4: var = set.get("4.8"); break; + case 5: var = set.get("5.16"); break; + default: var.set_null(); break; + } + return true; + } + if (name == "NUMRETT") + { + switch (tipo) + { + case 4: var = set.get("4.9"); break; + case 5: var = set.get("5.17"); break; + default: var.set_null(); break; + } + return true; + } + if (name == "SIMPORTO") + { + switch (tipo) + { + case 4: var = set.get("4.10"); break; + case 5: var = set.get("5.18"); break; + default: var.set_null(); break; + } + return true; + } + if (name == "SIMPOSTA") + { + switch (tipo) + { + case 4: var = set.get("4.11"); break; + case 5: var = set.get("5.19"); break; + default: var.set_null(); break; + } + return true; + } + + return TReport::get_usr_val(name, var); } TDati_rilevanti_rep::TDati_rilevanti_rep(const TFilename& file) { + load("fe0100"); + TDati_rilevanti_set* set = new TDati_rilevanti_set(file); + + // Elimina testata e coda + set->destroy(0); + set->destroy(set->items()-1); + set_recordset(set); - - TReport_font small_font, big_font; - big_font.create(font().name(), font().size()*2, XVT_FS_BOLD); - small_font.create(font().name(), font().size()/2, XVT_FS_NONE); - - TReport_section& h2 = section('H', 2); - h2.group_by("#FLD1"); - TReport_field* fld = new TReport_field(&h2); - fld->set_type('S'); - fld->set_horizontal_alignment('C'); - fld->set_field("\"Operazioni rilevanti \"+ #ANNO + \" Sezione \"+#FLD1"); - fld->set_pos(100, 50); - fld->set_width(92*100); - fld->set_height(200); - fld->set_border(1); - fld->set_font(big_font); - h2.add(fld); - h2.force_page_break(true); - - TString16 col; - for (int t = 0; t <= 6; t++) - { - TReport_section& b = section('B', t+1); - if (t == 6) t = 9; - col.format("#FLD1==%d", t); - b.set_condition(col); - int x = 100, y = 100; - for (int f = 1; ; f++) - { - col.format("%d.%d", t, f); - const TRecordset_column_info& info = set->column_info(col); - if (info._width > 60) - break; - const int width = info._type == DT ? 1000 : info._width*100; - if ((x+width) > 92*100) - { - x = 100; - y += 100; - } - - // Sfondo grigio del campo - fld = new TReport_field(&b); - fld->set_type('T'); - fld->set_pos(x-75, y); - fld->set_width(width+75); - fld->set_height(95); - fld->set_pattern(PAT_SOLID); - fld->set_back_color(XVT_MAKE_COLOR(240,240,240)); - fld->set_text_color(COLOR_LTGRAY); - fld->set_picture(col.format("%d", f)); - fld->set_font(small_font); - b.add(fld); - - // Campo vero e proprio - fld = new TReport_field(&b); - fld->set_id(f); - col.format("#FLD%d", f); - fld->set_field(col); - fld->set_pos(x, y); - fld->set_width(width); - fld->set_height(100); - switch (info._type) - { - case _datefld: - fld->set_type('D'); - break; - case _intzerofld: - case _longzerofld: - { - const TString pic(info._width, '@'); - fld->set_picture(pic); - } - case _intfld: - case _longfld: - case _realfld: - fld->set_type('N'); - fld->set_horizontal_alignment('R'); - break; - default: - fld->set_type('S'); - break; - } - fld->set_vertical_alignment('B'); - b.add(fld); - x += fld->get_rect().width() + 100; - } - b.set_height(y+100); - } } @@ -1624,13 +1648,17 @@ bool TDati_rilevanti_msk::elabora_alleg() bool TDati_rilevanti_msk::send_nota_variazione(const TRectype& alleg, TDati_rilevanti_set& operaz) { - const TAnagrafica anag(alleg); - real imponibile = alleg.get_real(ALL_IMPORTO); real imposta = alleg.get_real(ALL_IMPOSTA); if (imponibile.is_zero() && imposta.is_zero()) return false; + const TAnagrafica anag(alleg); + if (!anag.ok()) + return false; + + operaz.set_ragsoc(anag.ragione_sociale()); + const char tipocf = alleg.get_char(ALL_TIPOCF); char segno_imponibile = tipocf == 'C' ? 'D' : 'C'; // Normalmente sono negative e quindi a debito del dichiarante char segno_imposta = segno_imponibile; @@ -1695,10 +1723,17 @@ bool TDati_rilevanti_msk::send_nota_variazione(const TRectype& alleg, TDati_rile bool TDati_rilevanti_msk::send_fatt(const TRectype& alleg, TDati_rilevanti_set& operaz) { - const TAnagrafica anag(alleg); - const real importo = alleg.get_real(ALL_IMPORTO); const real imposta = alleg.get_real(ALL_IMPOSTA); + if (importo.is_zero() && imposta.is_zero()) + return false; + + const TAnagrafica anag(alleg); + if (!anag.ok()) + return false; + + operaz.set_ragsoc(anag.ragione_sociale()); + const TString& paiv = anag.partita_IVA(); if (anag.stato_estero() > 0) @@ -2234,7 +2269,7 @@ bool TDati_rilevanti_msk::on_field_event(TOperable_field& o, TField_event e, lon } break; case DLG_DELREC: - if (e == fe_button) + if (e == fe_button && jolly == 0 && o.active()) { recall_alleg(); enable_buttons(); // Disabilita bottone @@ -2296,6 +2331,14 @@ bool TDati_rilevanti_msk::on_field_event(TOperable_field& o, TField_event e, lon case F_RIGHE: if (e == fe_init) load_sheet(); else + if (e == se_query_modify) + { + TSheet_field& s = (TSheet_field&)o; + TToken_string& row = s.row(jolly); + const TRecnotype progr = row.get_long(0); + s.sheet_mask().enable(DLG_DELREC, progr >= MANUAL_ROW); + s.sheet_mask().enable(DLG_USER, progr < MANUAL_ROW); + } else if (e == se_notify_modify) { set_dirty( true); @@ -2313,11 +2356,15 @@ bool TDati_rilevanti_msk::on_field_event(TOperable_field& o, TField_event e, lon TSheet_field& s = (TSheet_field&)o; TToken_string& row = s.row(jolly); row.add(nuovo_progr(), s.cid2index(A_RIGA)); - row.add(TDate(TODAY), s.cid2index(A_DATAREG)); row.add(1, s.cid2index(A_MODPAG)); } else if (e == se_query_del) - return false; + { + TSheet_field& s = (TSheet_field&)o; + TToken_string& row = s.row(jolly); + const TRecnotype progr = row.get_long(0); + return progr >= MANUAL_ROW; + } break; case A_CODCF: case A_OCFPI: @@ -2331,15 +2378,18 @@ bool TDati_rilevanti_msk::on_field_event(TOperable_field& o, TField_event e, lon } break; case DLG_USER: - if (e == fe_button) + if (e == fe_button || e == fe_init) { const long numreg = o.mask().get_long(A_RIGA); - if (numreg > 0 && numreg < MANUAL_ROW) + const bool enab = (numreg > 0 && numreg < MANUAL_ROW); + if (e == fe_button && enab) { TRectype mov(LF_MOV); mov.put(MOV_NUMREG, numreg); mov.edit(); } + else + o.enable(enab); } break; default: diff --git a/fe/fe0100.rep b/fe/fe0100.rep new file mode 100644 index 000000000..ceb4bd187 --- /dev/null +++ b/fe/fe0100.rep @@ -0,0 +1,113 @@ + + + +
+ + + "Dati rilevanti " + ANNO + " tipo " + TIPO + + + + + + + + + + + + + COFI + + + + + + + + + + + + +
+
+
+ TIPO + +
+
+
+ + + + + + + + + + + COFI + + + PAIV + + + RAGSOC + + + DATAREG + + + NUMDOC + + + MODPAG + +
  • +
  • +
  • + + + + TIPOPE + +
  • +
  • + + + + IMPORTO + + + IMPOSTA + + + DATARETT + + + NUMRETT + + + SIMPORTO + +
  • +
  • +
  • + + + + SIMPOSTA + +
  • +
  • +
  • + + +
  • +
    +
    +
    + USE ALLEG + \ No newline at end of file diff --git a/fe/fe0100a.uml b/fe/fe0100a.uml index 91f932613..07c0245a1 100755 --- a/fe/fe0100a.uml +++ b/fe/fe0100a.uml @@ -418,6 +418,12 @@ BEGIN PICTURE TOOL_LINK END +BUTTON DLG_DELREC 2 2 +BEGIN + PROMPT 2 1 "Elimina" + PICTURE TOOL_DELREC +END + BUTTON DLG_CANCEL 2 2 BEGIN PROMPT 4 1 ""