diff --git a/src/m770/777200.cpp b/src/m770/777200.cpp index f3e052c1d..7beb15942 100755 --- a/src/m770/777200.cpp +++ b/src/m770/777200.cpp @@ -266,7 +266,7 @@ const TVariant& TTrasferimentoCU::get_var(const char* name) const { str = val; while (cur_rec.np_get(++p, key, val) && key == varname) - str << val.mid(1); + str << val.smid(1); str.rtrim(); break; } @@ -520,7 +520,7 @@ bool TTrasferimentoCU::append_record_b() TRecordCU rec('B'); // Compila record di testata B rec.set(2, cod_fis_dic()); rec.set(3, 1); // Modulo (deve essere sempre 1) - rec.set(8, get_iva_sirio()); // CF del produttore Sirio + rec.set(8, get_iva_prod()); // CF del produttore rec.set(10, _tipo_operazione == 'A'); rec.set(11, _tipo_operazione == 'S'); @@ -528,8 +528,8 @@ bool TTrasferimentoCU::append_record_b() if (_tipoa_dic == 'F') { - rec.set(12, _ragsoc_dic.left(24)); - rec.set(13, _ragsoc_dic.mid(30,20)); + rec.set(12, _ragsoc_dic.sleft(24)); + rec.set(13, _ragsoc_dic.smid(30,20)); } else { @@ -559,7 +559,7 @@ bool TTrasferimentoCU::append_record_b() _codfis_rap = rapp.codice_fiscale(); rec.set(18, _codfis_rap); rec.set(19, rec_nditte.get(NDT_CARRAPP)); - rec.set(20, rapp.cognome().left(24)); + rec.set(20, rapp.cognome().sleft(24)); rec.set(21, rapp.nome()); rec.set(22, _codfis_dic); } @@ -633,8 +633,8 @@ bool TTrasferimentoCU::append_record_d(const TRectype& qla, TLog_report& log) } else { - rec.np_put("DA001002", sost.ragione_sociale().left(30)); - rec.np_put("DA001003", sost.ragione_sociale().mid(30)); + rec.np_put("DA001002", sost.ragione_sociale().sleft(30)); + rec.np_put("DA001003", sost.ragione_sociale().smid(30)); } rec.np_put("DA001004", sost.comune_residenza()); @@ -1303,16 +1303,12 @@ class TCU_app : public TSkeleton_application { public: void main_loop() override; - void isUpdated(); }; void TCU_app::main_loop() { TCU_mask m; - // Eseguo controllo adeguamento database 2017 - isUpdated(); - m.field(F_INVIATE).set_default(""); m.field(F_RESET).set_default(""); while (m.run() == K_ENTER) @@ -1320,11 +1316,10 @@ void TCU_app::main_loop() const int anno = m.get_int(F_ANNO); TFilename tmp; tmp.tempdir(); TTrasferimentoCU t(tmp, 'w'); - t.set_inter(m.get(F_INTER_CODFIS), m.get_date(F_INTER_DATA), anno); + TString query; + + t.set_inter(m.get(F_INTER_CODFIS), m.get_date(F_INTER_DATA), anno); t.set_operazione(m.get(F_INVIO)[0], m.get(F_IDENTIFICATIVO)); - - TString query; - query.format("USE %d\nFROM CODDITTA=%ld\nTO CODDITTA=%ld", LF_BASE, m.get_long(F_DADITTA), m.get_long(F_ADITTA)); @@ -1340,36 +1335,64 @@ void TCU_app::main_loop() { const long codditta = base.get_long(BSE_CODDITTA); TString msg; msg.format(FR("Generazione C.U. ditta %ld"), codditta); - log.log(0, ""); - log.log(0, msg); + TAssoc_array percip_cache; + const bool invforfmin = m.get_bool(F_FORFMIN); - t.read_codfis_dic(base); + if (!invforfmin) + { + query.format("USE %d SELECT (%s!=0)\nFROM %s=\"F\"", + LF_CLIFO, CLI_CODANAGPER, CLI_TIPOCF); + + TISAM_recordset forn(query); + const TRectype& rec = forn.curr(); + const TRecnotype nforn = forn.items(); + + if (nforn > 0) + { + TProgress_monitor pp(nforn, TR("Generazione cache percipienti")); + + for (bool ok = forn.move_first(); pp.add_status() && ok; ok = forn.move_next()) + { + TToken_string key = rec.get(CLI_TIPOAPER); + TString regfisc = rec.get(CLI_REGFISC); + + key.add(rec.get(CLI_CODANAGPER)); + percip_cache.add(key, regfisc); + } + } + } + log.log(0, ""); + log.log(0, msg); + t.read_codfis_dic(base); t.append_record_b(); - query.format("USE %d SELECT (ANNO=%d)\nBY TIPOA CODANAGR CAUSALE\nFROM CODDITTA=%ld\nTO CODDITTA=%ld", LF_QUALA, anno, codditta, codditta); TISAM_recordset perc(query); const TRecnotype nperc = perc.items(); - const bool invforfmin = m.get_bool(F_FORFMIN); if (nperc > 0) { TProgress_monitor pp(nperc, TR("Generazione record percipienti")); - const TRectype& rec = perc.cursor()->curr(); + const TRectype& rec = perc.curr(); const int modulo = 1; // In realtà non accetta modulo != 1 per cui separa causali diverse in due comunicazioni - for (bool ok = perc.move_first(); ok; ok = perc.move_next()) + for (bool ok = perc.move_first(); pp.add_status() && ok; ok = perc.move_next()) { const real percrit = perc.get_real(QUD_PERC); + TToken_string key = rec.get(QUD_TIPOA); + TString regfisc; - if (percrit != ZERO || invforfmin) + key.add(rec.get(QUD_CODANAGR)); + + if (percip_cache.objptr(key) != nullptr) + regfisc = (TString &)*percip_cache.objptr(key); + if (invforfmin || percrit != ZERO || (regfisc.full() && regfisc != "RF02" && regfisc != "RF19")) { t.append_record_d(rec, log); if (t.get_operazione() != 'A') t.append_record_h(rec, modulo, log); } - pp.add_status(); } } } @@ -1393,36 +1416,6 @@ void TCU_app::main_loop() } } -void TCU_app::isUpdated() -{ - TRelation anagr(LF_ANAG); -/* TCursor c(&anagr); - long int items = c.items(); - TProgress_monitor p(items, "Aggiornamento valori per CU"); - bool trovato = false; - Eseguo questo controllo per verificare la presenza EVECC == 8 - /*for(c=0; c.pos() < items && !trovato; ++c) - { - TRectype r = c.curr(); - if(r.get_int("EVECC") == 8) - trovato = true; - } - if(!trovato) - { - for(c=0; c.pos() < items; ++c) - { - if (!p.add_status()) - break; - TRectype r = c.curr(); - if(r.get_int("EVECC") == 6) - { - r.put("EVECC", 8); - r.write_rewrite(anagr.lfile()); - } - } - } */ -} - int m777200(int argc, char* argv[]) {