protected void callbackGravaCabecaDID_Callback(object source, DevExpress.Web.ASPxCallback.CallbackEventArgs e)
        {
            WEBDID did = new WEBDID();
            WEBDID.Dados dados = new WEBDID.Dados();
            string[] retorno = new string[3];

            if (string.IsNullOrEmpty(txtProcessoID.Text)) {
                txtProcessoID.Text = "0";
            }

            ConfigurationManager.AppSettings["PrefeituraUsaDotacao"].ToString().ToUpper();

            if (string.IsNullOrEmpty(txtProcessoID.Text))
            {
                did._NUMERO = string.Empty;
            }
            else
            {
                did._NUMERO = txtProcessoID.Text;
            }

            if (cbbUndOrcamentaria.Value == null)
            {
                e.Result = "ERROR:Informe a Unidade Orçamentária !!!";
            }
            else
            {
                if (cbbCentroCusto.Value == null)
                {
                    e.Result = "ERROR:Informe o Centro de Custo !!!";
                }
                else
                {
                    if (txtDataDID.Value == null)
                    {
                        e.Result = "ERROR:Informe a Data !!!";
                    }
                    else
                    {
                        if (dxtxtValorDID.Value.ToString() == "0,00")
                        {
                            e.Result = "ERROR:Informe o Valor do DID!!!";
                        }
                        else
                        {
                            if (txtFornecedorNome.Value == null)
                            {
                                e.Result = "ERROR:Informe o Fornecedor !!!";
                            }
                            else
                            {
                                if (cbbModalidadeEmpenho.Value == null)
                                {
                                    e.Result = "ERROR:Modalidade de Empenho não informada !!!";
                                }
                                else
                                {
                                    if (string.IsNullOrEmpty(ASPxMemo1.Text))
                                    {
                                        e.Result = "ERROR:Informe a especificação do histórico !!!";
                                    }
                                    else
                                    {
                                        if (txtDotacao.Value == null)
                                        {
                                            e.Result = "ERROR:Informe a Dotação !!!";
                                        }
                                        else
                                        {
                                            if (cbbModalidadeEmpenho.Value == null)
                                            {
                                                e.Result = "ERROR:Informe a Modalidade de Empenho !!!";
                                            }
                                            else
                                            {
                                                if (string.IsNullOrEmpty(hdfDadosDotacao.Get("FONCOD").ToString()))
                                                {
                                                    e.Result = "ERROR:Por algum motivo não encontramos a Fonte de Recurso indicada no DID. Por favor selecione novamente a Dotação desejada com suas respectiva Fonte de Recurso !!!";
                                                }
                                                else
                                                {
                                                    string op = "";
                                                    if (Request.QueryString["op"] != null)
                                                    {
                                                        op = Request.QueryString["op"].ToString();
                                                    }

                                                    if (hdfDadosDotacao.Get("CONTROLASALDO").ToString() == "1")
                                                    {
                                                        if (op.Equals("edt"))
                                                        {
                                                            var saldoDID = float.Parse(Session[SessionTotalDID].ToString()) + CarregaSaldoDID();
                                                            var valorDID = float.Parse(dxtxtValorDID.Text);
                                                            if ((float)saldoDID < (float)valorDID)
                                                            {
                                                                e.Result = "ERROR:Valor Solicitado (" + valorDID.ToString("C") + ") é maior do que o Saldo disponível (" + saldoDID.ToString("C") + ") para este Centro de Custo e Fonte de Recurso!!!";
                                                            }
                                                            else
                                                            {
                                                                did.id = Convert.ToInt32(txtProcessoID.Text);
                                                                did.contrato = txtContrato.Text;
                                                                did.data = txtDataDID.Date.ToShortDateString().Replace("/", ".");
                                                                did.historico = ASPxMemo1.Text;

                                                                did.processoAquisicao = "Contrato: " + hdfContratosInfo.Get("NUMEROCONTRATO").ToString() + " - Licitação: " + hdfContratosInfo.Get("NUMEROLICITACAO").ToString();

                                                                did.valor = Double.Parse(dxtxtValorDID.Text);
                                                                did.idCentroCusto = int.Parse(cbbCentroCusto.Value.ToString());
                                                                did.idModalidadeEmpenho = int.Parse(cbbModalidadeEmpenho.Value.ToString());
                                                                did.idFornecedor = int.Parse(hfdDadosFornecedor.Get("PESCOD").ToString());
                                                                did.idTipoAquisicao = hdfContratosInfo.Get("IDMODALIDADE").ToString();
                                                                did.didUnidade = cbbUndOrcamentaria.Value.ToString().Substring(2, 2);
                                                                did.didOrgao = cbbUndOrcamentaria.Value.ToString().Substring(0, 2);
                                                                did.Dotacao = txtDotacao.Text;
                                                                did.CTRCOD = txtContrato.Text;
                                                                did.USUARIOENVIO = int.Parse(hdfInfoUsuario.Get("IDUSUARIO").ToString());
                                                                did.USUARIODESTINO = int.Parse(hdfInfoUsuario.Get("IDUSUARIO").ToString());
                                                                did.UNDFUNC_ENVIO = int.Parse(hdfInfoUsuario.Get("IDUNDFUNCIONAL").ToString());
                                                                did.UNDFUNC_DESTINO = int.Parse(hdfInfoUsuario.Get("IDUNDFUNCIONAL").ToString());
                                                                did.FONCOD = hdfDadosDotacao.Get("FONCOD").ToString();
                                                                did.FONNOME = hdfDadosDotacao.Get("FONNOME").ToString();

                                                                retorno = dados.gravaCabecaDID(did);
                                                                e.Result = retorno[2] + "#" + retorno[1] + "#" + retorno[0]; ;
                                                            }
                                                        }
                                                        else
                                                        {
                                                            if (float.Parse(txtSaldo.Text) < float.Parse(dxtxtValorDID.Text))
                                                            {
                                                                var saldoDID = float.Parse(txtSaldo.Text);
                                                                var valorDID = float.Parse(dxtxtValorDID.Text);

                                                                e.Result = "ERROR:Valor Solicitado (" + valorDID.ToString("C") + ") é maior do que o Saldo disponível (" + saldoDID.ToString("C") + ") para este Centro de Custo e Fonte de Recurso!!!";
                                                            }
                                                            else
                                                            {
                                                                did.id = Convert.ToInt32(txtProcessoID.Text);
                                                                did.contrato = txtContrato.Text;
                                                                did.data = txtDataDID.Date.ToShortDateString().Replace("/", ".");
                                                                did.historico = ASPxMemo1.Text;

                                                                did.processoAquisicao = "Contrato: " + hdfContratosInfo.Get("NUMEROCONTRATO").ToString() + " - Licitação: " + hdfContratosInfo.Get("NUMEROLICITACAO").ToString();

                                                                did.valor = Double.Parse(dxtxtValorDID.Text);
                                                                did.idCentroCusto = int.Parse(cbbCentroCusto.Value.ToString());
                                                                did.idModalidadeEmpenho = int.Parse(cbbModalidadeEmpenho.Value.ToString());
                                                                did.idFornecedor = int.Parse(hfdDadosFornecedor.Get("PESCOD").ToString());
                                                                did.idTipoAquisicao = hdfContratosInfo.Get("IDMODALIDADE").ToString();
                                                                did.didUnidade = cbbUndOrcamentaria.Value.ToString().Substring(2, 2);
                                                                did.didOrgao = cbbUndOrcamentaria.Value.ToString().Substring(0, 2);
                                                                did.Dotacao = txtDotacao.Text;
                                                                did.CTRCOD = txtContrato.Text;
                                                                did.USUARIOENVIO = int.Parse(hdfInfoUsuario.Get("IDUSUARIO").ToString());
                                                                did.USUARIODESTINO = int.Parse(hdfInfoUsuario.Get("IDUSUARIO").ToString());
                                                                did.UNDFUNC_ENVIO = int.Parse(hdfInfoUsuario.Get("IDUNDFUNCIONAL").ToString());
                                                                did.UNDFUNC_DESTINO = int.Parse(hdfInfoUsuario.Get("IDUNDFUNCIONAL").ToString());
                                                                did.FONCOD = hdfDadosDotacao.Get("FONCOD").ToString();
                                                                did.FONNOME = hdfDadosDotacao.Get("FONNOME").ToString();

                                                                retorno = dados.gravaCabecaDID(did);
                                                                e.Result = retorno[2] + "#" + retorno[1] + "#" + retorno[0];

                                                                string teste = string.Empty;
                                                            }
                                                        }
                                                    }
                                                    else
                                                    {
                                                        did.id = Convert.ToInt32(txtProcessoID.Text);
                                                        did.contrato = txtContrato.Text;
                                                        did.data = txtDataDID.Date.ToShortDateString().Replace("/", ".");
                                                        did.historico = ASPxMemo1.Text;

                                                        did.processoAquisicao = "Contrato: " + hdfContratosInfo.Get("NUMEROCONTRATO").ToString() + " - Licitação: " + hdfContratosInfo.Get("NUMEROLICITACAO").ToString();

                                                        did.valor = Double.Parse(dxtxtValorDID.Text);
                                                        did.idCentroCusto = int.Parse(cbbCentroCusto.Value.ToString());
                                                        did.idModalidadeEmpenho = int.Parse(cbbModalidadeEmpenho.Value.ToString());
                                                        did.idFornecedor = int.Parse(hfdDadosFornecedor.Get("PESCOD").ToString());
                                                        did.idTipoAquisicao = hdfContratosInfo.Get("IDMODALIDADE").ToString();
                                                        did.didUnidade = cbbUndOrcamentaria.Value.ToString().Substring(2, 2);
                                                        did.didOrgao = cbbUndOrcamentaria.Value.ToString().Substring(0, 2);
                                                        did.Dotacao = txtDotacao.Text;
                                                        did.CTRCOD = txtContrato.Text;
                                                        did.USUARIOENVIO = int.Parse(hdfInfoUsuario.Get("IDUSUARIO").ToString());
                                                        did.USUARIODESTINO = int.Parse(hdfInfoUsuario.Get("IDUSUARIO").ToString());
                                                        did.UNDFUNC_ENVIO = int.Parse(hdfInfoUsuario.Get("IDUNDFUNCIONAL").ToString());
                                                        did.UNDFUNC_DESTINO = int.Parse(hdfInfoUsuario.Get("IDUNDFUNCIONAL").ToString());
                                                        did.FONCOD = hdfDadosDotacao.Get("FONCOD").ToString();
                                                        did.FONNOME = hdfDadosDotacao.Get("FONNOME").ToString();
                                                        retorno = dados.gravaCabecaDID(did);
                                                        e.Result = retorno[2] + "#" + retorno[1] + "#" + retorno[0];
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
        public void atualizaGridItensContrato()
        {
            WEBDID.Dados dados = new WEBDID.Dados();

            string controle = string.Empty;

            if (hdfContratosInfo.Get("CTRCONTROLEPORUO") == null)
            {
                controle = "0";
            }
            else
            {
                controle = hdfContratosInfo.Get("CTRCONTROLEPORUO").ToString();
            }

            System.Data.DataTable dt = dados.retornaItensByControlePorUO(controle, txtContrato.Text, Convert.ToInt32(txtDotacao.Text), cbbUndOrcamentaria.Value.ToString(), hdfDadosProcesso.Get("DID_ID").ToString());
            GRIDITENSCONTRATO.DataSource = dt;
            GRIDITENSCONTRATO.DataBind();
        }
        protected void ASPxCallback1_Callback(object source, DevExpress.Web.ASPxCallback.CallbackEventArgs e)
        {
            if (string.IsNullOrEmpty(hdfDadosProcesso.Get("DID_ID").ToString())) return;

            string idItem = e.Parameter;

            string sqlDel = "Delete from webitemdid where coditem = " + idItem + " and coddid = " + hdfDadosProcesso.Get("DID_ID").ToString();

            FbConnection conn = Persist.GetConn.getConn();

            FbCommand cmd = new FbCommand(sqlDel, conn);
            conn.Open();

            cmd.ExecuteNonQuery();

            conn.Close();

            WEBDID.Dados dados = new WEBDID.Dados();

            e.Result = "Item do DID excluído com Sucesso !!!";
        }
        public string GravaDID()
        {
            #region GravaCabecaDID

            WEBDID did = new WEBDID();
            WEBDID.Dados dados = new WEBDID.Dados();
            string[] retorno = new string[3];

            if (string.IsNullOrEmpty(txtProcessoID.Text))
            {
                txtProcessoID.Text = "0";
            }

            ConfigurationManager.AppSettings["PrefeituraUsaDotacao"].ToString().ToUpper();

            did.id = Convert.ToInt32(txtProcessoID.Text);
            did.contrato = txtContrato.Text;
            did.data = txtDataDID.Date.ToShortDateString().Replace("/", ".");
            did.historico = ASPxMemo1.Text;

            did.processoAquisicao = "Contrato: " + hdfContratosInfo.Get("NUMEROCONTRATO").ToString() + " - Licitação: " + hdfContratosInfo.Get("NUMEROLICITACAO").ToString();

            did.valor = Double.Parse(dxtxtValorDID.Text);
            did.idCentroCusto = int.Parse(cbbCentroCusto.Value.ToString());
            did.idModalidadeEmpenho = int.Parse(cbbModalidadeEmpenho.Value.ToString());
            did.idFornecedor = int.Parse(hfdDadosFornecedor.Get("PESCOD").ToString());
            did.idTipoAquisicao = hdfContratosInfo.Get("IDMODALIDADE").ToString();
            did.didUnidade = cbbUndOrcamentaria.Value.ToString().Substring(2, 2);
            did.didOrgao = cbbUndOrcamentaria.Value.ToString().Substring(0, 2);
            did.Dotacao = txtDotacao.Text;
            did.CTRCOD = txtContrato.Text;
            did.USUARIOENVIO = int.Parse(hdfInfoUsuario.Get("IDUSUARIO").ToString());
            did.USUARIODESTINO = int.Parse(hdfInfoUsuario.Get("IDUSUARIO").ToString());
            did.UNDFUNC_ENVIO = int.Parse(hdfInfoUsuario.Get("IDUNDFUNCIONAL").ToString());
            did.UNDFUNC_DESTINO = int.Parse(hdfInfoUsuario.Get("IDUNDFUNCIONAL").ToString());
            did.FONCOD = hdfDadosDotacao.Get("FONCOD").ToString();
            did.FONNOME = hdfDadosDotacao.Get("FONNOME").ToString();
            if (string.IsNullOrEmpty(txtProcessoID.Text))
            {
                did._NUMERO = string.Empty;
            }
            else
            {
                did._NUMERO = txtProcessoID.Text;
            }

            retorno = dados.gravaCabecaDID(did);

            #endregion

            #region Finaliza e Tramita DID CX Analise
            string retorno2 = string.Empty;

            var webdid = new WEBDID.Dados();

            retorno2 = webdid.gravaDID(retorno[1])[0];

            return retorno2;
            #endregion
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            string idUsu = "";
            string idUndFunc = "";
            string undOrc = "";
            float saldoDID = 0;

            if (HttpContext.Current.Session["pUId"] != null)
            {
                var usuarioCtrl = new UsuariosControle();
                var usuarioInfo = usuarioCtrl.getSessionUsuarioInfo();
                idUsu = usuarioInfo.Item2;
                idUndFunc = usuarioInfo.Item3;
                undOrc = usuarioInfo.Item4;

                if (!IsPostBack && !IsCallback)
                {
                    hdfDadosDotacao.Set("CONTROLASALDO", string.Empty);
                    hdfContratosInfo.Set("NUMEROCONTRATO", string.Empty);
                    hdfContratosInfo.Set("NUMEROLICITACAO", string.Empty);
                    hdfContratosInfo.Set("CONTROLESALDOITENS", string.Empty);
                    hdfReconhecimentoDivida.Set("RECONHECIMENTO", string.Empty);

                    odsUnidOrcamentaria.SelectParameters["IDUSU"].DefaultValue = idUsu;
                    odsUnidadeFuncional.SelectParameters["undFuncID"].DefaultValue = idUndFunc;

                    string undOrcOrgao = undOrc.ToString().Substring(0, 2);
                    string unidade = undOrc.ToString().Substring(2, 2);

                    hdfInfoUsuario.Set("IDUSUARIO", idUsu);
                    hdfInfoUsuario.Set("IDUNDFUNCIONAL", idUndFunc);

                    hdfContratosInfo.Set("CTRCOD", string.Empty);
                    hdfContratosInfo.Set("LICCOD", string.Empty);
                    hdfContratosInfo.Set("IDMODALIDADE", string.Empty);
                    hdfContratosInfo.Set("CTRCONTROLEPORUO", string.Empty);

                    if (Request.QueryString["op"].ToString() == "edt") {
                        if (Request.QueryString["id"] != null)
                        {
                            var did = new string[51];
                            var dadosDID = new WEBDID.Dados();
                            string idDID = Request.QueryString["id"].ToString();
                            var retornoDID = dadosDID.recuperaDadosDID(idDID);

                            did = retornoDID.Item2;

                            hdfDadosProcesso.Set("DID_ID", did[0].ToString());
                            txtProcessoID.Text = did[12].ToString();
                            txtContrato.Text = did[1].ToString();
                            txtDataDID.Date = DateTime.Parse(did[2].ToString());
                            ASPxMemo1.Text = did[3].ToString();
                            dxtxtValorDID.Text = did[5].ToString();

                            cbbModalidadeEmpenho.Value = did[7].ToString();
                            hfdDadosFornecedor.Set("PESCOD", did[17].ToString());
                            txtFornecedorNome.Text = did[15].ToString();

                            cbbUndOrcamentaria.Value = did[44].ToString();
                            txtDotacao.Text = did[32].ToString();

                            foreach (System.Data.DataRow dr in retornoDID.Item1.listOrigensRecurso.Rows)
                            {
                                hdfDadosDotacao.Set("FONCOD", dr["FONCOD"].ToString());
                                hdfDadosDotacao.Set("FONNOME", dr["FONNOME"].ToString());
                                hdfDadosDotacao.Set("CONTROLASALDO", dr["CONTROLASALDO"].ToString());
                                txtFonteRecursoCodigo.Text = dr["FONCOD"].ToString();
                                txtFonteRecursoNome.Text = dr["FONNOME"].ToString();
                            }

                            txtNatureza.Text = String.Format(@"{0:0\.0\.00\.00\.00}", Convert.ToInt64(did[35].ToString()));
                            txtNatDescricao.Text = did[36].ToString();
                            txtPA.Text = did[33].ToString();
                            txtProjAtiv.Text = did[34].ToString();

                            hdfInfoUsuario.Set("IDUSUARIO",idUsu);
                            hdfInfoUsuario.Set("IDUNDFUNCIONAL", idUndFunc);

                            txtContratoNumero.Text = did[49].ToString();
                            txtLicitacaoNumero.Text = did[48].ToString();
                            txtModalidade.Text = did[51].ToString();

                            hdfContratosInfo.Set("CTRCOD", did[1].ToString());
                            hdfContratosInfo.Set("LICCOD", did[50].ToString());
                            hdfContratosInfo.Set("IDMODALIDADE", did[9].ToString());
                            hdfContratosInfo.Set("CTRCONTROLEPORUO", did[52].ToString());
                            hdfContratosInfo.Set("NUMEROCONTRATO", did[49].ToString());
                            hdfContratosInfo.Set("NUMEROLICITACAO", did[48].ToString());

                            CarregaCentroCustos();
                            cbbCentroCusto.Value = did[6].ToString();
                            var evento = new ASPxGridViewCustomCallbackEventArgs("Refresh");
                            GRIDITENSINSERIDOS_CustomCallback(null, evento);

                            saldoDID = CarregaSaldoDID() + float.Parse(dxtxtValorDID.Value.ToString());
                            txtSaldo.Text = saldoDID.ToString();
                            Session[SessionTotalDID] = saldoDID;

                        }
                    }
                }

            }
            else
            {
                if (!IsCallback)
                {
                    GC.Collect();
                    GC.WaitForPendingFinalizers();
                    GC.Collect();
                    Response.Redirect("../Default1.aspx");
                }
                else
                {
                    GC.Collect();
                    GC.WaitForPendingFinalizers();
                    GC.Collect();
                    ASPxWebControl.RedirectOnCallback("../Default1.aspx");
                }
            }
        }
        protected void GRIDITENSINSERIDOS_CustomCallback(object sender, ASPxGridViewCustomCallbackEventArgs e)
        {
            WEBDID.Dados dados = new WEBDID.Dados();

            if (e.Parameters.ToString() != "Refresh")
            {
                DIDItem item = new DIDItem();

                item.codDID = Convert.ToInt32(hdfDadosProcesso.Get("DID_ID"));
                //item.codItem = Convert.ToInt32(txtCodItem.Text);
                item.codItem = Convert.ToInt32(hdfDadosItem.Get("codItem"));
                item.qtdeLicitada = float.Parse(qtdeLicitada.Text);
                item.qtdeUtilizada = 0;
                item.valorTotal = float.Parse(txtValorTotalItem.Text);
                item.valorUnitario = float.Parse(txtValorUnitarioItem.Text);
                item.qtde = float.Parse(txtITDQtde.Text);

                if (!string.IsNullOrEmpty(txtContrato.Text))
                {
                    item.CTRCOD = Convert.ToInt32(txtContrato.Text);
                }
                else {
                    item.CTRCOD = 0;
                }

                GRIDITENSINSERIDOS.DataSource = dados.gravaItensDID(item);
            }
            else {
                GRIDITENSINSERIDOS.DataSource = dados.getItensInseridos(hdfDadosProcesso.Get("DID_ID").ToString());
            }
            GRIDITENSINSERIDOS.DataBind();
        }
 protected void gridHistoricos_Init(object sender, EventArgs e)
 {
     if (!(cbbCentroCusto.Value == null) && !(cbbUndOrcamentaria.Value == null))
     {
         var ctrldid = new WEBDID.Dados();
         gridHistoricos.DataSource = ctrldid.getHistoricosByCentroCustosEUnidOrcamentaria(cbbCentroCusto.Value.ToString(), cbbUndOrcamentaria.Value.ToString());
         gridHistoricos.DataBind();
     }
 }