diff --git a/src/fp/fp0700.cpp b/src/fp/fp0700.cpp
index 3d40f389d..edfb2f488 100644
--- a/src/fp/fp0700.cpp
+++ b/src/fp/fp0700.cpp
@@ -31,7 +31,7 @@ protected:
void print_reg();
bool on_field_event(TOperable_field& o, TField_event e, long jolly) override;
void next_page(int p) override;
- bool on_key(KEY key) override;
+ virtual bool on_key(KEY key) ;
bool check_not_empty();
bool check_full_fields() const;
void delete_paf();
@@ -51,10 +51,12 @@ public:
void save_all_fields();
TPAR_mask();
virtual ~TPAR_mask() {}
+
};
TPAR_mask *__mask = nullptr;
+
void TPAR_mask::save_all_fields()
{
TSheet_field & scaus = sfield(F_CAUSALI_TIPO);
@@ -147,6 +149,7 @@ void TPAR_mask::fill()
enable(DLG_OK, filter_selected.empty() || filter_selected == "E" || filter_selected == "X" || filter_selected == "D");
enable(DLG_PRINT, true);
enable(DLG_SAVEREC, (is_f8() && (filter_selected == "X") || filter_selected == "D"));
+ enable(DLG_ALL, true);
/*
VECCHIA QUERY
@@ -176,7 +179,6 @@ void TPAR_mask::fill()
bool first, show, ask = !((show = (first = true)));
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
@@ -194,6 +196,8 @@ void TPAR_mask::fill()
const TRectype& mov = rec.cursor()->curr();
const TCli_for & cli = cached_clifor(mov.get_char(MOV_TIPO), mov.get_long(MOV_CODCF));
bool sent = false;
+ const TCausale& caus = cached_causale(rec.get_string(MOV_CODCAUS), rec.get_int(MOV_ANNOES));
+ const TString& tipodocsdi = caus.tipodocsdi();
if (chiave_paf_mov(mov, tipodocsdi, hfatt, bfatt))
{
@@ -213,8 +217,7 @@ void TPAR_mask::fill()
regs.set_row_cell(S_ANNO, rec.get_int(MOV_ANNOES), r);
regs.set_row_cell(S_NUMREG, rec.get_string(MOV_NUMREG), r);
regs.set_row_cell(S_DATAREG, rec.get_date(MOV_DATAREG), r);
- const TCausale& caus = cached_causale(rec.get_string(MOV_CODCAUS), rec.get_int(MOV_ANNOES));
- regs.set_row_cell(S_TIPODOC, caus.tipodocsdi(), r);
+ regs.set_row_cell(S_TIPODOC,tipodocsdi, r);
regs.set_row_cell(S_NUMDOC, rec.get_string(MOV_NUMDOC), r);
regs.set_row_cell(S_DATADOC, rec.get_date(MOV_DATADOC), r);
regs.set_row_cell(S_CLIENTE, rec.get_long(MOV_CODCF), r);
@@ -612,8 +615,17 @@ void TPAR_mask::next_page(int p)
TAutomask::next_page(p);
}
-bool TPAR_mask::on_key(const KEY key)
+bool TPAR_mask::on_key(KEY key)
{
+ const bool ok = TMask::on_key(key);
+
+ if (ok && curr_page() == 0)
+ {
+ disable(DLG_OK);
+ disable(DLG_PRINT);
+ disable(DLG_SAVEREC);
+ disable(DLG_ALL);
+ }
if (key == K_SHIFT + K_F12)
{
if (run_fp_psw_mask())
@@ -623,7 +635,7 @@ bool TPAR_mask::on_key(const KEY key)
force_reload_sheet();
}
}
- return true;
+ return ok;
}
bool TPAR_mask::check_not_empty()
diff --git a/src/fp/fp0700a.rep b/src/fp/fp0700a.rep
index de6a1159a..5b12d8252 100644
--- a/src/fp/fp0700a.rep
+++ b/src/fp/fp0700a.rep
@@ -20,13 +20,13 @@
"Partita IVA " + 20.STATOPAIV + 20.PAIV
-
+
"Data Ricezione " + 100@.DATAREG
20.RAGSOC
-
+
"Tipo Documento " + CAUS.TIPODOCSDI
#TIPODOCSDI
@@ -49,7 +49,7 @@
"Registro " + 23.REG
- "Documento fornitore n. " + 23.NUMDOC
+ "Documento cliente n. " + 23.PROTIVA
"del " + 23.DATADOC
@@ -64,7 +64,7 @@
"Registro " +100@.REG
- "Documento cliente n. " + 100@.NUMDOC
+ "Documento fornitore n. " + 100@.NUMDOC
"del " + 100@.DATADOC
diff --git a/src/fp/fplib.h b/src/fp/fplib.h
index 181cb295e..d8d3dc27d 100644
--- a/src/fp/fplib.h
+++ b/src/fp/fplib.h
@@ -700,6 +700,8 @@ protected:
const TFirm& TReg_fp::get_firm(){return prefix().firm();}
+ TString TReg_fp::get_line_descr();
+
bool export_paf0100f();
bool export_paf3200f();
diff --git a/src/fp/fplib01.cpp b/src/fp/fplib01.cpp
index d1fb07186..4d9881d62 100644
--- a/src/fp/fplib01.cpp
+++ b/src/fp/fplib01.cpp
@@ -3246,6 +3246,27 @@ bool TReg_fp::export_paf3200f()
return true;
}
+TString TReg_fp::get_line_descr()
+{
+ TString descr;
+ TString16 tdsdi = _tipo_doc_sdi;
+
+ if (tdsdi == "TD16")
+ descr = "Integrazione fattura reverse charge interno";
+ else if (tdsdi == "TD17")
+ descr = "Integrazione/autofattura per acquisto servizi da estero";
+ else if (tdsdi == "TD18")
+ descr = "Integrazione per acquisto beni intracomunitari";
+ else if (tdsdi == "TD19")
+ descr = "Integrazione/autofattura per acquisto beni ex art.17 c.2 DPR 633/72";
+ else if (tdsdi == "TD20")
+ descr = "Autofattura";
+ else
+ error_box("Tipo documento non conforme");
+
+ return descr;
+}
+
bool TReg_fp::reg_to_paf(const TMovimento_contabile& mov)
{
if (!initialize(mov))
@@ -3382,7 +3403,7 @@ bool TReg_fp::reg_to_paf(const TMovimento_contabile& mov)
TString numdoc = mov.get(MOV_NUMDOCEXT);
if (numdoc.blank())
- numdoc = mov.get(MOV_NUMDOC);
+ numdoc = mov.get(MOV_PROTIVA);
else
{
if (numdoc.len() > 20)
@@ -3440,6 +3461,7 @@ bool TReg_fp::reg_to_paf(const TMovimento_contabile& mov)
TPaf_record& paf2100f = _paf_container.get_paf("PAF2100F");
TPaf_record& paf3000f = _paf_container.get_paf("PAF3000F");
int n_righe_iva = mov.iva().rows();
+ TString descr = get_line_descr();
for (int i = 1; i <= n_righe_iva; i++)
{
@@ -3455,6 +3477,7 @@ bool TReg_fp::reg_to_paf(const TMovimento_contabile& mov)
//PI_DESCRIZIONE CHAR(100) NOT NULL DEFAULT '',
//PI_RIFAMMINISTR CHAR(20) NOT NULL DEFAULT '',
+ paf1800f.set("PI_DESCRIZIONE", descr);
paf1800f.set("PI_QUANTITA", 1l);
paf1800f.set("PI_PREZZOUNIT", rec_iva.get(RMI_IMPONIBILE));
paf1800f.set("PI_PRZTOTALE", rec_iva.get(RMI_IMPONIBILE));
diff --git a/src/include/mask.cpp b/src/include/mask.cpp
index 07f3b3637..75dd52c34 100755
--- a/src/include/mask.cpp
+++ b/src/include/mask.cpp
@@ -1579,6 +1579,7 @@ void TMask::show_page(int p)
{
CHECKD(p >= 0 && p < _pages, "Pagina errata ", p);
next_page(1000 + p);
+ send_key(K_UNDEF, 0); // per chiamare la on_key
}
void TMask::reset(short fld_id)