Patch level : 12.0 no-patch

Files correlati     : fp
Commento            :
- Sistemato cod sdi in ricerca
- Aggiunto bollo
- Aggiunto supporto cod dest per chi non ha nulla
- Sistemata eliminazione con id riga in chiave
- Sistemato SQL
This commit is contained in:
Mattia Tollari 2018-10-10 10:09:57 +02:00
parent e894bf5e12
commit d0ac7293a3
5 changed files with 63 additions and 52 deletions

View File

@ -89,9 +89,9 @@ BEGIN
INPUT CODTAB S_TIPODOCSEL INPUT CODTAB S_TIPODOCSEL
DISPLAY "Codice" CODTAB DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0 DISPLAY "Descrizione@50" S0
DISPLAY "Tipo SDI@10" S12 DISPLAY "Tipo SDI@10" S3[37,40]
OUTPUT S_TIPODOCSEL CODTAB OUTPUT S_TIPODOCSEL CODTAB
OUTPUT S_TIPODOCSDI S12 OUTPUT S_TIPODOCSDI S3[37,40]
CHECKTYPE FORCED CHECKTYPE FORCED
FLAG "UPA" FLAG "UPA"
END END

View File

@ -26,18 +26,26 @@
void set_connection(SSimple_query& s) void set_connection(SSimple_query& s)
{ {
#ifdef DBG #ifdef DBG
if (s.sq_connect("TESTCAMPO2012@campo_fp", TString ip = ini_get_string(CONFIG_DITTA, "fp", "ip");
"fp", if (ip.upper() != "TESTCAMPO2012")
"fp", {
TSDB_MSSQL) != NOERR) if (s.sq_connect("TESTCAMPO2012@campo_fp",
fatal_box("Impossibile connettersi al DB esterno"); "fp",
#elif "fp",
TSDB_MSSQL) != NOERR)
fatal_box("Impossibile connettersi al DB esterno");
}
else
{
#endif
if (s.sq_connect( if (s.sq_connect(
TString() << ini_get_string(CONFIG_DITTA, "fp", "ip") << "@" << ini_get_string(CONFIG_DITTA, "fp", "db"), TString() << ini_get_string(CONFIG_DITTA, "fp", "ip") << "@" << ini_get_string(CONFIG_DITTA, "fp", "db"),
ini_get_string(CONFIG_DITTA, "fp", "usr"), ini_get_string(CONFIG_DITTA, "fp", "usr"),
decode(ini_get_string(CONFIG_DITTA, "fp", "psw")), decode(ini_get_string(CONFIG_DITTA, "fp", "psw")),
TSDB_MSSQL) != NOERR) TSDB_MSSQL) != NOERR)
fatal_box("Impossibile connettersi al DB esterno"); fatal_box("Impossibile connettersi al DB esterno");
#ifdef DBG
}
#endif #endif
} }
@ -165,10 +173,10 @@ bool get_coddest(const char tipocf, const long codcf, TString& coddest, TString&
bool enapec = false; bool enapec = false;
if (coddest.empty()) if (coddest.empty())
{ {
coddest = "0000000";
// Controllo se ha la pec // Controllo se ha la pec
if (pec.full()) if (pec.full())
{ {
coddest = "0000000";
enapec = true; enapec = true;
} }
// Controllo se è straniero // Controllo se è straniero
@ -176,9 +184,8 @@ bool get_coddest(const char tipocf, const long codcf, TString& coddest, TString&
{ {
coddest = "XXXXXXX"; coddest = "XXXXXXX";
} }
else
return false;
} }
// Dopo la versione 1.2 torna sempre true
return true; return true;
} }
@ -206,31 +213,10 @@ inline const TString& no_special(char a)
case '\'': case '\'':
r << "''"; r << "''";
break; break;
case '\\':
r << "\\\\";
break;
default: default:
r << a; r << a;
} }
return r; return r;
/*
if (a == 'à')
return "a''";
else if (a == 'è' || a == 'é')
return "e''";
else if (a == 'ì')
return "i''";
else if (a == 'ò')
return "o''";
else if (a == 'ù')
return "u''";
else if (a == '\'')
return "''";
else if (a == '\\')
return "\\\\";
// Se non trovo nulla ritorno il valore
return a;
*/
} }
/*************************************************************************** /***************************************************************************
@ -360,7 +346,7 @@ const TString& TPaf_record::var2str(const TString& fldname, const TVariant& var)
return tmp; return tmp;
} }
TString& TPaf_record::remove_string() TString& TPaf_record::remove_string(bool id_riga)
{ {
TString& query = get_tmp_string().cut(0); TString& query = get_tmp_string().cut(0);
query << "DELETE FROM " << _table << " WHERE "; query << "DELETE FROM " << _table << " WHERE ";
@ -370,6 +356,8 @@ TString& TPaf_record::remove_string()
const TVariant& var = get(fld); const TVariant& var = get(fld);
if (!var.is_null()) if (!var.is_null())
{ {
if (!id_riga && TString(fld).find("RIFNUMLINEA") > 0)
continue;
if (nkf++ > 0) if (nkf++ > 0)
query << " AND "; query << " AND ";
query << fld << '=' << var2str(fld, var); query << fld << '=' << var2str(fld, var);
@ -1026,10 +1014,7 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
paf0700f.set("P7_GESTIONE", "D"); paf0700f.set("P7_GESTIONE", "D");
// <DatiBollo> // <DatiBollo>
if (doc.get_real("BOLLI") > ZERO) paf0700f.set("P7_IMPORTOBOLLO", doc.get("BOLLI"));
{
paf0700f.set("P7_IMPORTOBOLLO", doc.get("BOLLI"));
}
// </DatiBollo> // </DatiBollo>
// <DatiCassaPrevidenziale> // <DatiCassaPrevidenziale>
@ -1202,6 +1187,8 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
paf1900f.set("PY_KEYBODYFATT", bfatt); paf1900f.set("PY_KEYBODYFATT", bfatt);
remove(paf1900f); // Cancella tutte le righe articoli del documento remove(paf1900f); // Cancella tutte le righe articoli del documento
if(doc.is_fattura())
doc.set_riga_esenzione();
long riga = 0; long riga = 0;
TString16 codivadefault; TString16 codivadefault;
@ -1227,6 +1214,10 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
paf3000f.set("PT_RIFNUMLINEA", riga); paf3000f.set("PT_RIFNUMLINEA", riga);
paf3000f.set("PT_COMMENTO", descrizione(*rdoc)); paf3000f.set("PT_COMMENTO", descrizione(*rdoc));
// Nel dubbio preparo la riga di descrizione
paf1800f.set("PI_QUANTITA", ZERO);
paf1800f.set("PI_PREZZOUNIT", ZERO);
paf1800f.set("PI_PRZTOTALE", ZERO);
paf1800f.set("PI_ALIQUOTAIVA", "22.00"); // Altrimenti scarta le righe di descrizione paf1800f.set("PI_ALIQUOTAIVA", "22.00"); // Altrimenti scarta le righe di descrizione
// <CodiceArticolo> // <CodiceArticolo>
@ -1244,11 +1235,7 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
if (art.codice().full()) if (art.codice().full())
{ {
tmp.cut(0) << art.codice(); // Fixed_string di merda tmp.cut(0) << art.codice(); // Fixed_string di merda
ok &= add_row_art("Codice interno", tmp, paf1900f); ok &= add_row_art("Codice articolo", tmp, paf1900f);
}
if (rdoc->tipo().codice() == "14")
{
ok &= add_row_art("Codice cliente", rdoc->get("CODARTALT"), paf1900f);
} }
} }
// </CodiceArticolo> // </CodiceArticolo>
@ -1413,6 +1400,30 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
paf1800f.set("PI_GESTIONE", "D"); paf1800f.set("PI_GESTIONE", "D");
ok &= insert(paf1800f) && insert(paf3000f); ok &= insert(paf1800f) && insert(paf3000f);
} }
// Se il bollo va fatto pagare bisogna aggiungere una riga!
if(doc.get_bool("ADDBOLLI"))
{
paf1800f.reset();
paf1800f.set("PI_KEYHEADERFATT", hfatt);
paf1800f.set("PI_KEYBODYFATT", bfatt);
paf1800f.set("PI_NUMEROLINEA", ++riga);
TPaf_record paf3000f("PAF3000F");
paf3000f.set("PT_KEYHEADERFATT", hfatt);
paf3000f.set("PT_KEYBODYFATT", bfatt);
remove(paf3000f);
paf3000f.set("PT_RIFNUMLINEA", riga);
paf3000f.set("PT_COMMENTO", "Imposta bollo assolta in modo virtuale");
paf1800f.set("PI_PREZZOUNIT", doc.get_real("BOLLI"));
paf1800f.set("PI_PRZTOTALE", doc.get_real("BOLLI"));
set_IVA(doc.codiva_bolli(), paf1800f);
ok &= insert(paf1800f) && insert(paf3000f);
}
// Controllo plafond
// </DatiBeniServizi> // </DatiBeniServizi>
@ -1471,6 +1482,7 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
remove(paf2400f); // Cancella i dati pagamento remove(paf2400f); // Cancella i dati pagamento
TPagamento& pag = doc.pagamento(); TPagamento& pag = doc.pagamento();
doc.scadenze_recalc(); // Ricalcola array delle rate doc.scadenze_recalc(); // Ricalcola array delle rate
TString_array& scad = doc.scadenze(); TString_array& scad = doc.scadenze();
const int nrate = scad.items(); // Conta rate generate const int nrate = scad.items(); // Conta rate generate

View File

@ -54,7 +54,7 @@ public:
TString& insert_string(); TString& insert_string();
bool insert(); bool insert();
TString& remove_string(); TString& remove_string(bool id_riga = false);
bool remove(); bool remove();
bool search(); bool search();
bool search(const char* k1, const char* k2, const char* k3 = NULL); bool search(const char* k1, const char* k2, const char* k3 = NULL);

View File

@ -663,7 +663,7 @@ CREATE TABLE PAA3000F (
PT_KEYHEADERFATT CHAR(20) NOT NULL DEFAULT '' , PT_KEYHEADERFATT CHAR(20) NOT NULL DEFAULT '' ,
PT_KEYBODYFATT CHAR(50) NOT NULL DEFAULT '' , PT_KEYBODYFATT CHAR(50) NOT NULL DEFAULT '' ,
PT_RIFNUMLINEA NUMERIC(4, 0) NOT NULL DEFAULT 0 , PT_RIFNUMLINEA NUMERIC(4, 0) NOT NULL DEFAULT 0 ,
PT_COMMENTO VARCHAR NOT NULL DEFAULT '' , PT_COMMENTO VARCHAR(1000) NOT NULL DEFAULT '' ,
PT_GESTIONE CHAR(1) NOT NULL DEFAULT '' ) ; PT_GESTIONE CHAR(1) NOT NULL DEFAULT '' ) ;
ALTER TABLE PAA3000F ALTER TABLE PAA3000F
@ -1755,6 +1755,10 @@ CREATE INDEX PAF2900F_KEY
ON PAF2900F (PS_KEYPRGINVIO ASC , PS_KEYHEADERFATT ASC , PS_KEYBODYFATT ASC ) ON PAF2900F (PS_KEYPRGINVIO ASC , PS_KEYHEADERFATT ASC , PS_KEYBODYFATT ASC )
; ;
CREATE INDEX PAF3000F_KEY
ON PAF3000F (PT_KEYPRGINVIO ASC, PT_KEYHEADERFATT ASC, PT_KEYBODYFATT ASC, PT_RIFNUMLINEA ASC)
;
CREATE INDEX PAF3100F_KEY CREATE INDEX PAF3100F_KEY
ON PAF3100F (PH_KEYPRGINVIO ASC , PH_KEYHEADERFATT ASC , PH_KEYBODYFATT ASC ) ON PAF3100F (PH_KEYPRGINVIO ASC , PH_KEYHEADERFATT ASC , PH_KEYBODYFATT ASC )
; ;

View File

@ -84,8 +84,3 @@ UPDATE PAFW300F SET PW_UPAG = '19700101 00:00:00' WHERE PW_UPAG IS NULL;
ALTER TABLE PAFW300F ALTER COLUMN PW_UPAG DATETIME NOT NULL; ALTER TABLE PAFW300F ALTER COLUMN PW_UPAG DATETIME NOT NULL;
-- TLLNNAPRV -> Tolla non approva -- TLLNNAPRV -> Tolla non approva
-- Aggiungo chiave mancante
CREATE INDEX PAF3000F_KEY
ON PAF3000F ( PT_KEYPRGINVIO ASC, PT_KEYHEADERFATT ASC, PT_KEYBODYFATT ASC, PT_RIFNUMLINEA ASC) ;