Exemplo n.º 1
0
 private string readValue(object element, TpcnResources tag)
 {
     return this.readValue(element, tag.ToString());
 }
Exemplo n.º 2
0
 private double readDouble(object element, TpcnResources tag)
 {
     char charSeparator = System.Globalization.NumberFormatInfo.CurrentInfo.NumberDecimalSeparator[0];
     return Convert.ToDouble("0" + this.readValue(element, tag).Replace(".", charSeparator.ToString()));
 }
Exemplo n.º 3
0
 private Int32 readInt32(object element, TpcnResources tag)
 {
     return Convert.ToInt32("0" + this.readValue(element, tag));
 }
Exemplo n.º 4
0
        private object LerCampo(TpcnTipoCampo Tipo, TpcnResources tag, ObOp optional, int minLength, int maxLength, bool trim)
        {
            int nDecimais = 0;
            string ConteudoTag = "";
            try
            {
                ConteudoTag = RetornarConteudoTag(tag.ToString());

                if (ConteudoTag != "")
                    if (ConteudoTag.StartsWith(prefix))
                        ConteudoTag = "";

                int len = ConteudoTag.Length;
                if (len == 0 && optional == ObOp.Opcional)
                {
                }
                else
                {
                    switch (Tipo)
                    {
                        case TpcnTipoCampo.tcHor:
                            maxLength = minLength = 8; //hh:mm:ss
                            break;
                        case TpcnTipoCampo.tcDatYYYY_MM_DD:
                            maxLength = minLength = 10; //yyyy-MM-dd
                            break;
                        case TpcnTipoCampo.tcDatYYYYMMDD:
                            maxLength = minLength = 8; //yyyyMMdd
                            break;
                        case TpcnTipoCampo.tcDatHor:
                            maxLength = minLength = 19; //aaaa-mm-dd hh:mm:ss
                            break;
                            /*
                        case TpcnTipoCampo.tcDec2:
                            nDecimais = 2;
                            break;
                        case TpcnTipoCampo.tcDec3:
                            nDecimais = 3;
                            break;
                        case TpcnTipoCampo.tcDec4:
                            nDecimais = 4;
                            break;
                        case TpcnTipoCampo.tcDec10:
                            nDecimais = 10;
                            break;*/
                        default:
                            if (Tipo >= TpcnTipoCampo.tcDec2 && Tipo <= TpcnTipoCampo.tcDec10)
                                nDecimais = (int)Tipo;
                            break;
                    }

                    if (len == 0 && minLength > 0)
                    {
                        this.cMensagemErro += "Layout: " + this.layout.Replace(prefix, "") + Environment.NewLine;
                        this.cMensagemErro += string.Format("Segmento [{0}]: tag <{1}> deve ser informada.\r\n" +
                                                            "\tLinha: {2}: Conteudo do segmento: {3}",
                                                            this.FSegmento, tag.ToString(), this.LinhaLida, this.Registro.Substring(1)) + Environment.NewLine;
                    }
                    else
                    {
                        switch (Tipo)
                        {
                            case TpcnTipoCampo.tcDec2:
                            case TpcnTipoCampo.tcDec3:
                            case TpcnTipoCampo.tcDec4:
                            case TpcnTipoCampo.tcDec5:
                            case TpcnTipoCampo.tcDec6:
                            case TpcnTipoCampo.tcDec7:
                            case TpcnTipoCampo.tcDec8:
                            case TpcnTipoCampo.tcDec9:
                            case TpcnTipoCampo.tcDec10:
                                //quando numerico do tipo double não consiste o tamanho minimo nem maximo
                                break;
                            default:
                                if ((len > maxLength || len < minLength) && (maxLength + minLength > 0))
                                {
                                    this.cMensagemErro += "Layout: " + this.layout.Replace(prefix, "") + Environment.NewLine;
                                    this.cMensagemErro += string.Format("Segmento [{0}]: tag <{1}> deve ter seu tamanho entre {2} e {3}. Conteudo: {4}" +
                                                            "\r\n\tLinha: {5}: Conteudo do segmento: {6}",
                                                            this.FSegmento, tag.ToString(), minLength, maxLength, ConteudoTag, this.LinhaLida, this.Registro.Substring(1)) + Environment.NewLine;
                                }
                                break;
                        }
                    }
                }

                if (optional == ObOp.Obrigatorio || (optional == ObOp.Opcional && len != 0))
                {
                    switch (Tipo)
                    {
                        case TpcnTipoCampo.tcDec2:
                        case TpcnTipoCampo.tcDec3:
                        case TpcnTipoCampo.tcDec4:
                        case TpcnTipoCampo.tcDec5:
                        case TpcnTipoCampo.tcDec6:
                        case TpcnTipoCampo.tcDec7:
                        case TpcnTipoCampo.tcDec8:
                        case TpcnTipoCampo.tcDec9:
                        case TpcnTipoCampo.tcDec10:
                            {
                                int pos = ConteudoTag.IndexOf(".") + 1;
                                int ndec = ConteudoTag.Substring(pos).Length;
                                string xdec = ConteudoTag.Substring(pos);
                                //
                                // ajusta o numero de casas decimais
                                while (ndec > nDecimais)
                                {
                                    if (xdec.Substring(ndec - 1, 1) == "0")
                                        --ndec;
                                    else
                                        break;
                                }

                                if (ndec > nDecimais)
                                {
                                    this.cMensagemErro += "Layout: " + this.layout.Replace(prefix, "") + Environment.NewLine;
                                    this.cMensagemErro += string.Format("Segmento [{0}]: tag <{1}> número de casas decimais deve ser de {2} e existe(m) {3}" +
                                                                        "\r\n\tLinha: {4}: Conteudo do segmento: {5}",
                                                                        this.FSegmento, tag.ToString(), nDecimais, ndec, this.LinhaLida, this.Registro.Substring(1)) + Environment.NewLine;
                                }

                                #region -- atribui o numero de casas decimais que serão gravadas

                                if (ndec < (int)TpcnTipoCampo.tcDec2 || ndec > (int)TpcnTipoCampo.tcDec10)
                                    ndec = (int)TpcnTipoCampo.tcDec2;

                                TpcnTipoCampo tipo = (TpcnTipoCampo)ndec;

                                if (tag == TpcnResources.vUnCom)
                                {
                                    NFe.det[NFe.det.Count - 1].Prod.vUnCom_Tipo = tipo;
/*
                                    switch (ndec)
                                    {
                                        case 2:
                                            NFe.det[NFe.det.Count - 1].Prod.vUnCom_Tipo = TpcnTipoCampo.tcDec2;
                                            break;
                                        case 3:
                                            NFe.det[NFe.det.Count - 1].Prod.vUnCom_Tipo = TpcnTipoCampo.tcDec3;
                                            break;
                                        case 4:
                                            NFe.det[NFe.det.Count - 1].Prod.vUnCom_Tipo = TpcnTipoCampo.tcDec4;
                                            break;
                                        case 5:
                                            NFe.det[NFe.det.Count - 1].Prod.vUnCom_Tipo = TpcnTipoCampo.tcDec5;
                                            break;
                                        case 6:
                                            NFe.det[NFe.det.Count - 1].Prod.vUnCom_Tipo = TpcnTipoCampo.tcDec6;
                                            break;
                                        case 10:
                                            NFe.det[NFe.det.Count - 1].Prod.vUnCom_Tipo = TpcnTipoCampo.tcDec10;
                                            break;
                                    }*/
                                    }

                                if (tag == TpcnResources.vUnTrib)
                                {
                                    NFe.det[NFe.det.Count - 1].Prod.vUnTrib_Tipo = tipo;
                                    /*
                                    switch (ndec)
                                    {
                                        case 2:
                                            NFe.det[NFe.det.Count - 1].Prod.vUnTrib_Tipo = TpcnTipoCampo.tcDec2;
                                            break;
                                        case 3:
                                            NFe.det[NFe.det.Count - 1].Prod.vUnTrib_Tipo = TpcnTipoCampo.tcDec3;
                                            break;
                                        case 4:
                                            NFe.det[NFe.det.Count - 1].Prod.vUnTrib_Tipo = TpcnTipoCampo.tcDec4;
                                            break;
                                        case 10:
                                            NFe.det[NFe.det.Count - 1].Prod.vUnTrib_Tipo = TpcnTipoCampo.tcDec10;
                                            break;
                                    }*/
                                    }

                                if (tag == TpcnResources.qTotMes)
                                {
                                    NFe.cana.qTotMes_Tipo = tipo;
                                    /*
                                    switch (ndec)
                                    {
                                        case 2:
                                            NFe.cana.qTotMes_Tipo = TpcnTipoCampo.tcDec2;
                                            break;
                                        case 3:
                                            NFe.cana.qTotMes_Tipo = TpcnTipoCampo.tcDec3;
                                            break;
                                        case 4:
                                            NFe.cana.qTotMes_Tipo = TpcnTipoCampo.tcDec4;
                                            break;
                                        case 10:
                                            NFe.cana.qTotMes_Tipo = TpcnTipoCampo.tcDec10;
                                            break;
                                    }*/
                                    }

                                if (tag == TpcnResources.qTotAnt)
                                {
                                    NFe.cana.qTotAnt_Tipo = tipo;
                                    /*
                                    switch (ndec)
                                    {
                                        case 2:
                                            NFe.cana.qTotAnt_Tipo = TpcnTipoCampo.tcDec2;
                                            break;
                                        case 3:
                                            NFe.cana.qTotAnt_Tipo = TpcnTipoCampo.tcDec3;
                                            break;
                                        case 4:
                                            NFe.cana.qTotAnt_Tipo = TpcnTipoCampo.tcDec4;
                                            break;
                                        case 10:
                                            NFe.cana.qTotAnt_Tipo = TpcnTipoCampo.tcDec10;
                                            break;
                                    }*/
                                    }

                                if (tag == TpcnResources.qTotGer)
                                {
                                    NFe.cana.qTotGer_Tipo = tipo;
                                    /*
                                    switch (ndec)
                                    {
                                        case 2:
                                            NFe.cana.qTotGer_Tipo = TpcnTipoCampo.tcDec2;
                                            break;
                                        case 3:
                                            NFe.cana.qTotGer_Tipo = TpcnTipoCampo.tcDec3;
                                            break;
                                        case 4:
                                            NFe.cana.qTotGer_Tipo = TpcnTipoCampo.tcDec4;
                                            break;
                                        case 10:
                                            NFe.cana.qTotGer_Tipo = TpcnTipoCampo.tcDec10;
                                            break;
                                    }*/
                                    }

                                if (tag == TpcnResources.qtde)
                                {
                                    NFe.cana.fordia[NFe.cana.fordia.Count - 1].qtde_Tipo = tipo;
                                    /*
                                        switch (ndec)
                                        {
                                            case 2:
                                                NFe.cana.fordia[NFe.cana.fordia.Count - 1].qtde_Tipo = TpcnTipoCampo.tcDec2;
                                                break;
                                            case 3:
                                                NFe.cana.fordia[NFe.cana.fordia.Count - 1].qtde_Tipo = TpcnTipoCampo.tcDec3;
                                                break;
                                            case 4:
                                                NFe.cana.fordia[NFe.cana.fordia.Count - 1].qtde_Tipo = TpcnTipoCampo.tcDec4;
                                                break;
                                            case 10:
                                                NFe.cana.fordia[NFe.cana.fordia.Count - 1].qtde_Tipo = TpcnTipoCampo.tcDec10;
                                                break;
                                    }*/
                                        }
                                

                                #endregion
                            }
                            break;
                    }
                }

                switch (Tipo)
                {
                    case TpcnTipoCampo.tcDatYYYYMMDD:
                        return this.getDate2(Tipo, ConteudoTag);

                    case TpcnTipoCampo.tcDatYYYY_MM_DD:
                    case TpcnTipoCampo.tcDatHor:
                        return this.getDateTime(Tipo, ConteudoTag);

                    case TpcnTipoCampo.tcHor:
                        return this.getTime(ConteudoTag);

                    case TpcnTipoCampo.tcDec2:
                    case TpcnTipoCampo.tcDec3:
                    case TpcnTipoCampo.tcDec4:
                    case TpcnTipoCampo.tcDec5:
                    case TpcnTipoCampo.tcDec6:
                    case TpcnTipoCampo.tcDec7:
                    case TpcnTipoCampo.tcDec8:
                    case TpcnTipoCampo.tcDec9:
                    case TpcnTipoCampo.tcDec10:
                        return Convert.ToDouble("0" + ConteudoTag.Replace(".", System.Globalization.NumberFormatInfo.CurrentInfo.NumberDecimalSeparator));

                    case TpcnTipoCampo.tcInt:
                        return Convert.ToInt32("0" + SomenteNumeros(ConteudoTag));

                    default:
                        return (trim ? ConteudoTag.Trim() : ConteudoTag);
                }
            }
            catch (Exception ex)
            {
                this.cMensagemErro += "Layout: " + this.layout.Replace(prefix, "") + Environment.NewLine;
                this.cMensagemErro += string.Format("Segmento [{0}]: tag <{1}> Conteudo: {2}\r\n" +
                                                    "\tLinha: {3}: Conteudo do segmento: {4}\r\n\tMensagem de erro: {5}",
                                                    this.FSegmento, tag.ToString(), ConteudoTag, this.LinhaLida, this.Registro.Substring(1),
                                                    ex.Message) + Environment.NewLine;
                switch (Tipo)
                {
                    case TpcnTipoCampo.tcHor:
                    case TpcnTipoCampo.tcDatYYYY_MM_DD:
                    case TpcnTipoCampo.tcDatYYYYMMDD:
                    case TpcnTipoCampo.tcDatHor:
                        return DateTime.MinValue;

                    case TpcnTipoCampo.tcDec2:
                    case TpcnTipoCampo.tcDec3:
                    case TpcnTipoCampo.tcDec4:
                    case TpcnTipoCampo.tcDec5:
                    case TpcnTipoCampo.tcDec6:
                    case TpcnTipoCampo.tcDec7:
                    case TpcnTipoCampo.tcDec8:
                    case TpcnTipoCampo.tcDec9:
                    case TpcnTipoCampo.tcDec10:
                        return 0.0;

                    case TpcnTipoCampo.tcInt:
                        return 0;

                    default:
                        return "";
                }
            }
        }
Exemplo n.º 5
0
 private DateTime readDate(object element, TpcnResources tag)
 {
     string temp = this.readValue(element, tag).Trim();
     return (temp != "" ? Convert.ToDateTime(temp) : DateTime.MinValue);
 }
Exemplo n.º 6
0
 private string LerString(TpcnResources tag, ObOp optional, int minLength, int maxLength, bool trim)
 {
     return (string)this.LerCampo(TpcnTipoCampo.tcStr, tag, optional, minLength, maxLength, trim);
 }
Exemplo n.º 7
0
 private Int32 LerInt32(TpcnResources tag, ObOp optional, int minLength, int maxLength)
 {
     return (Int32)this.LerCampo(TpcnTipoCampo.tcInt, tag, optional, minLength, maxLength, true);
 }
Exemplo n.º 8
0
 private double LerDouble(TpcnTipoCampo Tipo, TpcnResources tag, ObOp optional, int minLength, int maxLength)
 {
     return (double)this.LerCampo(Tipo, tag, optional, minLength, maxLength, true);
 }
Exemplo n.º 9
0
 /// <summary>
 /// wCampo
 /// </summary>
 /// <param name="obj"></param>
 /// <param name="Tipo"></param>
 /// <param name="TAG"></param>
 /// <param name="Obrigatorio"></param>
 /// <param name="nAlign"></param>
 private void wCampo(object obj, TpcnTipoCampo Tipo, TpcnResources TAG, ObOp Obrigatorio, int nAlign)
 {
     wCampo(obj, Tipo, TAG.ToString(), Obrigatorio, nAlign);
 }
Exemplo n.º 10
0
 /// <summary>
 /// wCampo
 /// </summary>
 /// <param name="obj"></param>
 /// <param name="Tipo"></param>
 /// <param name="TAG"></param>
 private void wCampo(object obj, TpcnTipoCampo Tipo, TpcnResources TAG)
 {
     wCampo(obj, Tipo, TAG.ToString(), ObOp.Obrigatorio, 0);
 }