コード例 #1
0
 override public string GetStaticFilter(string ListingType)
 {
     if (ListingType == CONTRATTI_CON_PROBLEMI)
     {
         DataTable t      = getContrattiConProblemi();
         string    filtro = QueryCreator.ColumnValues(t, null, "idcon", true);
         if (filtro == "")
         {
             return("(idcon<>idcon)");
         }
         return("(idcon in (" + filtro + "))");
     }
     return(base.GetStaticFilter(ListingType));
 }
コード例 #2
0
        public void MetaData_AfterLink()
        {
            Meta = MetaData.GetMetaData(this);
            Conn = Meta.Conn;
            CQueryHelper QHC = new CQueryHelper();

            QHS = Meta.Conn.GetQueryHelper();
            string    filterDepartment = QHS.CmpEq("iddbdepartment", Meta.GetSys("userdb"));
            DataTable tDBAccess        = Meta.Conn.CreateTableByName("dbaccess", "*");

            Meta.Conn.RUN_SELECT_INTO_TABLE(tDBAccess, null, filterDepartment, null, false);
            string loginNameList    = QueryCreator.ColumnValues(tDBAccess, null, "login", true);
            string filterCustomUser = QHS.FieldInList("username", loginNameList);

            string Autochoose = "AutoChoose.txtUtente.default.";
            string Choose     = "choose.customuser.default.";

            grpUser.Tag = Autochoose + filterCustomUser;
            btnUser.Tag = Choose + filterCustomUser;
            Meta.SetAutoMode(grpUser);


            DataAccess.SetTableForReading(DS.sorting01, "sorting");
            DataAccess.SetTableForReading(DS.sorting02, "sorting");
            DataAccess.SetTableForReading(DS.sorting03, "sorting");
            DataAccess.SetTableForReading(DS.sorting04, "sorting");
            DataAccess.SetTableForReading(DS.sorting05, "sorting");


            DataTable tUniConfig = Conn.RUN_SELECT("uniconfig", "*", null,
                                                   null, null, null, true);

            if ((tUniConfig != null) && (tUniConfig.Rows.Count > 0))
            {
                DataRow r          = tUniConfig.Rows[0];
                object  idsorkind1 = r["idsorkind01"];
                object  idsorkind2 = r["idsorkind02"];
                object  idsorkind3 = r["idsorkind03"];
                object  idsorkind4 = r["idsorkind04"];
                object  idsorkind5 = r["idsorkind05"];
                CfgFn.SetGBoxClass0(this, 1, idsorkind1);
                CfgFn.SetGBoxClass0(this, 2, idsorkind2);
                CfgFn.SetGBoxClass0(this, 3, idsorkind3);
                CfgFn.SetGBoxClass0(this, 4, idsorkind4);
                CfgFn.SetGBoxClass0(this, 5, idsorkind5);
            }
        }
コード例 #3
0
        /// <summary>
        /// Il comune selezionato viene eventualmente aggiornato con un comune successore.
        /// Se ce n'è più di uno di comuni successori l'utente deve sceglierne uno dall'elenco propostogli.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void buttonAggiornaComune_Click(object sender, System.EventArgs e)
        {
            if (Meta.IsEmpty)
            {
                return;
            }
            Meta.GetFormData(true);
            object idcomune = HelpForm.GetLastSelected(DS.cabview)["idcity"];

            object[] list  = new object[] { idcomune, "S" };
            DataSet  DSout = Meta.Conn.CallSP("compute_history_city", list, true, -1);

            if (DSout == null || DSout.Tables.Count == 0 || DS.Tables[0].Rows.Count == 0)
            {
                return;
            }
            DataTable T        = DSout.Tables[0];
            object    idComune = null;

            if (T.Rows.Count == 1)
            {
                idComune = T.Rows[0]["idcity"];
            }
            else
            {
                string   filtro     = QHS.FieldInList("idcity", QueryCreator.ColumnValues(T, null, "idcity", true));
                MetaData metaComune = MetaData.GetMetaData(this, "geo_cityview");
                metaComune.DS           = DS.Copy();
                metaComune.FilterLocked = true;

                DataRow r = metaComune.SelectOne("storia", filtro, null, null);

                if (r != null)
                {
                    idComune = r["idcity"];
                }
                else
                {
                    idComune = HelpForm.GetLastSelected(DS.cabview)["idcity"];
                }
            }
            HelpForm.GetLastSelected(DS.cabview)["idcity"] = idComune;
            Meta.FreshForm(true);
            aggiornaCap(idComune);
        }
コード例 #4
0
        private DataTable getConfigurazionePrestazioni()
        {
            int    esercizio = (int)Meta.GetSys("esercizio");
            string query     = "select distinct idser from expensetax "
                               + "join expenselast on expenselast.idexp=expensetax.idexp "
                               + "join expense on expense.idexp = expenselast.idexp "
                               + "where ymov>=" + (esercizio - 1)
                               + " and idser is not null";
            DataTable t                 = DataAccess.SQLRunner(Meta.Conn, query);
            string    prestazioni       = QueryCreator.ColumnValues(t, null, "idser", true);
            string    filtroPrestazioni = prestazioni == "" ? "0=1" : "service.idser in (" + prestazioni + ")";
            string    s                 = @"select service.active, service.idser, service.codeser, service.description, service.rec770kind, motive770service.idmot, 
                        service.module, service.certificatekind, certificate=certificationmodel.description,
                        cisonoritfiscali=case when exists (select * from servicetax join tax on service.idser=servicetax.idser and servicetax.taxcode=tax.taxcode and taxkind=1) then 'S' else 'N' end
                        from service
                        left outer join motive770service on service.idser=motive770service.idser and motive770service.ayear="
                                          + esercizio
                                          + @" left outer join certificationmodel on service.certificatekind=certificationmodel.idcertificationmodel
                        where " + filtroPrestazioni;

            return(DataAccess.SQLRunner(Meta.Conn, s));
        }
コード例 #5
0
        private void aggiornaComune()
        {
            if (Meta.IsEmpty)
            {
                return;
            }
            object idcomune = DS.parasubcontractfamily.Rows[0]["idcitybirth"];

            object[] list  = new object[] { idcomune, "S" };
            DataSet  DSout = Meta.Conn.CallSP("compute_history_city", list, true, -1);

            if (DSout == null || DSout.Tables.Count == 0 || DS.Tables[0].Rows.Count == 0)
            {
                return;
            }
            DataTable T = DSout.Tables[0];

            if (T.Rows.Count == 1)
            {
                DS.parasubcontractfamily.Rows[0]["idcitybirth"] = T.Rows[0]["idcity"];
            }
            else
            {
                string   filtro     = "(idcity in (" + QueryCreator.ColumnValues(T, null, "idcity", true) + "))";
                MetaData metaComune = MetaData.GetMetaData(this, "geo_cityview");
                metaComune.DS           = DS.Copy();
                metaComune.FilterLocked = true;

                DataRow r = metaComune.SelectOne("storia", filtro, null, null);

                if (r != null)
                {
                    DS.parasubcontractfamily.Rows[0]["idcitybirth"] = r["idcity"];
                }
            }
            Meta.FreshForm(true);
        }
コード例 #6
0
        private void aggiornaStatoEstero()
        {
            object idstatoestero = DS.parasubcontractfamily.Rows[0]["idnation"];

            if (idstatoestero == DBNull.Value)
            {
                return;
            }
            object[] list  = new object[] { idstatoestero, "S" };
            DataSet  DSout = Meta.Conn.CallSP("compute_history_nation", list, true, -1);

            if (DSout == null || DSout.Tables.Count == 0 || DS.Tables[0].Rows.Count == 0)
            {
                return;
            }
            DataTable T = DSout.Tables[0];

            if (T.Rows.Count == 1)
            {
                DS.parasubcontractfamily.Rows[0]["idnation"] = T.Rows[0]["idnation"];
            }
            else
            {
                string   filtro          = "(idnation in (" + QueryCreator.ColumnValues(T, null, "idnazione", true) + "))";
                MetaData metaStatoEstero = MetaData.GetMetaData(this, "geo_nation");
                metaStatoEstero.DS           = DS.Copy();
                metaStatoEstero.FilterLocked = true;

                DataRow r = metaStatoEstero.SelectOne("default", filtro, null, null);

                if (r != null)
                {
                    DS.parasubcontractfamily.Rows[0]["idnation"] = r["idnation"];
                }
            }
        }
コード例 #7
0
        bool GetFiltro()
        {
            string Filtro = "";

            //string field="";
            if (txtIDUbicazione.Text != "")
            {
                Filtro = QHS.CmpEq("idcurrlocation", txtIDUbicazione.Text);
            }
            if (cboResponsabile.SelectedIndex > 0)
            {
                Filtro = QHS.AppAnd(Filtro, QHS.CmpEq("idcurrman", cboResponsabile.SelectedValue));
            }

            if (txt_idbene_da.Text.Trim() != "")
            {
                int N1 = CfgFn.GetNoNullInt32(HelpForm.GetObjectFromString(typeof(int), txt_idbene_da.Text, "x.y"));
                if (N1 > 0)
                {
                    Filtro = QHS.AppAnd(Filtro, QHS.CmpGe("idasset", N1));
                }
            }
            if (txt_idbene_a.Text.Trim() != "")
            {
                int N2 = CfgFn.GetNoNullInt32(HelpForm.GetObjectFromString(typeof(int), txt_idbene_a.Text, "x.y"));
                if (N2 > 0)
                {
                    Filtro = QHS.AppAnd(Filtro, QHS.CmpLe("idasset", N2));
                }
            }
            if (txt_numcarico_da.Text.Trim() != "")
            {
                int N3 = CfgFn.GetNoNullInt32(HelpForm.GetObjectFromString(typeof(int), txt_numcarico_da.Text, "x.y"));
                if (N3 > 0)
                {
                    Filtro = QHS.AppAnd(Filtro, QHS.CmpGe("nassetacquire", N3));
                }
            }
            if (txt_numcarico_a.Text.Trim() != "")
            {
                int N4 = CfgFn.GetNoNullInt32(HelpForm.GetObjectFromString(typeof(int), txt_numcarico_a.Text, "x.y"));
                if (N4 > 0)
                {
                    Filtro = QHS.AppAnd(Filtro, QHS.CmpLe("nassetacquire", N4));
                }
            }

            if (txt_numinv_da.Text.Trim() != "")
            {
                int N5 = CfgFn.GetNoNullInt32(HelpForm.GetObjectFromString(typeof(int), txt_numinv_da.Text, "x.y"));
                if (N5 > 0)
                {
                    Filtro = QHS.AppAnd(Filtro, QHS.CmpGe("ninventory", N5));
                }
            }
            if (txt_numinv_a.Text.Trim() != "")
            {
                int N6 = CfgFn.GetNoNullInt32(HelpForm.GetObjectFromString(typeof(int), txt_numinv_a.Text, "x.y"));
                if (N6 > 0)
                {
                    Filtro = QHS.AppAnd(Filtro, QHS.CmpLe("ninventory", N6));
                }
            }
            if (cmbInventario.SelectedIndex > 0)
            {
                Filtro = QHS.AppAnd(Filtro,
                                    "(nassetacquire in (SELECT nassetacquire from assetacquire " +
                                    " WHERE " + GetInventoryFilter(QHS, cmbInventario.SelectedValue) +
                                    "))");
            }
            if (txtDescrizione.Text.Trim() != "")
            {
                string descr = txtDescrizione.Text.Trim();
                if (!descr.StartsWith("%"))
                {
                    descr = "%" + descr;
                }
                if (!descr.EndsWith("%"))
                {
                    descr = descr + "%";
                }
                Filtro = QHS.AppAnd(Filtro, QHS.Like("description", descr + "%"));
            }
            if (chkReady.Checked)
            {
                Filtro = QHS.AppAnd(Filtro, QHS.BitSet("flag", 1));
            }
            if (Filtro == "")
            {
                if (MessageBox.Show("Non è stato selezionato alcun filtro. Conferma?",
                                    "Conferma", MessageBoxButtons.OKCancel) != DialogResult.OK)
                {
                    return(false);
                }
            }
            if (!chkIncludiAsset.Checked && chkIncludiAumenti.Checked)
            {
                Filtro = QHS.AppAnd(Filtro, QHS.CmpGt("idpiece", 1));
            }
            if (chkIncludiAsset.Checked && !chkIncludiAumenti.Checked)
            {
                Filtro = QHS.AppAnd(Filtro, QHS.CmpEq("idpiece", 1));
            }
            Filtro = QHS.AppAnd(Filtro, QHS.IsNull("idassetunload"));
            Filtro = QHS.AppAnd(Filtro, QHS.BitSet("flag", 0));

            AssetPiece = Conn.RUN_SELECT("assetpieceview", "*", "idinventory asc,ninventory asc",
                                         Filtro, null, false);
            AssetPiece.PrimaryKey = new DataColumn[] { AssetPiece.Columns["idasset"],
                                                       AssetPiece.Columns["idpiece"] };


            string elencoidasset = QueryCreator.ColumnValues(AssetPiece, QHS.CmpEq("idpiece", 1), "idasset", true);

            if (elencoidasset != "" && elencoidasset != null)
            {
                string filtroasset = QHS.AppAnd(QHS.FieldInList("idasset", elencoidasset),
                                                QHS.IsNull("idassetunload"), QHS.CmpGt("idpiece", 1));

                Conn.RUN_SELECT_INTO_TABLE(AssetPiece, null, filtroasset, null, false);
            }


            MetaData MAP = Meta.Dispatcher.Get("assetpieceview");

            MAP.DescribeColumns(AssetPiece, "default");
            DataSet D = new DataSet();

            D.Tables.Add(AssetPiece);
            gridBeni.DataSource = null;
            HelpForm.SetDataGrid(gridBeni, AssetPiece);
            HelpForm.SetAllowMultiSelection(AssetPiece, true);
            SelezionaTuttiICespiti();
            return(true);
        }
コード例 #8
0
        public override bool IsValid(DataRow R, out string errmess, out string errfield)
        {
            if (!base.IsValid(R, out errmess, out errfield))
            {
                return(false);
            }


            DateTime datainizio = (DateTime)R["start"];

            if (!controllaData(datainizio, out errmess))
            {
                errfield = "start";
                return(false);
            }

            object df = R["stop"];

            if (df != DBNull.Value)
            {
                DateTime datafine = (DateTime)df;
                if (!controllaData(datafine, out errmess))
                {
                    errfield = "stop";
                    return(false);
                }

                if ((datafine != QueryCreator.EmptyDate()) && (datafine < datainizio))
                {
                    errmess  = "'Data fine validità' non può precedere 'Data inizio validità'";
                    errfield = "stop";
                    return(false);
                }
            }

            int codicecreddeb = CfgFn.GetNoNullInt32(R["idreg"]);

            if (codicecreddeb <= 0)
            {
                errmess  = "Inserire il codice dell'anagrafica";
                errfield = "idreg";
                return(false);
            }

            if ((R["address"].ToString() == "") || (R["address"].ToString().Trim() == "."))
            {
                errmess  = "Attenzione! Inserire l'indirizzo.";
                errfield = "address";
                return(false);
            }

            object codeAddressKind =
                Conn.DO_READ_VALUE("address", QHS.CmpEq("idaddress", R["idaddresskind"]), "codeaddress");

            if (codeAddressKind != null)
            {
                if ((codeAddressKind.ToString() == "07_SW_DOM") && (R["idcity"] is DBNull))
                {
                    errmess  = "Il domicilio fiscale non può essere estero! Inserire un comune italiano.";
                    errfield = "idcity";
                    return(false);
                }
            }

            if (codeAddressKind != null)
            {
                if ((codeAddressKind.ToString() != "07_SW_ANP") && (R["recipientagency"] != DBNull.Value))
                {
                    errmess = "L'Ente di provenienza deve essere specificato solo per l'indirizzo di tipo " +
                              "Anagrafe delle Prestazioni";
                    errfield = "recipientagency";
                    return(false);
                }
            }

            //indirizzo estero o nazionale
            if (R["flagforeign"].ToString().ToUpper() == "S")
            {
                if (R["idnation"].ToString() == "")
                {
                    errmess  = "Attenzione! Inserire lo stato estero.";
                    errfield = "idnation";
                    return(false);
                }
            }
            else
            {
                if (R["idcity"].ToString() == "")
                {
                    errmess  = "Attenzione! Inserire il Comune.";
                    errfield = "idcity";
                    return(false);
                }

                if (Conn.RUN_SELECT_COUNT("geo_city_agency",
                                          QHS.AppAnd(QHS.CmpEq("idagency", 3), QHS.CmpEq("idcity", R["idcity"]), QHS.IsNull("stop")),
                                          false) > 0)
                {
                    object cap   = R["cap"];
                    string query = "select value from geo_city_agency where " +
                                   QHS.AppAnd(QHS.CmpEq("idagency", 3), QHS.CmpEq("idcity", R["idcity"]),
                                              QHS.IsNull("stop"));
                    DataTable t  = Conn.SQLRunner(query);
                    DataRow[] r1 = t.Select("value=" + QueryCreator.quotedstrvalue(cap, false));
                    if (r1.Length == 0)
                    {
                        //DialogResult dr = MessageBox.Show(LinkedForm, "Il C.A.P. non è coerente o non è più valido per il comune inserito. Salvare ugualmente?", "Avviso", MessageBoxButtons.YesNo);
                        //if (dr==DialogResult.No)
                        //{
                        object comune = Conn.readValue("geo_city", q.eq("idcity", R["idcity"]), "title") ??
                                        "(Comune non trovato)";
                        //R.GetParentRow("geo_cityregistryaddress")["title"];
                        if (t.Rows.Count == 1)
                        {
                            errmess = "Il codice postale del comune di '" + comune + "' è '" +
                                      t.Rows[0]["value"].ToString() + "'";
                        }
                        else
                        {
                            errmess = "Il comune di '" + comune + "' ha i seguenti codici postali:\n"
                                      + QueryCreator.ColumnValues(t, null, "value", false);
                        }

                        errfield = "cap";
                        return(false);
                        //}
                    }
                }
            }

            return(true);
        }
コード例 #9
0
        private void GeneraImpegniEScritture(string elencoCedolini)
        {
            if (elencoCedolini == "")
            {
                return;
            }
            DataSet   Temp       = new DataSet();
            DataTable tCedolino  = DataAccess.CreateTableByName(Meta.Conn, "payroll", "*");
            DataTable tContratto = DataAccess.CreateTableByName(Meta.Conn, "parasubcontract", "*");

            Temp.Tables.Add(tCedolino);
            Temp.Tables.Add(tContratto);
            string filtroCedolini = QHS.FieldInList("idpayroll", elencoCedolini);

            DataAccess.RUN_SELECT_INTO_TABLE(Meta.Conn, tCedolino, null, filtroCedolini, null, true);
            string elencoContratti = QHS.FieldInList("idcon", QueryCreator.ColumnValues(tCedolino, null, "idcon", true));

            DataAccess.RUN_SELECT_INTO_TABLE(Meta.Conn, tContratto, null, elencoContratti, null, true);

            bool       calcolaTutto = false;
            DataAccess Conn         = Meta.Conn;
            int        esercizio    = Conn.GetEsercizio();

            MetaData metaParasubMain = Meta.Dispatcher.Get("parasubcontract");

            metaParasubMain.DS = Temp;
            EP_Manager mainManager = new EP_Manager(metaParasubMain, null, null, null, null, null, null, null, null, "payroll");

            foreach (DataRow CurrCedolino in tCedolino.Rows)
            {
                if (!calcolaTutto)
                {
                    int          idCedolino = CfgFn.GetNoNullInt32(CurrCedolino["idpayroll"]);
                    AskOperation ao         = new AskOperation(idCedolino);
                    DialogResult dr         = ao.ShowDialog();
                    if (dr != DialogResult.OK)
                    {
                        continue;
                    }
                    switch (ao.operazioneScelta)
                    {
                    case AskOperation.operazione.Si: {
                        break;
                    }

                    case AskOperation.operazione.SiTutti: {
                        calcolaTutto = true;
                        break;
                    }

                    case AskOperation.operazione.No: {
                        continue;
                    }

                    case AskOperation.operazione.NoTutti: {
                        return;
                    }
                    }
                }

                Meta_EasyDispatcher d           = null;
                Easy_DataAccess     newConn     = null;
                MetaData            metaParasub = null;
                int  annostop = esercizio;
                bool erroriep = false;
                if (CurrCedolino["stop"] != DBNull.Value && (((DateTime)CurrCedolino["stop"]).Year < esercizio))
                {
                    annostop = ((DateTime)CurrCedolino["stop"]).Year;
                }
                DataRow CurrContratto = tContratto.Select(QHC.CmpEq("idcon", CurrCedolino["idcon"]))[0];

                string descrizione =
                    "Contratto n." + CurrContratto["ncon"].ToString() + " del " +
                    CurrContratto["ycon"].ToString() + " - " +
                    "Cedolino n. " + CurrCedolino["npayroll"] + "/" + CurrCedolino["fiscalyear"];



                EP_Manager epManagerCedolino = mainManager;
                if (annostop < esercizio & (mainManager.UsaImpegniDiBudget || mainManager.UsaScritture))
                {
                    //Genera impegni e scritture nell'anno di competenza del cedolino
                    newConn = ottieniConnessioneNuovoEsercizio(Conn, annostop);
                    if (newConn == null)
                    {
                        MessageBox.Show("Ci sono problemi nell'accedere all'anno " + annostop + ", non saranno generati impegni di budget o scritture", "Errore");
                        erroriep = true;
                    }
                    else
                    {
                        d                      = new Meta_EasyDispatcher(newConn);
                        metaParasub            = d.Get("parasubcontract");
                        metaParasub.DS         = Meta.DS;
                        metaParasub.LinkedForm = this;
                        epManagerCedolino      = new EP_Manager(metaParasub, null, null, null, null, null, null, null, null, "payroll");
                    }
                }

                if ((erroriep == false) && epManagerCedolino.abilitaScritture(CurrCedolino))
                {
                    epManagerCedolino.setForcedCurrentRow(CurrCedolino);
                    epManagerCedolino.afterPost();
                }

                if (newConn != null)
                {
                    newConn.Destroy();
                    metaParasub.Destroy();
                    epManagerCedolino.Dispose();
                }
            }
        }
コード例 #10
0
        public void GeneraScritture(string elencoCedolini)
        {
            if (elencoCedolini == "")
            {
                return;
            }
            DataAccess Conn      = Meta.Conn;
            int        esercizio = Conn.GetEsercizio();

            DataTable tCedolino         = DataAccess.CreateTableByName(Meta.Conn, "payroll", "*");
            DataTable tContratto        = DataAccess.CreateTableByName(Meta.Conn, "parasubcontract", "*");
            DataTable tCedolinoRitenuta = DataAccess.CreateTableByName(Meta.Conn, "payrolltax", "*");
            DataTable tTipoRitenuta     = DataAccess.CreateTableByName(Meta.Conn, "tax", "*");
            string    filtroCedolini    = QHS.FieldInList("idpayroll", elencoCedolini);

            DataAccess.RUN_SELECT_INTO_TABLE(Meta.Conn, tTipoRitenuta, null, null, null, true);
            DataAccess.RUN_SELECT_INTO_TABLE(Meta.Conn, tCedolino, null, filtroCedolini, null, true);
            DataAccess.RUN_SELECT_INTO_TABLE(Meta.Conn, tCedolinoRitenuta, null, filtroCedolini, null, true);
            string elencoContratti = QHS.FieldInList("idcon", QueryCreator.ColumnValues(tCedolino, null, "idcon", true));

            DataAccess.RUN_SELECT_INTO_TABLE(Meta.Conn, tContratto, null, elencoContratti, null, true);
            string flagEpExp = Conn.DO_READ_VALUE("config", QHS.CmpEq("ayear", Conn.GetEsercizio()), "flagepexp").ToString().ToUpper();


            // L'anagrafica usata per la parte verso ente è quella della cfg. ritenute, eventualmente spacchettata
            //  ove ci sia la ripartizione percentuale (in questo caso sarebbe opportuno usare la liq. diretta)
            //Invece l'anagrafica per la parte "conto ente" è quella della cfg. delle partite di giro
            object idregauto = Conn.DO_READ_VALUE("config", QHS.CmpEq("ayear", Conn.GetSys("esercizio")), "idregauto");

            TaxEntryHelper TEH = new TaxEntryHelper(Conn);

            foreach (DataRow CurrCedolino in tCedolino.Rows)
            {
                DataRow CurrContratto = tContratto.Select(QHC.CmpEq("idcon", CurrCedolino["idcon"]))[0];

                object idreg = CurrContratto["idreg"];
                object idupb = CurrContratto["idupb"];

                EP_functions EP = new EP_functions(Meta.Dispatcher);
                if (!EP.attivo)
                {
                    return;
                }
                EP.GetEntryForDocument(CurrCedolino);

                object descr = "Contratto n." + CurrContratto["ncon"].ToString() + " del " +
                               CurrContratto["ycon"].ToString() + " - " +
                               "Cedolino n. " + CurrCedolino["fiscalyear"] + "/" + CurrCedolino["npayroll"];
                object doc = "Contr. " + CurrContratto["ncon"].ToString() + "/" +
                             CurrContratto["ycon"].ToString() +
                             " Cedolino " + CurrCedolino["npayroll"] + "/" + CurrCedolino["fiscalyear"];


                DataRow mainEntry = EP.SetEntry(descr, Meta.GetSys("datacontabile"),
                                                doc, Meta.GetSys("datacontabile"), EP_functions.GetIdForDocument(CurrCedolino));

                EP.ClearDetails(mainEntry);
                object idaccmot_main = CurrContratto["idaccmotive"];
                if (idaccmot_main == DBNull.Value)
                {
                    MessageBox.Show("Non è stata impostata la causale per la prestazione.");
                    return;
                }

                string idepcontext    = "PRESTAZ";
                object idacc_registry = EP.GetSupplierAccountForRegistry(
                    CurrContratto["idaccmotivedebit"], CurrContratto["idreg"]);

                if (idacc_registry == null || idacc_registry == DBNull.Value)
                {
                    MessageBox.Show("Non è stato configurato il conto di debito/credito opportuno");
                    return;
                }

                decimal totale = CfgFn.GetNoNullDecimal(CurrCedolino["feegross"]);


                string idrelated = BudgetFunction.GetIdForDocument(CurrCedolino);
                object idepexp   = Conn.DO_READ_VALUE("epexp", QHS.AppAnd(QHS.CmpEq("idrelated", idrelated), QHS.CmpEq("nphase", 2)), "idepexp");
                if ((idepexp == null || idepexp == DBNull.Value) && flagEpExp == "S" && esercizio > 2015)
                {
                    MessageBox.Show("Errore", "Non è stato trovato alcun impegno di budget per il contratto");
                    return;
                }



                decimal contributiNonConfigurati = 0;

                //Per tutti i CONTRIBUTI:
                //Se è configurato il conto di debito
                //	effettua la scrittura COSTO->debito conto ente  (idaccmotive_cost -> idaccmotive_debit)
                // altrimenti
                //  effettua la scrittura COSTO->debito verso ente   (idaccmotive_cost -> idaccmotive_pay)

                foreach (DataRow Rit in tCedolinoRitenuta.Rows)
                {
                    decimal amount = CfgFn.GetNoNullDecimal(Rit["admintax"]);
                    if (amount == 0)
                    {
                        continue;
                    }

                    string  filtroRit = QHC.CmpEq("taxcode", Rit["taxcode"]);
                    DataRow TipoRit   = tTipoRitenuta.Select(filtroRit)[0];
                    if (TipoRit == null)
                    {
                        continue;
                    }

                    //Se la causale di costo non è configurata, prende la causale principale
                    object idaccmotive_cost = idaccmot_main;
                    if (TipoRit["idaccmotive_cost"] != DBNull.Value)
                    {
                        idaccmotive_cost = TipoRit["idaccmotive_cost"];
                    }
                    if (idaccmotive_cost == idaccmot_main)
                    {
                        idaccmotive_cost = DBNull.Value;
                    }

                    object idaccmotive_touse = DBNull.Value;
                    bool   debitoCONTOerario = false;
                    if (TipoRit["idaccmotive_debit"] != DBNull.Value)
                    {
                        idaccmotive_touse = TipoRit["idaccmotive_debit"];//debito CONTO erario
                        debitoCONTOerario = true;
                    }
                    else
                    {
                        idaccmotive_touse = TipoRit["idaccmotive_pay"];//debito VERSO erario
                    }

                    if (idaccmotive_touse == DBNull.Value)
                    {
                        MessageBox.Show("Il contributo " + TipoRit["description"].ToString() +
                                        " non è correttamente configurato per l'E/P");
                        return;                         //Errore fatale!
                    }

                    if (idaccmotive_cost == DBNull.Value)
                    {
                        contributiNonConfigurati += amount;
                    }
                    else
                    {
                        string idrelatedContrib = BudgetFunction.GetIdForDocument(Rit);
                        object idepexpContrib   = Conn.DO_READ_VALUE("epexp", QHS.AppAnd(QHS.CmpEq("idrelated", idrelatedContrib), QHS.CmpEq("nphase", 2)), "idepexp");
                        if ((idepexpContrib == null || idepexpContrib == DBNull.Value) && flagEpExp == "S" && esercizio > 2015)
                        {
                            MessageBox.Show("Errore", "Non è stato trovato alcun impegno di budget per il contributo" + Rit["taxcode"].ToString());
                            return;
                        }
                        DataRow[] ContiContribCosto = EP.GetAccMotiveDetails(idaccmotive_cost.ToString());
                        foreach (DataRow CP in ContiContribCosto)
                        {
                            EP.EffettuaScritturaImpegnoBudget(idepcontext, amount,
                                                              CP["idacc"],
                                                              idreg, idupb,
                                                              CurrCedolino["start"], CurrCedolino["stop"],
                                                              CurrCedolino, idaccmotive_cost, idepexpContrib, null, idrelatedContrib);
                        }
                    }
                    //Fa la scrittura sul conto di debito conto/verso erario usando la tabella anagrafiche della cfg ritenute
                    DataRow[] ContiContribFinanz = EP.GetAccMotiveDetails(idaccmotive_touse.ToString());
                    if (debitoCONTOerario)
                    {
                        foreach (DataRow CP in ContiContribFinanz)
                        {
                            EP.EffettuaScrittura(idepcontext, amount,
                                                 CP["idacc"],
                                                 idregauto, idupb, //era Curr["idreg"]
                                                 CurrCedolino["start"], CurrCedolino["stop"],
                                                 CurrCedolino, idaccmotive_touse);
                        }
                    }
                    else
                    {
                        DataTable Regs = TEH.GetIdRegFor(Rit["taxcode"], DBNull.Value, DBNull.Value);
                        if (Regs == null || Regs.Rows.Count == 0)
                        {
                            MessageBox.Show("Anagrafica per il versamento non trovata per la ritenuta di tipo " + Rit["taxref"].ToString(), "Errore");
                        }
                        else
                        {
                            foreach (DataRow Registry in Regs.Rows)
                            {
                                decimal amount_to_consider = amount * CfgFn.GetNoNullDecimal(Registry["quota"]);
                                int     idreg_to_consider  = CfgFn.GetNoNullInt32(Registry["idreg"]);
                                foreach (DataRow CP in ContiContribFinanz)
                                {
                                    EP.EffettuaScrittura(idepcontext, amount_to_consider,
                                                         CP["idacc"],
                                                         idreg_to_consider, idupb, //era Curr["idreg"]
                                                         CurrCedolino["start"], CurrCedolino["stop"],
                                                         CurrCedolino, idaccmotive_touse);
                                }
                            }
                        }
                    }
                }

                //Effettua la scrittura sulla causale principale
                DataRow[] ContiPrinc = EP.GetAccMotiveDetails(idaccmot_main);
                foreach (DataRow CP in ContiPrinc)
                {
                    EP.EffettuaScritturaImpegnoBudget(idepcontext, totale + contributiNonConfigurati,
                                                      CP["idacc"], idreg, idupb,
                                                      CurrCedolino["start"], CurrCedolino["stop"],
                                                      CurrCedolino, idaccmot_main, idepexp, null, idrelated);
                }


                //Effettua la scrittura sul conto di debito vs fornitore
                EP.EffettuaScrittura(idepcontext, totale,
                                     idacc_registry,
                                     idreg, idupb, CurrCedolino["start"], CurrCedolino["stop"],
                                     CurrCedolino, idaccmot_main);

                EP.RemoveEmptyDetails();

                MetaData MetaEntry = Meta.Dispatcher.Get("entry");
                PostData Post      = MetaEntry.Get_PostData();

                Post.InitClass(EP.D, Meta.Conn);
                if (Post.DO_POST())
                {
                    EditEntry(CurrCedolino);
                }
                else
                {
                    EP.viewDetails(Meta);
                }
            }
        }
コード例 #11
0
        private void btnCopyAll_Click(object sender, System.EventArgs e)
        {
            if (meta.IsEmpty)
            {
                return;
            }
            meta.DoMainCommand("mainsave");
            DataRow CurrVar = HelpForm.GetLastSelected(DS.userenvironment);

            if (CurrVar == null)
            {
                return;
            }
            bool Restricted = false;

            if (MessageBox.Show("Si vuole limitare la copia ai soli utenti facenti parte " +
                                "degli stessi gruppi dell'utente corrente?", "Opzioni",
                                MessageBoxButtons.YesNo) == DialogResult.Yes)
            {
                Restricted = true;
            }
            string    filterusers = null;
            vistaForm DS2         = new vistaForm();

            ClearDataSet.RemoveConstraints(DS2);
            if (Restricted)
            {
                string grouplist = QueryCreator.ColumnValues(DS.customusergroup,
                                                             null, "idcustomgroup", true);
                if (grouplist == "")
                {
                    filterusers = "(idcustomuser is null)";
                }
                else
                {
                    filterusers = "(idcustomuser in (SELECT idcustomuser FROM customusergroup WHERE (idcustomgroup in (" + grouplist + "))))";
                }
            }
            string filtervar = GetData.MergeFilters(filterusers,
                                                    "(variablename=" +
                                                    QueryCreator.quotedstrvalue(CurrVar["variablename"], true)
                                                    + ")");

            DataAccess.RUN_SELECT_INTO_TABLE(meta.Conn, DS2.customuser, null, filterusers, null, true);
            DataAccess.RUN_SELECT_INTO_TABLE(meta.Conn, DS2.userenvironment, null, filtervar, null, true);
            foreach (DataRow User in DS2.customuser.Rows)
            {
                DataRow[] UserVar = User.GetChildRows("customuseruserenvironment");
                DataRow   ThisVar;
                if ((UserVar == null) || (UserVar.Length == 0))
                {
                    ThisVar = DS2.userenvironment.NewRow();
                    ThisVar["idcustomuser"] = User["idcustomuser"];
                    ThisVar["variablename"] = CurrVar["variablename"];
                    DS2.userenvironment.Rows.Add(ThisVar);
                }
                else
                {
                    ThisVar = UserVar[0];
                }
                foreach (string fieldname in new string[] { "value", "flagadmin", "kind" })
                {
                    ThisVar[fieldname] = CurrVar[fieldname];
                }
            }
            PostData PP = meta.Get_PostData();

            PP.InitClass(DS2, meta.Conn);
            PP.DO_POST();
        }