Patch level : 12.0 nopatch
Files correlati : Commento : Update modulo fp
This commit is contained in:
parent
1c800897c5
commit
bd41c2f3a5
Binary file not shown.
@ -104,10 +104,7 @@ void TPA_mask::load_all_fields()
|
|||||||
set(F_DATAEND, ini_get_string(CONFIG_DITTA, "fp", "dataend"));
|
set(F_DATAEND, ini_get_string(CONFIG_DITTA, "fp", "dataend"));
|
||||||
|
|
||||||
const TToken_string s_accepted_docs(ini_get_string(CONFIG_DITTA, "fp", "accepted_docs"), ';');
|
const TToken_string s_accepted_docs(ini_get_string(CONFIG_DITTA, "fp", "accepted_docs"), ';');
|
||||||
//
|
TSheet_field& sheet = sfield(F_DOCUMENTI_TIPO);
|
||||||
auto& sheet = sfield(F_DOCUMENTI_TIPO);
|
|
||||||
sheet.hide();
|
|
||||||
|
|
||||||
TFP_selected_docs selected_docs;
|
TFP_selected_docs selected_docs;
|
||||||
|
|
||||||
if (selected_docs.has_selected_docs())
|
if (selected_docs.has_selected_docs())
|
||||||
@ -212,7 +209,7 @@ void TPA_mask::fill()
|
|||||||
continue;
|
continue;
|
||||||
|
|
||||||
bool sent = false;
|
bool sent = false;
|
||||||
if (chiave_paf(doc, hfatt, bfatt))
|
if (chiave_paf_doc(doc, hfatt, bfatt))
|
||||||
{
|
{
|
||||||
if (paf0100f.search(nullptr, hfatt, bfatt) && paf0100f.sq_get("P1_GESTIONE") != " " && paf0100f.sq_get("P1_ERRINT") != "*")
|
if (paf0100f.search(nullptr, hfatt, bfatt) && paf0100f.sq_get("P1_GESTIONE") != " " && paf0100f.sq_get("P1_ERRINT") != "*")
|
||||||
{
|
{
|
||||||
@ -307,7 +304,7 @@ void TPA_mask::set_pronto()
|
|||||||
static TString campo_hfatt, campo_bfatt, query;
|
static TString campo_hfatt, campo_bfatt, query;
|
||||||
TDocumento doc('D', riga->get_int(xvtil_cid2index(S_ANNO)), riga->get(xvtil_cid2index(S_CODNUM)), riga->get_long(xvtil_cid2index(S_NDOC)));
|
TDocumento doc('D', riga->get_int(xvtil_cid2index(S_ANNO)), riga->get(xvtil_cid2index(S_CODNUM)), riga->get_long(xvtil_cid2index(S_NDOC)));
|
||||||
|
|
||||||
if (chiave_paf(doc, campo_hfatt, campo_bfatt))
|
if (chiave_paf_doc(doc, campo_hfatt, campo_bfatt))
|
||||||
{
|
{
|
||||||
// Come prima cosa controllo che effettivamente la chiave di questo doc sia in giro per il mondo
|
// Come prima cosa controllo che effettivamente la chiave di questo doc sia in giro per il mondo
|
||||||
query.cut(0) << "UPDATE PAF0100F SET P1_GESTIONE = 'P' WHERE P1_KEYHEADERFATT = '" << campo_hfatt << "' AND P1_KEYBODYFATT = '" << campo_bfatt << "'";
|
query.cut(0) << "UPDATE PAF0100F SET P1_GESTIONE = 'P' WHERE P1_KEYHEADERFATT = '" << campo_hfatt << "' AND P1_KEYBODYFATT = '" << campo_bfatt << "'";
|
||||||
@ -345,7 +342,7 @@ void TPA_mask::connect_keys()
|
|||||||
|
|
||||||
TDocumento doc('D', riga->get_int(xvtil_cid2index(S_ANNO)), riga->get(xvtil_cid2index(S_CODNUM)), riga->get_long(xvtil_cid2index(S_NDOC)));
|
TDocumento doc('D', riga->get_int(xvtil_cid2index(S_ANNO)), riga->get(xvtil_cid2index(S_CODNUM)), riga->get_long(xvtil_cid2index(S_NDOC)));
|
||||||
static TString campo_hfatt, campo_bfatt, query;
|
static TString campo_hfatt, campo_bfatt, query;
|
||||||
if (chiave_paf(doc, campo_hfatt, campo_bfatt))
|
if (chiave_paf_doc(doc, campo_hfatt, campo_bfatt))
|
||||||
{
|
{
|
||||||
// Come prima cosa controllo che effettivamente la chiave di questo doc sia in giro per il mondo
|
// Come prima cosa controllo che effettivamente la chiave di questo doc sia in giro per il mondo
|
||||||
query.cut(0) << "SELECT * FROM PAF0100F WHERE P1_KEYHEADERFATT = '" << campo_hfatt << "' AND P1_KEYBODYFATT = '" << campo_bfatt << "'";
|
query.cut(0) << "SELECT * FROM PAF0100F WHERE P1_KEYHEADERFATT = '" << campo_hfatt << "' AND P1_KEYBODYFATT = '" << campo_bfatt << "'";
|
||||||
@ -687,7 +684,7 @@ void TPA_mask::set_err_paf()
|
|||||||
|
|
||||||
TString hfatt, bfatt;
|
TString hfatt, bfatt;
|
||||||
TPaf_record paf0100f("PAF0100F");
|
TPaf_record paf0100f("PAF0100F");
|
||||||
if (fdoc.read() == NOERR && chiave_paf(fdoc.curr(), hfatt, bfatt) && paf0100f.search(nullptr, hfatt, bfatt))
|
if (fdoc.read() == NOERR && chiave_paf_doc(fdoc.curr(), hfatt, bfatt) && paf0100f.search(nullptr, hfatt, bfatt))
|
||||||
{
|
{
|
||||||
static TString query;
|
static TString query;
|
||||||
query.cut(0) <<
|
query.cut(0) <<
|
||||||
|
@ -17,6 +17,7 @@
|
|||||||
#define FILTER_ALL "A"
|
#define FILTER_ALL "A"
|
||||||
#define FILTER_CONT "C"
|
#define FILTER_CONT "C"
|
||||||
#define PARA_FP "fp"
|
#define PARA_FP "fp"
|
||||||
|
#define F1_INIREGCONT "regcont"
|
||||||
|
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
@ -669,7 +670,7 @@ int TPassive_mask::prepara_contab() const
|
|||||||
{
|
{
|
||||||
TString prokeys = row->get(sf.cid2index(S_PROKEY));
|
TString prokeys = row->get(sf.cid2index(S_PROKEY));
|
||||||
TToken_string keys(prokeys, ';');
|
TToken_string keys(prokeys, ';');
|
||||||
const TString codcaus(get_codcaus(row->get(cid2index(S_TIPODOCSDI)), row->get(cid2index(S_FORNITORE))));
|
const TString codcaus(get_codcaus(row->get(cid2index(S_TIPODOCSDI)), row->get_long(cid2index(S_FORNITORE))));
|
||||||
|
|
||||||
TString tipodoc(row->get(sf.cid2index(S_TIPODOCSDI)));
|
TString tipodoc(row->get(sf.cid2index(S_TIPODOCSDI)));
|
||||||
if (tipodoc == "TD01" && !check_causale(codcaus, "FA", true))
|
if (tipodoc == "TD01" && !check_causale(codcaus, "FA", true))
|
||||||
@ -868,7 +869,7 @@ int TPassive_mask::check_err() const
|
|||||||
{
|
{
|
||||||
if (row->starts_with("X"))
|
if (row->starts_with("X"))
|
||||||
{
|
{
|
||||||
TString codcaus(get_codcaus(row->get(cid2index(S_TIPODOCSDI)), row->get(cid2index(S_FORNITORE))));
|
TString codcaus(get_codcaus(row->get(cid2index(S_TIPODOCSDI)), row->get_long(cid2index(S_FORNITORE))));
|
||||||
if (codcaus.empty())
|
if (codcaus.empty())
|
||||||
return no_codcaus;
|
return no_codcaus;
|
||||||
if (TString(row->get(cid2index(S_FORNITORE))).empty())
|
if (TString(row->get(cid2index(S_FORNITORE))).empty())
|
||||||
|
@ -13,21 +13,16 @@
|
|||||||
#include "fp0700a.h"
|
#include "fp0700a.h"
|
||||||
#include "fp0100a.h"
|
#include "fp0100a.h"
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
// Globals
|
|
||||||
/////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
#define LEN_HFATT 20
|
|
||||||
#define LEN_BFATT 50
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////////////
|
||||||
// TPAR_mask
|
// TPAR_mask
|
||||||
/////////////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
class TPAR_mask : public TAutomask
|
class TPAR_mask : public TAutomask
|
||||||
{
|
{
|
||||||
|
TAssoc_array _causali;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
enum {_codnum, _tipodoc, _dastato, _astato, _tiposdi};
|
enum { _codnum, _tipodoc, _dastato, _astato, _tiposdi };
|
||||||
|
|
||||||
void set_filter_changed();
|
void set_filter_changed();
|
||||||
void set_pronto();
|
void set_pronto();
|
||||||
@ -50,35 +45,29 @@ protected:
|
|||||||
bool _enable_chiave_fixer;
|
bool _enable_chiave_fixer;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
TPAR_mask() : TAutomask("fp0700a"), _filter_changed(true), _enable_chiave_fixer(false)
|
const TAssoc_array & causali() const { return _causali; }
|
||||||
{
|
void save_all_fields();
|
||||||
disable(DLG_OK);
|
TPAR_mask();
|
||||||
disable(DLG_SAVEREC);
|
virtual ~TPAR_mask() {}
|
||||||
disable(DLG_FINDREC);
|
|
||||||
load_all_fields();
|
|
||||||
const TDate data_inizio = get_date_start_new_fatt();
|
|
||||||
|
|
||||||
}
|
|
||||||
void save_all_fields() const;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
void TPAR_mask::save_all_fields() const
|
TPAR_mask *__mask = nullptr;
|
||||||
|
|
||||||
|
void TPAR_mask::save_all_fields()
|
||||||
{
|
{
|
||||||
|
TSheet_field & scaus = sfield(F_CAUSALI_TIPO);
|
||||||
|
// Salvo le impostazioni
|
||||||
ini_set_string(CONFIG_DITTA, "fp", "dataini", get(F_DATAINI));
|
ini_set_string(CONFIG_DITTA, "fp", "dataini", get(F_DATAINI));
|
||||||
ini_set_string(CONFIG_DITTA, "fp", "dataend", get(F_DATAEND));
|
ini_set_string(CONFIG_DITTA, "fp", "dataend", get(F_DATAEND));
|
||||||
|
ini_set_string(CONFIG_DITTA, "fp", "TIPO_SDI", get(F_TIPO_SDI));
|
||||||
// Salvo lo sheet
|
// Salvo lo sheet
|
||||||
TFP_selected_docs selected_docs;
|
_causali.destroy();
|
||||||
selected_docs.save_sheet(sfield(F_CAUSALI_TIPO));
|
FOR_EACH_SHEET_ROW_LOOP(scaus, r)
|
||||||
|
{
|
||||||
// Salvo le impostazioni
|
const TString & codcaus = scaus.get_str_row_cell(r, S_COD_CAUS);
|
||||||
/*
|
ini_set_string(CONFIG_DITTA, "fp", "CAUSALE", codcaus, r);
|
||||||
set_esp_pri_empty(get_bool(F_SETDEFCOD));
|
_causali.add(codcaus);
|
||||||
set_send_all_rifs(get_bool(F_SENDALLRIFS));
|
}
|
||||||
set_esp_est(get_bool(F_SETCODEST));
|
|
||||||
set_esp_est_cod(get(F_VALCODEST));
|
|
||||||
*/
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void TPAR_mask::force_reload_sheet()
|
void TPAR_mask::force_reload_sheet()
|
||||||
@ -97,117 +86,71 @@ void TPAR_mask::load_all_fields()
|
|||||||
set(F_DATAEND, ini_get_string(CONFIG_DITTA, "fp", "dataend"));
|
set(F_DATAEND, ini_get_string(CONFIG_DITTA, "fp", "dataend"));
|
||||||
|
|
||||||
const TToken_string s_accepted_docs(ini_get_string(CONFIG_DITTA, "fp", "accepted_docs"), ';');
|
const TToken_string s_accepted_docs(ini_get_string(CONFIG_DITTA, "fp", "accepted_docs"), ';');
|
||||||
//
|
TSheet_field& scaus = sfield(F_CAUSALI_TIPO);
|
||||||
TSheet_field& sheet = sfield(F_CAUSALI_TIPO);
|
|
||||||
|
|
||||||
TFP_selected_regs selected_regs;
|
for (int i = 0;; i++)
|
||||||
|
|
||||||
if (selected_regs.has_selected_regs())
|
|
||||||
{
|
{
|
||||||
// Super nuova gestione super avanzata!
|
TString16 caus = ini_get_string(CONFIG_DITTA, "fp", "CAUSALE", "", i);
|
||||||
selected_regs.fill_sheet(sheet);
|
|
||||||
|
if (caus.full())
|
||||||
|
scaus.set_row_cell(S_COD_CAUS, caus);
|
||||||
|
else
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
else if(s_accepted_docs.full())
|
scaus.force_update();
|
||||||
{
|
set(F_TIPO_SDI, ini_get_string(CONFIG_DITTA, "fp", "TIPO_SDI"));
|
||||||
// Nuova gestione avanzata!
|
}
|
||||||
FOR_EACH_STR_TOKEN(s_accepted_docs, tok)
|
|
||||||
{
|
|
||||||
TToken_string& row = sheet.row(-1);
|
|
||||||
row.add(tok);
|
|
||||||
row.add(TTipo_documento(TToken_string(tok).get(1)).tipo_doc_sdi());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// Vecchia gestione ):
|
|
||||||
const TString& codnum = ini_get_string(CONFIG_DITTA, "fp", "codnum");
|
|
||||||
TToken_string tipidocs(ini_get_string(CONFIG_DITTA, "fp", "tipodocs"));
|
|
||||||
FOR_EACH_STR_TOKEN(tipidocs, tok)
|
|
||||||
{
|
|
||||||
TToken_string& row = sheet.row(-1);
|
|
||||||
row.add(codnum);
|
|
||||||
row.add(tok);
|
|
||||||
// Considero 1 e 9 come stati default?
|
|
||||||
row.add(1);
|
|
||||||
row.add(9);
|
|
||||||
row.add(TTipo_documento(tok).tipo_doc_sdi());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
sheet.force_update();
|
|
||||||
sheet.show();
|
|
||||||
|
|
||||||
/* DA FARE
|
|
||||||
set(F_SETDEFCOD, get_esp_pri_empty());
|
|
||||||
set(F_SENDALLRIFS, get_send_all_rifs());
|
|
||||||
set(F_SETCODEST, get_esp_est());
|
|
||||||
set(F_VALCODEST, get_esp_est_cod());
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
bool caus_filter(const TRelation* r)
|
||||||
|
{
|
||||||
|
return __mask->causali().is_key(r->lfile().get(MOV_CODCAUS));
|
||||||
}
|
}
|
||||||
|
|
||||||
void TPAR_mask::fill()
|
void TPAR_mask::fill()
|
||||||
{
|
{
|
||||||
// Salvo subito su file le impostazioni di esportazione, in fplib accedo ai file
|
|
||||||
save_all_fields();
|
|
||||||
|
|
||||||
TSheet_field& docs = sfield(F_DOCS);
|
|
||||||
TString_array& sht = docs.rows_array();
|
|
||||||
docs.hide();
|
|
||||||
|
|
||||||
sht.destroy();
|
|
||||||
|
|
||||||
const TDate dal = get(F_DATAINI);
|
const TDate dal = get(F_DATAINI);
|
||||||
const TDate al = get(F_DATAEND);
|
const TDate al = get(F_DATAEND);
|
||||||
TString filter_selected = get(F_DOCSEL);
|
TString filter_selected = get(F_REGSEL);
|
||||||
|
// Record di controllo per eventuali elaborazioni precedenti
|
||||||
|
TString hfatt, bfatt;
|
||||||
|
TPaf_record paf0100f("PAF0100F");
|
||||||
|
TSheet_field& regs = sfield(F_REGS);
|
||||||
|
TString query;
|
||||||
|
|
||||||
enable(DLG_OK, filter_selected.empty() || filter_selected == "E");
|
enable(DLG_OK, filter_selected.empty() || filter_selected == "E");
|
||||||
enable(DLG_SAVEREC, (is_f8() && filter_selected == "X") || filter_selected == "D");
|
enable(DLG_SAVEREC, (is_f8() && filter_selected == "X") || filter_selected == "D");
|
||||||
enable(DLG_FINDREC, filter_selected == "D");
|
enable(DLG_FINDREC, filter_selected == "D");
|
||||||
enable(DLG_PRINT, _enable_chiave_fixer && filter_selected.empty());
|
enable(DLG_PRINT, _enable_chiave_fixer && filter_selected.empty());
|
||||||
|
|
||||||
// Record di controllo per eventuali elaborazioni precedenti
|
query << "USE " << LF_MOV << " KEY 3 SELECT (BETWEEN(" << MOV_DATAREG << ","
|
||||||
TString hfatt(LEN_HFATT), bfatt(LEN_BFATT);
|
<< dal.date2ansi() << ',' << al.date2ansi() << "))&&(REG!=\"\")"
|
||||||
TPaf_record paf0100f("PAF0100F");
|
<< "\nFROM " << MOV_TIPO << "=C\nTO " << MOV_TIPO "=C";
|
||||||
|
|
||||||
TString query;
|
|
||||||
|
|
||||||
query << "USE 33 KEY 3 \n" <<
|
|
||||||
"SELECT 33.TIPOCF==\"C\" \n" <<
|
|
||||||
"JOIN 20 INTO TIPOCF==TIPOCF CODCF==CODCF \n" <<
|
|
||||||
"JOIN 17 TO 33 INTO TIPOCF==TIPOCF CODCF==CODCF \n" <<
|
|
||||||
"JOIN %TIP TO 33 ALIAS 400 INTO CODTAB==TIPODOC \n" <<
|
|
||||||
"FROM DATADOC=#DADATADOC \n" <<
|
|
||||||
"TO DATADOC=#ADATADOC";
|
|
||||||
|
|
||||||
TISAM_recordset rec(query);
|
TISAM_recordset rec(query);
|
||||||
|
|
||||||
rec.set_var("#DADATADOC", dal);
|
rec.set_filterfunction(caus_filter);
|
||||||
rec.set_var("#ADATADOC", al);
|
|
||||||
|
|
||||||
TProgress_monitor pi(rec.items(), nullptr);
|
TProgress_monitor pi(rec.items(), nullptr);
|
||||||
|
|
||||||
bool first, show, ask = !((show = (first = true)));
|
bool first, show, ask = !((show = (first = true)));
|
||||||
int fat_no_cod = 0;
|
int fat_no_cod = 0;
|
||||||
|
const TString16 tipodocsdi = get(F_TIPO_SDI);
|
||||||
|
const TDate data_inizio = get_date_start_new_fatt();
|
||||||
|
|
||||||
// Disabilito la colonna del codice ufficio
|
// Disabilito la colonna del codice ufficio
|
||||||
docs.enable_column(cid2index(S_UFFICIO), false);
|
regs.enable_column(cid2index(S_UFFICIO), false);
|
||||||
const TDate data_inizio = get_date_start_new_fatt();
|
regs.reset();
|
||||||
|
|
||||||
for (bool okc = rec.move_first(); okc; okc = rec.move_next())
|
for (bool okc = rec.move_first(); okc; okc = rec.move_next())
|
||||||
{
|
{
|
||||||
if (!pi.add_status())
|
if (!pi.add_status())
|
||||||
break;
|
break;
|
||||||
const TRectype& doc = rec.cursor()->curr();
|
const TRectype& mov = rec.cursor()->curr();
|
||||||
const TTipo_documento& td = cached_tipodoc(doc.get(DOC_TIPODOC));
|
const TCli_for & cli = cached_clifor(mov.get_char(MOV_TIPO), mov.get_long(MOV_CODCF));
|
||||||
|
|
||||||
// Controllo che la numerazione sia tra quelle giuste
|
|
||||||
|
|
||||||
// Controllo che il tipo documento sia OK
|
|
||||||
if(!check_doc_filter(doc))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
bool sent = false;
|
bool sent = false;
|
||||||
if (chiave_paf(doc, hfatt, bfatt))
|
|
||||||
|
if (chiave_paf_mov(mov, tipodocsdi, hfatt, bfatt))
|
||||||
{
|
{
|
||||||
if (paf0100f.search(nullptr, hfatt, bfatt) && paf0100f.sq_get("P1_GESTIONE") != " " && paf0100f.sq_get("P1_ERRINT") != "*")
|
if (paf0100f.search(nullptr, hfatt, bfatt) && paf0100f.sq_get("P1_GESTIONE") != " " && paf0100f.sq_get("P1_ERRINT") != "*")
|
||||||
{
|
{
|
||||||
@ -219,26 +162,17 @@ void TPAR_mask::fill()
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
TToken_string& row = docs.row(-1);
|
int r = regs.set_row_cell(S_SELECTED, sent);
|
||||||
row = sent ? " " : "X";
|
|
||||||
row.add(rec.get(DOC_ANNO).as_int(), 1);
|
|
||||||
row.add(rec.get(DOC_CODNUM).as_string());
|
|
||||||
row.add(rec.get(DOC_TIPODOC).as_string());
|
|
||||||
|
|
||||||
TString tipodoc = rec.get(DOC_TIPODOCSDI).as_string();
|
regs.set_row_cell(S_ANNO, rec.get_int(MOV_ANNOES), r);
|
||||||
|
regs.set_row_cell(S_NUMREG, rec.get_string(MOV_NUMREG), r);
|
||||||
if (tipodoc.blank())
|
regs.set_row_cell(S_DATAREG, rec.get(MOV_DATAREG).as_date(), r);
|
||||||
tipodoc = td.tipo_doc_sdi();
|
regs.set_row_cell(S_CLIENTE, rec.get_long(MOV_CODCF), r);
|
||||||
if (today <data_inizio && (tipodoc == "TD24" || tipodoc == "TD25" || tipodoc == "TD27"))
|
regs.set_row_cell(S_RAGSOC, cli.get(CLI_RAGSOC), r);
|
||||||
tipodoc = "TD01";
|
|
||||||
row.add(tipodoc);
|
// non c'è ? TString cod_ind_sped = rec.get(DOC_CODINDSP).as_string();
|
||||||
row.add(rec.get(DOC_NDOC).as_int());
|
TString rif = get_dest_sdi(rec.get_string(CFV_TIPOCF)[0], rec.get_long(CFV_CODCF), EMPTY_STRING);
|
||||||
row.add(rec.get(DOC_DATADOC).as_date());
|
|
||||||
row.add(rec.get(CFV_CODCF).as_int());
|
|
||||||
row.add(rec.get("20." CLI_RAGSOC).as_string());
|
|
||||||
|
|
||||||
TString cod_ind_sped = rec.get(DOC_CODINDSP).as_string();
|
|
||||||
TString rif = get_dest_sdi(rec.get(CFV_TIPOCF).as_string()[0], rec.get(CFV_CODCF).as_int(), cod_ind_sped);
|
|
||||||
// Se è ancora vuoto potrebbe essere estero
|
// Se è ancora vuoto potrebbe essere estero
|
||||||
if(rif.empty())
|
if(rif.empty())
|
||||||
{
|
{
|
||||||
@ -247,17 +181,17 @@ void TPAR_mask::fill()
|
|||||||
{
|
{
|
||||||
first = false;
|
first = false;
|
||||||
// Abilito la colonna del codice ufficio per segnalare l'errore
|
// Abilito la colonna del codice ufficio per segnalare l'errore
|
||||||
docs.enable_column(docs.cid2index(S_UFFICIO));
|
regs.enable_column(regs.cid2index(S_UFFICIO));
|
||||||
}
|
}
|
||||||
docs.set_back_and_fore_color(COLOR_RED, COLOR_WHITE, rec.current_row(), docs.cid2index(S_UFFICIO));
|
regs.set_back_and_fore_color(COLOR_RED, COLOR_WHITE, rec.current_row(), regs.cid2index(S_UFFICIO));
|
||||||
fat_no_cod++;
|
fat_no_cod++;
|
||||||
}
|
}
|
||||||
;
|
regs.set_row_cell(S_UFFICIO, rif, r);
|
||||||
row.add(rif);
|
regs.set_row_cell(S_RIFAMM, cli.vendite().get(CFV_PARIFAMM), r);
|
||||||
row.add(rec.get("17." CFV_PARIFAMM).as_string());
|
regs.set_row_cell(S_COFI, cli.get(CLI_COFI), r);
|
||||||
row.add(rec.get("20." CLI_COFI).as_string());
|
|
||||||
|
bool split = cli.get_bool("20." CLI_SPLITPAY);
|
||||||
|
|
||||||
bool split = rec.get("20." CLI_SPLITPAY).as_bool();
|
|
||||||
if (split)
|
if (split)
|
||||||
{
|
{
|
||||||
const long numreg = rec.get(DOC_NUMREG).as_int();
|
const long numreg = rec.get(DOC_NUMREG).as_int();
|
||||||
@ -267,16 +201,13 @@ void TPAR_mask::fill()
|
|||||||
split = is_split_payment(mov);
|
split = is_split_payment(mov);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
row.add(split ? "X" : " ");
|
regs.set_row_cell(S_SPLITPAY, split, r);
|
||||||
|
regs.set_row_cell(S_ATTACH, false, r); // verificare
|
||||||
const bool attach = !rec.get("COLL_GOLEM").is_empty();
|
regs.set_row_cell(S_ONLYGEN, true, r); // verificare
|
||||||
row.add(attach ? "X" : " ");
|
|
||||||
|
|
||||||
row.add(!td.invio_xml() ? "X" : "");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
docs.force_update();
|
regs.force_update();
|
||||||
docs.show();
|
regs.show();
|
||||||
|
|
||||||
if (fat_no_cod > 0)
|
if (fat_no_cod > 0)
|
||||||
warning_box("Sono state trovate una o più fatture senza codice destinatario né pec");
|
warning_box("Sono state trovate una o più fatture senza codice destinatario né pec");
|
||||||
@ -289,7 +220,7 @@ void TPAR_mask::set_filter_changed()
|
|||||||
|
|
||||||
void TPAR_mask::set_pronto()
|
void TPAR_mask::set_pronto()
|
||||||
{
|
{
|
||||||
TString_array& sht = sfield(F_DOCS).rows_array();
|
TString_array& sht = sfield(F_REGS).rows_array();
|
||||||
TProgress_monitor pi(sht.items(), "Esportazione Fatture");
|
TProgress_monitor pi(sht.items(), "Esportazione Fatture");
|
||||||
FOR_EACH_ARRAY_ROW(sht, r, riga)
|
FOR_EACH_ARRAY_ROW(sht, r, riga)
|
||||||
{
|
{
|
||||||
@ -302,7 +233,7 @@ void TPAR_mask::set_pronto()
|
|||||||
static TString campo_hfatt, campo_bfatt, query;
|
static TString campo_hfatt, campo_bfatt, query;
|
||||||
TDocumento doc('D', riga->get_int(xvtil_cid2index(S_ANNO)), EMPTY_STRING, riga->get_long(xvtil_cid2index(S_NUMREG)));
|
TDocumento doc('D', riga->get_int(xvtil_cid2index(S_ANNO)), EMPTY_STRING, riga->get_long(xvtil_cid2index(S_NUMREG)));
|
||||||
|
|
||||||
if (chiave_paf(doc, campo_hfatt, campo_bfatt))
|
if (chiave_paf_doc(doc, campo_hfatt, campo_bfatt))
|
||||||
{
|
{
|
||||||
// Come prima cosa controllo che effettivamente la chiave di questo doc sia in giro per il mondo
|
// Come prima cosa controllo che effettivamente la chiave di questo doc sia in giro per il mondo
|
||||||
query.cut(0) << "UPDATE PAF0100F SET P1_GESTIONE = 'P' WHERE P1_KEYHEADERFATT = '" << campo_hfatt << "' AND P1_KEYBODYFATT = '" << campo_bfatt << "'";
|
query.cut(0) << "UPDATE PAF0100F SET P1_GESTIONE = 'P' WHERE P1_KEYHEADERFATT = '" << campo_hfatt << "' AND P1_KEYBODYFATT = '" << campo_bfatt << "'";
|
||||||
@ -317,7 +248,7 @@ void TPAR_mask::set_pronto()
|
|||||||
|
|
||||||
void TPAR_mask::connect_keys()
|
void TPAR_mask::connect_keys()
|
||||||
{
|
{
|
||||||
TString_array& sht = sfield(F_DOCS).rows_array();
|
TString_array& sht = sfield(F_REGS).rows_array();
|
||||||
TLog_report legno("Allineamento chiavi documento");
|
TLog_report legno("Allineamento chiavi documento");
|
||||||
// Non sto a fare 8000 variabili, oggi mi sento a corto di Byte
|
// Non sto a fare 8000 variabili, oggi mi sento a corto di Byte
|
||||||
static TString msg_log;
|
static TString msg_log;
|
||||||
@ -340,7 +271,7 @@ void TPAR_mask::connect_keys()
|
|||||||
|
|
||||||
TDocumento doc('D', riga->get_int(xvtil_cid2index(S_ANNO)), EMPTY_STRING, riga->get_long(xvtil_cid2index(S_NUMREG)));
|
TDocumento doc('D', riga->get_int(xvtil_cid2index(S_ANNO)), EMPTY_STRING, riga->get_long(xvtil_cid2index(S_NUMREG)));
|
||||||
static TString campo_hfatt, campo_bfatt, query;
|
static TString campo_hfatt, campo_bfatt, query;
|
||||||
if (chiave_paf(doc, campo_hfatt, campo_bfatt))
|
if (chiave_paf_doc(doc, campo_hfatt, campo_bfatt))
|
||||||
{
|
{
|
||||||
// Come prima cosa controllo che effettivamente la chiave di questo doc sia in giro per il mondo
|
// Come prima cosa controllo che effettivamente la chiave di questo doc sia in giro per il mondo
|
||||||
query.cut(0) << "SELECT * FROM PAF0100F WHERE P1_KEYHEADERFATT = '" << campo_hfatt << "' AND P1_KEYBODYFATT = '" << campo_bfatt << "'";
|
query.cut(0) << "SELECT * FROM PAF0100F WHERE P1_KEYHEADERFATT = '" << campo_hfatt << "' AND P1_KEYBODYFATT = '" << campo_bfatt << "'";
|
||||||
@ -440,7 +371,7 @@ void TPAR_mask::export_paf()
|
|||||||
{
|
{
|
||||||
int ndocs = 0;
|
int ndocs = 0;
|
||||||
TLocalisamfile doc(LF_DOC);
|
TLocalisamfile doc(LF_DOC);
|
||||||
TString_array& sht = sfield(F_DOCS).rows_array();
|
TString_array& sht = sfield(F_REGS).rows_array();
|
||||||
TDoc_fp elab;
|
TDoc_fp elab;
|
||||||
|
|
||||||
//elab.set_cache_insert(true);
|
//elab.set_cache_insert(true);
|
||||||
@ -454,8 +385,8 @@ void TPAR_mask::export_paf()
|
|||||||
|
|
||||||
if (riga->starts_with("X"))
|
if (riga->starts_with("X"))
|
||||||
{
|
{
|
||||||
const int anno = riga->get_int(sfield(F_DOCS).cid2index(S_ANNO));
|
const int anno = riga->get_int(sfield(F_REGS).cid2index(S_ANNO));
|
||||||
const long nreg = riga->get_long(sfield(F_DOCS).cid2index(S_NUMREG));
|
const long nreg = riga->get_long(sfield(F_REGS).cid2index(S_NUMREG));
|
||||||
const TDoc_key key(anno, EMPTY_STRING, nreg); //da fare
|
const TDoc_key key(anno, EMPTY_STRING, nreg); //da fare
|
||||||
|
|
||||||
// Verifico che il codice sdi nello sheet sia lo stesso sulla testata del documento in caso contrario lo aggiorno
|
// Verifico che il codice sdi nello sheet sia lo stesso sulla testata del documento in caso contrario lo aggiorno
|
||||||
@ -502,7 +433,7 @@ bool TPAR_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
|||||||
case F_DATAEND:
|
case F_DATAEND:
|
||||||
if (e == fe_init)
|
if (e == fe_init)
|
||||||
o.set(TDate(TODAY));
|
o.set(TDate(TODAY));
|
||||||
case F_DOCS:
|
case F_REGS:
|
||||||
if (e == se_query_add || e == se_query_del)
|
if (e == se_query_add || e == se_query_del)
|
||||||
return false;
|
return false;
|
||||||
break;
|
break;
|
||||||
@ -513,24 +444,19 @@ bool TPAR_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
|||||||
case DLG_USER:
|
case DLG_USER:
|
||||||
if (e == fe_button && jolly > 0)
|
if (e == fe_button && jolly > 0)
|
||||||
{
|
{
|
||||||
TSheet_field& docs = sfield(F_DOCS);
|
TSheet_field& regs = sfield(F_REGS);
|
||||||
TToken_string& row = docs.row(docs.selected());
|
TToken_string& row = regs.row(regs.selected());
|
||||||
TRectype doc(LF_DOC);
|
// Salvo subito su file le impostazioni di esportazione, in fplib accedo ai file
|
||||||
doc.put(DOC_PROVV, 'D');
|
save_all_fields();
|
||||||
doc.put(DOC_ANNO, row.get(1));
|
fill();
|
||||||
doc.put(DOC_CODNUM, row.get(2));
|
|
||||||
doc.put(DOC_TIPODOC, row.get(3));
|
|
||||||
doc.put(DOC_NDOC, row.get(5));
|
|
||||||
if (doc.edit(LF_DOC, "", "ve0")) // Perchè prima andava senza dovergli mettere nulla?
|
|
||||||
fill();
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case DLG_ALL:
|
case DLG_ALL:
|
||||||
{
|
{
|
||||||
if (e == fe_button)
|
if (e == fe_button)
|
||||||
{
|
{
|
||||||
TSheet_field& docs = sfield(F_DOCS);
|
TSheet_field& regs = sfield(F_REGS);
|
||||||
TString_array& sht = docs.rows_array();
|
TString_array& sht = regs.rows_array();
|
||||||
const int items = sht.items();
|
const int items = sht.items();
|
||||||
|
|
||||||
if (items > 0)
|
if (items > 0)
|
||||||
@ -538,7 +464,7 @@ bool TPAR_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
|||||||
const TString4 select = *(sht.row(0).get(0)) == 'X' ? "" : "X";
|
const TString4 select = *(sht.row(0).get(0)) == 'X' ? "" : "X";
|
||||||
for (int i = 0; i < items; i++)
|
for (int i = 0; i < items; i++)
|
||||||
sht.row(i).add(select, 0);
|
sht.row(i).add(select, 0);
|
||||||
docs.force_update();
|
regs.force_update();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -580,7 +506,7 @@ void TPAR_mask::next_page(int p)
|
|||||||
{
|
{
|
||||||
if ((ok = _filter_changed = check_full_fields()))
|
if ((ok = _filter_changed = check_full_fields()))
|
||||||
{
|
{
|
||||||
TSheet_field& sf = sfield(F_DOCS);
|
save_all_fields();
|
||||||
fill();
|
fill();
|
||||||
_filter_changed = false;
|
_filter_changed = false;
|
||||||
}
|
}
|
||||||
@ -605,7 +531,7 @@ bool TPAR_mask::on_key(const KEY key)
|
|||||||
|
|
||||||
bool TPAR_mask::check_not_empty()
|
bool TPAR_mask::check_not_empty()
|
||||||
{
|
{
|
||||||
TSheet_field& sheet = sfield(F_DOCS);
|
TSheet_field& sheet = sfield(F_REGS);
|
||||||
TString msg;
|
TString msg;
|
||||||
|
|
||||||
if (sheet.empty())
|
if (sheet.empty())
|
||||||
@ -637,8 +563,10 @@ bool TPAR_mask::check_doc_filter(const TDocumentoEsteso& d) const
|
|||||||
const TString& tipodoc = d.get(DOC_TIPODOC);
|
const TString& tipodoc = d.get(DOC_TIPODOC);
|
||||||
const char stato = d.stato();
|
const char stato = d.stato();
|
||||||
const TTipo_documento& td = cached_tipodoc(d.get(DOC_TIPODOC));
|
const TTipo_documento& td = cached_tipodoc(d.get(DOC_TIPODOC));
|
||||||
|
TSheet_field & scaus = sfield(F_CAUSALI_TIPO);
|
||||||
|
|
||||||
// Mi precarico la tabella dei documenti scelti
|
// Mi precarico la tabella dei documenti scelti
|
||||||
FOR_EACH_SHEET_ROW(sfield(F_CAUSALI_TIPO), nr, row)
|
FOR_EACH_SHEET_ROW(scaus, nr, row)
|
||||||
{
|
{
|
||||||
if (codnum.compare(row->get(_codnum)) == 0 && // Codice numerazione
|
if (codnum.compare(row->get(_codnum)) == 0 && // Codice numerazione
|
||||||
tipodoc.compare(row->get(_tipodoc)) == 0 && // Tipo documento
|
tipodoc.compare(row->get(_tipodoc)) == 0 && // Tipo documento
|
||||||
@ -653,78 +581,78 @@ bool TPAR_mask::check_doc_filter(const TDocumentoEsteso& d) const
|
|||||||
void TPAR_mask::set_err_paf()
|
void TPAR_mask::set_err_paf()
|
||||||
{
|
{
|
||||||
// Vado a riportare sui paf l'errore
|
// Vado a riportare sui paf l'errore
|
||||||
TSheet_field& sfld = sfield(F_DOCS);
|
TSheet_field& sfld = sfield(F_REGS);
|
||||||
TString_array& sht = sfld.rows_array();
|
TProgress_monitor pi(sfld.items(), "Cambio stato fatture");
|
||||||
TLocalisamfile fdoc(LF_DOC);
|
const TString tipodocsdi = get(F_TIPO_SDI);
|
||||||
if (!sht.empty())
|
|
||||||
|
FOR_EACH_SHEET_ROW_LOOP(sfld, r)
|
||||||
{
|
{
|
||||||
TProgress_monitor pi(sht.items(), "Cambio stato fatture");
|
if (!pi.add_status())
|
||||||
|
break;
|
||||||
|
|
||||||
FOR_EACH_ARRAY_ROW(sht, r, riga)
|
if (sfld.get_bool_row_cell(r, S_SELECTED))
|
||||||
{
|
{
|
||||||
if (!pi.add_status())
|
// Ricontrollo che la fattura sia presente in Campo prima di cambiare stato
|
||||||
break;
|
long nreg = sfld.get_long_row_cell(r, S_NUMREG);
|
||||||
|
const TRectype & mov = cache().get(LF_MOV, nreg);
|
||||||
|
TString hfatt, bfatt;
|
||||||
|
TPaf_record paf0100f("PAF0100F");
|
||||||
|
|
||||||
if (riga->starts_with("X"))
|
if (chiave_paf_mov(mov, tipodocsdi, hfatt, bfatt) && paf0100f.search(nullptr, hfatt, bfatt))
|
||||||
{
|
{
|
||||||
const int anno = riga->get_int(sfield(F_DOCS).cid2index(S_ANNO));
|
TString query;
|
||||||
const long nreg = riga->get_long(sfield(F_DOCS).cid2index(S_NUMREG));
|
query <<
|
||||||
const TDoc_key key(anno, EMPTY_STRING, nreg);
|
"UPDATE PAF0100F SET P1_GESTIONE = 'E', P1_KEYPRGINVIO = 'DELETED' WHERE P1_KEYHEADERFATT = '" << hfatt << "' AND P1_KEYBODYFATT = '" << bfatt << "';\n" <<
|
||||||
// Ricontrollo che la fattura sia presente in Campo prima di cambiare stato
|
"UPDATE PAF0200F SET P2_GESTIONE = 'E', P2_KEYPRGINVIO = 'DELETED' WHERE P2_KEYHEADERFATT = '" << hfatt << "' AND P2_KEYBODYFATT = '" << bfatt << "';\n" <<
|
||||||
fdoc.zero();
|
"UPDATE PAF0400F SET P4_GESTIONE = 'E', P4_KEYPRGINVIO = 'DELETED' WHERE P4_KEYHEADERFATT = '" << hfatt << "' AND P4_KEYBODYFATT = '" << bfatt << "';\n" <<
|
||||||
fdoc.put(DOC_PROVV, key.provv());
|
"UPDATE PAF0700F SET P7_GESTIONE = 'E', P7_KEYPRGINVIO = 'DELETED' WHERE P7_KEYHEADERFATT = '" << hfatt << "' AND P7_KEYBODYFATT = '" << bfatt << "';\n" <<
|
||||||
fdoc.put(DOC_ANNO, key.anno());
|
"UPDATE PAF0800F SET P8_GESTIONE = 'E', P8_KEYPRGINVIO = 'DELETED' WHERE P8_KEYHEADERFATT = '" << hfatt << "' AND P8_KEYBODYFATT = '" << bfatt << "';\n" <<
|
||||||
fdoc.put(DOC_CODNUM, key.codnum());
|
"UPDATE PAF1000F SET P0_GESTIONE = 'E', P0_KEYPRGINVIO = 'DELETED' WHERE P0_KEYHEADERFATT = '" << hfatt << "' AND P0_KEYBODYFATT = '" << bfatt << "';\n" <<
|
||||||
fdoc.put(DOC_NDOC, key.ndoc());
|
"UPDATE PAF1100F SET PA_GESTIONE = 'E', PA_KEYPRGINVIO = 'DELETED' WHERE PA_KEYHEADERFATT = '" << hfatt << "' AND PA_KEYBODYFATT = '" << bfatt << "';\n" <<
|
||||||
|
"UPDATE PAF1200F SET PB_GESTIONE = 'E', PB_KEYPRGINVIO = 'DELETED' WHERE PB_KEYHEADERFATT = '" << hfatt << "' AND PB_KEYBODYFATT = '" << bfatt << "';\n" <<
|
||||||
TString hfatt, bfatt;
|
"UPDATE PAF1600F SET PF_GESTIONE = 'E', PF_KEYPRGINVIO = 'DELETED' WHERE PF_KEYHEADERFATT = '" << hfatt << "' AND PF_KEYBODYFATT = '" << bfatt << "';\n" <<
|
||||||
TPaf_record paf0100f("PAF0100F");
|
"UPDATE PAF1700F SET PG_GESTIONE = 'E', PG_KEYPRGINVIO = 'DELETED' WHERE PG_KEYHEADERFATT = '" << hfatt << "' AND PG_KEYBODYFATT = '" << bfatt << "';\n" <<
|
||||||
if (fdoc.read() == NOERR && chiave_paf(fdoc.curr(), hfatt, bfatt) && paf0100f.search(nullptr, hfatt, bfatt))
|
"UPDATE PAF1800F SET PI_GESTIONE = 'E', PI_KEYPRGINVIO = 'DELETED' WHERE PI_KEYHEADERFATT = '" << hfatt << "' AND PI_KEYBODYFATT = '" << bfatt << "';\n" <<
|
||||||
|
"UPDATE PAF1900F SET PY_GESTIONE = 'E', PY_KEYPRGINVIO = 'DELETED' WHERE PY_KEYHEADERFATT = '" << hfatt << "' AND PY_KEYBODYFATT = '" << bfatt << "';\n" <<
|
||||||
|
"UPDATE PAF2000F SET PJ_GESTIONE = 'E', PJ_KEYPRGINVIO = 'DELETED' WHERE PJ_KEYHEADERFATT = '" << hfatt << "' AND PJ_KEYBODYFATT = '" << bfatt << "';\n" <<
|
||||||
|
"UPDATE PAF2100F SET PK_GESTIONE = 'E', PK_KEYPRGINVIO = 'DELETED' WHERE PK_KEYHEADERFATT = '" << hfatt << "' AND PK_KEYBODYFATT = '" << bfatt << "';\n" <<
|
||||||
|
"UPDATE PAF2200F SET PL_GESTIONE = 'E', PL_KEYPRGINVIO = 'DELETED' WHERE PL_KEYHEADERFATT = '" << hfatt << "' AND PL_KEYBODYFATT = '" << bfatt << "';\n" <<
|
||||||
|
"UPDATE PAF2400F SET PN_GESTIONE = 'E', PN_KEYPRGINVIO = 'DELETED' WHERE PN_KEYHEADERFATT = '" << hfatt << "' AND PN_KEYBODYFATT = '" << bfatt << "';\n" <<
|
||||||
|
"UPDATE PAF2500F SET PO_GESTIONE = 'E', PO_KEYPRGINVIO = 'DELETED' WHERE PO_KEYHEADERFATT = '" << hfatt << "' AND PO_KEYBODYFATT = '" << bfatt << "';\n" <<
|
||||||
|
"UPDATE PAF2600F SET PP_GESTIONE = 'E', PP_KEYPRGINVIO = 'DELETED' WHERE PP_KEYHEADERFATT = '" << hfatt << "' AND PP_KEYBODYFATT = '" << bfatt << "';\n" <<
|
||||||
|
"UPDATE PAF2700F SET PQ_GESTIONE = 'E', PQ_KEYPRGINVIO = 'DELETED' WHERE PQ_KEYHEADERFATT = '" << hfatt << "' AND PQ_KEYBODYFATT = '" << bfatt << "';\n" <<
|
||||||
|
"UPDATE PAF3000F SET PT_GESTIONE = 'E', PT_KEYPRGINVIO = 'DELETED' WHERE PT_KEYHEADERFATT = '" << hfatt << "' AND PT_KEYBODYFATT = '" << bfatt << "';\n" <<
|
||||||
|
"UPDATE PAF3200F SET PU_GESTIONE = 'E', PU_KEYPRGINVIO = 'DELETED' WHERE PU_KEYHEADERFATT = '" << hfatt << "' AND PU_KEYBODYFATT = '" << bfatt << "';\n" <<
|
||||||
|
// PAFW3 non ha il flag di gestione
|
||||||
|
"UPDATE PAFW300F SET PW_KEYPRGINVIO = 'DELETED' WHERE PW_KEYHEADERFATT = '" << hfatt << "' AND PW_KEYBODYFATT = '" << bfatt << "';\n";
|
||||||
|
if(!fp_db().sq_set_exec(query))
|
||||||
{
|
{
|
||||||
static TString query;
|
TString err = "Impossibile salvare la regolarizzazione "; err << nreg << "\nVerrà saltata.";
|
||||||
query.cut(0) <<
|
|
||||||
"UPDATE PAF0100F SET P1_GESTIONE = 'E', P1_KEYPRGINVIO = 'DELETED' WHERE P1_KEYHEADERFATT = '" << hfatt << "' AND P1_KEYBODYFATT = '" << bfatt << "';\n" <<
|
|
||||||
"UPDATE PAF0200F SET P2_GESTIONE = 'E', P2_KEYPRGINVIO = 'DELETED' WHERE P2_KEYHEADERFATT = '" << hfatt << "' AND P2_KEYBODYFATT = '" << bfatt << "';\n" <<
|
|
||||||
"UPDATE PAF0400F SET P4_GESTIONE = 'E', P4_KEYPRGINVIO = 'DELETED' WHERE P4_KEYHEADERFATT = '" << hfatt << "' AND P4_KEYBODYFATT = '" << bfatt << "';\n" <<
|
|
||||||
"UPDATE PAF0700F SET P7_GESTIONE = 'E', P7_KEYPRGINVIO = 'DELETED' WHERE P7_KEYHEADERFATT = '" << hfatt << "' AND P7_KEYBODYFATT = '" << bfatt << "';\n" <<
|
|
||||||
"UPDATE PAF0800F SET P8_GESTIONE = 'E', P8_KEYPRGINVIO = 'DELETED' WHERE P8_KEYHEADERFATT = '" << hfatt << "' AND P8_KEYBODYFATT = '" << bfatt << "';\n" <<
|
|
||||||
"UPDATE PAF1000F SET P0_GESTIONE = 'E', P0_KEYPRGINVIO = 'DELETED' WHERE P0_KEYHEADERFATT = '" << hfatt << "' AND P0_KEYBODYFATT = '" << bfatt << "';\n" <<
|
|
||||||
"UPDATE PAF1100F SET PA_GESTIONE = 'E', PA_KEYPRGINVIO = 'DELETED' WHERE PA_KEYHEADERFATT = '" << hfatt << "' AND PA_KEYBODYFATT = '" << bfatt << "';\n" <<
|
|
||||||
"UPDATE PAF1200F SET PB_GESTIONE = 'E', PB_KEYPRGINVIO = 'DELETED' WHERE PB_KEYHEADERFATT = '" << hfatt << "' AND PB_KEYBODYFATT = '" << bfatt << "';\n" <<
|
|
||||||
"UPDATE PAF1600F SET PF_GESTIONE = 'E', PF_KEYPRGINVIO = 'DELETED' WHERE PF_KEYHEADERFATT = '" << hfatt << "' AND PF_KEYBODYFATT = '" << bfatt << "';\n" <<
|
|
||||||
"UPDATE PAF1700F SET PG_GESTIONE = 'E', PG_KEYPRGINVIO = 'DELETED' WHERE PG_KEYHEADERFATT = '" << hfatt << "' AND PG_KEYBODYFATT = '" << bfatt << "';\n" <<
|
|
||||||
"UPDATE PAF1800F SET PI_GESTIONE = 'E', PI_KEYPRGINVIO = 'DELETED' WHERE PI_KEYHEADERFATT = '" << hfatt << "' AND PI_KEYBODYFATT = '" << bfatt << "';\n" <<
|
|
||||||
"UPDATE PAF1900F SET PY_GESTIONE = 'E', PY_KEYPRGINVIO = 'DELETED' WHERE PY_KEYHEADERFATT = '" << hfatt << "' AND PY_KEYBODYFATT = '" << bfatt << "';\n" <<
|
|
||||||
"UPDATE PAF2000F SET PJ_GESTIONE = 'E', PJ_KEYPRGINVIO = 'DELETED' WHERE PJ_KEYHEADERFATT = '" << hfatt << "' AND PJ_KEYBODYFATT = '" << bfatt << "';\n" <<
|
|
||||||
"UPDATE PAF2100F SET PK_GESTIONE = 'E', PK_KEYPRGINVIO = 'DELETED' WHERE PK_KEYHEADERFATT = '" << hfatt << "' AND PK_KEYBODYFATT = '" << bfatt << "';\n" <<
|
|
||||||
"UPDATE PAF2200F SET PL_GESTIONE = 'E', PL_KEYPRGINVIO = 'DELETED' WHERE PL_KEYHEADERFATT = '" << hfatt << "' AND PL_KEYBODYFATT = '" << bfatt << "';\n" <<
|
|
||||||
"UPDATE PAF2400F SET PN_GESTIONE = 'E', PN_KEYPRGINVIO = 'DELETED' WHERE PN_KEYHEADERFATT = '" << hfatt << "' AND PN_KEYBODYFATT = '" << bfatt << "';\n" <<
|
|
||||||
"UPDATE PAF2500F SET PO_GESTIONE = 'E', PO_KEYPRGINVIO = 'DELETED' WHERE PO_KEYHEADERFATT = '" << hfatt << "' AND PO_KEYBODYFATT = '" << bfatt << "';\n" <<
|
|
||||||
"UPDATE PAF2600F SET PP_GESTIONE = 'E', PP_KEYPRGINVIO = 'DELETED' WHERE PP_KEYHEADERFATT = '" << hfatt << "' AND PP_KEYBODYFATT = '" << bfatt << "';\n" <<
|
|
||||||
"UPDATE PAF2700F SET PQ_GESTIONE = 'E', PQ_KEYPRGINVIO = 'DELETED' WHERE PQ_KEYHEADERFATT = '" << hfatt << "' AND PQ_KEYBODYFATT = '" << bfatt << "';\n" <<
|
|
||||||
"UPDATE PAF3000F SET PT_GESTIONE = 'E', PT_KEYPRGINVIO = 'DELETED' WHERE PT_KEYHEADERFATT = '" << hfatt << "' AND PT_KEYBODYFATT = '" << bfatt << "';\n" <<
|
|
||||||
"UPDATE PAF3200F SET PU_GESTIONE = 'E', PU_KEYPRGINVIO = 'DELETED' WHERE PU_KEYHEADERFATT = '" << hfatt << "' AND PU_KEYBODYFATT = '" << bfatt << "';\n" <<
|
|
||||||
// PAFW3 non ha il flag di gestione
|
|
||||||
"UPDATE PAFW300F SET PW_KEYPRGINVIO = 'DELETED' WHERE PW_KEYHEADERFATT = '" << hfatt << "' AND PW_KEYBODYFATT = '" << bfatt << "';\n";
|
|
||||||
if(!fp_db().sq_set_exec(query))
|
|
||||||
{
|
|
||||||
TString err = "Impossibile salvare la fattura "; err << anno << " " << " " << nreg << "\nVerrà saltata.";
|
|
||||||
error_box(err);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
TString err = "Impossibile trovare la fattura "; err << anno << " " << " " << nreg << "\nVerrà saltata.";
|
|
||||||
error_box(err);
|
error_box(err);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
TString err = "Impossibile trovare la fattura "; err << nreg << "\nVerrà saltata.";
|
||||||
|
error_box(err);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
fp_db().sq_commit();
|
|
||||||
}
|
}
|
||||||
|
fp_db().sq_commit();
|
||||||
force_reload_sheet();
|
force_reload_sheet();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TPAR_mask::TPAR_mask() : TAutomask("fp0700a"), _filter_changed(true), _enable_chiave_fixer(false)
|
||||||
|
{
|
||||||
|
disable(DLG_OK);
|
||||||
|
disable(DLG_SAVEREC);
|
||||||
|
disable(DLG_FINDREC);
|
||||||
|
load_all_fields();
|
||||||
|
const TDate data_inizio = get_date_start_new_fatt();
|
||||||
|
__mask = this;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////////////
|
||||||
// TReg2Paf
|
// TReg2Paf
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
#define F_DATAINI 401
|
#define F_DATAINI 401
|
||||||
#define F_DATAEND 402
|
#define F_DATAEND 402
|
||||||
#define F_DOCSEL 403
|
#define F_REGSEL 403
|
||||||
#define F_CAUSALI_TIPO 404
|
#define F_CAUSALI_TIPO 404
|
||||||
#define F_TIPO_SDI 405
|
#define F_TIPO_SDI 405
|
||||||
#define F_DOCS 406
|
#define F_REGS 406
|
||||||
#define START_MASK F_DATAINI
|
#define START_MASK F_DATAINI
|
||||||
#define END_MASK F_DOCS
|
#define END_MASK F_REGS
|
||||||
|
|
||||||
|
|
||||||
#define S_COD_CAUS 101
|
#define S_COD_CAUS 101
|
||||||
|
@ -62,11 +62,14 @@ BEGIN
|
|||||||
CHECKTYPE REQUIRED
|
CHECKTYPE REQUIRED
|
||||||
END
|
END
|
||||||
|
|
||||||
RADIOBUTTON F_DOCSEL 7 80
|
RADIOBUTTON F_REGSEL 7 80
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 3 "Documenti da visualizzare"
|
PROMPT 1 3 "Registrazioni da visualizzare"
|
||||||
ITEM "P|Provvisori"
|
ITEM "|Da inviare"
|
||||||
ITEM "D|Definitivi"
|
ITEM "X|XML Generato"
|
||||||
|
ITEM "N|Notificato"
|
||||||
|
ITEM "E|In errore"
|
||||||
|
ITEM "D|Diag."
|
||||||
FLAGS "Z"
|
FLAGS "Z"
|
||||||
END
|
END
|
||||||
|
|
||||||
@ -97,7 +100,7 @@ END
|
|||||||
ENDPAGE
|
ENDPAGE
|
||||||
PAGE "Elenco Regolarizzazioni" 0 2 0 0
|
PAGE "Elenco Regolarizzazioni" 0 2 0 0
|
||||||
|
|
||||||
SPREADSHEET F_DOCS
|
SPREADSHEET F_REGS
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 0 2 ""
|
PROMPT 0 2 ""
|
||||||
ITEM "@1"
|
ITEM "@1"
|
||||||
|
@ -35,8 +35,9 @@ TString& complete_num_fp(const TCodice_numerazione& codnum, const int numdoc);
|
|||||||
|
|
||||||
|
|
||||||
// Genera la chiave per i paf
|
// Genera la chiave per i paf
|
||||||
bool chiave_paf(const TDocumento& doc, TString& hfatt, TString& bfatt);
|
bool chiave_paf_mov(const TRectype& mov, const TString & tipodoc, TString& hfatt, TString& bfatt);
|
||||||
bool chiave_paf(const TRectype& doc, TString& hfatt, TString& bfatt);
|
bool chiave_paf_doc(const TDocumento& doc, TString& hfatt, TString& bfatt);
|
||||||
|
bool chiave_paf_doc(const TRectype& doc, TString& hfatt, TString& bfatt);
|
||||||
// Ritorna cod sdi, pec o vuoto. Chiama get_coddest()
|
// Ritorna cod sdi, pec o vuoto. Chiama get_coddest()
|
||||||
TString get_dest_sdi(char tipocf, long codcf, const TString& cod_ind_sped);
|
TString get_dest_sdi(char tipocf, long codcf, const TString& cod_ind_sped);
|
||||||
// Valorizza codice sdi e pec in base alle configurazioni del monitor
|
// Valorizza codice sdi e pec in base alle configurazioni del monitor
|
||||||
@ -421,9 +422,8 @@ inline TFP_custom_cache& cached_custom_fp()
|
|||||||
return *carmelo;
|
return *carmelo;
|
||||||
}
|
}
|
||||||
|
|
||||||
class TFP_expression : public TObject
|
class TFP_expression : public TObject // ma perchè non derivano da expre documento cazzone ? se sono più espressioni prima si separa la token string
|
||||||
{
|
{
|
||||||
private:
|
|
||||||
enum TFP_operator { error, eq, neq, gt, ls, gteq, lseq, and, or };
|
enum TFP_operator { error, eq, neq, gt, ls, gteq, lseq, and, or };
|
||||||
|
|
||||||
// Etrattori
|
// Etrattori
|
||||||
@ -445,8 +445,8 @@ public:
|
|||||||
static bool check_condition(const TString& cond, TRiga_documento& rdoc);
|
static bool check_condition(const TString& cond, TRiga_documento& rdoc);
|
||||||
static bool check_condition(const TString& cond, TDocumento& doc) { return check_condition(cond, doc[1]); }
|
static bool check_condition(const TString& cond, TDocumento& doc) { return check_condition(cond, doc[1]); }
|
||||||
|
|
||||||
TFP_expression() = default;
|
TFP_expression() {};
|
||||||
virtual ~TFP_expression() = default;
|
virtual ~TFP_expression() {};
|
||||||
};
|
};
|
||||||
|
|
||||||
// Gestione PAF
|
// Gestione PAF
|
||||||
|
@ -159,7 +159,27 @@ TString& complete_num_fp(const TCodice_numerazione& codnum, const int numdoc)
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
// Crea la coppia di chiavi per il db PAF a partire da un documento vero e proprio
|
// Crea la coppia di chiavi per il db PAF a partire da un documento vero e proprio
|
||||||
bool chiave_paf(const TDocumento& doc, TString& hfatt, TString& bfatt)
|
bool chiave_paf_mov(const TRectype& mov, const TString & tipodoc, TString& hfatt, TString& bfatt)
|
||||||
|
{
|
||||||
|
TCli_for cli(mov.get_char(MOV_TIPO), mov.get_long(MOV_CODCF));
|
||||||
|
hfatt.cut(0);
|
||||||
|
if (cli.is_occasionale())
|
||||||
|
hfatt << "O" << mov.get(MOV_OCFPI);
|
||||||
|
else
|
||||||
|
hfatt << cli.tipo() << cli.codice();
|
||||||
|
CHECK(hfatt.full(), "Destinatario fattura P.A. non valido");
|
||||||
|
//20180101_TD01_123456712345671234567
|
||||||
|
|
||||||
|
TString numdoc = mov.get(MOV_NUMDOC);
|
||||||
|
|
||||||
|
numdoc.lpad(mov.length(DOC_NDOC), '0');
|
||||||
|
bfatt = mov.get_date(MOV_DATAREG).date2ansi();
|
||||||
|
bfatt << '_' << tipodoc << '_' << numdoc;
|
||||||
|
return hfatt.full() && bfatt.full();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool chiave_paf_doc(const TDocumento& doc, TString& hfatt, TString& bfatt)
|
||||||
{
|
{
|
||||||
hfatt.cut(0);
|
hfatt.cut(0);
|
||||||
if (doc.clifor().is_occasionale())
|
if (doc.clifor().is_occasionale())
|
||||||
@ -174,10 +194,10 @@ bool chiave_paf(const TDocumento& doc, TString& hfatt, TString& bfatt)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Crea la coppia di chiavi per il db PAF a partire da un semplice record di testata documento
|
// Crea la coppia di chiavi per il db PAF a partire da un semplice record di testata documento
|
||||||
bool chiave_paf(const TRectype& doc, TString& hfatt, TString& bfatt)
|
bool chiave_paf_doc(const TRectype& doc, TString& hfatt, TString& bfatt)
|
||||||
{
|
{
|
||||||
const TDocumento d(doc);
|
const TDocumento d(doc);
|
||||||
chiave_paf(d, hfatt, bfatt);
|
chiave_paf_doc(d, hfatt, bfatt);
|
||||||
return hfatt.full();
|
return hfatt.full();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1015,7 +1035,7 @@ bool TDoc_fp::initialize(TDocumentoEsteso& doc)
|
|||||||
// Paese del documento
|
// Paese del documento
|
||||||
_paese = "IT";
|
_paese = "IT";
|
||||||
_has_bolla = false;
|
_has_bolla = false;
|
||||||
if (!chiave_paf(doc, _hfatt, _bfatt))
|
if (!chiave_paf_doc(doc, _hfatt, _bfatt))
|
||||||
return false;
|
return false;
|
||||||
// Preparo il log
|
// Preparo il log
|
||||||
log(-1, _bfatt);
|
log(-1, _bfatt);
|
||||||
@ -1838,36 +1858,34 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
|
|||||||
rifs.trim();
|
rifs.trim();
|
||||||
if (rifs == "0")
|
if (rifs == "0")
|
||||||
rifs.cut(0);
|
rifs.cut(0);
|
||||||
int pos = rifs.find(" - ");
|
|
||||||
int len = rifs.len();
|
|
||||||
long numlinea = 0;
|
|
||||||
|
|
||||||
if (len > 0 && pos < 0)
|
int len = rifs.len();
|
||||||
pos = len;
|
|
||||||
|
|
||||||
for(; pos >= 0;)
|
if (len > 0)
|
||||||
{
|
{
|
||||||
TToken_string rif(rifs.left(pos), ' ');
|
rifs.replace(" - ", "|");
|
||||||
|
|
||||||
// <DatiDDT> //
|
long numlinea = 0;
|
||||||
reset(paf1600f);
|
TToken_string elab_rifs(rifs);
|
||||||
temp = rif.get();
|
|
||||||
paf1600f.set("PF_NUMDDDT", temp);
|
|
||||||
temp = rif.get();
|
|
||||||
|
|
||||||
TDate dataddt(atoi(temp.left(2)), atoi(temp.mid(3,2)),atoi( temp.right(2)));
|
FOR_EACH_STR_TOKEN(elab_rifs, str)
|
||||||
|
{
|
||||||
paf1600f.set("PF_DATADDT", dataddt);
|
TToken_string rif(str, ' ');
|
||||||
paf1600f.set("PF_GESTIONE", "D");
|
|
||||||
paf1600f.set("PF_RIFNUMLINEA", numlinea++);
|
// <DatiDDT> //
|
||||||
ok &= insert(paf1600f);
|
reset(paf1600f);
|
||||||
rifs.ltrim(pos + 3);
|
temp = rif.get();
|
||||||
pos = rifs.find(" - ");
|
paf1600f.set("PF_NUMDDDT", temp);
|
||||||
len = rifs.len();
|
temp = rif.get();
|
||||||
if (len > 0 && pos < 0)
|
|
||||||
pos = len;
|
TDate dataddt(atoi(temp.left(2)), atoi(temp.mid(3, 2)), atoi(temp.right(2)));
|
||||||
// </DatiDDT>
|
|
||||||
}
|
paf1600f.set("PF_DATADDT", dataddt);
|
||||||
|
paf1600f.set("PF_GESTIONE", "D");
|
||||||
|
paf1600f.set("PF_RIFNUMLINEA", numlinea++);
|
||||||
|
ok &= insert(paf1600f); // </DatiDDT>
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
FOR_EACH_PHYSICAL_FPRDOC(doc, r, rdoc)
|
FOR_EACH_PHYSICAL_FPRDOC(doc, r, rdoc)
|
||||||
{
|
{
|
||||||
|
@ -91,7 +91,7 @@ bool TFp_mail_sender::send(const TString& msg)
|
|||||||
TPaf_record paf0100f("PAF0100F");
|
TPaf_record paf0100f("PAF0100F");
|
||||||
TString query;
|
TString query;
|
||||||
|
|
||||||
if (chiave_paf(fdoc, hfatt, bfatt) && paf0100f.search(nullptr, hfatt, bfatt))
|
if (chiave_paf_doc(fdoc, hfatt, bfatt) && paf0100f.search(nullptr, hfatt, bfatt))
|
||||||
{
|
{
|
||||||
query << "UPDATE PAF0100F SET P1_ERRINT = 'S' WHERE P1_KEYHEADERFATT = '" << hfatt << "' AND P1_KEYBODYFATT = '" << bfatt << "'";
|
query << "UPDATE PAF0100F SET P1_ERRINT = 'S' WHERE P1_KEYHEADERFATT = '" << hfatt << "' AND P1_KEYBODYFATT = '" << bfatt << "'";
|
||||||
fp_db().sq_set_exec(query);
|
fp_db().sq_set_exec(query);
|
||||||
|
@ -477,7 +477,8 @@ void TFP_expression::split_condition(const TString& cond, TString& cond_sx, TStr
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Questa funzione potrebbe diventare standard per TRectype
|
// Questa funzione potrebbe diventare standard per TRectype. Ma vai a cagare i variant sono da eliminare
|
||||||
|
|
||||||
TVariant& TFP_expression::get_value(const TRectype& rec, const TString& campo)
|
TVariant& TFP_expression::get_value(const TRectype& rec, const TString& campo)
|
||||||
{
|
{
|
||||||
TVariant& ret = get_tmp_var();
|
TVariant& ret = get_tmp_var();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user