diff --git a/src/f9/f9lib.h b/src/f9/f9lib.h index f2efa491e..0fbe3d929 100644 --- a/src/f9/f9lib.h +++ b/src/f9/f9lib.h @@ -17,6 +17,8 @@ #define INI_CATDOC "CATDOC" #define INI_ANNESSI "ANNCAT" +#define IS_ITALIANO(statopaiv) ((statopaiv) == "IT" || !(statopaiv).full()) + const TDate today(TODAY); struct annesso_t @@ -339,7 +341,6 @@ class TEstrazione : public TObject * il nuovo stato sul db. */ bool update_drd_stato_estr() const; - static const char* categoria_doc(); static const char* caus_sos(const TLocalisamfile& mov, TipoIVA iva); static void check_annessi(movimento_t& mov_i, int numreg); // Controllo se ci sono tutti gli annessi obbligatori. // Controllo se esistono tutti gli annessi cartacei obbligatori e se ci sono annessi reverse charge li genero. diff --git a/src/f9/f9lib01.cpp b/src/f9/f9lib01.cpp index ef39d31de..8b7b9aeef 100644 --- a/src/f9/f9lib01.cpp +++ b/src/f9/f9lib01.cpp @@ -18,14 +18,9 @@ statistics _stats = { 0, 0, 0, 0, 0, 0, 0, 0, 0 }; -//////////////////////////////////////////////////////// +/////////////////////////////////////////////////////////////////////////////// // TEstrazione -//////////////////////////////////////////////////////// - -const char* TEstrazione::categoria_doc() -{ - return ""; // todo: -} +/////////////////////////////////////////////////////////////////////////////// const char* TEstrazione::caus_sos(const TLocalisamfile& mov, const TipoIVA iva) { @@ -220,14 +215,22 @@ void TEstrazione::fill_id(TLocalisamfile& clifo, TString& statopaiv, TString& id statopaiv = clifo.get(CLI_STATOPAIV); paiv = clifo.get(CLI_PAIV); codfis = clifo.get(CLI_COFI); - // Se ho un codice fiscale che inizia per 8 o 9 e' come un privato e devo considerarlo solo come codice fiscale senza partita IVA. - if (paiv.full() && (paiv[0] == '8' || paiv[0] == '9') || - codfis.full() && (codfis[0] == '8' || codfis[0] == '9')) - paiv.cut(0); + + if (IS_ITALIANO(statopaiv)) + { + // Se ho un codice fiscale che inizia per 8 o 9 e' come un privato e devo considerarlo solo come codice fiscale senza partita IVA. + if (codfis.full() && codfis.len() == 11 && (codfis[0] == '8' || codfis[0] == '9')) + paiv.cut(0); + else if (paiv.full() && paiv.len() == 11 && (paiv[0] == '8' || paiv[0] == '9')) + { + codfis = paiv; + paiv.cut(0); + } + } if (paiv == "0") paiv.cut(0); - if (statopaiv == "IT" || statopaiv.empty()) + if (IS_ITALIANO(statopaiv)) { idfisc << "IT"; if (paiv.full()) // Se non ho la partita IVA e' privato quindi non metto niente solo cod. ISO @@ -256,7 +259,8 @@ bool TEstrazione::is_doc_xml(const TLocalisamfile& mov) clifo.put(CLI_TIPOCF, tipocf); clifo.put(CLI_CODCF, codcf); clifo.read(); - return (clifo.get(CLI_STATOPAIV).empty() || clifo.get(CLI_STATOPAIV) == "IT") + const TString& statopaiv = clifo.get(CLI_STATOPAIV); + return (IS_ITALIANO(statopaiv)) && clifo.get(CLI_COMCF) != "B513"; // Campione d'Italia }