private string readValue(object element, TpcnResources tag) { return this.readValue(element, tag.ToString()); }
/// <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); }
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 ""; } } }
/// <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); }