/// <summary>
        /// Get Attribute Instance
        /// </summary>
        /// <param name="M_AttributeSetInstance_ID">attribute set instance</param>
        /// <returns>Attribute Instance or null</returns>
        public MGenAttributeInstance GetCGenAttributeInstance(int C_GenAttributeSetInstance_ID)
        {
            MGenAttributeInstance retValue = null;
            String sql = "SELECT * "
                         + "FROM C_GenAttributeInstance "
                         + "WHERE C_GenAttribute_ID=" + GetC_GenAttribute_ID() + " AND C_GenAttributeSetInstance_ID=" + C_GenAttributeSetInstance_ID;
            DataSet ds = null;

            try
            {
                ds = DB.ExecuteDataset(sql, null, Get_TrxName());
                for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
                {
                    DataRow dr = ds.Tables[0].Rows[i];
                    retValue = new MGenAttributeInstance(GetCtx(), dr, Get_TrxName());
                }
                ds = null;
            }
            catch (Exception ex)
            {
                log.Log(Level.SEVERE, sql, ex);
            }
            ds = null;

            return(retValue);
        }
        /// <summary>
        /// Set Attribute Instance
        /// </summary>
        /// <param name="M_AttributeSetInstance_ID">value</param>
        /// <param name="value">id</param>
        public void SetCGenAttributeInstance(int M_AttributeSetInstance_ID, MGenAttributeValue value)
        {
            MGenAttributeInstance instance = GetCGenAttributeInstance(M_AttributeSetInstance_ID);

            if (instance == null)
            {
                if (value != null)
                {
                    instance = new MGenAttributeInstance(GetCtx(), GetC_GenAttribute_ID(),
                                                         M_AttributeSetInstance_ID, value.GetC_GenAttributeValue_ID(),
                                                         value.GetName(), Get_TrxName()); //	Cached !!
                }
                else
                {
                    instance = new MGenAttributeInstance(GetCtx(), GetC_GenAttribute_ID(),
                                                         M_AttributeSetInstance_ID, 0, null, Get_TrxName());
                }
            }
            else
            {
                if (value != null)
                {
                    instance.SetC_GenAttributeValue_ID(value.GetC_GenAttributeValue_ID());
                    instance.SetValue(value.GetName());         //	Cached !!
                }
                else
                {
                    instance.SetC_GenAttributeValue_ID(0);
                    instance.SetValue(null);
                }
            }
            instance.Save();
        }
        /// <summary>
        /// Set Attribute Instance
        /// </summary>
        /// <param name="M_AttributeSetInstance_ID">id</param>
        /// <param name="value">string value</param>
        public void SetCGenAttributeInstance(int C_GenAttributeSetInstance_ID, String value)
        {
            MGenAttributeInstance instance = GetCGenAttributeInstance(C_GenAttributeSetInstance_ID);

            if (instance == null)
            {
                instance = new MGenAttributeInstance(GetCtx(), GetC_GenAttribute_ID(),
                                                     C_GenAttributeSetInstance_ID, value, Get_TrxName());
            }
            else
            {
                instance.SetValue(value);
            }
            instance.Save();
        }
        /// <summary>
        /// Set Attribute Instance
        /// </summary>
        /// <param name="M_AttributeSetInstance_ID">number value</param>
        /// <param name="value">id</param>
        public void SetCGenAttributeInstance(int M_AttributeSetInstance_ID, Decimal?value)
        {
            MGenAttributeInstance instance = GetCGenAttributeInstance(M_AttributeSetInstance_ID);

            if (instance == null)
            {
                instance = new MGenAttributeInstance(GetCtx(), GetC_GenAttribute_ID(),
                                                     M_AttributeSetInstance_ID, value, Get_TrxName());
            }
            else
            {
                instance.SetValueNumber(value);
            }
            instance.Save();
        }
        public void SetDescription()
        {
            //	Make sure we have a Attribute Set
            GetCGenAttributeSet();
            if (_mas == null)
            {
                SetDescription("");
                return;
            }
            StringBuilder sb = new StringBuilder();

            //	Instance Attribute Values
            MGenAttribute[] attributes = _mas.GetCGenAttributes(true);
            for (int i = 0; i < attributes.Length; i++)
            {
                MGenAttributeInstance mai = attributes[i].GetCGenAttributeInstance(GetC_GenAttributeSetInstance_ID());
                if (mai != null && mai.GetValue() != null)
                {
                    if (sb.Length > 0)
                    {
                        sb.Append("_");
                    }
                    sb.Append(mai.GetValue());
                }
            }
            //	SerNo
            if (_mas.IsSerNo() && GetSerNo() != null)
            {
                if (sb.Length > 0)
                {
                    sb.Append("_");
                }
                sb.Append(_mas.GetSerNoCharStart()).Append(GetSerNo()).Append(_mas.GetSerNoCharEnd());
            }
            //	Lot
            if (_mas.IsLot() && GetLot() != null)
            {
                if (sb.Length > 0)
                {
                    sb.Append("_");
                }
                sb.Append(_mas.GetLotCharStart()).Append(GetLot()).Append(_mas.GetLotCharEnd());
            }
            //	GuaranteeDate
            if (_mas.IsGuaranteeDate() && GetGuaranteeDate() != null)
            {
                if (sb.Length > 0)
                {
                    sb.Append("_");
                }
                sb.Append(_dateFormat.Format(GetGuaranteeDate()));
                //MessageBox.Show("set date time formate cheak line");
                //sb.Append(GetGuaranteeDate());
            }

            //	Product Attribute Values
            attributes = _mas.GetCGenAttributes(false);
            for (int i = 0; i < attributes.Length; i++)
            {
                MGenAttributeInstance mai = attributes[i].GetCGenAttributeInstance(GetC_GenAttributeSetInstance_ID());

                if (attributes[i].GetAttributeValueType().Equals("N"))
                {
                    if (mai != null && mai.GetValueNumber() != 0)
                    {
                        if (sb.Length > 0)
                        {
                            sb.Append("_");
                        }
                        sb.Append(mai.GetValueNumber());
                    }
                }
                else
                {
                    if (mai != null && mai.GetValue() != null)
                    {
                        if (sb.Length > 0)
                        {
                            sb.Append("_");
                        }
                        sb.Append(mai.GetValue());
                    }
                }
            }
            SetDescription(sb.ToString());
        }