public override void DescribeTree(TreeView tree, DataTable T, string ListingType) { //Aggiorno le intestazioni del DataGrid if (ListingType == "tree") { base.DescribeColumns(T, ListingType); foreach (DataColumn C in T.Columns) { DescribeAColumn(T, C.ColumnName, "", -1); } DescribeAColumn(T, "leveldescr", "Livello", 1); DescribeAColumn(T, "sortcode", "Codice", 2); DescribeAColumn(T, "description", "Denominazione", 3); DescribeAColumn(T, "movkind", "Tipo movimento", 4); DescribeAColumn(T, "printingorder", "Ordine stampa", 5); DescribeAColumn(T, "incomeprevision", "Budget Ricavi", 6); DescribeAColumn(T, "expenseprevision", "Budget Costi", 7); } base.DescribeTree(tree, T, ListingType); string filterc = QHC.CmpEq("nlevel", 1); string filtersql = QHS.CmpEq("nlevel", 1); int eserc = CfgFn.GetNoNullInt32(GetSys("esercizio")); filterc = QHC.AppAnd(filterc, QHC.NullOrLe("start", eserc), QHC.NullOrGe("stop", eserc)); filtersql = QHC.AppAnd(filtersql, QHS.NullOrLe("start", eserc), QHS.NullOrGe("stop", eserc)); TreeViewManager M = new TreeViewClassMovimentiView(T, tree, filterc, filtersql); }
public override void DescribeTree(TreeView tree, DataTable T, string ListingType) { base.DescribeTree(tree, T, ListingType); string filterc = QHC.CmpEq("nlevel", "1"); string filtersql = QHS.CmpEq("nlevel", "1"); if (ListingType != "history") { int eserc = CfgFn.GetNoNullInt32(GetSys("esercizio")); filterc = QHC.AppAnd(filterc, QHC.NullOrLe("start", eserc), QHC.NullOrGe("stop", eserc)); filtersql = QHC.AppAnd(filtersql, QHS.NullOrLe("start", eserc), QHS.NullOrGe("stop", eserc)); } // if (ListingType=="tree"){ // string eserc = esercizio.ToString(); // filter=filter+"AND(esercizio='" + eserc + "')"; // } //easy_node_dispatcher D = new easy_node_dispatcher( // "sortinglevel", // "nlevel", // "description", // "flagusable", // "description", // "sortcode" // ); int maxlevel = 0; string filterSortLevel = ""; if (ListingType == "tree5") { maxlevel = 5; filterSortLevel = QHS.CmpLe("nlevel", maxlevel); myGetData.SetStaticFilter("sortinglevel", filterSortLevel); } bool all = false; if (ListingType == "treeall") { all = true; } //object o = T.ExtendedProperties["idsorkindFilter"]; //string filtro = o==null // ? QHS.BitSet("flag", 1) // : QHS.AppAnd(o.ToString(), QHS.BitSet("flag", 1)); //int levelop = CfgFn.GetNoNullInt32(Conn.DO_READ_VALUE("sortinglevel", filtro, "min(nlevel)")); TreeViewManager M = new TreeViewClassMovimenti(Conn, T, tree, filterc, filtersql, all, maxlevel); //, levelop); }
/* * public override bool IsValid (DataRow R, out string errmess, out string errfield){ * if (!base.IsValid(R, out errmess, out errfield)) * return false; * if (R.RowState!=DataRowState.Added) return true; * int lunghezza =(int)PrimaryDataTable.Columns["sortcode"].ExtendedProperties["length"]; * if (lunghezza>0 && R["sortcode"].ToString().Length != lunghezza){ * errmess="Attenzione! Il campo 'codice' deve avere lunghezza "+lunghezza+"."; * errfield="sortcode"; * return false; * } * return true; * } */ public override DataRow SelectByCondition(string filter, string searchtable) { filter = QHS.AppAnd(filter, QHS.NullOrLe("start", GetSys("esercizio")), QHS.NullOrGe("stop", GetSys("esercizio"))); if (edit_type == "treeall") { return(base.SelectByCondition(filter, "sorting")); } if (edit_type == "tree5") { filter = QHS.AppAnd(filter, QHS.CmpEq("nlevel", 5)); return(base.SelectByCondition(filter, "sortingview")); } return(base.SelectByCondition(filter, "sortingusable")); }
/// <summary> /// Elimina la parte di filtro costituita da esercizio='yyyy' poiché /// la vista classmovimentioperativo non contiene il campo esercizio /// </summary> /// <param name="filter">filtro da purificare</param> /// <returns>filtro purificato</returns> //private string PurificaFiltro(string filter) { // string tofind="(ayear='"+GetSys("esercizio").ToString()+"')"; // int lentofind=tofind.Length; // //se non contiene la stringa non faccio nulla // if (!(filter.IndexOf(tofind)>0)) return filter; // //cerco il punto di inizio // int begin=filter.IndexOf(tofind); // int end=begin+lentofind; // //elimino la stringa // string newfilter=filter.Substring(0,begin)+filter.Substring(end); // //si trova in prima posizione? // if (newfilter.Trim().StartsWith("AND")) // return newfilter.Trim().Substring(3); // //si trova in ultima posizione? // if (newfilter.Trim().EndsWith("AND")) // return newfilter.Trim().Substring(0, newfilter.Length - newfilter.LastIndexOf("AND")); // //si trova al centro // return newfilter.Replace("ANDAND","AND"); //} public override DataRow SelectByCondition(string filter, string searchtable) { //filter=PurificaFiltro(filter); DataRow R = base.SelectByCondition(filter, "sortingusableyear"); if (R == null) { return(null); } string newfilter = QHS.AppAnd(QHS.CmpEq("ayear", GetSys("esercizio")), QHS.MCmp(R, "idsorkind", "idsor"), QHS.NullOrLt("start", GetSys("esercizio")), QHS.NullOrGe("stop", GetSys("esercizio"))); int count = Conn.RUN_SELECT_COUNT("sortingview", newfilter, true); if (count == 1) { return(R); } return(null); }
public override bool IsValid(DataRow R, out string errmess, out string errfield) { if (R["completed"].ToString() == "S" && R.Table.Columns.Contains("datecompleted")) { if (R["datecompleted"] == DBNull.Value) { errmess = "E' necessario specificare la data di acquisizione documentazione definitiva"; errfield = "datecompleted"; return(false); } } if ((R.RowState == DataRowState.Added || ( R.RowState == DataRowState.Modified && R["datecompleted", DataRowVersion.Original] == DBNull.Value) ) && R["datecompleted"] != DBNull.Value ) { DateTime dateCompleted = (DateTime)R["datecompleted"]; if (R["stop"] == DBNull.Value) { errmess = "Non è possibile considerare pagare una parcella senza data fine"; errfield = "stop"; return(false); } DateTime stop = (DateTime)R["stop"]; if (dateCompleted < stop) { errmess = "La data di acquisizione documentazione definitiva non può precedere la data fine"; errfield = "datecompleted"; return(false); } if (dateCompleted.Year != Conn.GetEsercizio()) { errmess = "La data di acquisizione documentazione definitiva deve essere quella dell'esercizio all'atto dell'inserimento"; errfield = "datecompleted"; return(false); } int ycon = CfgFn.GetNoNullInt32(R["ycon"]); if (dateCompleted.Year < ycon) { errmess = "La data di acquisizione documentazione definitiva non può precedere l'anno parcella"; errfield = "datecompleted"; return(false); } } if (!base.IsValid(R, out errmess, out errfield)) { return(false); } if ((R["idser"] is DBNull) || (CfgFn.GetNoNullInt32(R["idser"]) == 0)) { errmess = "il campo prestazione è obbligatorio"; errfield = "idser"; return(false); } string filterRitEnpals = QHS.AppAnd(QHS.CmpEq("idser", R["idser"]), QHS.CmpEq("taxkind", 3), QHS.Like("taxref", "%enpals%")); DataTable TRitEnpals = Conn.RUN_SELECT("servicetaxview", "*", null, filterRitEnpals, null, false); if (TRitEnpals.Rows.Count > 0) { errmess = "La denuncia UNIEMENS per il compenso assoggettato ad ENPALS \n\r " + "non sarà prodotta con il flusso UNIEMENS di Easy ma \n\r " + "dovrà essere eventualmente effettuata direttamente dal sito \n\r " + "http://www.inps.it/ . Si raccomanda di informare tempestivamente \n\r " + "l'ufficio competente alla trasmissione della denuncia UNIEMENS."; errfield = "idser"; MessageBox.Show(errmess, "Avviso", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } if (R["description"].ToString() == "") { errmess = "Il campo descrizione è obbligatorio."; errfield = "description"; return(false); } //cascon§2006§2 bool IsAdmin = (GetSys("manage_prestazioni") != null) ? GetSys("manage_prestazioni").ToString() == "S" : false; string filter_idrelated = "cascon§" + R["ycon"].ToString() + "§" + R["ncon"].ToString(); filter_idrelated = QHS.CmpEq("idrelated", filter_idrelated); DataTable Tserviceregistry = Conn.RUN_SELECT("serviceregistry", "*", null, filter_idrelated, null, null, true); if ((Tserviceregistry.Rows.Count > 0) && (R.RowState == DataRowState.Modified)) { bool error = false; string message = ""; if (R["idreg", DataRowVersion.Current].ToString() != R["idreg", DataRowVersion.Original].ToString()) { message = "Percipiente \n\r "; error = true; } if (R["description", DataRowVersion.Current].ToString() != R["description", DataRowVersion.Original].ToString()) { message = message + "Descrizione \n\r "; error = true; } if (R["start", DataRowVersion.Current].ToString() != R["start", DataRowVersion.Original].ToString()) { message = message + "Data Inizio \n\r "; error = true; } if (R["stop", DataRowVersion.Current].ToString() != R["stop", DataRowVersion.Original].ToString()) { message = message + "Data Fine \n\r "; error = true; } if (CfgFn.RoundValuta(CfgFn.GetNoNullDecimal(R["feegross", DataRowVersion.Current])) != CfgFn.RoundValuta(CfgFn.GetNoNullDecimal(R["feegross", DataRowVersion.Original]))) { message = message + "Lordo al beneficiario \n\r "; error = true; } if (error) { if (IsAdmin) { errmess = "L'Anagrafe delle Prestazioni è stata già generata, e risultano modificati i seguenti dati: \n\r" + message + "Adeguare anche i dati dell'Incarico."; MessageBox.Show(errmess, "Avviso", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } else { errmess = "Risultano modificati i seguenti dati: \n\r" + message + "La modifica non è consentita perché l'Anagrafe delle Prestazioni è stata già generata.\r\n" + "Contattare il servizio assistenza o un utente con ruolo 'manage_prestazioni' "; return(false); } } } // DataRow[] righeImpContr = R.GetChildRows("casualcontractcasualcontractyear"); if (R["!codiceritenutainps"] != DBNull.Value) { if (righeImpContr[0]["idemenscontractkind"] is DBNull) { errmess = "Per una prestazione soggetta ad INPS è obbligatorio specificare il 'Tipo Rapporto'"; errfield = "codicerapporto"; return(false); } string filtro = QHS.AppAnd(QHS.CmpEq("idemenscontractkind", righeImpContr[0]["idemenscontractkind"]), QHS.CmpEq("ayear", R["ycon"])); object flagAttivitaObbligatoria = Conn.DO_READ_VALUE("emenscontractkind", filtro, "flagactivityrequested"); if (flagAttivitaObbligatoria != null && flagAttivitaObbligatoria.Equals("S") && (righeImpContr[0]["activitycode"] is DBNull)) { errmess = "Per il 'Tipo Rapporto' scelto è necessario specificare l'Attività Previdenziale"; errfield = "activitycode"; return(false); } if (flagAttivitaObbligatoria != null && !flagAttivitaObbligatoria.Equals("S") && !(righeImpContr[0]["activitycode"] is DBNull)) { errmess = "Per il 'Tipo Rapporto' scelto non va selezionata l'Attività Previdenziale"; errfield = "activitycode"; return(false); } string codiceritenutainps = R["!codiceritenutainps"].ToString(); if ((codiceritenutainps == "07_INPS_M") && (righeImpContr[0]["idotherinsurance"] is DBNull)) { errmess = "Per i soggetti mutuati è necessario specificare l'altra forma assicurativa"; return(false); } if ((codiceritenutainps == "07_INPS_P") && (!righeImpContr[0]["idotherinsurance"].Equals("002"))) { errmess = "Per i titolari di pensione diretta è necessario specificare 'Titolari di pensione diretta' come altra forma assicurativa"; return(false); } if ((codiceritenutainps == "07_INPS_P") && (!righeImpContr[0]["idotherinsurance"].Equals("002"))) { errmess = "La prestazione scelta non è compatibile con l'altra forma assicurativa 'Titolari di pensione diretta'"; errfield = "idser"; return(false); } } if (CfgFn.GetNoNullDecimal(R["feegross"]) <= 0) { errmess = "L'importo lordo del contratto deve essere maggiore di zero"; errfield = "feegross"; return(false); } DateTime dataInizio = (DateTime)R["start"]; DateTime dataFine = (DateTime)R["stop"]; if (dataInizio > dataFine) { errmess = "La data di fine deve essere identica o successiva a quella di inizio"; errfield = "stop"; return(false); } //Se il percipiente ha un indirizzo AP, nel form del compenso si deve scegliere o S o N String codeaddress = "07_SW_ANP"; DateTime DataInizio = (DateTime)R["start"]; object idaddresskind = Conn.DO_READ_VALUE("address", QHS.CmpEq("codeaddress", codeaddress), "idaddress"); DataTable Address = DataAccess.RUN_SELECT(Conn, "registryaddress", "*", null, QHS.AppAnd(QHS.CmpEq("idaddresskind", idaddresskind), QHS.CmpEq("idreg", R["idreg"]), QHS.CmpLe("start", DataInizio), QHS.NullOrGe("stop", DataInizio)), false); if (Address.Rows.Count > 0) { if ((R["authneeded"].ToString() != "S") && (R["authneeded"].ToString() != "N")) { errfield = "authneeded"; errmess = "Il percipiente ha un indirizzo Anagrafe delle Prestazioni, pertanto va indicato se necessita o meno dell'autorizzazione."; return(false); } } if (R["authneeded"].ToString() == "S" && R["authdoc"].ToString() == "") { errmess = "Il campo 'Documento' è obbligatorio"; errfield = "authdoc"; return(false); } if (R["authneeded"].ToString() == "S" && R["authdocdate"] == DBNull.Value) { errmess = "Il campo 'data' è obbligatorio"; errfield = "authdocdate"; return(false); } if (R["authneeded"].ToString() == "N" && R["noauthreason"].ToString() == "") { errmess = "Il campo 'Motivo' è obbligatorio"; errfield = "authdoc"; return(false); } if ((R.RowState == DataRowState.Added) && (!RowChange.IsAutoIncrement(R.Table.Columns["ncon"]))) { int NPRESENT = Conn.RUN_SELECT_COUNT("casualcontract", "(ycon=" + QueryCreator.quotedstrvalue(R["ycon"], true) + ")AND" + "(ncon=" + QueryCreator.quotedstrvalue(R["ncon"], true) + ")", true); if (NPRESENT > 0) { errmess = "Esiste già un contratto con lo stesso numero."; errfield = "ncon"; return(false); } } //Se il DS contiene la tabella registry, controlla che l'idreg abbia il CF,se SI chiama il metodo. if (R.Table.DataSet.Tables.Contains("registry") && (R.Table.DataSet.Tables["registry"].Rows.Count > 0)) { DataRow Registry = R.Table.DataSet.Tables["registry"].Rows[0]; if (Registry["cf"] != DBNull.Value) { string errori; if (!CalcolaCodiceFiscale.CodiceFiscaleValido(this.Conn, Registry, out errori)) { errmess = "Il Codice Fiscale non è valido!\n" + errori; return(false); } } } else { //Se il DS non contiene la tabella registry,controlla che l'idreg abbia il CF se SI legge la riga dal DB // e chiama il metodo. object CF = Conn.DO_READ_VALUE("registry", QHS.CmpEq("idreg", R["idreg"]), "cf"); if (CF != DBNull.Value) { DataTable TRegistry = Conn.RUN_SELECT("registry", "*", null, QHS.CmpEq("idreg", R["idreg"]), null, null, true); if (TRegistry.Rows.Count > 0) { DataRow Registry = TRegistry.Rows[0]; string errori; if (!CalcolaCodiceFiscale.CodiceFiscaleValido(this.Conn, Registry, out errori)) { errmess = "Il Codice Fiscale non è valido!\n" + errori; return(false); } } } } if (!CfgFn.IsValidString(R["cigcode"].ToString())) { errmess = "Il CIG contiene caratteri non validi.I caratteri ammessi sono solo numeri e lettere."; errfield = "cigcode"; return(false); } return(true); }
public override bool IsValid(DataRow R, out string errmess, out string errfield) { if (!base.IsValid(R, out errmess, out errfield)) { return(false); } //profservice§2006§34 if (CfgFn.GetNoNullInt32(R["idser"]) <= 0) { errmess = "Bisogna specificare la prestazione"; errfield = "idser"; return(false); } string filterRitEnpals = QHS.AppAnd(QHS.CmpEq("idser", R["idser"]), QHS.CmpEq("taxkind", 3), QHS.Like("taxref", "%enpals%")); DataTable TRitEnpals = Conn.RUN_SELECT("servicetaxview", "*", null, filterRitEnpals, null, false); if (TRitEnpals.Rows.Count > 0) { errmess = "La denuncia UNIEMENS per il compenso assoggettato ad ENPALS \n\r " + "non sarà prodotta con il flusso UNIEMENS di Easy ma \n\r " + "dovrà essere eventualmente effettuata direttamente dal sito \n\r " + "http://www.inps.it/ . Si raccomanda di informare tempestivamente \n\r " + "l'ufficio competente alla trasmissione della denuncia UNIEMENS."; errfield = "idser"; MessageBox.Show(errmess, "Avviso", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } bool IsAdmin = (GetSys("manage_prestazioni") != null) ? GetSys("manage_prestazioni").ToString() == "S" : false; string filter_idrelated = QHC.CmpEq("idrelated", "profservice§" + R["ycon"] + "§" + R["ncon"]); //filter_idrelated = "(idrelated="+QueryCreator.quotedstrvalue(filter_idrelated,true)+")"; DataTable Tserviceregistry = Conn.RUN_SELECT("serviceregistry", "*", null, filter_idrelated, null, null, true); if ((Tserviceregistry.Rows.Count > 0) && (R.RowState == DataRowState.Modified)) { bool error = false; string message = ""; if (R["idreg", DataRowVersion.Current].ToString() != R["idreg", DataRowVersion.Original].ToString()) { message = "Percipiente \n\r "; error = true; } if (R["description", DataRowVersion.Current].ToString() != R["description", DataRowVersion.Original].ToString()) { message = message + "Descrizione \n\r "; error = true; } if (R["start", DataRowVersion.Current].ToString() != R["start", DataRowVersion.Original].ToString()) { message = message + "Data Inizio \n\r "; error = true; } if (R["stop", DataRowVersion.Current].ToString() != R["stop", DataRowVersion.Original].ToString()) { message = message + "Data Fine \n\r "; error = true; } if (CfgFn.RoundValuta(CfgFn.GetNoNullDecimal(R["totalcost", DataRowVersion.Current])) != CfgFn.RoundValuta(CfgFn.GetNoNullDecimal(R["totalcost", DataRowVersion.Original]))) { message = message + "Lordo al beneficiario \n\r "; error = true; } if (error) { if (IsAdmin) { errmess = "L'Anagrafe delle Prestazioni è stata già generata, e risultano modificati i seguenti dati: \n\r" + message + "Adeguare anche i dati dell'Incarico."; MessageBox.Show(errmess, "Avviso", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } else { errmess = "Risultano modificati i seguenti dati: \n\r" + message + "La modifica non è consentita perché l'Anagrafe delle Prestazioni è stata già generata.\r\n" + "Contattare il servizio assistenza o un utente con ruolo 'manage_prestazioni' "; return(false); } } } // if (CfgFn.GetNoNullInt32(R["idreg"]) == 0) { errmess = "Inserire il percipiente"; errfield = "idreg"; return(false); } if (R["description"].ToString() == "") { errmess = "Il campo descrizione è obbligatorio."; errfield = "description"; return(false); } if (R["doc"].ToString() == "") { errmess = "Il campo documento è obbligatorio e dovrebbe contenere il rif. alla fattura."; errfield = "doc"; } if (R["docdate"].ToString() == "") { errmess = "Il campo data documento è obbligatorio e dovrebbe contenere la data della fattura."; errfield = "docdate"; } //A questo controllo è stato tolto l' uguale,perchè ci sono dei casi in cui i professionisti fatturano solo spese non imponibili //anticipate per conto del committente quindi è possibile che l'importo della prestazione sia uguale a zero. Task 3750 if (CfgFn.GetNoNullDecimal(R["feegross"]) < 0) { errmess = "L'importo lordo del contratto deve essere maggiore di zero"; errfield = "feegross"; return(false); } DateTime dataInizio = (DateTime)R["start"]; DateTime dataFine = (DateTime)R["stop"]; if (dataInizio > dataFine) { errmess = "La data di fine deve essere identica o successiva a quella di inizio"; errfield = "stop"; return(false); } //Se il percipiente ha un indirizzo AP, nel form del compenso si deve scegliere o S o N String codeaddress = "07_SW_ANP"; DateTime DataInizio = (DateTime)R["start"]; object idaddresskind = Conn.DO_READ_VALUE("address", QHS.CmpEq("codeaddress", codeaddress), "idaddress"); DataTable Address = DataAccess.RUN_SELECT(Conn, "registryaddress", "*", null, QHS.AppAnd(QHS.CmpEq("idaddresskind", idaddresskind), QHS.CmpEq("idreg", R["idreg"]), QHS.CmpLe("start", DataInizio), QHS.NullOrGe("stop", DataInizio)), false); if (Address.Rows.Count > 0) { if ((R["authneeded"].ToString() != "S") && (R["authneeded"].ToString() != "N")) { errfield = "authneeded"; errmess = "Il percipiente ha un indirizzo Anagrafe delle Prestazioni, pertanto va indicato se necessita o meno dell'autorizzazione."; return(false); } } if (R["authneeded"].ToString() == "S" && R["authdoc"].ToString() == "") { errmess = "Il campo 'Documento' è obbligatorio"; errfield = "authdoc"; return(false); } if (R["authneeded"].ToString() == "S" && R["authdocdate"] == DBNull.Value) { errmess = "Il campo 'data' è obbligatorio"; errfield = "authdocdate"; return(false); } if (R["authneeded"].ToString() == "N" && R["noauthreason"].ToString() == "") { errmess = "Il campo 'Motivo' è obbligatorio"; errfield = "authdoc"; return(false); } if ((R.RowState == DataRowState.Added) && (!RowChange.IsAutoIncrement(R.Table.Columns["ncon"]))) { string filterProfService = QHS.AppAnd(QHS.CmpEq("ycon", R["ycon"]), QHS.CmpEq("ncon", R["ncon"])); int NPRESENT = Conn.RUN_SELECT_COUNT("profservice", filterProfService, true); if (NPRESENT > 0) { errmess = "Esiste già un contratto con lo stesso numero."; errfield = "ncon"; return(false); } } //Se il DS contiene la tabella registry, controlla che l'idreg abbia il CF,se SI chiama il metodo. if (R.Table.DataSet.Tables.Contains("registry") && (R.Table.DataSet.Tables["registry"].Rows.Count > 0)) { DataRow Registry = R.Table.DataSet.Tables["registry"].Rows[0]; if (Registry["cf"] != DBNull.Value) { string errori; if (!CalcolaCodiceFiscale.CodiceFiscaleValido(this.Conn, Registry, out errori)) { errmess = "Il Codice Fiscale non è valido!\n" + errori; return(false); } } } else { //Se il DS non contiene la tabella registry,controlla che l'idreg abbia il CF se SI legge la riga dal DB // e chiama il metodo. object CF = Conn.DO_READ_VALUE("registry", QHS.CmpEq("idreg", R["idreg"]), "cf"); if (CF != DBNull.Value) { DataTable TRegistry = Conn.RUN_SELECT("registry", "*", null, QHS.CmpEq("idreg", R["idreg"]), null, null, true); if (TRegistry.Rows.Count > 0) { DataRow Registry = TRegistry.Rows[0]; string errori; if (!CalcolaCodiceFiscale.CodiceFiscaleValido(this.Conn, Registry, out errori)) { errmess = "Il Codice Fiscale non è valido!\n" + errori; return(false); } } } } return(true); }
public override bool IsValid(DataRow R, out string errmess, out string errfield) { errfield = null; errmess = null; object O = Conn.DO_READ_VALUE("web_config", null, "askitinerationclause"); if (O == null) { O = DBNull.Value; } bool clause_needed = (O.ToString().ToUpper() == "S"); if (CfgFn.GetNoNullInt32(R["idreg"]) <= 0) { errfield = "registry.title"; errmess = "L'incaricato è un informazione obbligatoria."; return(false); } if (R["start"].ToString() == QueryCreator.EmptyDate().ToString()) { errfield = "start"; errmess = "Bisogna specificare la data inizio"; return(false); } if (R["stop"].ToString() == QueryCreator.EmptyDate().ToString()) { errfield = "stop"; errmess = "Bisogna specificare la data fine"; return(false); } if (R["description"].ToString().Trim() == "") { errfield = "description"; errmess = "Bisogna specificare la descrizione"; return(false); } if (CfgFn.GetNoNullInt32(R["idser"]) <= 0) { errfield = "idser"; errmess = "Bisogna specificare la prestazione"; return(false); } //if (CfgFn.GetNoNullInt32(R["idregistrylegalstatus"]) <= 0) { // errfield = "idregistrylegalstatus"; // errmess = "I dati relativi alla posizione giuridica dell'incaricato sono incompleti o mancanti."; // return false; //} //itineration§2006§6 bool IsAdmin = (GetSys("manage_prestazioni") != null) ? GetSys("manage_prestazioni").ToString() == "S" : false; string filter_idrelated = "itineration§" + R["yitineration"].ToString() + "§" + R["nitineration"].ToString(); filter_idrelated = QHS.CmpEq("idrelated", filter_idrelated); if (R["completed"].ToString() == "S" && R.Table.Columns.Contains("datecompleted")) { if (R["datecompleted"] == DBNull.Value) { errmess = "E' necessario specificare la data di acquisizione documentazione definitiva"; errfield = "datecompleted"; return(false); } } if (R.Table.Columns.Contains("datecompleted")) { if ((R.RowState == DataRowState.Added || ( R.RowState == DataRowState.Modified && R["datecompleted", DataRowVersion.Original].ToString() != R["datecompleted"].ToString()) ) && R["datecompleted"] != DBNull.Value ) { DateTime dateCompleted = (DateTime)R["datecompleted"]; if (R["stop"] == DBNull.Value) { errmess = "Non è possibile pagare una missione senza data fine"; errfield = "stop"; return(false); } DateTime stop = (DateTime)R["stop"]; if (dateCompleted < stop) { errmess = "La data di acquisizione documentazione definitiva non può precedere la data fine missione"; errfield = "datecompleted"; return(false); } if (dateCompleted.Year != Conn.GetEsercizio()) { errmess = "La data di acquisizione documentazione definitiva deve essere quella dell'esercizio all'atto dell'inserimento"; errfield = "datecompleted"; return(false); } int yitineration = CfgFn.GetNoNullInt32(R["yitineration"]); if (dateCompleted.Year < yitineration) { errmess = "La data di acquisizione documentazione definitiva non può precedere l'anno missione"; errfield = "datecompleted"; return(false); } } } DataTable Tserviceregistry = Conn.RUN_SELECT("serviceregistry", "*", null, filter_idrelated, null, null, true); if ((Tserviceregistry.Rows.Count > 0) && (R.RowState == DataRowState.Modified)) { bool error = false; string message = ""; if (R["idreg", DataRowVersion.Current].ToString() != R["idreg", DataRowVersion.Original].ToString()) { message = "Percipiente \n\r "; error = true; } if (R["description", DataRowVersion.Current].ToString() != R["description", DataRowVersion.Original].ToString()) { message = message + "Descrizione \n\r "; error = true; } if (R["start", DataRowVersion.Current].ToString() != R["start", DataRowVersion.Original].ToString()) { message = message + "Data Inizio \n\r "; error = true; } if (R["stop", DataRowVersion.Current].ToString() != R["stop", DataRowVersion.Original].ToString()) { message = message + "Data Fine \n\r "; error = true; } if (CfgFn.RoundValuta(CfgFn.GetNoNullDecimal(R["totalgross", DataRowVersion.Current])) != CfgFn.RoundValuta(CfgFn.GetNoNullDecimal(R["totalgross", DataRowVersion.Original]))) { message = message + "Importo lordo \n\r "; error = true; } if (error) { if (IsAdmin) { errmess = "L'Anagrafe delle Prestazioni è stata già generata, e risultano modificati i seguenti dati: \n\r" + message + "Adeguare anche i dati dell'Incarico."; MessageBox.Show(errmess, "Avviso", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } else { errmess = "Risultano modificati i seguenti dati: \n\r" + message + "La modifica non è consentita perché l'Anagrafe delle Prestazioni è stata già generata.\r\n" + "Contattare il servizio assistenza o un utente con ruolo 'manage_prestazioni' "; return(false); } } } // if ((R["start"] != DBNull.Value) && (R["stop"] != DBNull.Value)) { DateTime start = (DateTime)R["start"]; DateTime stop = (DateTime)R["stop"]; if (start > stop) { errmess = "Attenzione! Non può essere immessa una data inizio successiva alla data fine"; errfield = "start"; return(false); } } else { errmess = "Attenzione! Specificare inizio e termine della missione"; return(false); } //Se il percipiente ha un indirizzo AP, nel form del compenso si deve scegliere o S o N String codeaddress = "07_SW_ANP"; DateTime DataInizio = (DateTime)R["start"]; if (DataInizio.Year < 1900) { DataInizio = new DateTime(1900, 1, 1); } object idaddresskind = Conn.DO_READ_VALUE("address", QHS.CmpEq("codeaddress", codeaddress), "idaddress"); DataTable Address = DataAccess.RUN_SELECT(Conn, "registryaddress", "*", null, QHS.AppAnd(QHS.CmpEq("idaddresskind", idaddresskind), QHS.CmpEq("idreg", R["idreg"]), QHS.CmpLe("start", DataInizio), QHS.NullOrGe("stop", DataInizio)), false); if (Address.Rows.Count > 0) { if ((R["authneeded"].ToString() != "S") && (R["authneeded"].ToString() != "N")) { errfield = "authneeded"; errmess = "Il percipiente ha un indirizzo Anagrafe delle Prestazioni, pertanto va indicato se necessita o meno dell'autorizzazione."; return(false); } } if (R["authneeded"].ToString() == "S" && R["authdoc"].ToString() == "") { errmess = "Il campo 'Documento' è obbligatorio"; errfield = "authdoc"; return(false); } if (R["authneeded"].ToString() == "S" && R["authdocdate"] == DBNull.Value) { errmess = "Il campo 'data' è obbligatorio"; errfield = "authdocdate"; return(false); } if (R["authneeded"].ToString() == "N" && R["noauthreason"].ToString() == "") { errmess = "Il campo 'Motivo' è obbligatorio"; errfield = "authdoc"; return(false); } //controlla il check della clausola se è valorizzato KmMezzoProprio OR motivo OR targa, l'OR è stato aggiunto perchè la missione di CT non valorizza KmMezzoProprio. if (clause_needed && R["clause_accepted"].ToString().ToUpper() != "S" && (R["owncarkm"] != DBNull.Value || R["vehicle_info"] != DBNull.Value || R["vehicle_motive"] != DBNull.Value)) { errmess = "E' necessario accettare la clausola per l'uso del mezzo proprio"; errfield = "clause_accepted"; return(false); } if ((CfgFn.GetNoNullInt32(R["owncarkm"]) != 0) && (R["vehicle_info"] == DBNull.Value)) { errmess = "Con l'uso del mezzo proprio è obbligatorio compilare le informazioni relative al veicolo"; errfield = "vehicle_info"; return(false); } if (R["flagweb"].ToString().ToUpper() == "S" && (CfgFn.GetNoNullInt32(R["iditinerationstatus"]) >= 2) && (CfgFn.GetNoNullInt32(R["iditinerationstatus"]) < 6) && CfgFn.GetNoNullInt32(R["idauthmodel"]) <= 0) { errmess = "Non è possibile salvare la Missione senza un modello Autorizzativo"; errfield = "idauthmodel"; return(false); } bool DirectAuth = false; DirectAuth = Conn.DO_READ_VALUE("config", QHS.CmpEq("ayear", Conn.GetSys("esercizio")), "itineration_directauth").ToString().ToUpper() == "S"; if ((DirectAuth) && R["flagweb"].ToString().ToUpper() == "S" && (CfgFn.GetNoNullInt32(R["iditinerationstatus"]) == 1) && CfgFn.GetNoNullInt32(R["idauthmodel"]) <= 0) { errmess = "Non è possibile salvare la Missione senza un modello Autorizzativo"; errfield = "idauthmodel"; return(false); } if (!base.IsValid(R, out errmess, out errfield)) { return(false); } return(true); }