Patch level : 12.0

Files correlati     : f9

Commento:
- corretto bug nel monitor delle fatture passive. il file ini che veniva creato per la contabilizzazione della fattura aveva un nome sbagliato.
DA TESTARE LA CONTABILIZZAZIONE MULTIPLA
This commit is contained in:
Simoe 2022-05-12 17:49:31 +02:00
parent 3638037402
commit 04e332e94c
3 changed files with 49 additions and 51 deletions

View File

@ -388,7 +388,7 @@ const char* get_ini_codcaus()
const char* get_codcaus(const char * tipodoc, long codcf) const char* get_codcaus(const char * tipodoc, long codcf)
{ {
TCli_for f = cached_clifor('F', codcf); const TCli_for & f = cached_clifor('F', codcf);
const bool nc = TString(tipodoc) == "TD04"; const bool nc = TString(tipodoc) == "TD04";
if (nc) if (nc)
@ -491,8 +491,12 @@ bool check_caus_has_rit(const TString& cod_caus, int year)
void run_cont_ini(bool liq) void run_cont_ini(bool liq)
{ {
TString cmd; TString cmd;
TFilename ininame;
cmd.cut(0) << "cg2 -0 -i" << TFilename().temp("cg2CONTAB", "ini") << " -f1" << (liq ? " -liq" : " ") << " /u" << user(); ininame.tempdir();
ininame.add(F1_INIREGCONT);
ininame<< "*.ini";
cmd.cut(0) << "cg2 -0 -i" << ininame << " -f1" << (liq ? " -liq" : " ") << " /u" << user();
TExternal_app app(cmd); TExternal_app app(cmd);

View File

@ -7,7 +7,7 @@
#define FILE_CONFIG CONFIG_DITTA #define FILE_CONFIG CONFIG_DITTA
#define FILE_SECTION "f1" #define FILE_SECTION "f1"
#define F1_INIREGCONT "cgreg" #define F1_INIREGCONT "cg2_"
#define F1_CAUS "caus" #define F1_CAUS "caus"
#define LOG_MSG 0 #define LOG_MSG 0
#define LOG_WARN 1 #define LOG_WARN 1

View File

@ -622,23 +622,19 @@ void TPassive_mask::salva_for() const
void TPassive_mask::clean_ini(const TString& filename) const void TPassive_mask::clean_ini(const TString& filename) const
{ {
static TString remove_string; TFilename remove_string;
#ifdef DBG
remove_string.cut(0) << filename << "*.ini"; remove_string.tempdir();
#else remove_string.add(filename);
remove_string.cut(0) << _tmp_dir << "\\" << filename << "*.ini"; remove_string << "*.ini";
#endif
remove_files(remove_string, false); remove_files(remove_string, false);
} }
void TPassive_mask::run_cg0(const TString& filename) const void TPassive_mask::run_cg0(const TString& filename) const
{ {
static TString run_string; static TString run_string;
#ifdef DBG
run_string.cut(0) << "cg0 -1 -i" << filename << "*.ini" << " /u" << user(); run_string.cut(0) << "cg0 -1 -i" << filename << "*.ini" << " /u" << user();
#else
run_string.cut(0) << "cg0 -1 -i" << _tmp_dir << "\\" << filename << "*.ini" << " /u" << user();
#endif
TExternal_app(run_string).run(); TExternal_app(run_string).run();
} }
@ -655,19 +651,18 @@ int TPassive_mask::prepara_contab() const
int n_sel = 0; int n_sel = 0;
TSheet_field& sf = sfield(F_DOCS); TSheet_field& sf = sfield(F_DOCS);
sf.hide();
clean_ini(F1_INIREGCONT); clean_ini(F1_INIREGCONT);
FOR_EACH_SHEET_ROW(sf, n, row) FOR_EACH_SHEET_ROW_LOOP(sf, row)
{ {
if (row->starts_with("X")) if (sf.get_bool_row_cell(row, S_SELECTED))
{ {
TString prokeys = row->get(sf.cid2index(S_PROKEY)); TString prokeys =sf.get_str_row_cell(row, S_PROKEY);
TToken_string keys(prokeys, ';'); TToken_string keys(prokeys, ';');
const TString codcaus(get_codcaus(row->get(cid2index(S_TIPODOCSDI)), row->get_long(cid2index(S_FORNITORE)))); const TString codcaus(get_codcaus(sf.get_str_row_cell(row, S_TIPODOCSDI), sf.get_long_row_cell(row, S_FORNITORE)));
TString tipodoc(row->get(sf.cid2index(S_TIPODOCSDI))); TString tipodoc(sf.get_str_row_cell(row, S_TIPODOCSDI));
if (tipodoc == "TD01" && !check_causale(codcaus, "FA", true)) if (tipodoc == "TD01" && !check_causale(codcaus, "FA", true))
if (!yesno_box("Attenzione, per un documento di tipo TD01 e' stata selezionata \nuna causale diversa da Fattura d'Acquisto.\nProcedere lo stesso con l'esportazione?")) if (!yesno_box("Attenzione, per un documento di tipo TD01 e' stata selezionata \nuna causale diversa da Fattura d'Acquisto.\nProcedere lo stesso con l'esportazione?"))
continue; continue;
@ -677,40 +672,40 @@ int TPassive_mask::prepara_contab() const
n_sel++; n_sel++;
vector<iva>& riva = get_righe_iva(keys); vector<iva>& riva = get_righe_iva(keys);
TString num; num.format("%04d", n); TString num; num.format("%04d", row);
TFilename newf_ini; TFilename newf_ini;
#ifndef DBG
newf_ini.tempdir() << "\\" << F1_INIREGCONT << num << ".ini"; newf_ini.temp(F1_INIREGCONT, "ini");
#else
newf_ini << F1_INIREGCONT << num << ".ini"; TConfig contab_ini(newf_ini, "Transaction");
#endif
TConfig contab_ini(newf_ini, "Transaction");
contab_ini.set("Action", "INSERT"); contab_ini.set("Action", "INSERT");
// Esporto dati di testata // Esporto dati di testata
contab_ini.set_paragraph(LF_MOV); // [23] contab_ini.set_paragraph(LF_MOV); // [23]
contab_ini.set("CODCAUS", codcaus); contab_ini.set("CODCAUS", codcaus);
contab_ini.set("CODCF", row->get(sf.cid2index(S_FORNITORE))); contab_ini.set("CODCF", sf.get_long_row_cell(row, S_FORNITORE));
TDate datareg; TDate datareg;
if (get_bool(F_USEDATARIC)) if (get_bool(F_USEDATARIC))
datareg = TDate(row->get(sf.cid2index(S_DATARIC))); datareg = sf.get_date_row_cell(row, S_DATARIC);
else else
datareg = !get(F_DATAREGDIF).empty() ? TDate(get(F_DATAREGDIF)) : TDate(TODAY); datareg = get(F_DATAREGDIF).full() ? get_date(F_DATAREGDIF) : today;
contab_ini.set("DATAREG", datareg); contab_ini.set("DATAREG", datareg);
contab_ini.set("DATACOMP", datareg); contab_ini.set("DATACOMP", datareg);
contab_ini.set("DATADOC", row->get(sf.cid2index(S_DATADOC))); contab_ini.set("DATADOC", sf.get_date_row_cell(row, S_DATADOC));
contab_ini.set("NUMDOCEXT", row->get(sf.cid2index(S_NDOC))); contab_ini.set("NUMDOCEXT", sf.get_str_row_cell(row, S_NDOC));
contab_ini.set("NUMDOC", TString(row->get(sf.cid2index(S_NDOC))).right(7)); contab_ini.set("NUMDOC", TString(sf.get_str_row_cell(row, S_NDOC)).right(7));
TString totdoc = row->get(sf.cid2index(S_TOTDOC));
if (totdoc.empty()) real totdoc = sf.get_real_row_cell(row, S_TOTDOC);
{ if (totdoc == ZERO)
real imp = calcola_importo(riva); totdoc = calcola_importo(riva);
totdoc.cut(0) << imp;
}
real rit = fppro_db().set_keys(keys).get_ritenute(); real rit = fppro_db().set_keys(keys).get_ritenute();
if (rit != ZERO) if (rit != ZERO)
{ {
contab_ini.set("TOTDOC", (abs(real(totdoc)) - rit).string()); contab_ini.set("TOTDOC", (abs(totdoc) - rit).string());
contab_ini.set("RITFIS", rit.string()); contab_ini.set("RITFIS", rit.string());
} }
else if (is_doc_split(riva)) // Documento con split else if (is_doc_split(riva)) // Documento con split
@ -719,7 +714,7 @@ int TPassive_mask::prepara_contab() const
} }
else else
{ {
contab_ini.set("TOTDOC", abs(real(totdoc)).string()); contab_ini.set("TOTDOC", abs(totdoc).string());
} }
contab_ini.set("KEYFPPRO", prokeys); contab_ini.set("KEYFPPRO", prokeys);
@ -778,14 +773,12 @@ int TPassive_mask::prepara_contab() const
contab_ini.set(TString("DATADOC(") << j << ")", fp_db().sq_get("DATADOC")); contab_ini.set(TString("DATADOC(") << j << ")", fp_db().sq_get("DATADOC"));
} }
} }
sf.set_row_cell(S_SELECTED, false, row);
row->add("", 0);
break; // Chiudo subito tanto se ne può selezionare solo una alla volta break; // Chiudo subito tanto se ne può selezionare solo una alla volta
} }
} }
sf.force_update(); sf.force_update();
sf.show();
if (n_sel == 0) if (n_sel == 0)
return no_selected; return no_selected;
@ -860,17 +853,18 @@ void TPassive_mask::log_contab() const
int TPassive_mask::check_err() const int TPassive_mask::check_err() const
{ {
TSheet_field& sf = sfield(F_DOCS); TSheet_field& sf = sfield(F_DOCS);
FOR_EACH_SHEET_ROW(sf, nr, row)
FOR_EACH_SHEET_ROW_LOOP(sf,row)
{ {
if (row->starts_with("X")) if (sf.get_bool_row_cell(row, S_SELECTED))
{ {
TString codcaus(get_codcaus(row->get(cid2index(S_TIPODOCSDI)), row->get_long(cid2index(S_FORNITORE)))); TString codcaus(get_codcaus(sf.get_str_row_cell(row, S_TIPODOCSDI), sf.get_long_row_cell(row, S_FORNITORE)));
if (codcaus.empty()) if (codcaus.blank())
return no_codcaus; return no_codcaus;
if (TString(row->get(cid2index(S_FORNITORE))).empty()) if (TString(sf.get_str_row_cell(row, S_FORNITORE)).blank())
return forn_err; return forn_err;
if (!TString(row->get(cid2index(S_NUMREGCONT))).empty()) if (sf.get_long_row_cell(row, S_NUMREGCONT) != 0L)
return nr + 1000; return row + 1000;
} }
} }
return no_err; return no_err;
@ -1303,7 +1297,7 @@ void TPassive_mask::check_buttons(const int p) const
TPassive_mask::TPassive_mask(bool f1) : TAutomask("fp0400a"), _f1(f1), _filter_changed(true) TPassive_mask::TPassive_mask(bool f1) : TAutomask("fp0400a"), _f1(f1), _filter_changed(true)
{ {
_tmp_dir = _tmp_dir.tempdir(); // _tmp_dir = _tmp_dir.tempdir();
TMask::set_handler(F_CAUSFA, causfa_handler); TMask::set_handler(F_CAUSFA, causfa_handler);
TMask::set_handler(F_FORNITORE, clifo_handler); TMask::set_handler(F_FORNITORE, clifo_handler);
auto_assoc(); auto_assoc();