Ejemplo n.º 1
0
        /// <summary>
        /// Retorna o valor formatado de acordo com a formatação definida no leiaute
        /// </summary>
        /// <param name="leiaute">objeto do tipo leiaute para formatar o valor</param>
        /// <param name="value">valor a ser formatado</param>
        /// <param name="leiauteBase">objeto que possui a formatação padrão</param>
        /// <returns></returns>
        public static string GetFormattedValue(this ILeiaute leiaute, object value, ILeiauteItem leiauteBase)
        {
            string result = "";
            //-------------------------------------------------------------------------
            // Caracter que será usado para preencher os valores a esquerda ou direita do resultado
            //-------------------------------------------------------------------------
            char paddingChar = ' ';

            //-------------------------------------------------------------------------
            // Se true, os valores serão preenchidos a esquerda, se false a direita
            //-------------------------------------------------------------------------
            bool numeric = false;

            //-------------------------------------------------------------------------
            // Se for fixo, simplesmente usa o conteúdo como valor
            //-------------------------------------------------------------------------
            if(leiauteBase.Fixo)
                value = leiauteBase.Conteudo;

            //-------------------------------------------------------------------------
            // Determinar o tipo de campo e formatar
            //-------------------------------------------------------------------------
            switch(leiauteBase.Tipo)
            {
                case OpenPOS.Enuns.UniBot.Tipo.Customizado:
                    if(!String.IsNullOrEmpty(leiauteBase.Formato))
                    {
                        leiauteBase.Formato.Value = value;
                        result = leiauteBase.Formato;
                    }
                    else
                        result = Unimake.Convert.ToString(value);
                    break;
                case OpenPOS.Enuns.UniBot.Tipo.Integer:
                    result = Unimake.Convert.ToInt(value).ToString();
                    numeric = true;
                    break;
                case OpenPOS.Enuns.UniBot.Tipo.Numeric:
                    result = Unimake.Format.Number(value);
                    numeric = true;
                    break;
                case OpenPOS.Enuns.UniBot.Tipo.Currency:
                    result = Unimake.Format.Currency(value);
                    numeric = true;
                    break;
                case OpenPOS.Enuns.UniBot.Tipo.DateTime:
                    result = String.Format("{0:dd/MM/yyyy HH:mm:ss}", Convert.ToDateTime(value));
                    break;
                case OpenPOS.Enuns.UniBot.Tipo.Date:
                    result = String.Format("{0:dd/MM/yyyy}", Convert.ToDateTime(value));
                    break;
                case OpenPOS.Enuns.UniBot.Tipo.Time:
                    result = String.Format("{0:HH:mm:ss}", Convert.ToDateTime(value));
                    break;
                case OpenPOS.Enuns.UniBot.Tipo.Boolean:
                    result = Unimake.Convert.ToBoolean(value) ? "1" : "0";
                    break;
                case OpenPOS.Enuns.UniBot.Tipo.String:
                default:
                    result = value == null ? "" : value.ToString();
                    break;
            }

            if(numeric)
                result = result.PadLeft(leiauteBase.Tamanho, paddingChar);
            else
                result = result.PadRight(leiauteBase.Tamanho, paddingChar);

            return result;
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Lê o dado da linha e retorna convertido 
        /// </summary>
        /// <param name="leiaute">objeto do tipo leiaute</param>
        /// <param name="line">linha que será avaliada e retornada</param>
        /// <param name="leiauteBase">leiaute de base para a recuperação da configuração do valor</param>
        /// <returns></returns>
        public static object GetFromLine(this ILeiaute leiaute, string line, ILeiauteItem leiauteBase)
        {
            object result = null;

            //-------------------------------------------------------------------------
            // Valor extraído da linha
            //-------------------------------------------------------------------------
            string value = line.Substring(Unimake.Convert.ToInt(leiauteBase.De) - 1, leiauteBase.Tamanho);

            //-------------------------------------------------------------------------
            // Determinar o tipo de campo para retornar
            //-------------------------------------------------------------------------
            switch(leiauteBase.Tipo)
            {
                case OpenPOS.Enuns.UniBot.Tipo.Integer:
                    result = Unimake.Convert.ToInt(value);
                    break;
                case OpenPOS.Enuns.UniBot.Tipo.Numeric:
                case OpenPOS.Enuns.UniBot.Tipo.Currency:
                    result = Unimake.Convert.ToDouble(value);
                    break;
                case OpenPOS.Enuns.UniBot.Tipo.DateTime:
                case OpenPOS.Enuns.UniBot.Tipo.Date:
                case OpenPOS.Enuns.UniBot.Tipo.Time:
                    result = Unimake.Convert.ToDateTime(value);
                    break;
                case OpenPOS.Enuns.UniBot.Tipo.Boolean:
                    result = Unimake.Convert.ToBoolean(value);
                    break;
                case OpenPOS.Enuns.UniBot.Tipo.Customizado:
                case OpenPOS.Enuns.UniBot.Tipo.String:
                default:
                    result = Convert.ToString(value).Trim();
                    break;
            }

            return result;
        }