//public static string normalizzaStringa(string s, int lunghezza) { // const string alfanum = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; // StringBuilder sb = new StringBuilder(); // foreach (char c in s.ToUpper()) { // if (alfanum.IndexOf(c) != -1) // sb.Append(c); // } // if (sb.Length > lunghezza) return null; // return sb.ToString().PadLeft(lunghezza, '0'); //} //public static string normalizzaNumero(string s, int lunghezza) { // const string num = "0123456789"; // StringBuilder sb = new StringBuilder(); // foreach (char c in s) { // if (num.IndexOf(c) != -1) // sb.Append(c); // } // if (sb.Length > lunghezza) return null; // return sb.ToString().PadLeft(lunghezza, '0'); //} private void btnOK_Click(object sender, EventArgs e) { string filtro = QHS.AppAnd( QHS.IsNull("iban"), QHS.IsNotNull("cin"), QHS.IsNotNull("idbank"), QHS.IsNotNull("idcab"), QHS.IsNotNull("cc")); DS.registrypaymethod.Clear(); Meta.Conn.RUN_SELECT_INTO_TABLE(DS.registrypaymethod, null, filtro, null, true); foreach (DataRow r in DS.registrypaymethod.Rows) { //string cin = normalizzaStringa(r["cin"].ToString(), 1); //string abi = normalizzaNumero(r["idbank"].ToString(), 5); //string cab = normalizzaNumero(r["idcab"].ToString(), 5); //string cc = normalizzaNumero(r["cc"].ToString(), 12); string cin = r["cin"].ToString(); string abi = r["idbank"].ToString(); string cab = r["idcab"].ToString(); string cc = r["cc"].ToString(); if (cc.Length < 12) { cc = cc.PadLeft(12, '0'); } if (CfgFn.CheckCIN(cin, cab, abi, cc)) { string bban = cin + abi + cab + cc; r["cc"] = cc; r["iban"] = CfgFn.calcolaIBAN("IT", bban); } } int n = DS.registrypaymethod.Select(QHS.IsNotNull("iban")).Length; PostData pd = Meta.Get_PostData(); string mess = pd.InitClass(DS, Meta.Conn); bool ok = pd.DO_POST(); if (ok) { MessageBox.Show(this, "Sono stati calcolati " + n + " codici IBAN\n" + mess); } else { MessageBox.Show(this, "Salvataggio dei dati fallito!\n" + mess, "Errore durante il salvataggio", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
private void calcolaBBAN() { if (DS.paydispositiondetail.Rows.Count == 0) { return; } if (Meta.DrawStateIsDone) { Meta.GetFormData(true); } DataRow Curr = DS.paydispositiondetail.Rows[0]; bool puoiCalcolare = ((Curr["cin"] != DBNull.Value) && (Curr["abi"] != DBNull.Value) && (Curr["cab"] != DBNull.Value) && (Curr["cc"] != DBNull.Value) && (Curr["cin"].ToString() != "") && (Curr["abi"].ToString() != "") && (Curr["cab"].ToString() != "") && (Curr["cc"].ToString() != "")); if (!puoiCalcolare) { //txtBBAN.Text = ""; return; } Curr["cin"] = Curr["cin"].ToString().ToUpper(); bool cinCorretto = CfgFn.CheckCIN(Curr["cin"].ToString(), Curr["cab"].ToString(), Curr["abi"].ToString(), Curr["cc"].ToString()); if (cinCorretto) { string BBAN = Curr["cin"].ToString() + Curr["abi"].ToString() + Curr["cab"].ToString() + Curr["cc"].ToString(); txtIBAN.Text = CfgFn.calcolaIBAN("IT", BBAN); Curr["iban"] = txtIBAN.Text; } else { txtIBAN.Text = null; } }
override public bool IsValid(DataRow R, out string errmess, out string errfield) { if (!base.IsValid(R, out errmess, out errfield)) { return(false); } //byte flag = Convert.ToByte(R["flag"]); //bool fulfilled = (flag & 1) == 1; //if (fulfilled) { // string messaggio = "Attenzione!, impostando il flag 'Regolarizza disposizione di pagamento già effettuata' " + // " il movimento sarà nascosto nella stampa della distinta di trasmissione a meno che non venga impostato " + // " il parametro MostraMovGiaTrasmessi a S, dal bottone Altri Parametri, in tal caso il movimento verrà visualizzato su sfondo grigio"; // DialogResult RES = MessageBox.Show(messaggio, "ATTENZIONE", MessageBoxButtons.OKCancel, MessageBoxIcon.Exclamation); // if (RES == DialogResult.Cancel) { // errmess = ""; // errfield = "flag"; // return false; // } //} //Check CIN if (R.Table.DataSet.Tables["expense"] != null) { byte fasefine = CfgFn.GetNoNullByte(R.Table.DataSet.Tables["expense"].ExtendedProperties["fasefine"]); byte fasemax = CfgFn.GetNoNullByte(GetSys("maxexpensephase")); if (fasefine == fasemax || fasefine == 0) { //if (R["idpaymethod"] == DBNull.Value && R["nbill"]==DBNull.Value) { // errmess = "Non è stata selezionata nessun tipo di modalità pagamento"; // errfield = "idpaymethod"; // return false; //} //Lunghezza del BBAN = 1 (CIN) + 5 (ABI) + 5(CAB) + 12 (C/C) = 23 bool cinCorretto = CfgFn.CheckCIN(R["cin"].ToString(), R["idcab"].ToString(), R["idbank"].ToString(), R["cc"].ToString()); //Se il CIN non è corretto non è ammesso l'IBAN italiano if (!cinCorretto && (R["iban"].ToString().Length >= 2) && R["iban"].ToString().StartsWith("IT")) { errmess = "Poichè il CIN non è corretto, il codice IBAN deve essere vuoto"; errfield = "iban"; return(false); } //Se l'iban c'è ed è italiano, deve essere di 27 caratteri if (cinCorretto && ((R["iban"].ToString() != "") && R["iban"].ToString().ToUpper().StartsWith("IT") && R["iban"].ToString().Length != 27)) { errmess = "Il codice IBAN deve essere composto da 27 caratteri"; errfield = "iban"; return(false); } //Se il cin è corretto e c'è l'iban italiano, l'iban deve essere coerente con cin/cc/abi/cab if (cinCorretto && R["iban"].ToString().ToUpper().StartsWith("IT")) { string bban2 = R["cin"].ToString().ToUpper() + R["idbank"] + R["idcab"] + R["cc"]; string iban2 = CfgFn.calcolaIBAN("IT", bban2); if (R["iban"].ToString() != iban2) { errmess = "Il codice IBAN non è coerente con i campi CIN, CAB, ABI, CC"; errfield = "iban"; return(false); } } //Se l'iban c'è ed è straniero deve avere il codice di controllo corretto if (R["iban"].ToString().StartsWith("IT") == false && R["iban"].ToString() != "" && CfgFn.verificaIban(R["iban"].ToString()) == false) { errmess = "Il codice IBAN non è valido (codice di controllo errato)"; errfield = "iban"; return(false); } //Check CIN - scatta solo se sto cambiando qualcosa tra cin/abi/cab/cc if ( //(R["flagstandard",DataRowVersion.Current].ToString()=="S") //&& (R.RowState == DataRowState.Added || ( (R["cin", DataRowVersion.Current].ToString() != R["cin", DataRowVersion.Original].ToString()) || (R["idcab", DataRowVersion.Current].ToString() != R["idcab", DataRowVersion.Original].ToString()) || (R["cc", DataRowVersion.Current].ToString() != R["cc", DataRowVersion.Original].ToString()) || (R["idbank", DataRowVersion.Current].ToString() != R["idbank", DataRowVersion.Original].ToString()) ) ) ) { //Se il cin c'è deve essere giusto. if (R["cin"].ToString().Trim() != "") { if (!CfgFn.CheckCIN(R["cin"].ToString(), R["idcab"].ToString(), R["idbank"].ToString(), R["cc"].ToString())) { errmess = "Il CIN inserito non corrisponde ai dati immessi. Se il CIN non è noto, è meglio non inserirlo."; errfield = "cin"; return(false); } } else { //Se il cin non c'è fa dei controlli generici sul resto //ABI/CAB in descrizione string descr = R["paymentdescr"].ToString().Trim().ToUpper(); if (descr.IndexOf("ABI") >= 0 && descr.IndexOf("CAB") >= 0) { errmess = "Ci sono dei campi appositi per ABI/CAB, dunque non vanno messi nella descrizione."; errfield = "paymentdescr"; return(false); } //CC in descrizione if (descr.IndexOf("C/C") >= 0 && R["cc"].ToString().Trim() == "") { errmess = "C'è un campo apposito per il C/C, che dunque non va messo nella descrizione."; errfield = "paymentdescr"; return(false); } //Se non c'è nulla va bene if (R["idcab"].ToString().Trim() == "" && R["idbank"].ToString().Trim() == "" && R["cc"].ToString().Trim() == "" ) { return(true); } //Se ci sono abi/cab, il cc deve essere di 12 caratteri if (R["idcab"].ToString().Trim() != "" && R["idbank"].ToString().Trim() != "" && R["cc"].ToString() != "" && R["cc"].ToString().Length != 12) { DialogResult RES = MessageBox.Show("Il CC risulta ERRATO in quanto dovrebbe essere completato con degli zeri iniziali. Procedo comunque?", "Dati incoerenti", MessageBoxButtons.OKCancel); if (RES == DialogResult.Cancel) { errfield = "cc"; return(false); } } if (R["idcab"].ToString().Trim() != "" || R["idbank"].ToString().Trim() != "" // ||R["cc"].ToString() != "" omesso poiché per i cc postali si mette il cc ma non il cin ) { DialogResult RES = MessageBox.Show("Non è stato inserito il CIN. E' normalmente necessario inserire ABI,CAB,CC,CIN per non incorrere in sanzioni bancarie. Procedo comunque?", "Dati incoerenti", MessageBoxButtons.OKCancel); if (RES == DialogResult.Cancel) { errfield = "cin"; return(false); } } } } return(true); } } return(true); }
public override bool IsValid(DataRow R, out string errmess, out string errfield) { if (!base.IsValid(R, out errmess, out errfield)) { return(false); } int codicecreddeb = CfgFn.GetNoNullInt32(R["idreg"]); if (codicecreddeb <= 0) { errmess = "Inserire il codice anagrafica"; errfield = "idreg"; return(false); } if (CfgFn.GetNoNullInt32(R["idpaymethod"]) == 0) { errmess = "Non è stato selezionato nessun tipo di modalità pagamento"; errfield = "idpaymethod"; return(false); } //Lunghezza del BBAN = 1 (CIN) + 5 (ABI) + 5(CAB) + 12 (C/C) = 23 bool cinCorretto = CfgFn.CheckCIN(R["cin"].ToString(), R["idcab"].ToString(), R["idbank"].ToString(), R["cc"].ToString()); //Se il CIN non è corretto non è ammesso l'IBAN italiano if (!cinCorretto && (R["iban"].ToString().Length >= 2) && R["iban"].ToString().StartsWith("IT")) { errmess = "Poichè il CIN non è corretto, il codice IBAN deve essere vuoto"; errfield = "iban"; return(false); } //Se l'iban c'è ed è italiano, deve essere di 27 caratteri if (cinCorretto && ((R["iban"].ToString() != "") && R["iban"].ToString().ToUpper().StartsWith("IT") && R["iban"].ToString().Length != 27)) { errmess = "Il codice IBAN deve essere composto da 27 caratteri"; errfield = "iban"; return(false); } //Se il cin è corretto e c'è l'iban italiano, l'iban deve essere coerente con cin/cc/abi/cab if (cinCorretto && R["iban"].ToString().ToUpper().StartsWith("IT")) { string bban2 = R["cin"].ToString().ToUpper() + R["idbank"] + R["idcab"] + R["cc"]; string iban2 = CfgFn.calcolaIBAN("IT", bban2); if (R["iban"].ToString() != iban2) { errmess = "Il codice IBAN non è coerente con i campi CIN, CAB, ABI, CC"; errfield = "iban"; return(false); } } //Se l'iban c'è ed è straniero deve avere il codice di controllo corretto if (R["iban"].ToString().StartsWith("IT") == false && R["iban"].ToString() != "" && CfgFn.verificaIban(R["iban"].ToString()) == false) { errmess = "Il codice IBAN non è valido (codice di controllo errato)"; errfield = "iban"; return(false); } //Controllo su unicità mod. pagamento predefinita if (edit_type == "default" || edit_type == "anagrafica") { if (!IsSubEntity) { errmess = "Non è possibile modificare l'entità registrypaymethod senza un form padre"; errfield = null; return(false); } if (R["flagstandard"].ToString().ToLower() == "s") { DataTable ParentTable = SourceRow.Table; DataRow[] standard = ParentTable.Select("flagstandard='S'"); if (standard.Length > 0) { if (standard.Length > 1) { errmess = "Più di una modalità di pagamento predefinita (GIA' PRESENTI) per l'anagrafica considerata"; errfield = null; return(false); } DataRow found = standard[0]; //if (found["tipomodalita"].ToString()==R["regmodcode"].ToString()) return true; if (SourceRow["flagstandard"].ToString().ToUpper() != "S") { errmess = "Esiste già una modalità pagamento predefinita. Eliminarla prima di impostare quella corrente"; errfield = "flagstandard"; R["flagstandard"] = "N"; return(false); } } } } //Check CIN - scatta solo se sto cambiando qualcosa tra cin/abi/cab/cc if ( //(R["flagstandard",DataRowVersion.Current].ToString()=="S") //&& (R.RowState == DataRowState.Added || ( (R["cin", DataRowVersion.Current].ToString() != R["cin", DataRowVersion.Original].ToString()) || (R["idcab", DataRowVersion.Current].ToString() != R["idcab", DataRowVersion.Original].ToString()) || (R["cc", DataRowVersion.Current].ToString() != R["cc", DataRowVersion.Original].ToString()) || (R["idbank", DataRowVersion.Current].ToString() != R["idbank", DataRowVersion.Original].ToString()) ) ) ) { //Se il cin c'è deve essere giusto. if (R["cin"].ToString().Trim() != "") { if (!CfgFn.CheckCIN(R["cin"].ToString(), R["idcab"].ToString(), R["idbank"].ToString(), R["cc"].ToString())) { errmess = "Il CIN inserito non corrisponde ai dati immessi. Se il CIN non è noto, è meglio non inserirlo."; errfield = "cin"; return(false); } } else { //Se il cin non c'è fa dei controlli generici sul resto //ABI/CAB in descrizione string descr = R["paymentdescr"].ToString().Trim().ToUpper(); if (descr.IndexOf("ABI") >= 0 && descr.IndexOf("CAB") >= 0) { errmess = "Ci sono dei campi appositi per ABI/CAB, dunque non vanno messi nella descrizione."; errfield = "paymentdescr"; return(false); } //CC in descrizione if (descr.IndexOf("C/C") >= 0 && R["cc"].ToString().Trim() == "") { errmess = "C'è un campo apposito per il C/C, che dunque non va messo nella descrizione."; errfield = "paymentdescr"; return(false); } //Se non c'è nulla va bene if (R["idcab"].ToString().Trim() == "" && R["idbank"].ToString().Trim() == "" && R["cc"].ToString().Trim() == "" ) { return(true); } //Se ci sono abi/cab, il cc deve essere di 12 caratteri if (R["idcab"].ToString().Trim() != "" && R["idbank"].ToString().Trim() != "" && R["cc"].ToString() != "" && R["cc"].ToString().Length != 12) { DialogResult RES = MessageBox.Show("Il CC risulta ERRATO in quanto dovrebbe essere completato con degli zeri iniziali. Procedo comunque?", "Dati incoerenti", MessageBoxButtons.OKCancel); if (RES == DialogResult.Cancel) { errfield = "cc"; return(false); } } if (R["idcab"].ToString().Trim() != "" || R["idbank"].ToString().Trim() != "" // ||R["cc"].ToString() != "" omesso poiché per i cc postali si mette il cc ma non il cin ) { DialogResult RES = MessageBox.Show("Non è stato inserito il CIN. E' normalmente necessario inserire ABI,CAB,CC,CIN per non incorrere in sanzioni bancarie. Procedo comunque?", "Dati incoerenti", MessageBoxButtons.OKCancel); if (RES == DialogResult.Cancel) { errfield = "cin"; return(false); } } } } return(true); }