Patch level : 12.00 1384

Files correlati     : 777.exe

Bug                 :

Commento:
Aggiunto regime fiscale ai clienti/fornitori pre riconoscere i minimi e i forferrari nell'invio CU
This commit is contained in:
Alessandro Bonazzi 2025-03-11 18:14:38 +01:00
parent 0c4ef3f3e3
commit de76951548

View File

@ -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[])
{