Ejemplo n.º 1
0
        //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);
            }
        }
Ejemplo n.º 2
0
        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;
            }
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        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);
        }