diff --git a/src/fp/fp0700.cpp b/src/fp/fp0700.cpp
index 528178cbb..7742a93dd 100644
--- a/src/fp/fp0700.cpp
+++ b/src/fp/fp0700.cpp
@@ -67,6 +67,13 @@ void TPAR_mask::save_all_fields()
ini_set_string(CONFIG_DITTA, "fp", "CAUSALE", codcaus, r);
_causali.add(codcaus);
}
+ for (int i = scaus.items(); ; i++)
+ {
+
+ if (!ini_remove(CONFIG_DITTA, "fp", "CAUSALE", i))
+ break;
+ }
+
}
void TPAR_mask::force_reload_sheet()
@@ -92,7 +99,10 @@ void TPAR_mask::load_all_fields()
TString16 caus = ini_get_string(CONFIG_DITTA, "fp", "CAUSALE", "", i);
if (caus.full())
- scaus.set_row_cell(S_COD_CAUS, caus);
+ {
+ int r = scaus.set_row_cell(S_COD_CAUS, caus);
+ scaus.set_row_cell(S_DESCR, cache().get(LF_CAUSALI, caus, CAU_DESCR), r);
+ }
else
break;
}
@@ -165,7 +175,7 @@ void TPAR_mask::fill()
const TCli_for & cli = cached_clifor(mov.get_char(MOV_TIPO), mov.get_long(MOV_CODCF));
bool sent = false;
- if (chiave_paf_mov(mov, 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") != "*")
{
@@ -219,7 +229,7 @@ void TPAR_mask::fill()
}
regs.set_row_cell(S_SPLITPAY, split, r);
regs.set_row_cell(S_ATTACH, false, r); // verificare
- regs.set_row_cell(S_ONLYGEN, true, r); // verificare
+ regs.set_row_cell(S_ONLYGEN, get_bool(F_PROVVISORIO), r); // verificare
}
regs.force_update();
@@ -387,46 +397,49 @@ void TPAR_mask::export_paf()
{
int ndocs = 0;
TSheet_field& sht = sfield(F_REGS);
- TReg_fp elab(get(F_TIPO_SDI));
+ const TString &tipo_doc_sdi = get(F_TIPO_SDI);
+ TReg_fp elab(tipo_doc_sdi);
//elab.set_cache_insert(true);
if (!sht.empty())
{
- TProgress_monitor pi(sht.items(), "Esportazione Regolarizzazioni");
-
- FOR_EACH_SHEET_ROW_LOOP(sht, r)
{
- if (!pi.add_status())
- break;
+ TProgress_monitor pi(sht.items(), "Esportazione Regolarizzazioni");
- if (sht.get_bool_row_cell(r, S_SELECTED))
+ FOR_EACH_SHEET_ROW_LOOP(sht, r)
{
- const long nreg = sht.get_long_row_cell(r, S_NUMREG);
+ if (!pi.add_status())
+ break;
- // Verifico che il codice sdi nello sheet sia lo stesso sulla testata del documento in caso contrario lo aggiorno
- TMovimento_contabile mov(nreg);
-
- if (elab.reg_to_paf(mov))
- ndocs++;
- else
+ if (sht.get_bool_row_cell(r, S_SELECTED))
{
- TString msg;
+ const long nreg = sht.get_long_row_cell(r, S_NUMREG);
- msg.format("La registrazione numero %ld non è stata esportata, continuare?", nreg);
- elab.log().log(2, msg);
- if (!yesno_box(msg))
- break;
+ // Verifico che il codice sdi nello sheet sia lo stesso sulla testata del documento in caso contrario lo aggiorno
+ TMovimento_contabile mov(nreg);
+
+ if (elab.reg_to_paf(mov))
+ ndocs++;
+ else
+ {
+ TString msg;
+
+ msg.format("La registrazione numero %ld non è stata esportata, continuare?", nreg);
+ elab.log().log(2, msg);
+ if (!yesno_box(msg))
+ break;
+ }
}
}
- }
- if (elab.force_commit() <= 0)
- {
- TString msg;
+ if (elab.force_commit() <= 0)
+ {
+ TString msg;
- msg.format("Errore durante il cambiamento di stato finale, potrebbero esser rimaste delle fatture in Pronto");
- elab.log().log(2, msg);
- error_box(msg);
+ msg.format("Errore durante il cambiamento di stato finale, potrebbero esser rimaste delle fatture in Pronto");
+ elab.log().log(2, msg);
+ error_box(msg);
+ }
}
elab.show_log();
}
@@ -594,7 +607,7 @@ void TPAR_mask::set_err_paf()
TString hfatt, bfatt;
TPaf_record paf0100f("PAF0100F");
- if (chiave_paf_mov(mov, hfatt, bfatt) && paf0100f.search(nullptr, hfatt, bfatt))
+ if (chiave_paf_mov(mov, tipodocsdi, hfatt, bfatt) && paf0100f.search(nullptr, hfatt, bfatt))
{
TString query;
query <<
diff --git a/src/fp/fp0700a.h b/src/fp/fp0700a.h
index d90170604..c348fe660 100644
--- a/src/fp/fp0700a.h
+++ b/src/fp/fp0700a.h
@@ -4,8 +4,9 @@
#define F_CAUSALI_TIPO 404
#define F_TIPO_SDI 405
#define F_REGS 406
+#define F_PROVVISORIO 407
#define START_MASK F_DATAINI
-#define END_MASK F_REGS
+#define END_MASK F_PROVVISORIO
#define S_COD_CAUS 101
diff --git a/src/fp/fp0700a.uml b/src/fp/fp0700a.uml
index 523d5a0fd..3d09e9450 100644
--- a/src/fp/fp0700a.uml
+++ b/src/fp/fp0700a.uml
@@ -91,6 +91,11 @@ BEGIN
ITEM "TD20|TD20 Autofattura"
END
+ BOOLEAN F_PROVVISORIO
+ BEGIN
+ PROMPT 1 15 "Provvisorio"
+ END
+
STRING DLG_PROFILE 50
BEGIN
PROMPT 1 -1 "Profilo "
diff --git a/src/fp/fplib.h b/src/fp/fplib.h
index d040a98fc..8d19f5481 100644
--- a/src/fp/fplib.h
+++ b/src/fp/fplib.h
@@ -36,7 +36,7 @@ TString& complete_num_fp(const TCodice_numerazione& codnum, const int numdoc);
// Genera la chiave per i paf
-bool chiave_paf_mov(const TRectype& mov, TString& hfatt, TString& bfatt);
+bool chiave_paf_mov(const TRectype& mov, const char* tipo_doc_sdi, 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()
diff --git a/src/fp/fplib01.cpp b/src/fp/fplib01.cpp
index 576c105a3..5bf17a8d6 100644
--- a/src/fp/fplib01.cpp
+++ b/src/fp/fplib01.cpp
@@ -166,7 +166,7 @@ TString& complete_num_fp(const TCodice_numerazione& codnum, const int numdoc)
*/
// Crea la coppia di chiavi per il db PAF a partire da un movimento
-bool chiave_paf_mov(const TRectype& mov, TString& hfatt, TString& bfatt)
+bool chiave_paf_mov(const TRectype& mov, const char* tipo_doc_sdi, TString& hfatt, TString& bfatt)
{
TCli_for cli(mov.get_char(MOV_TIPO), mov.get_long(MOV_CODCF));
hfatt.cut(0);
@@ -180,8 +180,8 @@ bool chiave_paf_mov(const TRectype& mov, TString& hfatt, TString& bfatt)
TString numdoc = mov.get(MOV_NUMDOC);
numdoc.lpad(mov.length(DOC_NDOC), '0');
- bfatt = mov.get_date(MOV_DATAREG).date2ansi();
- bfatt << '_' << numdoc;
+ bfatt.cut(0);
+ bfatt << mov.get_date(MOV_DATAREG).date2ansi() << '_' << tipo_doc_sdi << '_' << numdoc;
return hfatt.full() && bfatt.full();
}
@@ -2752,7 +2752,7 @@ bool TReg_fp::initialize(const TMovimento_contabile& mov)
// Paese del documento
_paese = "IT";
- if (!chiave_paf_mov(mov, _hfatt, _bfatt))
+ if (!chiave_paf_mov(mov, _tipo_doc_sdi, _hfatt, _bfatt))
return false;
// Preparo il log
_log.log(-1, _bfatt);
@@ -2948,143 +2948,131 @@ bool TReg_fp::reg_to_paf(const TMovimento_contabile& mov)
ok &= export_paf3200f();
//
TPaf_record& paf0200f = _paf_container.get_paf("PAF0200F");
- TAnagrafica cliente(mov.clifo());
+ TAnagrafica fornitore(mov.clifo());
if (!paf0200f.is_full())
{
- if (_ditta.partita_IVA().full())
+ if (fornitore.partita_IVA().full())
{
- paf0200f.set("P2_FISCIVAPAESE", _ditta.stato_partita_IVA());
- paf0200f.set("P2_FISCIVACOD", _ditta.partita_IVA());
+ paf0200f.set("P2_FISCIVAPAESE", fornitore.stato_partita_IVA());
+ paf0200f.set("P2_FISCIVACOD", fornitore.partita_IVA());
}
- paf0200f.set("P2_CODFISCALE", _ditta.codice_fiscale());
+ paf0200f.set("P2_CODFISCALE", fornitore.codice_fiscale()); //
if (_ditta.fisica())
{
- paf0200f.set("P2_ANANOME", _ditta.nome());
- paf0200f.set("P2_ANACOGNOME", _ditta.cognome());
+ paf0200f.set("P2_ANANOME", fornitore.nome()); //
+ paf0200f.set("P2_ANACOGNOME", fornitore.cognome()); //
}
else
{
- paf0200f.set("P2_ANADENOMIN", _ditta.ragione_sociale());
+ paf0200f.set("P2_ANADENOMIN", fornitore.ragione_sociale()); //
}
paf0200f.set("P2_REGFISCALE", ""); //TODO DA RF01 A RF09
// DatiSede
- paf0200f.set("P2_SEDEIND", _ditta.via_residenza());
- paf0200f.set("P2_SEDENRCIVICO", _ditta.civico_residenza().left(8));
- paf0200f.set("P2_SEDECAP", _ditta.CAP_residenza());
- paf0200f.set("P2_SEDECOMUNE", _ditta.comune_residenza());
- paf0200f.set("P2_SEDEPROV", _ditta.provincia_residenza());
- paf0200f.set("P2_SEDENAZ", _paese);
+ paf0200f.set("P2_SEDEIND", fornitore.via_residenza()); //
+ paf0200f.set("P2_SEDENRCIVICO", fornitore.civico_residenza().left(8)); //
+ paf0200f.set("P2_SEDECOMUNE", fornitore.comune_residenza()); //
+ paf0200f.set("P2_SEDENAZ", fornitore.stato_residenza_ISO()); //
paf0200f.set("P2_GESTIONE", "D");
- paf0200f.set("P2_RIFAMMINISTR", mov.clifo().vendite().get(CFV_PARIFAMM));
- paf0200f.set("P2_ISCRREASOCIOU", _ditta.sociounico() == 'S' ? "SU" : "SM");
- TISAM_recordset unloc("USE UNLOC\nJOIN COMUNI INTO COM==COMCCIAA\nFROM CODDITTA=#DITTA\nTO CODDITTA=#DITTA");
- unloc.set_var("#DITTA", get_firm().get(NDT_CODDITTA));
- if (unloc.move_first())
+ // I clienti esteri possono avere CAP alfanumerici, li tolgo
+ if (fornitore.stato_residenza_ISO() != "IT")
{
- const TString& numrea = unloc.get(ULC_NUMCCIAA).as_string();
- if (numrea.full())
- {
- paf0200f.set("P2_ISCRREANUM", numrea);
- paf0200f.set("P2_ISCRREAUFF", unloc.get("13->" COM_PROVCOM));
- }
- }
- if (_ditta.giuridica())
- {
- TISAM_recordset anagiu("USE ANAGIU\nFROM CODANAGR=#CODICE\nTO CODANAGR=#CODICE");
-
- anagiu.set_var("#CODICE", get_firm().get(NDT_CODANAGR));
- if (anagiu.move_first())
- {
- paf0200f.set("P2_ISCRREACAP", anagiu.get(ANG_CAPSOC));
- const int ss = anagiu.get(ANG_STATOSOC).as_int();
- paf0200f.set("P2_ISCRREASLIQUID", (ss == 2 || ss == 3) ? "LS" : "LN");
- }
+ paf0200f.set("P2_SEDECAP", "00000");//
}
else
- paf0200f.set("P2_ISCRREASLIQUID", "LN");
- }
- ok &= insert(paf0200f);
- //
- //
- TPaf_record& paf0400f = _paf_container.get_paf("PAF0400F");
-
- TString stato = cliente.stato_partita_IVA();
- TTable tab_codiso("%SCE");
- tab_codiso.tab();
- tab_codiso.put("CODTAB", stato); tab_codiso.read();
- TString piva = cliente.partita_IVA(),
- fisc = cliente.codice_fiscale();
- if (!stato.full())
- stato = "IT";
- if (tab_codiso.get_bool("B0") || stato == "IT") // Cliente EU
- {
- if (piva.full())
{
- if (piva.len() == 11 && (piva[0] == '8' || piva[0] == '9'))
- {
- fisc = piva;
- piva.cut(0);
- }
+ paf0200f.set("P2_SEDECAP", fornitore.CAP_residenza()); //
+ paf0200f.set("P2_SEDEPROV", fornitore.provincia_residenza()); //
}
- else if (fisc.full() && fisc.len() == 11 && (fisc[0] == '8' || fisc[0] == '9'))
- piva.cut(0);
+ }
+
+ ok &= insert(paf0200f);
+
+
+ //
+ //
+ //
+ TPaf_record& paf0400f = _paf_container.get_paf("PAF0400F");
- if (piva.full())
+ TString stato = _ditta.stato_partita_IVA();
+ TTable tab_codiso("%SCE");
+ tab_codiso.tab();
+ tab_codiso.put("CODTAB", stato); tab_codiso.read();
+ TString piva = _ditta.partita_IVA();
+ TString fisc = _ditta.codice_fiscale();
+
+ if (!stato.full())
+ stato = "IT";
+ if (tab_codiso.get_bool("B0") || stato == "IT") // Cliente EU
+ {
+ if (piva.full())
+ {
+ if (piva.len() == 11 && (piva[0] == '8' || piva[0] == '9'))
+ {
+ fisc = piva;
+ piva.cut(0);
+ }
+ }
+ else if (fisc.full() && fisc.len() == 11 && (fisc[0] == '8' || fisc[0] == '9'))
+ piva.cut(0);
+
+ if (piva.full())
+ {
+ paf0400f.set("P4_FISCIVAPAESE", stato); //
+ paf0400f.set("P4_FISCIVACOD", piva); //
+ }
+ if (fisc.full())
+ paf0400f.set("P4_CODFISC", fisc); //
+ }
+ else // Cliente EXTRA-EU sempre nel campo della partita iva sui paf
{
paf0400f.set("P4_FISCIVAPAESE", stato);
- paf0400f.set("P4_FISCIVACOD", piva);
+ if (fisc.full()) // Guardo prima l'id fiscale, perche' e' qui che dovrebbero stare in Campo
+ paf0400f.set("P4_FISCIVACOD", fisc);
+ else if (piva.full()) // Altrimenti dovrebbe essere nella partita iva
+ paf0400f.set("P4_FISCIVACOD", piva);
}
- if (fisc.full())
- paf0400f.set("P4_CODFISC", fisc);
- }
- else // Cliente EXTRA-EU sempre nel campo della partita iva sui paf
- {
- paf0400f.set("P4_FISCIVAPAESE", stato);
- if (fisc.full()) // Guardo prima l'id fiscale, perche' e' qui che dovrebbero stare in Campo
- paf0400f.set("P4_FISCIVACOD", fisc);
- else if (piva.full()) // Altrimenti dovrebbe essere nella partita iva
- paf0400f.set("P4_FISCIVACOD", piva);
- }
- if (cliente.fisica() && cliente.nome().full())
- {
- paf0400f.set("P4_ANANOME", cliente.nome());
- paf0400f.set("P4_ANACOGNOME", cliente.cognome());
- }
- else
- {
- paf0400f.set("P4_ANADENOM", cliente.ragione_sociale());
- }
- // DatiSede
- paf0400f.set("P4_SEDEIND", cliente.via_residenza());
- paf0400f.set("P4_SEDENRCIVICO", cliente.civico_residenza().left(8));
- paf0400f.set("P4_SEDECOMUNE", cliente.comune_residenza());
- paf0400f.set("P4_SEDENAZ", cliente.stato_residenza_ISO());
- // I clienti esteri possono avere CAP alfanumerici, li tolgo
- if (cliente.stato_residenza_ISO() != "IT")
- {
- paf0400f.set("P4_SEDECAP", "00000");
- }
- else
- {
- paf0400f.set("P4_SEDECAP", cliente.CAP_residenza());
- paf0400f.set("P4_SEDEPROV", cliente.provincia_residenza());
- }
- // Titolo onorifico!
- const TString& titolo = (mov.clifo().vendite().get(CFV_TITOLO));
+ if (_ditta.fisica() && _ditta.nome().full())
+ {
+ paf0400f.set("P4_ANANOME", _ditta.nome()); //
+ paf0400f.set("P4_ANACOGNOME", _ditta.cognome()); //
+ }
+ else
+ {
+ paf0400f.set("P4_ANADENOM", _ditta.ragione_sociale()); //
+ }
+ // DatiSede
+ paf0400f.set("P4_SEDEIND", _ditta.via_residenza());
+ paf0400f.set("P4_SEDENRCIVICO", _ditta.civico_residenza().left(8));
+ paf0400f.set("P4_SEDECAP", _ditta.CAP_residenza());
+ paf0400f.set("P4_SEDECOMUNE", _ditta.comune_residenza());
+ paf0400f.set("P4_SEDEPROV", _ditta.provincia_residenza());
+ paf0400f.set("P4_SEDENAZ", _ditta.stato_residenza_ISO());
- if (titolo.full())
- paf0400f.set("P4_ANATITOLO", cache().get("TIT", titolo, "S0"));
- paf0400f.set("P4_GESTIONE", "D");
- ok &= insert(paf0400f);
- //
- //
+ // Titolo onorifico!
+ const TString& titolo = (mov.clifo().vendite().get(CFV_TITOLO));
+
+ if (titolo.full())
+ paf0400f.set("P4_ANATITOLO", cache().get("TIT", titolo, "S0"));
+ paf0400f.set("P4_GESTIONE", "D");
+ ok &= insert(paf0400f);
+ //
TPaf_record& paf0700f = _paf_container.get_paf("PAF0700F");
paf0700f.set("P7_TIPODOC", _tipo_doc_sdi);
paf0700f.set("P7_DIVISA", "EUR"); // Fisso su euro in quanto effettuiamo il cambio
paf0700f.set("P7_DATA", mov.get_date(MOV_DATADOC));
- paf0700f.set("P7_NUMERO", ""); //da chiedere ad ilaria
+ TString numdoc = mov.get(MOV_NUMDOCEXT);
+
+ if (numdoc.blank())
+ numdoc = mov.get(MOV_NUMDOC);
+ else
+ {
+ if (numdoc.len() > 20)
+ numdoc = numdoc.mid(30);
+ }
+
+ paf0700f.set("P7_NUMERO", numdoc);
paf0700f.set("P7_GESTIONE", "D");
TPaf_record& paf2700f = _paf_container.get_paf("PAF2700F");
@@ -3132,18 +3120,18 @@ bool TReg_fp::reg_to_paf(const TMovimento_contabile& mov)
pafw300f.set("PW_CODSDI", "**********");
*/
pafw300f.set("PW_CDEST", _coddest);
- pafw300f.set("PW_RAGSOC", cliente.ragione_sociale().left(35));
- pafw300f.set("PW_PAESE", cliente.stato_residenza_ISO());
- pafw300f.set("PW_CODICE", cliente.codice_fiscale_estero());
- pafw300f.set("PW_CFISCA", cliente.codice_fiscale());
- pafw300f.set("PW_DENOM", cliente.ragione_sociale());
- if (cliente.fisica() && cliente.nome().full())
+ pafw300f.set("PW_RAGSOC", fornitore.ragione_sociale().left(35));
+ pafw300f.set("PW_PAESE", fornitore.stato_residenza_ISO());
+ pafw300f.set("PW_CODICE", fornitore.codice_fiscale_estero());
+ pafw300f.set("PW_CFISCA", fornitore.codice_fiscale());
+ pafw300f.set("PW_DENOM", fornitore.ragione_sociale());
+ if (fornitore.fisica() && fornitore.nome().full())
{
- pafw300f.set("PW_NOME", cliente.nome());
- pafw300f.set("PW_COGN", cliente.cognome());
+ pafw300f.set("PW_NOME", fornitore.nome());
+ pafw300f.set("PW_COGN", fornitore.cognome());
}
else
- pafw300f.set("PW_RAGSOC", cliente.ragione_sociale().left(35));
+ pafw300f.set("PW_RAGSOC", fornitore.ragione_sociale().left(35));
pafw300f.set("PW_IMPO", mov.get_real(MOV_TOTDOC)); //TODO controllare ?????
ok &= insert(pafw300f);
return _to_commit = (ok && save_paf());
@@ -3196,6 +3184,6 @@ bool TReg_fp::show_log()
TFilename name = "fp_err.log";
b.add(_log);
- b.export_text(name, false, 132);
+ b.export_text(name);
return _log.preview();
}