Beispiel #1
0
        public AttributeInstance SearchValuesAttribute(int windowNoParent, int mAttributeSetInstanceId, int vadms_AttributeSet_ID, int windowNo, List <KeyNamePair> values, Ctx ctx)
        {
            AttributeInstance obj = new AttributeInstance();

            try
            {
                var editors                 = values;
                MGenAttributeSet aset       = null;
                MGenAttribute[]  attributes = null;
                String           mandatory  = "";

                var _masi = new MGenAttributeSetInstance(ctx, mAttributeSetInstanceId, null);
                _masi.SetC_GenAttributeSet_ID(vadms_AttributeSet_ID);
                aset = _masi.GetMGenAttributeSet();
                if (aset == null)
                {
                    return(obj);
                }

                if (_masi.GetC_GenAttributeSetInstance_ID() == 0)
                {
                    // _masi.Save();
                    obj.M_AttributeSetInstance_ID  = _masi.GetC_GenAttributeSetInstance_ID();
                    obj.M_AttributeSetInstanceName = _masi.GetDescription();
                }
                else
                {
                    var _masi1 = new MGenAttributeSetInstance(ctx, 0, null);
                    _masi.CopyTo(_masi1);
                    // _masi1.Save();

                    _masi = null;
                    _masi = _masi1;

                    obj.M_AttributeSetInstance_ID  = _masi.GetC_GenAttributeSetInstance_ID();
                    obj.M_AttributeSetInstanceName = _masi.GetDescription();
                }

                //	Save Instance Attributes
                attributes = aset.GetCGenAttributes(false);

                Dictionary <MGenAttribute, object> lst = new Dictionary <MGenAttribute, object>();

                StringBuilder sql         = new StringBuilder();
                StringBuilder description = new StringBuilder();

                for (int i = 0; i < attributes.Length; i++)
                {
                    if (MGenAttribute.ATTRIBUTEVALUETYPE_List.Equals(attributes[i].GetAttributeValueType()))
                    {
                        object             editor = editors[i];
                        MGenAttributeValue value  = null;
                        if (Convert.ToInt32(editors[i].Key) > 0)
                        {
                            value = new MGenAttributeValue(ctx, Convert.ToInt32(editors[i].Key), null);
                            value.SetName(editors[i].Name);
                        }

                        log.Fine(attributes[i].GetName() + "=" + value);
                        if (value != null)
                        {
                            if (attributes[i].IsMandatory() && value == null)
                            {
                                mandatory += " - " + attributes[i].GetName();
                            }
                            // attributes[i].SetMAttributeInstance(_M_AttributeSetInstance_ID, value);
                            lst[attributes[i]] = value;
                            description.Append(value + "_");


                            if (i > 0 && sql.Length > 0)
                            {
                                sql.Append(" intersect ");
                            }

                            sql.Append("SELECT DIstinct C_genAttributeSetInstance_ID FROM c_genattributeinstance WHERE IsActive='Y' ");

                            if (value != null)
                            {
                                sql.Append(" AND (  C_GenattributeValue_ID=").Append(value.GetC_GenAttributeValue_ID()).Append(" AND C_GenAttribute_ID=").Append(attributes[i].GetC_GenAttribute_ID() + ")");
                            }
                            else
                            {
                                sql.Append(" AND (  C_GenattributeValue_ID is null ").Append(" AND C_GenAttribute_ID=").Append(attributes[i].GetC_GenAttribute_ID() + ")");
                            }
                        }
                    }
                    else if (MGenAttribute.ATTRIBUTEVALUETYPE_Number.Equals(attributes[i].GetAttributeValueType()))
                    {
                        var editor = editors[i];
                        var value  = Convert.ToDecimal(editor.Name);

                        if (value > 0)
                        {
                            log.Fine(attributes[i].GetName() + "=" + value);

                            if (attributes[i].IsMandatory())
                            {
                                mandatory += " - " + attributes[i].GetName();
                            }

                            //attributes[i].SetMAttributeInstance(_M_AttributeSetInstance_ID, value);
                            lst[attributes[i]] = value;
                            if (i > 0 && sql.Length > 0)
                            {
                                sql.Append(" intersect ");
                            }
                            sql.Append("SELECT DIstinct C_genAttributeSetInstance_ID FROM c_genattributeinstance WHERE IsActive='Y' ");

                            sql.Append(" AND (VALUENUMBER=").Append(value).Append(" AND C_GenAttribute_ID=").Append(attributes[i].GetC_GenAttribute_ID() + ")");
                            description.Append(value + "_");
                        }
                    }
                    else
                    {
                        var editor = editors[i];
                        var value  = editor.Name;

                        if (value != null && value != "")
                        {
                            log.Fine(attributes[i].GetName() + "=" + value);
                            if (attributes[i].IsMandatory() && (value == null || value.ToString().Length == 0))
                            {
                                mandatory += " - " + attributes[i].GetName();
                            }

                            lst[attributes[i]] = value;
                            if (i > 0 && sql.Length > 0)
                            {
                                sql.Append(" intersect ");
                            }
                            sql.Append("SELECT DISTINCT C_genAttributeSetInstance_ID FROM c_genattributeinstance WHERE IsActive='Y' ");

                            sql.Append(" AND ( upper(VALUE)=upper('").Append(value).Append("') AND C_GenAttribute_ID=").Append(attributes[i].GetC_GenAttribute_ID() + ")");
                            description.Append(value + "_");
                        }
                    }
                }
                if (description.Length > 0)
                {
                    description.Remove(description.Length - 1, 1);
                    DataSet ds = DB.ExecuteDataset(sql.ToString(), null);

                    StringBuilder ids = new StringBuilder();
                    if (ds != null && ds.Tables[0].Rows.Count > 0)
                    {
                        for (int c = 0; c < ds.Tables[0].Rows.Count; c++)
                        {
                            ids.Append(Util.GetValueOfString(ds.Tables[0].Rows[c][0])).Append(",");
                        }
                    }

                    if (ids.ToString().Contains(","))
                    {
                        ids.Remove(ids.Length - 1, 1);
                    }

                    obj.Description = description.ToString();

                    if (ids.Length > 0)
                    {
                        obj.GenSetInstance = ids.ToString();
                    }
                    else
                    {
                        obj.GenSetInstance = "0";
                    }
                }
                else
                {
                    obj.Description = description.ToString();
                }
            }
            catch (Exception ex)
            {
                log.Severe(ex.Message);
            }
            return(obj);
        }
Beispiel #2
0
        /// <summary>
        /// Save Genral attribute
        /// </summary>
        /// <param name="windowNoParent"></param>
        /// <param name="mAttributeSetInstanceId"></param>
        /// <param name="windowNo"></param>
        /// <param name="values"></param>
        /// <param name="ctx"></param>
        /// <returns></returns>
        public AttributeInstance SaveGenAttribute(int windowNoParent, int mAttributeSetInstanceId, int vadms_AttributeSet_ID, int windowNo, List <KeyNamePair> values, Ctx ctx)
        {
            var editors           = values;
            AttributeInstance obj = new AttributeInstance();
            bool _changed         = false;


            MGenAttributeSet aset = null;

            MGenAttribute[] attributes = null;
            String          mandatory  = "";
            var             _masi      = new MGenAttributeSetInstance(ctx, mAttributeSetInstanceId, null);

            _masi.SetC_GenAttributeSet_ID(vadms_AttributeSet_ID);
            aset = _masi.GetMGenAttributeSet();
            if (aset == null)
            {
                return(null);
            }

            //	***	Save Attributes ***
            //	New Instance
            if (_changed || _masi.GetC_GenAttributeSetInstance_ID() == 0)
            {
                _masi.Save();
                obj.M_AttributeSetInstance_ID  = _masi.GetC_GenAttributeSetInstance_ID();
                mAttributeSetInstanceId        = _masi.GetC_GenAttributeSetInstance_ID();
                obj.M_AttributeSetInstanceName = _masi.GetDescription();
            }
            else
            {
                obj.M_AttributeSetInstance_ID  = _masi.GetC_GenAttributeSetInstance_ID();
                mAttributeSetInstanceId        = _masi.GetC_GenAttributeSetInstance_ID();
                obj.M_AttributeSetInstanceName = _masi.GetDescription();
            }
            //	Save Instance Attributes
            attributes = aset.GetCGenAttributes(false);

            Dictionary <MGenAttribute, object> lst = new Dictionary <MGenAttribute, object>();

            for (int i = 0; i < attributes.Length; i++)
            {
                if (MGenAttribute.ATTRIBUTEVALUETYPE_List.Equals(attributes[i].GetAttributeValueType()))
                {
                    object editor = editors[i];
                    //MGenAttributeValue value = (MGenAttributeValue)editor;
                    MGenAttributeValue value = null;
                    if (Convert.ToInt32(editors[i].Key) > 0)
                    {
                        value = new MGenAttributeValue(ctx, Convert.ToInt32(editors[i].Key), null);
                        value.SetName(editors[i].Name);
                    }
                    //log.fine(attributes[i].GetName() + "=" + value);
                    if (attributes[i].IsMandatory() && value == null)
                    {
                        mandatory += " - " + attributes[i].GetName();
                    }
                    lst[attributes[i]] = value;
                }
                else if (MGenAttribute.ATTRIBUTEVALUETYPE_Number.Equals(attributes[i].GetAttributeValueType()))
                {
                    object  editor = editors[i].Name;
                    decimal value  = Convert.ToDecimal(editor);
                    // log.fine(attributes[i].GetName() + "=" + value);
                    if (attributes[i].IsMandatory())
                    {
                        mandatory += " - " + attributes[i].GetName();
                    }
                    lst[attributes[i]] = value;
                }
                else
                {
                    object editor = editors[i].Name;
                    String value  = Convert.ToString(editor);
                    //  log.Fine(attributes[i].GetName() + "=" + value);
                    if (attributes[i].IsMandatory() && (value == null || value.Length == 0))
                    {
                        mandatory += " - " + attributes[i].GetName();
                    }
                    lst[attributes[i]] = value;
                }
                _changed = true;
            }

            //	Save Model
            if (_changed)
            {
                for (int i = 0; i < attributes.Length; i++)
                {
                    if (MGenAttribute.ATTRIBUTEVALUETYPE_List.Equals(attributes[i].GetAttributeValueType()))
                    {
                        var editor = editors[i];

                        MGenAttributeValue value = lst[attributes[i]] != null ? lst[attributes[i]] as MGenAttributeValue : null;
                        attributes[i].SetCGenAttributeInstance(mAttributeSetInstanceId, value);
                    }
                    else if (MGenAttribute.ATTRIBUTEVALUETYPE_Number.Equals(attributes[i].GetAttributeValueType()))
                    {
                        attributes[i].SetCGenAttributeInstance(mAttributeSetInstanceId, (decimal?)lst[attributes[i]]);
                    }
                    else
                    {
                        attributes[i].SetCGenAttributeInstance(mAttributeSetInstanceId, (String)lst[attributes[i]]);
                    }
                }
                _masi.SetDescription();
                _masi.Save();

                obj.M_AttributeSetInstance_ID  = _masi.GetC_GenAttributeSetInstance_ID();
                obj.M_AttributeSetInstanceName = _masi.GetDescription();
            }
            else
            {
                obj.M_AttributeSetInstance_ID  = _masi.GetC_GenAttributeSetInstance_ID();
                obj.M_AttributeSetInstanceName = _masi.GetDescription();
            }
            return(obj);
        }