NFe.ConvertTxt.nfeRead.processaPROD C# (CSharp) Method

processaPROD() private method

processaPROD
private processaPROD ( XmlNode nodedet ) : void
nodedet System.Xml.XmlNode
return void
        private void processaPROD(XmlNode nodedet)
        {
            Det detInfo = new Det();
            detInfo.Prod.nItem = Convert.ToInt32(nodedet.Attributes["nItem"].Value);
            detInfo.infAdProd = this.readValue(nodedet, TpcnResources.infAdProd);

            foreach (XmlNode nodedetprod in ((XmlElement)nodedet).GetElementsByTagName("prod"))
            {
                XmlElement ele = nodedetprod as XmlElement;

                detInfo.Prod.cEAN = this.readValue(ele, TpcnResources.cEAN);
                detInfo.Prod.cEANTrib = this.readValue(ele, TpcnResources.cEANTrib);
                detInfo.Prod.CFOP = this.readValue(ele, TpcnResources.CFOP);
                detInfo.Prod.cProd = this.readValue(ele, TpcnResources.cProd);
                detInfo.Prod.EXTIPI = this.readValue(ele, TpcnResources.EXTIPI);
                detInfo.Prod.indTot = (TpcnIndicadorTotal)this.readInt32(ele, TpcnResources.indTot);
                detInfo.Prod.NCM = this.readValue(ele, TpcnResources.NCM);
                detInfo.Prod.NVE = this.readValue(ele, TpcnResources.NVE);
                detInfo.Prod.nItemPed = this.readInt32(ele, TpcnResources.nItemPed);
                detInfo.Prod.qCom = this.readDouble(ele, TpcnResources.qCom);
                detInfo.Prod.qTrib = this.readDouble(ele, TpcnResources.qTrib);
                detInfo.Prod.uCom = this.readValue(ele, TpcnResources.uCom);
                detInfo.Prod.uTrib = this.readValue(ele, TpcnResources.uTrib);
                detInfo.Prod.vDesc = this.readDouble(ele, TpcnResources.vDesc);
                detInfo.Prod.vFrete = this.readDouble(ele, TpcnResources.vFrete);
                detInfo.Prod.vOutro = this.readDouble(ele, TpcnResources.vOutro);
                detInfo.Prod.vProd = this.readDouble(ele, TpcnResources.vProd);
                detInfo.Prod.vSeg = this.readDouble(ele, TpcnResources.vSeg);
                detInfo.Prod.vUnCom = this.readDouble(ele, TpcnResources.vUnCom);
                detInfo.Prod.vUnTrib = this.readDouble(ele, TpcnResources.vUnTrib);
                detInfo.Prod.xPed = this.readValue(ele, TpcnResources.xPed);
                detInfo.Prod.xProd = this.readValue(ele, TpcnResources.xProd);
                detInfo.Prod.nRECOPI = this.readValue(ele, TpcnResources.nRECOPI);
                detInfo.Prod.nFCI = this.readValue(ele, TpcnResources.nFCI);
                detInfo.Prod.CEST = this.readInt32(ele, TpcnResources.CEST);
            }

            #region -->prod->arma
            foreach (XmlNode nodedetArma in ((XmlElement)nodedet).GetElementsByTagName("arma"))
            {
                Arma armaInfo = new Arma();

                armaInfo.descr = this.readValue(nodedetArma, TpcnResources.descr);
                armaInfo.nCano = this.readInt32(nodedetArma, TpcnResources.nCano);
                armaInfo.nSerie = this.readInt32(nodedetArma, TpcnResources.nSerie);
                armaInfo.tpArma = (TpcnTipoArma)this.readInt32(nodedetArma, TpcnResources.tpArma);

                detInfo.Prod.arma.Add(armaInfo);
            }
            #endregion

            #region --prod->comb
            foreach (XmlNode nodedetComb in ((XmlElement)nodedet).GetElementsByTagName("comb"))
            {
                detInfo.Prod.comb.CODIF = this.readValue(nodedetComb, TpcnResources.CODIF);
                detInfo.Prod.comb.cProdANP = this.readInt32(nodedetComb, TpcnResources.cProdANP);
                detInfo.Prod.comb.pMixGN = this.readDouble(nodedetComb, TpcnResources.pMixGN);
                detInfo.Prod.comb.qTemp = this.readDouble(nodedetComb, TpcnResources.qTemp);
                detInfo.Prod.comb.UFCons = this.readValue(nodedetComb, TpcnResources.UFCons);
                foreach (XmlNode nodedetCombCIDE in ((XmlElement)nodedetComb).GetElementsByTagName("CIDE"))
                {
                    detInfo.Prod.comb.CIDE.qBCprod = this.readDouble(nodedetCombCIDE, TpcnResources.qBCProd);
                    detInfo.Prod.comb.CIDE.vAliqProd = this.readDouble(nodedetCombCIDE, TpcnResources.vAliqProd);
                    detInfo.Prod.comb.CIDE.vCIDE = this.readDouble(nodedetCombCIDE, TpcnResources.vCIDE);
                }
                foreach (XmlNode nodedetCombEncerrante in ((XmlElement)nodedetComb).GetElementsByTagName("encerrante"))
                {
                    detInfo.Prod.comb.encerrante.vEncIni = this.readValue(nodedetCombEncerrante, TpcnResources.vEncIni);
                    detInfo.Prod.comb.encerrante.vEncFin = this.readValue(nodedetCombEncerrante, TpcnResources.vEncFin);
                    detInfo.Prod.comb.encerrante.nBico = this.readInt32(nodedetCombEncerrante, TpcnResources.nBico);
                    detInfo.Prod.comb.encerrante.nBomba = this.readInt32(nodedetCombEncerrante, TpcnResources.nBomba);
                    detInfo.Prod.comb.encerrante.nTanque = this.readInt32(nodedetCombEncerrante, TpcnResources.nTanque);
                }
            }
            #endregion

            #region --prod->med
            foreach (XmlNode nodedetmed in ((XmlElement)nodedet).GetElementsByTagName("med"))
            {
                Med medInfo = new Med();
                medInfo.dFab = this.readDate(nodedetmed, TpcnResources.dFab);
                medInfo.dVal = this.readDate(nodedetmed, TpcnResources.dVal);
                medInfo.nLote = this.readValue(nodedetmed, TpcnResources.nLote);
                medInfo.qLote = this.readDouble(nodedetmed, TpcnResources.qLote);
                medInfo.vPMC = this.readDouble(nodedetmed, TpcnResources.vPMC);
                detInfo.Prod.med.Add(medInfo);
            }
            #endregion

            #region --prod->veicProd
            foreach (XmlNode nodedetveic in ((XmlElement)nodedet).GetElementsByTagName("veicProd"))
            {
                detInfo.Prod.veicProd.anoFab = this.readInt32(nodedetveic, TpcnResources.anoFab);
                detInfo.Prod.veicProd.anoMod = this.readInt32(nodedetveic, TpcnResources.anoMod);
                detInfo.Prod.veicProd.cCor = this.readValue(nodedetveic, TpcnResources.cCor);
                detInfo.Prod.veicProd.cCorDENATRAN = this.readInt32(nodedetveic, TpcnResources.cCorDENATRAN);
                detInfo.Prod.veicProd.chassi = this.readValue(nodedetveic, TpcnResources.chassi);
                detInfo.Prod.veicProd.cilin = this.readValue(nodedetveic, TpcnResources.cilin);
                detInfo.Prod.veicProd.cMod = this.readValue(nodedetveic, TpcnResources.cMod);
                detInfo.Prod.veicProd.CMT = this.readValue(nodedetveic, TpcnResources.CMT);
                detInfo.Prod.veicProd.condVeic = this.readValue(nodedetveic, TpcnResources.condVeic);
                detInfo.Prod.veicProd.dist = this.readValue(nodedetveic, TpcnResources.dist);
                detInfo.Prod.veicProd.espVeic = this.readInt32(nodedetveic, TpcnResources.espVeic);
                detInfo.Prod.veicProd.lota = this.readInt32(nodedetveic, TpcnResources.lota);
                detInfo.Prod.veicProd.nMotor = this.readValue(nodedetveic, TpcnResources.nMotor);
                detInfo.Prod.veicProd.nSerie = this.readValue(nodedetveic, TpcnResources.nSerie);
                detInfo.Prod.veicProd.pesoB = this.readValue(nodedetveic, TpcnResources.pesoB);
                detInfo.Prod.veicProd.pesoL = this.readValue(nodedetveic, TpcnResources.pesoL);
                detInfo.Prod.veicProd.pot = this.readValue(nodedetveic, TpcnResources.pot);
                detInfo.Prod.veicProd.tpComb = this.readValue(nodedetveic, TpcnResources.tpComb);
                detInfo.Prod.veicProd.tpOp = this.readValue(nodedetveic, TpcnResources.tpOp);
                detInfo.Prod.veicProd.tpPint = this.readValue(nodedetveic, TpcnResources.tpPint);
                detInfo.Prod.veicProd.tpRest = this.readInt32(nodedetveic, TpcnResources.tpRest);
                detInfo.Prod.veicProd.tpVeic = this.readInt32(nodedetveic, TpcnResources.tpVeic);
                detInfo.Prod.veicProd.VIN = this.readValue(nodedetveic, TpcnResources.VIN);
                detInfo.Prod.veicProd.xCor = this.readValue(nodedetveic, TpcnResources.xCor);
            }
            #endregion

            #region --pod->DI
            foreach (XmlNode nodedetDI in ((XmlElement)nodedet).GetElementsByTagName("DI"))
            {
                DI diInfo = new DI();
                diInfo.cExportador = this.readValue(nodedetDI, TpcnResources.cExportador);
                diInfo.dDesemb = this.readDate(nodedetDI, TpcnResources.dDesemb);
                diInfo.dDI = this.readDate(nodedetDI, TpcnResources.dDI);
                diInfo.nDI = this.readValue(nodedetDI, TpcnResources.nDI);
                diInfo.xLocDesemb = this.readValue(nodedetDI, TpcnResources.xLocDesemb);
                diInfo.UFDesemb = this.readValue(nodedetDI, TpcnResources.UFDesemb);

                diInfo.tpViaTransp = (TpcnTipoViaTransp)this.readInt32(nodedetDI, TpcnResources.tpViaTransp);
                diInfo.vAFRMM = this.readDouble(nodedetDI, TpcnResources.vAFRMM);
                diInfo.tpIntermedio = (TpcnTipoIntermedio)this.readInt32(nodedetDI, TpcnResources.tpIntermedio);
                diInfo.CNPJ = this.readValue(nodedetDI, TpcnResources.CNPJ);
                diInfo.UFTerceiro = this.readValue(nodedetDI, TpcnResources.UFTerceiro);

                foreach (XmlNode nodedetDIadi in ((XmlElement)nodedetDI).GetElementsByTagName("adi"))
                {
                    Adi adiInfo = new Adi();

                    adiInfo.cFabricante = this.readValue(nodedetDIadi, TpcnResources.cFabricante);
                    adiInfo.nAdicao = this.readInt32(nodedetDIadi, TpcnResources.nAdicao);
                    adiInfo.nSeqAdi = this.readInt32(nodedetDIadi, TpcnResources.nSeqAdic);
                    adiInfo.vDescDI = this.readDouble(nodedetDIadi, TpcnResources.vDescDI);
                    adiInfo.nDraw = this.readValue(nodedetDIadi, TpcnResources.nDraw.ToString());

                    diInfo.adi.Add(adiInfo);
                }
                detInfo.Prod.DI.Add(diInfo);
            }
            #endregion

            #region -- prod->detExport
            foreach (XmlNode nodedetExport in ((XmlElement)nodedet).GetElementsByTagName("detExport"))
            {
                detInfo.Prod.detExport.Add(new detExport { nDraw = this.readValue(nodedetExport, TpcnResources.nDraw) });
                foreach (XmlNode nodedetExportInd in ((XmlElement)nodedetExport).GetElementsByTagName("exportInd"))
                {
                    detInfo.Prod.detExport[detInfo.Prod.detExport.Count-1].exportInd.nRE =
                        this.readValue(nodedetExportInd, TpcnResources.nRE);
                    detInfo.Prod.detExport[detInfo.Prod.detExport.Count-1].exportInd.chNFe =
                        this.readValue(nodedetExportInd, TpcnResources.chNFe);
                    detInfo.Prod.detExport[detInfo.Prod.detExport.Count-1].exportInd.qExport =
                        this.readDouble(nodedetExportInd, TpcnResources.qExport);
                }
            }
            #endregion

            #region -- prod->impostoDevol
            foreach (XmlNode nodedetimpostoDevol in ((XmlElement)nodedet).GetElementsByTagName("impostoDevol"))
            {
                detInfo.impostoDevol.pDevol = this.readDouble(nodedetimpostoDevol, TpcnResources.pDevol);
                foreach (XmlNode nodedetimpostoDevolInd in ((XmlElement)nodedetimpostoDevol).GetElementsByTagName("IPI"))
                {
                    detInfo.impostoDevol.vIPIDevol = this.readDouble(nodedetimpostoDevolInd, TpcnResources.vIPIDevol);
                }
            }
            #endregion

            foreach (XmlNode nodedetImposto in ((XmlElement)nodedet).GetElementsByTagName("imposto"))
            {
                detInfo.Imposto.vTotTrib = this.readDouble(((XmlElement)nodedetImposto), TpcnResources.vTotTrib);
                
                #region -->Imposto->ICMS
                foreach (XmlNode nodedetImpostoICMS in ((XmlElement)nodedetImposto).GetElementsByTagName(TpcnResources.ICMS.ToString()))
                {
                    if (nodedetImpostoICMS.ChildNodes.Count > 0)
                    {
                        XmlNode nodedetImpostoICMS_ = nodedetImpostoICMS.ChildNodes[0];

                        detInfo.Imposto.ICMS.CST = this.readValue(nodedetImpostoICMS_, TpcnResources.CST);
                        detInfo.Imposto.ICMS.CSOSN = this.readInt32(nodedetImpostoICMS_, TpcnResources.CSOSN);
                        detInfo.Imposto.ICMS.modBC = (TpcnDeterminacaoBaseIcms)this.readInt32(nodedetImpostoICMS_, TpcnResources.modBC);
                        detInfo.Imposto.ICMS.modBCST = (TpcnDeterminacaoBaseIcmsST)this.readInt32(nodedetImpostoICMS_, TpcnResources.modBCST);
                        detInfo.Imposto.ICMS.motDesICMS = this.readInt32(nodedetImpostoICMS_, TpcnResources.motDesICMS);
                        detInfo.Imposto.ICMS.orig = (TpcnOrigemMercadoria)this.readInt32(nodedetImpostoICMS_, TpcnResources.orig);
                        detInfo.Imposto.ICMS.pCredSN = this.readDouble(nodedetImpostoICMS_, TpcnResources.pCredSN);
                        detInfo.Imposto.ICMS.pICMS = this.readDouble(nodedetImpostoICMS_, TpcnResources.pICMS);
                        detInfo.Imposto.ICMS.pICMSST = this.readDouble(nodedetImpostoICMS_, TpcnResources.pICMSST);
                        detInfo.Imposto.ICMS.pMVAST = this.readDouble(nodedetImpostoICMS_, TpcnResources.pMVAST);
                        detInfo.Imposto.ICMS.pRedBC = this.readDouble(nodedetImpostoICMS_, TpcnResources.pRedBC);
                        detInfo.Imposto.ICMS.pRedBCST = this.readDouble(nodedetImpostoICMS_, TpcnResources.pRedBCST);
                        detInfo.Imposto.ICMS.UFST = this.readValue(nodedetImpostoICMS_, TpcnResources.UFST);
                        detInfo.Imposto.ICMS.vBC = this.readDouble(nodedetImpostoICMS_, TpcnResources.vBC);
                        detInfo.Imposto.ICMS.pBCOp = this.readDouble(nodedetImpostoICMS_, TpcnResources.pBCOp);
                        detInfo.Imposto.ICMS.vBCST = this.readDouble(nodedetImpostoICMS_, TpcnResources.vBCST);
                        detInfo.Imposto.ICMS.vBCSTDest = this.readDouble(nodedetImpostoICMS_, TpcnResources.vBCSTDest);
                        detInfo.Imposto.ICMS.vBCSTRet = this.readDouble(nodedetImpostoICMS_, TpcnResources.vBCSTRet);
                        detInfo.Imposto.ICMS.vCredICMSSN = this.readDouble(nodedetImpostoICMS_, TpcnResources.vCredICMSSN);
                        detInfo.Imposto.ICMS.vICMS = this.readDouble(nodedetImpostoICMS_, TpcnResources.vICMS);
                        detInfo.Imposto.ICMS.vICMSST = this.readDouble(nodedetImpostoICMS_, TpcnResources.vICMSST);
                        detInfo.Imposto.ICMS.vICMSSTDest = this.readDouble(nodedetImpostoICMS_, TpcnResources.vICMSSTDest);
                        detInfo.Imposto.ICMS.vICMSSTRet = this.readDouble(nodedetImpostoICMS_, TpcnResources.vICMSSTRet);
                        detInfo.Imposto.ICMS.vICMSDeson = this.readDouble(nodedetImpostoICMS_, TpcnResources.vICMSDeson);
                        detInfo.Imposto.ICMS.vICMSOp = this.readDouble(nodedetImpostoICMS_, TpcnResources.vICMSOp);
                        detInfo.Imposto.ICMS.pDif = this.readDouble(nodedetImpostoICMS_, TpcnResources.pDif);
                        detInfo.Imposto.ICMS.vICMSDif = this.readDouble(nodedetImpostoICMS_, TpcnResources.vICMSDif);

                        foreach (XmlNode nodedetImpostoICMS_ICMSUFDest in ((XmlElement)nodedetImpostoICMS_).GetElementsByTagName(TpcnResources.ICMSUFDest.ToString()))
                        {
                            if (nodedetImpostoICMS_ICMSUFDest.ChildNodes.Count > 0)
                            {
                                XmlNode nodedetImpostoICMS__ICMSUFDest = nodedetImpostoICMS.ChildNodes[0];

                                detInfo.Imposto.ICMS.ICMSUFDest.vBCUFDest = this.readDouble(nodedetImpostoICMS__ICMSUFDest, TpcnResources.vBCUFDest);
                                detInfo.Imposto.ICMS.ICMSUFDest.pICMSUFDest = this.readDouble(nodedetImpostoICMS__ICMSUFDest, TpcnResources.pICMSUFDest);
                                detInfo.Imposto.ICMS.ICMSUFDest.pICMSInter = this.readDouble(nodedetImpostoICMS__ICMSUFDest, TpcnResources.pICMSInter);
                                detInfo.Imposto.ICMS.ICMSUFDest.pICMSInterPart = this.readDouble(nodedetImpostoICMS__ICMSUFDest, TpcnResources.pICMSInterPart);
                                detInfo.Imposto.ICMS.ICMSUFDest.vICMSUFDest = this.readDouble(nodedetImpostoICMS__ICMSUFDest, TpcnResources.vICMSUFDest);
                                detInfo.Imposto.ICMS.ICMSUFDest.vICMSUFRemet = this.readDouble(nodedetImpostoICMS__ICMSUFDest, TpcnResources.vICMSUFRemet);
                            }
                        }
                    }
                }
                #endregion

                // Inicializa CST como sendo Não tributada e conforme o TIPO entrada ou saida
                // Caso a Tag não seja informada sera gravada com sendo não tributada
                if (nfe.ide.tpNF == TpcnTipoNFe.tnEntrada)
                    detInfo.Imposto.IPI.CST = "53";
                else
                    detInfo.Imposto.IPI.CST = "03";

                #region --Imposto->IPI
                foreach (XmlNode nodedetImpostoIPI in ((XmlElement)nodedetImposto).GetElementsByTagName("IPI"))
                {
                    detInfo.Imposto.IPI.cEnq = this.readValue(nodedetImpostoIPI, TpcnResources.cEnq);
                    detInfo.Imposto.IPI.clEnq = this.readValue(nodedetImpostoIPI, TpcnResources.clEnq);
                    detInfo.Imposto.IPI.CNPJProd = this.readValue(nodedetImpostoIPI, TpcnResources.CNPJProd);
                    detInfo.Imposto.IPI.cSelo = this.readValue(nodedetImpostoIPI, TpcnResources.cSelo);
                    detInfo.Imposto.IPI.qSelo = this.readInt32(nodedetImpostoIPI, TpcnResources.qSelo);

                    foreach (XmlNode nodedetImpostoIPITrib in ((XmlElement)nodedetImpostoIPI).GetElementsByTagName("IPITrib"))
                    {
                        detInfo.Imposto.IPI.CST = this.readValue(nodedetImpostoIPITrib, TpcnResources.CST);
                        detInfo.Imposto.IPI.pIPI = this.readDouble(nodedetImpostoIPITrib, TpcnResources.pIPI);
                        detInfo.Imposto.IPI.pIPI = this.readDouble(nodedetImpostoIPITrib, TpcnResources.pIPI);
                        detInfo.Imposto.IPI.qUnid = this.readDouble(nodedetImpostoIPITrib, TpcnResources.qUnid);
                        detInfo.Imposto.IPI.vBC = this.readDouble(nodedetImpostoIPITrib, TpcnResources.vBC);
                        detInfo.Imposto.IPI.vIPI = this.readDouble(nodedetImpostoIPITrib, TpcnResources.vIPI);
                        detInfo.Imposto.IPI.vUnid = this.readDouble(nodedetImpostoIPITrib, TpcnResources.vUnid);
                    }
                    foreach (XmlNode nodedetImpostoIPInt in ((XmlElement)nodedetImpostoIPI).GetElementsByTagName("IPINT"))
                    {
                        detInfo.Imposto.IPI.CST = this.readValue(nodedetImpostoIPInt, TpcnResources.CST);
                    }
                }
                #endregion

                #region --Imposto->II
                foreach (XmlNode nodedetImpostoII in ((XmlElement)nodedetImposto).GetElementsByTagName("II"))
                {
                    detInfo.Imposto.II.vBC = this.readDouble(nodedetImpostoII, TpcnResources.vBC);
                    detInfo.Imposto.II.vDespAdu = this.readDouble(nodedetImpostoII, TpcnResources.vDespAdu);
                    detInfo.Imposto.II.vII = this.readDouble(nodedetImpostoII, TpcnResources.vII);
                    detInfo.Imposto.II.vIOF = this.readDouble(nodedetImpostoII, TpcnResources.vIOF);
                }
                #endregion

                #region --Imposto->PIS
                foreach (XmlNode nodedetImpostoPIS in ((XmlElement)nodedetImposto).GetElementsByTagName("PIS"))
                {
                    detInfo.Imposto.PIS.CST = this.readValue(nodedetImpostoPIS, TpcnResources.CST);
                    detInfo.Imposto.PIS.vBC = this.readDouble(nodedetImpostoPIS, TpcnResources.vBC);
                    detInfo.Imposto.PIS.pPIS = this.readDouble(nodedetImpostoPIS, TpcnResources.pPIS);
                    detInfo.Imposto.PIS.vPIS = this.readDouble(nodedetImpostoPIS, TpcnResources.vPIS);
                    detInfo.Imposto.PIS.qBCProd = this.readDouble(nodedetImpostoPIS, TpcnResources.qBCProd);
                    detInfo.Imposto.PIS.vAliqProd = this.readDouble(nodedetImpostoPIS, TpcnResources.vAliqProd);
                }
                #endregion

                #region --Imposto->PISST
                foreach (XmlNode nodedetImpostoPISst in ((XmlElement)nodedetImposto).GetElementsByTagName("PISST"))
                {
                    detInfo.Imposto.PISST.vBC = this.readDouble(nodedetImpostoPISst, TpcnResources.vBC);
                    detInfo.Imposto.PISST.pPis = this.readDouble(nodedetImpostoPISst, TpcnResources.pPIS);
                    detInfo.Imposto.PISST.qBCProd = this.readDouble(nodedetImpostoPISst, TpcnResources.qBCProd);
                    detInfo.Imposto.PISST.vAliqProd = this.readDouble(nodedetImpostoPISst, TpcnResources.vAliqProd);
                    detInfo.Imposto.PISST.vPIS = this.readDouble(nodedetImpostoPISst, TpcnResources.vPIS);
                }
                #endregion

                #region --Imposto->COFINS
                foreach (XmlNode nodedetImpostoCOFINS in ((XmlElement)nodedetImposto).GetElementsByTagName("COFINS"))
                {
                    detInfo.Imposto.COFINS.CST = this.readValue(nodedetImpostoCOFINS, TpcnResources.CST);
                    detInfo.Imposto.COFINS.vBC = this.readDouble(nodedetImpostoCOFINS, TpcnResources.vBC);
                    detInfo.Imposto.COFINS.pCOFINS = this.readDouble(nodedetImpostoCOFINS, TpcnResources.pCOFINS);
                    detInfo.Imposto.COFINS.qBCProd = this.readDouble(nodedetImpostoCOFINS, TpcnResources.qBCProd);
                    detInfo.Imposto.COFINS.vAliqProd = this.readDouble(nodedetImpostoCOFINS, TpcnResources.vAliqProd);
                    detInfo.Imposto.COFINS.vCOFINS = this.readDouble(nodedetImpostoCOFINS, TpcnResources.vCOFINS);
                }
                #endregion

                #region --Imposto->COFINSST
                foreach (XmlNode nodedetImpostoCOFINSst in ((XmlElement)nodedetImposto).GetElementsByTagName("COFINSST"))
                {
                    detInfo.Imposto.COFINSST.vBC = this.readDouble(nodedetImpostoCOFINSst, TpcnResources.vBC);
                    detInfo.Imposto.COFINSST.pCOFINS = this.readDouble(nodedetImpostoCOFINSst, TpcnResources.pCOFINS);
                    detInfo.Imposto.COFINSST.qBCProd = this.readDouble(nodedetImpostoCOFINSst, TpcnResources.qBCProd);
                    detInfo.Imposto.COFINSST.vAliqProd = this.readDouble(nodedetImpostoCOFINSst, TpcnResources.vAliqProd);
                    detInfo.Imposto.COFINSST.vCOFINS = this.readDouble(nodedetImpostoCOFINSst, TpcnResources.vCOFINS);
                }
                #endregion

                #region --Imposto->ISSQN
                foreach (XmlNode nodedetImpostoISSQN in ((XmlElement)nodedetImposto).GetElementsByTagName("ISSQN"))
                {
                    detInfo.Imposto.ISSQN.vBC = this.readDouble(nodedetImpostoISSQN, TpcnResources.vBC);
                    detInfo.Imposto.ISSQN.vAliq = this.readDouble(nodedetImpostoISSQN, TpcnResources.vAliq);
                    detInfo.Imposto.ISSQN.vISSQN = this.readDouble(nodedetImpostoISSQN, TpcnResources.vISSQN);
                    detInfo.Imposto.ISSQN.cMunFG = this.readInt32(nodedetImpostoISSQN, TpcnResources.cMunFG);
                    detInfo.Imposto.ISSQN.cListServ = this.readValue(nodedetImpostoISSQN, TpcnResources.cListServ);
                    detInfo.Imposto.ISSQN.cSitTrib = this.readValue(nodedetImpostoISSQN, TpcnResources.cSitTrib);
                    // 3.10
                    detInfo.Imposto.ISSQN.vDeducao = this.readDouble(nodedetImpostoISSQN, TpcnResources.vDeducao);
                    detInfo.Imposto.ISSQN.vOutro = this.readDouble(nodedetImpostoISSQN, TpcnResources.vOutro);
                    detInfo.Imposto.ISSQN.vDescIncond = this.readDouble(nodedetImpostoISSQN, TpcnResources.vDescIncond);
                    detInfo.Imposto.ISSQN.vDescCond = this.readDouble(nodedetImpostoISSQN, TpcnResources.vDescCond);
                    detInfo.Imposto.ISSQN.vISSRet = this.readDouble(nodedetImpostoISSQN, TpcnResources.vISSRet);
                    detInfo.Imposto.ISSQN.indISS = (TpcnindISS)this.readDouble(nodedetImpostoISSQN, TpcnResources.indISS);
                    detInfo.Imposto.ISSQN.cServico = this.readValue(nodedetImpostoISSQN, TpcnResources.cServico);
                    detInfo.Imposto.ISSQN.cMun = this.readInt32(nodedetImpostoISSQN, TpcnResources.cMun);
                    detInfo.Imposto.ISSQN.cPais = this.readInt32(nodedetImpostoISSQN, TpcnResources.cPais);
                    detInfo.Imposto.ISSQN.nProcesso = this.readValue(nodedetImpostoISSQN, TpcnResources.nProcesso);
                    detInfo.Imposto.ISSQN.indIncentivo = this.readValue(nodedetImpostoISSQN, TpcnResources.indIncentivo) == "1";
                }
                #endregion

            }
            nfe.det.Add(detInfo);
        }