private void carregaSubItens(XmlElement item, string select, string codigo)
    {
        //int ttEventos = 0;
        //int ttbenef = 0;
        //double ttDespesa = 0;

        dbClass       db1 = new dbClass();
        SqlDataReader dr  = db1.DataReader(select + " and b.subItemDe = " + codigo + " order by b.id");

        while (dr.Read())
        {
            string     localName       = dr["tagXml"].ToString();
            XmlElement xmlProcedimento = doc.CreateElement(localName);
            item.AppendChild(xmlProcedimento);


            if (String.Compare(dr["lg_evento"].ToString(), "S") == 0)
            {
                XmlElement xmlEventos = doc.CreateElement("eventos");
                xmlEventos.InnerText = dr["qt_evento"].ToString();
                xmlProcedimento.AppendChild(xmlEventos);
                //int qtEventos = int.Parse(dr["qt_evento"].ToString());
                //ttEventos += qtEventos;
            }

            if (String.Compare(dr["lg_beneficiario"].ToString(), "S") == 0)
            {
                XmlElement xmlBeneficiarios = doc.CreateElement("beneficiarios");
                xmlBeneficiarios.InnerText = dr["qt_benef_fora_per_carencia"].ToString();
                xmlProcedimento.AppendChild(xmlBeneficiarios);
                //int qtBenef = int.Parse(dr["qt_benef_fora_per_carencia"].ToString());
                //ttbenef += qtBenef;
            }


            if (String.Compare(dr["lg_despesa"].ToString(), "S") == 0)
            {
                XmlElement xmlDespesas = doc.CreateElement("despesas");
                xmlDespesas.InnerText = double.Parse(dr["tt_despesa_liq"].ToString()).ToString("F");
                xmlProcedimento.AppendChild(xmlDespesas);
                //double vrDespesa = double.Parse(dr["tt_despesa_liq"].ToString());
                //ttDespesa += vrDespesa;
            }
        }

        /*
         * if (dr.HasRows)
         * {
         *  item.SelectSingleNode("eventos").InnerText = ttEventos.ToString();
         *  item.SelectSingleNode("beneficiarios").InnerText = ttbenef.ToString();
         *  item.SelectSingleNode("despesas").InnerText = ttDespesa.ToString("F");
         * }
         */
        dr.Close();
        db1.closeConn();
    }
    private void  geraMensagemSIP(XmlElement xmlMensagemSIP, string ano, string trimestre, string uf, string empresa)
    {
        XmlElement xmlMensagem = doc.CreateElement(xmlPrefix, "mensagem", nmUrl);

        xmlMensagemSIP.AppendChild(xmlMensagem);

        string     dtTrimestre         = getTrimestre(ano, int.Parse(trimestre));
        XmlElement xmlOperadoraParaANS = doc.CreateElement(xmlPrefix, "operadoraParaANS", nmUrl);

        xmlMensagem.AppendChild(xmlOperadoraParaANS);

        XmlElement xmlSipOperadoreParaAns = doc.CreateElement(xmlPrefix, "sipOperadoraParaAns", nmUrl);

        xmlOperadoraParaANS.AppendChild(xmlSipOperadoreParaAns);

        XmlElement xmlEnvioSip = doc.CreateElement(xmlPrefix, "envioSip", nmUrl);

        xmlSipOperadoreParaAns.AppendChild(xmlEnvioSip);

        XmlElement xmlDataTrimestreReconchecimento = doc.CreateElement(xmlPrefix, "dataTrimestreReconhecimento", nmUrl);

        xmlEnvioSip.AppendChild(xmlDataTrimestreReconchecimento);


        XmlElement xmlDia = doc.CreateElement(xmlPrefix, "dia", nmUrl);

        xmlDia.InnerText = dtTrimestre.Substring(0, 2);
        xmlDataTrimestreReconchecimento.AppendChild(xmlDia);

        XmlElement xmlMes = doc.CreateElement(xmlPrefix, "mes", nmUrl);

        xmlMes.InnerText = dtTrimestre.Substring(3, 2);
        xmlDataTrimestreReconchecimento.AppendChild(xmlMes);

        XmlElement xmlAno = doc.CreateElement(xmlPrefix, "ano", nmUrl);

        xmlAno.InnerText = dtTrimestre.Substring(6);
        xmlDataTrimestreReconchecimento.AppendChild(xmlAno);

        dbClass db = new dbClass();

        SqlDataReader drFormContrat = db.DataReader("select distinct formaContratacao from sipXtrimestre where cd_empresa = " + empresa + " and ano = " + ano + " and trimestre = " + trimestre);

        while (drFormContrat.Read())
        {
            XmlElement xmlFormaContratacao = doc.CreateElement(xmlPrefix, drFormContrat["formaContratacao"].ToString(), nmUrl);
            xmlEnvioSip.AppendChild(xmlFormaContratacao);

            XmlElement xmlIndividualFamiliar = doc.CreateElement(xmlPrefix, "individualFamiliar", nmUrl);
            xmlFormaContratacao.AppendChild(xmlIndividualFamiliar);

            XmlElement xmlSegmentacao = doc.CreateElement(xmlPrefix, "segmentacao", nmUrl);
            xmlIndividualFamiliar.AppendChild(xmlSegmentacao);

            XmlElement xmlOdontologico = doc.CreateElement(xmlPrefix, "odontologico", nmUrl);
            xmlSegmentacao.AppendChild(xmlOdontologico);

            XmlElement xmlQuadro = doc.CreateElement(xmlPrefix, "quadro", nmUrl);
            xmlOdontologico.AppendChild(xmlQuadro);

            // em entendimento com Gabi, ficou acordado que mandariamos a data trimestre de ocorrencia, igual data trimentes do reconhecimento
            XmlElement xmlDataTrimestreOcorrencia = doc.CreateElement(xmlPrefix, "dataTrimestreOcorrencia", nmUrl);
            xmlQuadro.AppendChild(xmlDataTrimestreOcorrencia);

            xmlDataTrimestreOcorrencia.AppendChild(xmlDia);
            xmlDataTrimestreOcorrencia.AppendChild(xmlMes);
            xmlDataTrimestreOcorrencia.AppendChild(xmlAno);

            XmlElement xmlUf = doc.CreateElement(xmlPrefix, "uf", nmUrl);
            xmlUf.InnerText = uf; // manda somente para um uf
            xmlQuadro.AppendChild(xmlUf);

            XmlElement xmlProcOdonto = doc.CreateElement(xmlPrefix, "procOdonto", nmUrl);
            xmlQuadro.AppendChild(xmlProcOdonto);
            dbClass       db1 = new dbClass();
            SqlDataReader dr  = db1.DataReader("select * from sipXtrimestre a, sip b where b.codigo = a.cd_sip and cd_empresa = " + empresa + " and ano = " + ano + " and trimestre = " + trimestre + " and uf = 'SP' and formaContratacao = '" + drFormContrat["formaContratacao"].ToString() + "' order by b.id");


            while (dr.Read())
            {
                //preencher a tabela sip o nome das tabas
                //  criar campo na tabela sip para ordernar conforme schema
                XmlElement xmlEventos       = doc.CreateElement(xmlPrefix, "eventos", nmUrl);
                XmlElement xmlBeneficiarios = doc.CreateElement(xmlPrefix, "benenficiarios", nmUrl);
                XmlElement xmlDespesas      = doc.CreateElement(xmlPrefix, "despesas", nmUrl);

                string     localName       = dr["tagXml"].ToString();
                XmlElement xmlProcedimento = doc.CreateElement(xmlPrefix, localName, nmUrl);
                xmlProcOdonto.AppendChild(xmlProcedimento);
                xmlEventos.InnerText       = dr["qt_evento"].ToString();
                xmlBeneficiarios.InnerText = dr["qt_benef_fora_per_carencia"].ToString();
                xmlDespesas.InnerText      = double.Parse(dr["tt_despesa_liq"].ToString()).ToString("F");

                xmlProcedimento.AppendChild(xmlEventos);
                xmlProcedimento.AppendChild(xmlBeneficiarios);
                xmlProcedimento.AppendChild(xmlDespesas);
            }
            dr.Close();
            db1.closeConn();
        }
        drFormContrat.Close();
        db.closeConn();
    }
    private void  geraMensagemSIP(XmlElement xmlMensagemSIP, string ano, string trimestre, string uf, string empresa)
    {
        XmlElement xmlMensagem = doc.CreateElement("mensagem");

        xmlMensagemSIP.AppendChild(xmlMensagem);

        string     dtTrimestre         = getTrimestre(ano, int.Parse(trimestre));
        XmlElement xmlOperadoraParaANS = doc.CreateElement("operadoraParaANS");

        xmlMensagem.AppendChild(xmlOperadoraParaANS);

        XmlElement xmlSipOperadoreParaAns = doc.CreateElement("sipOperadoraParaAns");

        xmlOperadoraParaANS.AppendChild(xmlSipOperadoreParaAns);

        XmlElement xmlEnvioSip = doc.CreateElement("envioSip");

        xmlSipOperadoreParaAns.AppendChild(xmlEnvioSip);

        XmlElement xmlDataTrimestreReconchecimento = doc.CreateElement("dataTrimestreReconhecimento");

        xmlEnvioSip.AppendChild(xmlDataTrimestreReconchecimento);


        XmlElement xmlDia = doc.CreateElement("dia");

        xmlDia.InnerText = dtTrimestre.Substring(0, 2);
        xmlDataTrimestreReconchecimento.AppendChild(xmlDia);

        XmlElement xmlMes = doc.CreateElement("mes");

        xmlMes.InnerText = dtTrimestre.Substring(3, 2);
        xmlDataTrimestreReconchecimento.AppendChild(xmlMes);

        XmlElement xmlAno = doc.CreateElement("ano");

        xmlAno.InnerText = dtTrimestre.Substring(6);
        xmlDataTrimestreReconchecimento.AppendChild(xmlAno);

        XmlElement xmlTagFormaContratacao = doc.CreateElement("formaContratacao");

        xmlEnvioSip.AppendChild(xmlTagFormaContratacao);

        dbClass db = new dbClass();

        SqlDataReader drFormContrat = db.DataReader("select distinct formaContratacao from sipXtrimestre where cd_empresa = " + empresa + " and ano = " + ano + " and trimestre = " + trimestre + " order by formaContratacao desc");

        while (drFormContrat.Read())
        {
            XmlElement xmlFormaContratacao = doc.CreateElement(drFormContrat["formaContratacao"].ToString());
            xmlTagFormaContratacao.AppendChild(xmlFormaContratacao);


            XmlElement xmlSegmentacao = doc.CreateElement("segmentacao");
            xmlFormaContratacao.AppendChild(xmlSegmentacao);

            XmlElement xmlOdontologico = doc.CreateElement("odontologico");
            xmlSegmentacao.AppendChild(xmlOdontologico);

            XmlElement xmlQuadro = doc.CreateElement("quadro");
            xmlOdontologico.AppendChild(xmlQuadro);

            // em entendimento com Gabi, ficou acordado que mandariamos a data trimestre de ocorrencia, igual data trimentes do reconhecimento
            XmlElement xmlDataTrimestreOcorrencia = doc.CreateElement("dataTrimestreOcorrencia");
            xmlQuadro.AppendChild(xmlDataTrimestreOcorrencia);

            XmlElement xmlDiaRec = doc.CreateElement("dia");
            xmlDiaRec.InnerText = dtTrimestre.Substring(0, 2);


            XmlElement xmlMesRec = doc.CreateElement("mes");
            xmlMesRec.InnerText = dtTrimestre.Substring(3, 2);

            XmlElement xmlAnoRec = doc.CreateElement("ano");
            xmlAnoRec.InnerText = dtTrimestre.Substring(6);


            xmlDataTrimestreOcorrencia.AppendChild(xmlDiaRec);
            xmlDataTrimestreOcorrencia.AppendChild(xmlMesRec);
            xmlDataTrimestreOcorrencia.AppendChild(xmlAnoRec);

            XmlElement xmlUf = doc.CreateElement("uf");
            xmlUf.InnerText = uf; // manda somente para um uf
            xmlQuadro.AppendChild(xmlUf);

            XmlElement xmlProcOdonto = doc.CreateElement("procOdonto");
            xmlQuadro.AppendChild(xmlProcOdonto);

            XmlElement xmlprocedimentosOdonto = doc.CreateElement("procedimentosOdonto");
            xmlProcOdonto.AppendChild(xmlprocedimentosOdonto);

            XmlElement xmlEventosTT       = doc.CreateElement("eventos");
            XmlElement xmlBeneficiariosTT = doc.CreateElement("beneficiarios");
            XmlElement xmlDespesasTT      = doc.CreateElement("despesas");
            xmlprocedimentosOdonto.AppendChild(xmlEventosTT);
            xmlprocedimentosOdonto.AppendChild(xmlBeneficiariosTT);
            xmlprocedimentosOdonto.AppendChild(xmlDespesasTT);


            dbClass db1 = new dbClass();


            //int ttEventos = 0;
            //int ttbenef = 0;
            //double ttDespesa = 0;



            // ta passando esse select como parametro para os subitens
            string        select = " select * from sipXtrimestre a, sip b where b.codigo = a.cd_sip and cd_empresa = " + empresa + " and ano = " + ano + " and trimestre = " + trimestre + " and uf = 'SP' and formaContratacao = '" + drFormContrat["formaContratacao"].ToString() + "'";
            SqlDataReader dr     = db1.DataReader(select + " and b.subItemDe is null  order by b.id");

            if (dr.Read())
            {
                if (dr["codigo"].ToString() == "I") // por segurança verifica se o primeiro item eh a letra I
                {
                    xmlEventosTT.InnerText       = dr["qt_evento"].ToString();
                    xmlBeneficiariosTT.InnerText = dr["qt_benef_fora_per_carencia"].ToString();
                    xmlDespesasTT.InnerText      = double.Parse(dr["tt_despesa_liq"].ToString()).ToString("F");
                }
                else
                {
                    Label1.Text = "Não há a opção I PROCEDIMENTOS ODONTOLÓGICOS";
                    return;
                }
            }


            while (dr.Read())
            {
                string     localName       = dr["tagXml"].ToString();
                XmlElement xmlProcedimento = doc.CreateElement(localName);
                xmlprocedimentosOdonto.AppendChild(xmlProcedimento);
                if (String.Compare(dr["lg_evento"].ToString(), "S") == 0)
                {
                    XmlElement xmlEventos = doc.CreateElement("eventos");
                    xmlEventos.InnerText = dr["qt_evento"].ToString();
                    xmlProcedimento.AppendChild(xmlEventos);
                }

                if (String.Compare(dr["lg_beneficiario"].ToString(), "S") == 0)
                {
                    XmlElement xmlBeneficiarios = doc.CreateElement("beneficiarios");
                    xmlBeneficiarios.InnerText = dr["qt_benef_fora_per_carencia"].ToString();
                    xmlProcedimento.AppendChild(xmlBeneficiarios);
                }


                if (String.Compare(dr["lg_despesa"].ToString(), "S") == 0)
                {
                    XmlElement xmlDespesas = doc.CreateElement("despesas");
                    xmlDespesas.InnerText = double.Parse(dr["tt_despesa_liq"].ToString()).ToString("F");
                    xmlProcedimento.AppendChild(xmlDespesas);
                }

                carregaSubItens(xmlProcedimento, select, dr["codigo"].ToString());

                // tem que ser aqui por no carregeSubItens pode estar alimentando esses dados

                /*if (xmlProcedimento.SelectSingleNode("eventos") != null)
                 * {
                 *  int qtEventos = int.Parse(xmlProcedimento.SelectSingleNode("eventos").InnerText);
                 *  ttEventos += qtEventos;
                 * }
                 *
                 * if (xmlProcedimento.SelectSingleNode("beneficiarios") != null)
                 * {
                 *  int qtBenef = int.Parse(xmlProcedimento.SelectSingleNode("beneficiarios").InnerText);
                 *  ttbenef += qtBenef;
                 * }
                 *
                 * if (xmlProcedimento.SelectSingleNode("despesas") != null)
                 * {
                 *  double vrDesp = double.Parse(xmlProcedimento.SelectSingleNode("despesas").InnerText);
                 *  ttDespesa += vrDesp;
                 * }*/
            }
            // xmlprocedimentosOdonto.SelectSingleNode("eventos").InnerText = ttEventos.ToString();
            // xmlprocedimentosOdonto.SelectSingleNode("beneficiarios").InnerText = ttbenef.ToString();
            // xmlprocedimentosOdonto.SelectSingleNode("despesas").InnerText = ttDespesa.ToString("F");


            dr.Close();
            db1.closeConn();
        }
        drFormContrat.Close();
        db.closeConn();
    }
    protected void cboItemAssit_SelectedIndexChanged(object sender, EventArgs e)
    {
        dbClass       db = new dbClass();
        SqlDataReader dr = db.DataReader("select * from sipXtrimestre where cd_empresa = " + cboEmpresa.SelectedValue + " and ano = " + txtAno.Text + " and trimestre = " + cboTrimestre.SelectedValue + " and uf = '" + txtUF.Text + "' and formaContratacao = '" + cboFormacontrat.SelectedValue + "' and cd_sip = '" + cboItemAssit.SelectedValue + "'");

        if (dr.Read())
        {
            txtQtBenefCarencia.Text = dr["qt_benef_fora_per_carencia"].ToString();
            txtQtEventos.Text       = dr["qt_evento"].ToString();
            txtTtDespLiq.Text       = dr["tt_despesa_liq"].ToString();
            Session["op"]           = "A";
        }
        else
        {
            txtQtBenefCarencia.Text = "";
            txtQtEventos.Text       = "";
            txtTtDespLiq.Text       = "";
            Session["op"]           = "I";
        }
        txtQtEventos.Focus();
        dr.Close();
        db.closeConn();
        dr = db.DataReader("select * from sip where codigo = '" + cboItemAssit.SelectedValue + "'");
        if (dr.Read())
        {
            if (String.Compare(dr["lg_evento"].ToString(), "N") == 0)
            {
                txtQtEventos.Enabled   = false;
                txtQtEventos.Text      = "";
                txtQtEventos.BackColor = System.Drawing.Color.Gray;
            }
            else
            {
                txtQtEventos.Enabled   = true;
                txtQtEventos.BackColor = System.Drawing.Color.White;
            }

            if (String.Compare(dr["lg_beneficiario"].ToString(), "N") == 0)
            {
                txtQtBenefCarencia.Enabled   = false;
                txtQtBenefCarencia.Text      = "";
                txtQtBenefCarencia.BackColor = System.Drawing.Color.Gray;
            }
            else
            {
                txtQtBenefCarencia.Enabled   = true;
                txtQtBenefCarencia.BackColor = System.Drawing.Color.White;
            }
            if (String.Compare(dr["lg_despesa"].ToString(), "N") == 0)
            {
                txtTtDespLiq.Enabled   = false;
                txtTtDespLiq.Text      = "";
                txtTtDespLiq.BackColor = System.Drawing.Color.Gray;
            }
            else
            {
                txtTtDespLiq.Enabled   = true;
                txtTtDespLiq.BackColor = System.Drawing.Color.White;
            }
        }
        dr.Close();
        db.closeConn();
    }