diff --git a/src/fp/fp0300.cpp b/src/fp/fp0300.cpp index 491c0b56b..6288a173d 100644 --- a/src/fp/fp0300.cpp +++ b/src/fp/fp0300.cpp @@ -385,11 +385,15 @@ bool TPaf_record::insert() TPaf_record::TPaf_record(const char* table) : _table(table), _key(15, ',') { TString q; - q << "SELECT * FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE TABLE_NAME = '" << table << - "' ORDER BY ORDINAL_POSITION"; + q << "SELECT col.[name] FROM sys.columns AS col \ + inner JOIN sys.index_columns AS idx on col.[object_id] = idx.[object_id] AND col.[column_id] = idx.[column_id] \ + inner join sys.indexes as K on idx.[index_id] = K.[index_id] \ + where K.[name] = '" << table << "_KEY' \ + AND idx.[object_id] = object_id('" << table << "') \ + ORDER BY index_column_id ASC"; for (bool ok = db().sq_set_exec(q); ok; ok = db().sq_next()) { - _key.add(db().sq_get("COLUMN_NAME")); + _key.add(db().sq_get("name")); } CHECKS(!_key.empty_items(), "Invalid primary key for table ", table); } @@ -973,6 +977,7 @@ bool TDoc2Paf::elabora(TDocumentoEsteso& doc) { // TPaf_record paf3200f("PAF3200F"); + paf3200f.set("PU_KEYPRGINVIO", ""); // Ci pensa SiAggFP paf3200f.set("PU_KEYHEADERFATT", hfatt); paf3200f.set("PU_KEYBODYFATT", bfatt); paf3200f.remove(); @@ -983,6 +988,7 @@ bool TDoc2Paf::elabora(TDocumentoEsteso& doc) // TPaf_record paf0200f("PAF0200F"); + paf0200f.set("P2_KEYPRGINVIO", ""); // Ci pensa SiAggFP paf0200f.set("P2_KEYHEADERFATT", hfatt); paf0200f.set("P2_KEYBODYFATT", bfatt); paf0200f.remove(); @@ -1054,6 +1060,7 @@ bool TDoc2Paf::elabora(TDocumentoEsteso& doc) // TPaf_record paf0400f("PAF0400F"); + paf0400f.set("P4_KEYPRGINVIO", ""); // Ci pensa SiAggFP paf0400f.set("P4_KEYHEADERFATT", hfatt); paf0400f.set("P4_KEYBODYFATT", bfatt); paf0400f.remove(); @@ -1088,6 +1095,7 @@ bool TDoc2Paf::elabora(TDocumentoEsteso& doc) // TPaf_record paf0700f("PAF0700F"); + paf0700f.set("P7_KEYPRGINVIO", ""); // Ci pensa SiAggFP paf0700f.set("P7_KEYHEADERFATT", hfatt); paf0700f.set("P7_KEYBODYFATT", bfatt); paf0700f.remove(); @@ -1116,6 +1124,7 @@ bool TDoc2Paf::elabora(TDocumentoEsteso& doc) // TPaf_record paf0900f("PAF0900F"); + paf0900f.set("P9_KEYPRGINVIO", ""); // Ci pensa SiAggFP paf0900f.set("P9_KEYHEADERFATT", hfatt); paf0900f.set("P9_KEYBODYFATT", bfatt); paf0900f.remove(); @@ -1150,6 +1159,7 @@ bool TDoc2Paf::elabora(TDocumentoEsteso& doc) // TPaf_record paf2700f("PAF2700F"); + paf2700f.set("PQ_KEYPRGINVIO", ""); // Ci pensa SiAggFP paf2700f.set("PQ_KEYHEADERFATT", hfatt); paf2700f.set("PQ_KEYBODYFATT", bfatt); paf2700f.remove(); @@ -1174,24 +1184,28 @@ bool TDoc2Paf::elabora(TDocumentoEsteso& doc) // Azzera contratti TPaf_record paf1000f("PAF1000F"); + paf1000f.set("P0_KEYPRGINVIO", ""); // Ci pensa SiAggFP paf1000f.set("P0_KEYHEADERFATT", hfatt); paf1000f.set("P0_KEYBODYFATT", bfatt); paf1000f.remove(); // Azzera convenzioni TPaf_record paf1100f("PAF1100F"); + paf1100f.set("PA_KEYPRGINVIO", ""); // Ci pensa SiAggFP paf1100f.set("PA_KEYHEADERFATT", hfatt); paf1100f.set("PA_KEYBODYFATT", bfatt); paf1100f.remove(); // Azzera ordini TPaf_record paf1200f("PAF1200F"); + paf1200f.set("PB_KEYPRGINVIO", ""); // Ci pensa SiAggFP paf1200f.set("PB_KEYHEADERFATT", hfatt); paf1200f.set("PB_KEYBODYFATT", bfatt); paf1200f.remove(); // Azzera DDT TPaf_record paf1600f("PAF1600F"); + paf1600f.set("PF_KEYPRGINVIO", ""); // Ci pensa SiAggFP paf1600f.set("PF_KEYHEADERFATT", hfatt); paf1600f.set("PF_KEYBODYFATT", bfatt); paf1600f.remove(); @@ -1260,16 +1274,19 @@ bool TDoc2Paf::elabora(TDocumentoEsteso& doc) // TPaf_record paf1800f("PAF1800F"); + paf1800f.set("PI_KEYPRGINVIO", ""); // Ci pensa SiAggFP paf1800f.set("PI_KEYHEADERFATT", hfatt); paf1800f.set("PI_KEYBODYFATT", bfatt); paf1800f.remove(); // Cancella tutte le righe documento TPaf_record paf2000f("PAF2000F"); + paf2000f.set("PJ_KEYPRGINVIO", ""); // Ci pensa SiAggFP paf2000f.set("PJ_KEYHEADERFATT", hfatt); paf2000f.set("PJ_KEYBODYFATT", bfatt); paf2000f.remove(); // Cancella tutti gli sconti di riga TPaf_record paf1900f("PAF1900F"); + paf1900f.set("PY_KEYPRGINVIO", ""); // Ci pensa SiAggFP paf1900f.set("PY_KEYHEADERFATT", hfatt); paf1900f.set("PY_KEYBODYFATT", bfatt); paf1900f.remove(); // Cancella tutte le righe articoli del documento @@ -1288,6 +1305,7 @@ bool TDoc2Paf::elabora(TDocumentoEsteso& doc) FOR_EACH_PHYSICAL_RDOC(doc, r, rdoc) { paf1800f.reset(); + paf1800f.set("PI_KEYPRGINVIO", ""); // Ci pensa SiAggFP paf1800f.set("PI_KEYHEADERFATT", hfatt); paf1800f.set("PI_KEYBODYFATT", bfatt); paf1800f.set("PI_NUMEROLINEA", ++riga); @@ -1300,6 +1318,7 @@ bool TDoc2Paf::elabora(TDocumentoEsteso& doc) if (art.ok()) { paf1900f.reset(); + paf1900f.set("PY_KEYPRGINVIO", ""); // Ci pensa SiAggFP paf1900f.set("PY_KEYHEADERFATT", hfatt); paf1900f.set("PY_KEYBODYFATT", bfatt); paf1900f.set("PY_KEYNLINEA", riga); @@ -1394,6 +1413,7 @@ bool TDoc2Paf::elabora(TDocumentoEsteso& doc) // TPaf_record paf1600f("PAF1600F"); paf1600f.reset(); + paf1600f.set("PF_KEYPRGINVIO", ""); // Ci pensa SiAggFP paf1600f.set("PF_KEYHEADERFATT", hfatt); paf1600f.set("PF_KEYBODYFATT", bfatt); paf1600f.set("PF_RIFNUMLINEA", (long)r); @@ -1407,6 +1427,7 @@ bool TDoc2Paf::elabora(TDocumentoEsteso& doc) { // TPaf_record paf1000f("PAF1000F"); + paf1000f.set("P0_KEYPRGINVIO", ""); // Ci pensa SiAggFP paf1000f.set("P0_KEYHEADERFATT", hfatt); paf1000f.set("P0_KEYBODYFATT", bfatt); paf1000f.set("P0_RIFNUMLINEA", (long)r); @@ -1498,6 +1519,7 @@ bool TDoc2Paf::elabora(TDocumentoEsteso& doc) // TPaf_record paf2200f("PAF2200F"); + paf2200f.set("PL_KEYPRGINVIO", ""); // Ci pensa SiAggFP paf2200f.set("PL_KEYHEADERFATT", hfatt); paf2200f.set("PL_KEYBODYFATT", bfatt); paf2200f.remove(); // Cancella tutte le righe di riepilogo IVA @@ -1532,6 +1554,7 @@ bool TDoc2Paf::elabora(TDocumentoEsteso& doc) // TPaf_record paf2400f("PAF2400F"); + paf2400f.set("PN_KEYPRGINVIO", ""); // Ci pensa SiAggFP paf2400f.set("PN_KEYHEADERFATT", hfatt); paf2400f.set("PN_KEYBODYFATT", bfatt); paf2400f.remove(); // Cancella i dati pagamento @@ -1547,6 +1570,7 @@ bool TDoc2Paf::elabora(TDocumentoEsteso& doc) paf2400f.insert(); TPaf_record paf2500f("PAF2500F"); + paf2500f.set("PO_KEYPRGINVIO", ""); // Ci pensa SiAggFP paf2500f.set("PO_KEYHEADERFATT", hfatt); paf2500f.set("PO_KEYBODYFATT", bfatt); paf2500f.remove(); // Cancella tutte le rate @@ -1589,6 +1613,7 @@ bool TDoc2Paf::elabora(TDocumentoEsteso& doc) } TPaf_record paf2600f("PAF2600F"); + paf2600f.set("PP_KEYPRGINVIO", ""); // Ci pensa SiAggFP paf2600f.set("PP_KEYHEADERFATT", hfatt); paf2600f.set("PP_KEYBODYFATT", bfatt); paf2600f.remove(); // Cancella eventuali allegati diff --git a/src/fp/sql/fp0100.sql b/src/fp/sql/fp0100.sql index 5fc52d8f6..5c2bf60b5 100644 --- a/src/fp/sql/fp0100.sql +++ b/src/fp/sql/fp0100.sql @@ -1,3 +1,4 @@ + CREATE TABLE FPCDD00F ( PV_AMBIENTE CHAR(10), PV_DESCAMPO1 CHAR(20), @@ -1104,10 +1105,6 @@ CREATE TABLE PAF2000F ( PJ_PERCSCONTO NUMERIC(6, 2), PJ_IMPORTOSCONTO NUMERIC(15, 2), PJ_GESTIONE CHAR(1)) ; - - ALTER TABLE PAF2000F - ADD CONSTRAINT PAF2000Q - UNIQUE( PJ_KEYPRGINVIO , PJ_KEYHEADERFATT , PJ_KEYBODYFATT ) ; CREATE TABLE PAF2100F ( PK_KEYPRGINVIO CHAR(10), @@ -1120,10 +1117,6 @@ CREATE TABLE PAF2100F ( PK_RIFNUMERO NUMERIC(21, 5), PK_RIFDATA DATE, PK_GESTIONE CHAR(1)) ; - - ALTER TABLE PAF2100F - ADD CONSTRAINT PAF2100Q - UNIQUE( PK_KEYPRGINVIO , PK_KEYHEADERFATT , PK_KEYBODYFATT ) ; CREATE TABLE PAF2200F ( PL_KEYPRGINVIO CHAR(10), @@ -1142,10 +1135,6 @@ CREATE TABLE PAF2200F ( PL_ERREST CHAR(1), PL_DETRAIBILE NUMERIC(6, 2), PL_DEDUCIBILE CHAR(2)) ; - - ALTER TABLE PAF2200F - ADD CONSTRAINT PAF2200Q - UNIQUE( PL_KEYPRGINVIO , PL_KEYHEADERFATT , PL_KEYBODYFATT ) ; CREATE TABLE PAF2300F ( PM_KEYPRGINVIO CHAR(10), @@ -1206,9 +1195,6 @@ CREATE TABLE PAF2500F ( PO_ERRINT CHAR(1), PO_ERREST CHAR(1)) ; - ALTER TABLE PAF2500F - ADD CONSTRAINT PAF2500Q - UNIQUE( PO_KEYPRGINVIO , PO_KEYHEADERFATT , PO_KEYBODYFATT ) ; CREATE TABLE PAF2600F ( PP_KEYPRGINVIO CHAR(10), @@ -1539,7 +1525,7 @@ CREATE INDEX PAF0301I ON PAF0300F ( P3_KEYHEADERFATT ASC , P3_KEYBODYFATT ASC ) ; -CREATE INDEX PAF0401I +CREATE INDEX PAF0401I ON PAF0400F ( P4_KEYHEADERFATT ASC , P4_KEYBODYFATT ASC ) ; @@ -1653,4 +1639,134 @@ CREATE INDEX PAF3201I CREATE INDEX PAFW301L ON PAFW300F ( PW_KEYHEADERFATT ASC , PW_KEYBODYFATT ASC , PW_TIPODOC ASC , PW_TIPONUM ASC , PW_NUMERO ASC , PW_DATA ASC ) + ; + + +-- Indici essenziali al funzionamento di Campo +CREATE INDEX PAF0100F_KEY + ON PAF0100F ( P1_KEYPRGINVIO ASC , P1_KEYHEADERFATT ASC , P1_KEYBODYFATT ASC ) + ; + +CREATE INDEX PAF0200F_KEY + ON PAF0200F (P2_KEYPRGINVIO ASC , P2_KEYHEADERFATT ASC , P2_KEYBODYFATT ASC ) + ; + +CREATE INDEX PAF0300F_KEY + ON PAF0300F (P3_KEYPRGINVIO ASC , P3_KEYHEADERFATT ASC , P3_KEYBODYFATT ASC ) + ; + +CREATE INDEX PAF0400F_KEY + ON PAF0400F (P4_KEYPRGINVIO ASC , P4_KEYHEADERFATT ASC , P4_KEYBODYFATT ASC ) + ; + +CREATE INDEX PAF0500F_KEY + ON PAF0500F (P5_KEYPRGINVIO ASC , P5_KEYHEADERFATT ASC , P5_KEYBODYFATT ASC ) + ; + +CREATE INDEX PAF0600F_KEY + ON PAF0600F (P6_KEYPRGINVIO ASC , P6_KEYHEADERFATT ASC , P6_KEYBODYFATT ASC ) + ; + +CREATE INDEX PAF0700F_KEY + ON PAF0700F (P7_KEYPRGINVIO ASC , P7_KEYHEADERFATT ASC , P7_KEYBODYFATT ASC ) + ; + +CREATE INDEX PAF0800F_KEY + ON PAF0800F (P8_KEYPRGINVIO ASC , P8_KEYHEADERFATT ASC , P8_KEYBODYFATT ASC , P8_RIFNUMLINEA ASC ) + ; + +CREATE INDEX PAF0900F_KEY + ON PAF0900F (P9_KEYPRGINVIO ASC , P9_KEYHEADERFATT ASC , P9_KEYBODYFATT ASC , P9_RIFNUMLINEA ASC ) + ; + +CREATE INDEX PAF1000F_KEY + ON PAF1000F (P0_KEYPRGINVIO ASC , P0_KEYHEADERFATT ASC , P0_KEYBODYFATT ASC , P0_RIFNUMLINEA ASC ) + ; + +CREATE INDEX PAF1100F_KEY + ON PAF1100F (PA_KEYPRGINVIO ASC , PA_KEYHEADERFATT ASC , PA_KEYBODYFATT ASC , PA_RIFNUMLINEA ASC ) + ; + +CREATE INDEX PAF1200F_KEY + ON PAF1200F (PB_KEYPRGINVIO ASC , PB_KEYHEADERFATT ASC , PB_KEYBODYFATT ASC , PB_RIFNUMLINEA ASC ) + ; + +CREATE INDEX PAF1300F_KEY + ON PAF1300F (PC_KEYPRGINVIO ASC , PC_KEYHEADERFATT ASC , PC_KEYBODYFATT ASC , PC_RIFNUMLINEA ASC ) + ; + +CREATE INDEX PAF1400F_KEY + ON PAF1400F (PD_KEYPRGINVIO ASC , PD_KEYHEADERFATT ASC , PD_KEYBODYFATT ASC , PD_RIFNUMLINEA ASC ) + ; + +CREATE INDEX PAF1500F_KEY + ON PAF1500F (PE_KEYPRGINVIO ASC , PE_KEYHEADERFATT ASC , PE_KEYBODYFATT ASC ) + ; + +CREATE INDEX PAF1600F_KEY + ON PAF1600F (PF_KEYPRGINVIO ASC , PF_KEYHEADERFATT ASC , PF_KEYBODYFATT ASC , PF_RIFNUMLINEA ASC ) + ; + +CREATE INDEX PAF1700F_KEY + ON PAF1700F (PG_KEYPRGINVIO ASC , PG_KEYHEADERFATT ASC , PG_KEYBODYFATT ASC ) + ; + +CREATE INDEX PAF1800F_KEY + ON PAF1800F (PI_KEYPRGINVIO ASC , PI_KEYHEADERFATT ASC , PI_KEYBODYFATT ASC , PI_NUMEROLINEA ASC ) + ; + +CREATE INDEX PAF1900F_KEY + ON PAF1900F (PY_KEYPRGINVIO ASC , PY_KEYHEADERFATT ASC , PY_KEYBODYFATT ASC , PY_KEYNLINEA ASC ) + ; + +CREATE INDEX PAF2000F_KEY + ON PAF2000F (PJ_KEYPRGINVIO ASC , PJ_KEYHEADERFATT ASC , PJ_KEYBODYFATT ASC , PJ_KEYNLINEA ASC , PJ_KEYNLINAR ASC ) + ; + +CREATE INDEX PAF2100F_KEY + ON PAF2100F (PK_KEYPRGINVIO ASC , PK_KEYHEADERFATT ASC , PK_KEYBODYFATT ASC , PK_KEYNLINEA ASC ) + ; + +CREATE INDEX PAF2200F_KEY + ON PAF2200F (PL_KEYPRGINVIO ASC , PL_KEYHEADERFATT ASC , PL_KEYBODYFATT ASC ) + ; + +CREATE INDEX PAF2300F_KEY + ON PAF2300F (PM_KEYPRGINVIO ASC , PM_KEYHEADERFATT ASC , PM_KEYBODYFATT ASC ) + ; + +CREATE INDEX PAF2400F_KEY + ON PAF2400F (PN_KEYPRGINVIO ASC , PN_KEYHEADERFATT ASC , PN_KEYBODYFATT ASC ) + ; + +CREATE INDEX PAF2500F_KEY + ON PAF2500F (PO_KEYPRGINVIO ASC , PO_KEYHEADERFATT ASC , PO_KEYBODYFATT ASC , PO_RIGA ASC ) + ; + +CREATE INDEX PAF2600F_KEY + ON PAF2600F (PP_KEYPRGINVIO ASC , PP_KEYHEADERFATT ASC , PP_KEYBODYFATT ASC , PP_NUMEROLINEA ASC ) + ; + +CREATE INDEX PAF2700F_KEY + ON PAF2700F (PQ_KEYPRGINVIO ASC , PQ_KEYHEADERFATT ASC , PQ_KEYBODYFATT ASC ) + ; + +CREATE INDEX PAF2800F_KEY + ON PAF2800F (PR_KEYPRGINVIO ASC , PR_KEYHEADERFATT ASC , PR_KEYBODYFATT ASC ) + ; + +CREATE INDEX PAF2900F_KEY + ON PAF2900F (PS_KEYPRGINVIO ASC , PS_KEYHEADERFATT ASC , PS_KEYBODYFATT ASC ) + ; + +CREATE INDEX PAF3100F_KEY + ON PAF3100F (PH_KEYPRGINVIO ASC , PH_KEYHEADERFATT ASC , PH_KEYBODYFATT ASC ) + ; + +CREATE INDEX PAF3200F_KEY + ON PAF3200F (PU_KEYPRGINVIO ASC , PU_KEYHEADERFATT ASC , PU_KEYBODYFATT ASC ) + ; + +CREATE INDEX PAFW300F_KEY + ON PAFW300F (PW_KEYPRGINVIO ASC , PW_KEYHEADERFATT ASC , PW_KEYBODYFATT ASC , PW_TIPODOC ASC , PW_TIPONUM ASC , PW_NUMERO ASC , PW_DATA ASC ) ; \ No newline at end of file