예제 #1
0
 public string GravarOrcamento(TRegistro_Orcamento val)
 {
     if (val == null)
     {
         return("Parametro com valor NULL");
     }
     BancoDados.TObjetoBanco banco = new BancoDados.TObjetoBanco();
     try
     {
         //TConexao.BuscarParametros();
         banco.CriarConexao("MASTER", "localhost", "ALIANCE_PRMUDANCA");
         banco.CriarComando();
         banco.Conexao.Open();
         banco.Start_Tran(System.Data.IsolationLevel.ReadUncommitted);
         banco.Comando.Transaction = banco.Transac;
         //Gravar mudanca
         val.Cd_empresa      = "0001";
         val.St_registro     = "0";//Orcamento
         val.Dt_orcamento    = DateTime.Now;
         val.Id_orcamentostr = CamadaDados.TDataQuery.getPubVariavel(new CamadaDados.Mudanca.TCD_Orcamento(banco).Gravar(val), "@P_ID_ORCAMENTO");
         //Gravar itens mudanca
         if (val.lItens != null)
         {
             val.lItens.ForEach(p =>
             {
                 p.Cd_empresa   = val.Cd_empresa;
                 p.Id_orcamento = val.Id_orcamento;
                 new CamadaDados.Mudanca.TCD_Orcamento_X_Itens(banco).Gravar(p);
             });
         }
         ////Gravar itens encaixotamento
         if (val.lEnc != null)
         {
             val.lEnc.ForEach(p =>
             {
                 p.Cd_empresa   = val.Cd_empresa;
                 p.Id_orcamento = val.Id_orcamento;
                 new CamadaDados.Mudanca.TCD_Encaixotamento(banco).Gravar(p);
             });
         }
         banco.Transac.Commit();
         return("Orçamento Gravado com Sucesso");
     }
     catch (Exception ex)
     {
         banco.Transac.Rollback();
         throw new Exception("Erro: " + ex.Message.Trim());
     }
     finally
     {
         if (banco.Conexao.State == System.Data.ConnectionState.Open)
         {
             banco.Conexao.Close();
         }
         banco = null;
     }
 }
예제 #2
0
        public static string Excluir(TRegistro_Orcamento val, BancoDados.TObjetoBanco banco)
        {
            bool             st_transacao = false;
            TCD_CadFatDireto qtb_orc      = new TCD_CadFatDireto();

            try
            {
                if (banco == null)
                {
                    st_transacao = qtb_orc.CriarBanco_Dados(true);
                }
                else
                {
                    qtb_orc.Banco_Dados = banco;
                }
                //Excluir despesas
                val.lDespesas.ForEach(p => TCN_Despesas.Excluir(p, qtb_orc.Banco_Dados));
                val.lDespesasDel.ForEach(p => TCN_Despesas.Excluir(p, qtb_orc.Banco_Dados));
                //Excluir Projetos
                val.lOrcProjeto.ForEach(p => TCN_OrcProjeto.Excluir(p, qtb_orc.Banco_Dados));
                val.lOrcProjetoDel.ForEach(p => TCN_OrcProjeto.Excluir(p, qtb_orc.Banco_Dados));
                //Excluir Orcamento
                // qtb_orc.Excluir(val);
                if (st_transacao)
                {
                    qtb_orc.Banco_Dados.Commit_Tran();
                }
                return("OK");
            }
            catch (Exception ex)
            {
                if (st_transacao)
                {
                    qtb_orc.Banco_Dados.RollBack_Tran();
                }
                throw new Exception("Erro excluir orçamento: " + ex.Message.Trim());
            }
            finally
            {
                if (st_transacao)
                {
                    qtb_orc.deletarBanco_Dados();
                }
            }
        }
예제 #3
0
        public static string Excluir(TRegistro_Orcamento val, BancoDados.TObjetoBanco banco)
        {
            bool          st_transacao = false;
            TCD_Orcamento qtb_orc      = new TCD_Orcamento();

            try
            {
                if (banco == null)
                {
                    st_transacao = qtb_orc.CriarBanco_Dados(true);
                }
                else
                {
                    qtb_orc.Banco_Dados = banco;
                }
                //Excluir itens
                val.lItens.ForEach(p => TCN_Orcamento_X_Itens.Excluir(p, qtb_orc.Banco_Dados));
                val.lItensDel.ForEach(p => TCN_Orcamento_X_Itens.Excluir(p, qtb_orc.Banco_Dados));
                //Excluir encaixotamento
                val.lEnc.ForEach(p => TCN_Encaixotamento.Excluir(p, qtb_orc.Banco_Dados));
                val.lEncDel.ForEach(p => TCN_Encaixotamento.Excluir(p, qtb_orc.Banco_Dados));
                qtb_orc.Excluir(val);
                if (st_transacao)
                {
                    qtb_orc.Banco_Dados.Commit_Tran();
                }
                return(val.Id_orcamentostr);
            }
            catch (Exception ex)
            {
                if (st_transacao)
                {
                    qtb_orc.Banco_Dados.RollBack_Tran();
                }
                throw new Exception("Erro excluir orçamento: " + ex.Message.Trim());
            }
            finally
            {
                if (st_transacao)
                {
                    qtb_orc.deletarBanco_Dados();
                }
            }
        }
예제 #4
0
        public static string Reprovar(TRegistro_Orcamento val, BancoDados.TObjetoBanco banco)
        {
            bool          st_transacao = false;
            TCD_Orcamento qtb_orc      = new TCD_Orcamento();

            try
            {
                if (banco == null)
                {
                    st_transacao = qtb_orc.CriarBanco_Dados(true);
                }
                else
                {
                    qtb_orc.Banco_Dados = banco;
                }
                //Reprovar Orçamento
                val.St_registro = "2";
                qtb_orc.Gravar(val);
                if (st_transacao)
                {
                    qtb_orc.Banco_Dados.Commit_Tran();
                }
                return(val.Id_orcamentostr);
            }
            catch (Exception ex)
            {
                if (st_transacao)
                {
                    qtb_orc.Banco_Dados.RollBack_Tran();
                }
                throw new Exception("Erro gravar orçamento: " + ex.Message.Trim());
            }
            finally
            {
                if (st_transacao)
                {
                    qtb_orc.deletarBanco_Dados();
                }
            }
        }
예제 #5
0
        public static CamadaDados.Faturamento.NotaFiscal.TRegistro_LanFaturamento ProcessarEmpreendimento(string tp_nota, string Cd_clifor,
                                                                                                          TRegistro_Orcamento rOrcamento, List <TRegistro_FichaTec> rFicha)
        {
            // TP_NOTA S SERVICO N NORMAL
            if (new TCD_CadCFGEmpreendimento().BuscarEscalar(
                    new TpBusca[]
            {
                new TpBusca()
                {
                    vNM_Campo = "a.cd_empresa",
                    vOperador = "=",
                    vVL_Busca = "'" + rOrcamento.Cd_empresa.Trim() + "'"
                }
            }, "a.cfg_remessa", string.Empty, string.Empty, null) == null)
            {
                throw new Exception("Não existe configuração para emitir NF peças para a empresa " + rOrcamento.Cd_empresa.Trim());
            }
            //Buscar configuracao fiscal do pedido
            CamadaDados.Faturamento.Cadastros.TList_CadCFGPedidoFiscal lCfgPed = new CamadaDados.Faturamento.Cadastros.TList_CadCFGPedidoFiscal();
            if (tp_nota.Equals("N"))
            {
                lCfgPed = new CamadaDados.Faturamento.Cadastros.TCD_CadCFGPedidoFiscal().Select(
                    new TpBusca[]
                {
                    new TpBusca()
                    {
                        vNM_Campo = string.Empty,
                        vOperador = "exists",
                        vVL_Busca = "(select 1 from TB_EMP_CFGEmpreendimento x " +
                                    "where a.cfg_pedido = x.cfg_remessa " +
                                    "and x.cd_empresa = '" + rOrcamento.Cd_empresa.Trim() + "')"
                    },
                    new TpBusca()
                    {
                        vNM_Campo = "a.tp_fiscal",
                        vOperador = "=",
                        vVL_Busca = "'NO'"
                    }
                }, 1, string.Empty);
            }
            if (tp_nota.Equals("S"))
            {
                lCfgPed = new CamadaDados.Faturamento.Cadastros.TCD_CadCFGPedidoFiscal().Select(
                    new TpBusca[]
                {
                    new TpBusca()
                    {
                        vNM_Campo = string.Empty,
                        vOperador = "exists",
                        vVL_Busca = "(select 1 from TB_EMP_CFGEmpreendimento x " +
                                    "where a.cfg_pedido = x.cfg_servico " +
                                    "and x.cd_empresa = '" + rOrcamento.Cd_empresa.Trim() + "')"
                    },
                    new TpBusca()
                    {
                        vNM_Campo = "a.tp_fiscal",
                        vOperador = "=",
                        vVL_Busca = "'SE'"
                    }
                }, 1, string.Empty);
            }

            if (lCfgPed.Count.Equals(0))
            {
                throw new Exception("Não existe configuração fiscal do pedido para o tipo pedido!");
            }
            //Objeto Nota Fiscal
            CamadaDados.Faturamento.NotaFiscal.TRegistro_LanFaturamento rNf = new CamadaDados.Faturamento.NotaFiscal.TRegistro_LanFaturamento();
            //Buscar registro empresa
            CamadaDados.Diversos.TRegistro_CadEmpresa rEmpresa =
                CamadaNegocio.Diversos.TCN_CadEmpresa.Busca(rOrcamento.Cd_empresa, string.Empty, string.Empty, null)[0];
            rNf.Cd_empresa    = rEmpresa.Cd_empresa;
            rNf.Cd_uf_empresa = rEmpresa.rEndereco.Cd_uf;
            rNf.Uf_empresa    = rEmpresa.rEndereco.UF;
            //Buscar registro clifor
            CamadaDados.Financeiro.Cadastros.TRegistro_CadClifor rCliente =
                CamadaNegocio.Financeiro.Cadastros.TCN_CadClifor.Busca_Clifor_Codigo(Cd_clifor, null);
            rNf.Cd_clifor            = rCliente.Cd_clifor;
            rNf.Cd_condfiscal_clifor = rCliente.Cd_condfiscal_clifor;
            //Buscar endereco cliente
            CamadaDados.Financeiro.Cadastros.TRegistro_CadEndereco rEndereco =
                CamadaNegocio.Financeiro.Cadastros.TCN_CadEndereco.Buscar(Cd_clifor,
                                                                          string.Empty,
                                                                          string.Empty,
                                                                          string.Empty,
                                                                          string.Empty,
                                                                          string.Empty,
                                                                          string.Empty,
                                                                          string.Empty,
                                                                          string.Empty,
                                                                          string.Empty,
                                                                          string.Empty,
                                                                          string.Empty,
                                                                          string.Empty,
                                                                          string.Empty,
                                                                          1,
                                                                          null)[0];
            rNf.Cd_endereco      = rEndereco.Cd_endereco;
            rNf.Cd_uf_clifor     = rEndereco.Cd_uf;
            rNf.Uf_clifor        = rEndereco.UF;
            rNf.Cd_cmi           = lCfgPed[0].Cd_cmi;
            rNf.Cd_movimentacao  = lCfgPed[0].Cd_movto;
            rNf.lCFGFiscal       = lCfgPed;
            rNf.Tp_duplicata     = lCfgPed[0].Tp_duplicata;
            rNf.Ds_tpduplicata   = lCfgPed[0].Ds_tpduplicata;
            rNf.Cd_condpgto      = lCfgPed[0].CD_CondPgto;
            rNf.Tp_movimento     = "S";
            rNf.Tp_pessoa        = rCliente.Tp_pessoa;
            rNf.Tp_nota          = (rNf.Tp_pessoa.Trim().ToUpper().Equals("J") && rNf.Tp_movimento.Trim().ToUpper().Equals("E") ? "T" : "P");
            rNf.Nr_serie         = lCfgPed[0].Nr_serie;
            rNf.Cd_modelo        = lCfgPed[0].Cd_modelo;
            rNf.St_sequenciaauto = lCfgPed[0].ST_SequenciaAuto.Trim().ToUpper().Equals("S");
            rNf.Dt_emissao       = CamadaDados.UtilData.Data_Servidor();
            rNf.Dt_saient        = rNf.Dt_emissao;
            rNf.Dadosadicionais  = ProcessaAplicacao.BuscarObsMov("D",
                                                                  rNf.Cd_movimentacaostring,
                                                                  rEndereco.UF.Trim().Equals(rEmpresa.rEndereco.UF.Trim()));
            rNf.Obsfiscal = ProcessaAplicacao.BuscarObsMov("F",
                                                           rNf.Cd_movimentacaostring,
                                                           rEndereco.UF.Trim().Equals(rEmpresa.rEndereco.UF.Trim()));
            //Abrir tela para capturar dados da nota fiscal
            using (NumeroNota.TFNumero_Nota fNumero = new NumeroNota.TFNumero_Nota())
            {
                fNumero.pCd_empresa              = rNf.Cd_empresa;
                fNumero.pNm_empresa              = rNf.Nm_empresa;
                fNumero.pCd_clifor               = rNf.Cd_clifor;
                fNumero.pNm_clifor               = rNf.Nm_clifor;
                fNumero.pTp_pessoa               = rNf.Tp_pessoa;
                fNumero.pTp_movimento            = rNf.Tp_movimento;
                fNumero.pCd_municipioexecservico = rOrcamento.Cd_cidadeemp;
                fNumero.pNm_municipioexecservico = rOrcamento.Ds_cidadeemp;
                fNumero.pTp_nota          = rNf.Tp_nota;
                fNumero.pChave_Acesso_NFe = rNf.Chave_acesso_nfe;
                fNumero.pNr_serie         = rNf.Nr_serie;
                fNumero.pDs_serie         = rNf.Ds_serienf;
                fNumero.pCd_modelo        = rNf.Cd_modelo;
                fNumero.pDt_emissao       = rNf.Dt_emissao;
                fNumero.pST_NotaUnica     = false;
                fNumero.pNr_notafiscal    = rNf.Nr_notafiscal.HasValue ? rNf.Nr_notafiscal.Value.ToString() : string.Empty;
                fNumero.pDt_saient        = rNf.Dt_saient;
                fNumero.pDs_dadosadic     = rNf.Dadosadicionais;
                fNumero.pDs_obsfiscal     = rNf.Obsfiscal;
                fNumero.pSt_sequenciaauto = rNf.St_sequenciaauto;
                fNumero.pCd_movto         = rNf.Cd_movimentacaostring;
                fNumero.pCd_cmi           = rNf.Cd_cmistring;
                if (rNf.Tp_nota.Trim().ToUpper().Equals("T"))
                {
                    fNumero.pInsc_estadual = rEndereco.Insc_estadual;
                }
                if (fNumero.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                {
                    rNf.Chave_acesso_nfe = fNumero.pChave_Acesso_NFe;
                    if (!string.IsNullOrEmpty(fNumero.pNr_notafiscal))
                    {
                        rNf.Nr_notafiscal = decimal.Parse(fNumero.pNr_notafiscal);
                    }
                    else
                    {
                        rNf.Nr_notafiscal = null;
                    }
                    rNf.Nr_serie             = fNumero.pNr_serie;
                    rNf.Cd_modelo            = fNumero.pCd_modelo;
                    rNf.Dt_emissao           = fNumero.pDt_emissao;
                    rNf.Dt_saient            = fNumero.pDt_saient;
                    rNf.Obsfiscal            = fNumero.pDs_obsfiscal;
                    rNf.Dadosadicionais      = fNumero.pDs_dadosadic;
                    rNf.Cd_transportadora    = fNumero.pCd_transportadora;
                    rNf.Nm_razaosocialtransp = fNumero.pNm_transportadora;
                    rNf.Cpf_transp           = fNumero.pCnpjCpfTransp;
                    rNf.Placaveiculo         = fNumero.pPlacaVeiculo;
                    rNf.Tp_frete             = fNumero.pTp_frete;
                    rNf.Especie     = fNumero.pEspecie;
                    rNf.Quantidade  = fNumero.pQuantidade;
                    rNf.Pesobruto   = fNumero.pPsbruto;
                    rNf.Pesoliquido = fNumero.pPsliquido;
                    rNf.Vl_frete    = fNumero.pVl_frete;

                    CamadaDados.Fiscal.TRegistro_CadCMI rCmi =
                        CamadaNegocio.Fiscal.TCN_CadCMI.Busca(fNumero.pCd_cmi,
                                                              string.Empty,
                                                              string.Empty,
                                                              string.Empty,
                                                              string.Empty,
                                                              string.Empty,
                                                              false,
                                                              false,
                                                              false,
                                                              false,
                                                              false,
                                                              false,
                                                              false,
                                                              null)[0];
                    rNf.Cminf.Add(new CamadaDados.Faturamento.NotaFiscal.TRegistro_LanFaturamento_CMI()
                    {
                        St_compdevimposto = rCmi.St_compdevimposto,
                        St_complementar   = rCmi.St_complementar,
                        St_devolucao      = rCmi.St_devolucao,
                        St_geraestoque    = rCmi.St_geraestoque,
                        St_mestra         = rCmi.St_mestra,
                        St_simplesremessa = rCmi.St_simplesremessa,
                        St_retorno        = rCmi.St_retorno
                    });
                    rNf.Cd_cmistring   = fNumero.pCd_cmi;
                    rNf.Ds_cmi         = rCmi.Ds_cmi;
                    rNf.Tp_duplicata   = rCmi.Tp_duplicata;
                    rNf.Ds_tpduplicata = rCmi.ds_tpduplicata;
                }
                else
                {
                    throw new Exception("Obrigatorio informar numero da nota fiscal.");
                }
            }
            if (rNf.Nr_notafiscal.HasValue)
            {
                CamadaDados.Faturamento.NotaFiscal.TRegistro_LanFaturamento rFat =
                    CamadaNegocio.Faturamento.NotaFiscal.TCN_LanFaturamento.existeNumeroNota(rNf.Nr_notafiscal.ToString(),
                                                                                             rNf.Nr_serie,
                                                                                             rNf.Cd_empresa,
                                                                                             rNf.Cd_clifor,
                                                                                             string.Empty,
                                                                                             rNf.Tp_nota,
                                                                                             null);
                if (rFat != null)
                {
                    if (rFat.St_registro.Trim().ToUpper().Equals("C"))
                    {
                        throw new Exception("Nota Fiscal Nº " + rFat.Nr_notafiscal.ToString() + " ja existe no sistema e se encontra cancelada.\r\n" +
                                            "Para poder utilizar o mesmo numero e necessario excluir a nota fiscal cancelada.\r\n" +
                                            "Dica: Menu FATURAMENTO->Emissão de Notas Fiscais / NFe, localize a nota fiscal cancelada e exclua a mesma.\r\n" +
                                            "Obs.: Para excluir a nota fiscal cancelada é necessario que o usuario tenha permissão.");
                    }
                    else
                    {
                        throw new Exception("Nota Fiscal Nº " + rFat.Nr_notafiscal.ToString() + " ja existe no sistema e se encontra ativa.\r\n" +
                                            "Não é permitido gerar nota fiscal com mesmo numero.");
                    }
                }
            }
            //Itens da Nota

            rFicha.ForEach(item =>
            {
                CamadaDados.Faturamento.NotaFiscal.TRegistro_LanFaturamento_Item rItem = new CamadaDados.Faturamento.NotaFiscal.TRegistro_LanFaturamento_Item();

                rItem.Cd_empresa = item.Cd_empresa;

                rItem.Cd_produto = item.Cd_produto;
                //pega cd condfiscal do produto
                object cd_cfiscal = new CamadaDados.Estoque.Cadastros.TCD_CadProduto().BuscarEscalar(new TpBusca[] {
                    new TpBusca()
                    {
                        vNM_Campo = "a.cd_produto",
                        vOperador = "=",
                        vVL_Busca = item.Cd_produto
                    }
                }, "d.cd_condfiscal_produto");

                TList_CadCFGEmpreendimento cfg = TCN_CadCFGEmpreendimento.Busca(item.Cd_empresa, string.Empty, null);

                object ncmm = new CamadaDados.Estoque.Cadastros.TCD_CadProduto().BuscarEscalar(
                    new TpBusca[]
                {
                    new TpBusca()
                    {
                        vNM_Campo = "a.cd_produto",
                        vOperador = "=",
                        vVL_Busca = "'" + item.Cd_produto.Trim() + "'"
                    }
                }, "isnull(a.ncm, 0)");
                if (ncmm != null)
                {
                    if (!string.IsNullOrEmpty(ncmm.ToString()))
                    {
                        object obj_imp = new CamadaDados.Fiscal.TCD_CadNCM().BuscarEscalar(
                            new TpBusca[]
                        {
                            new TpBusca()
                            {
                                vNM_Campo = "a.ncm",
                                vOperador = "=",
                                vVL_Busca = "'" + ncmm.ToString().Trim() + "'"
                            }
                        }, "isnull(a.Pc_Aliquota, 0)");
                        if (obj_imp != null)
                        {
                            if (!string.IsNullOrEmpty(obj_imp.ToString()))
                            {
                                rItem.Pc_imposto_Aprox = Convert.ToDecimal(obj_imp.ToString());
                            }
                        }
                    }
                }

                //buscar cdunidade
                rItem.Cd_condfiscal_produto = cd_cfiscal != null ?cd_cfiscal.ToString() : string.Empty;
                rItem.Cd_unidade            = item.Cd_unidade;
                rItem.Cd_local            = cfg[0].cd_local;
                rItem.Cd_unidEst          = item.Cd_unidade;
                rItem.Quantidade          = item.quantidade_agregar;
                rItem.Quantidade_estoque  = item.quantidade_agregar;
                rItem.Vl_subtotal         = item.quantidade_agregar * item.Vl_unitario;
                rItem.Vl_subtotal_estoque = item.quantidade_agregar * item.Vl_unitario;
                rItem.Vl_unitario         = item.Vl_unitario;

                //Buscar cfop do item
                CamadaDados.Fiscal.TRegistro_CadCFOP rCfop = null;
                bool st_dentroestado = rEndereco.Cd_uf.Trim().Equals(rEmpresa.rEndereco.Cd_uf.Trim());
                if (CamadaNegocio.Fiscal.TCN_Mov_X_CFOP.BuscarCFOP(rNf.Cd_movimentacaostring,
                                                                   rItem.Cd_condfiscal_produto,
                                                                   rEndereco.Cd_uf.Trim().Equals("99") ? "I" :
                                                                   rEndereco.Cd_uf.Trim().Equals(rEmpresa.rEndereco.Cd_uf.Trim()) ? "D" : "F",
                                                                   (rNf.Tp_movimento.Trim().ToUpper().Equals("E") ? rNf.Cd_uf_clifor : rNf.Cd_uf_empresa),
                                                                   (rNf.Tp_movimento.Trim().ToUpper().Equals("E") ? rNf.Cd_uf_empresa : rNf.Cd_uf_clifor),
                                                                   rNf.Tp_movimento,
                                                                   rNf.Cd_condfiscal_clifor,
                                                                   rNf.Cd_empresa,
                                                                   ref rCfop,
                                                                   null))
                {
                    rItem.Cd_cfop        = rCfop.CD_CFOP;
                    rItem.Ds_cfop        = rCfop.DS_CFOP;
                    rItem.St_bonificacao = rCfop.St_bonificacaobool;
                }
                else
                {
                    throw new Exception("Não existe CFOP " + (rEndereco.Cd_uf.Trim().Equals("99") ? "internacional" : rEndereco.Cd_uf.Trim().Equals(rEmpresa.rEndereco.Cd_uf.Trim()) ? "dentro estado" : "fora estado") + " configurado para a Movimentação " + rNf.Cd_movimentacaostring + " condição fiscal do produto ");    //+ item.Cd_condfiscal_produto
                }
                //Procurar Impostos Estaduais para o Item
                string vObsFiscal = string.Empty;
                CamadaDados.Faturamento.NotaFiscal.TList_ImpostosNF lImpUf =
                    CamadaNegocio.Faturamento.NotaFiscal.TCN_LanFaturamento_Item.procuraImpostosPorUf(rNf.Cd_empresa,
                                                                                                      (rNf.Tp_movimento.Trim().ToUpper().Equals("E") ? rNf.Cd_uf_clifor : rNf.Cd_uf_empresa),
                                                                                                      (rNf.Tp_movimento.Trim().ToUpper().Equals("E") ? rNf.Cd_uf_empresa : rNf.Cd_uf_clifor),
                                                                                                      rNf.Cd_movimentacaostring,
                                                                                                      rNf.Tp_movimento,
                                                                                                      rNf.Cd_condfiscal_clifor,
                                                                                                      rItem.Cd_condfiscal_produto,
                                                                                                      rItem.Vl_subtotal,
                                                                                                      rItem.Quantidade,
                                                                                                      ref vObsFiscal,
                                                                                                      rNf.Dt_emissao,
                                                                                                      rItem.Cd_produto,
                                                                                                      rNf.Tp_nota,
                                                                                                      rNf.Nr_serie,
                                                                                                      null);
                if (lImpUf.Exists(v => v.Imposto.St_ICMS))
                {
                    CamadaNegocio.Faturamento.NotaFiscal.TCN_LanFaturamento_Item.PreencherICMS(lImpUf.Find(v => v.Imposto.St_ICMS), rItem);
                    rNf.Obsfiscal += vObsFiscal.Trim();
                }
                else if (CamadaNegocio.Faturamento.NotaFiscal.TCN_LanFaturamento_Item.ObrigImformarICMS(rItem.Cd_produto, rNf.Nr_serie, null))
                {
                    throw new Exception("Erro: Não existe condição fiscal do ICMS.\r\n" +
                                        "Tipo Movimento: " + rNf.Tipo_movimento.Trim() + "\r\n" +
                                        "Movimentação: " + rNf.Cd_movimentacao.ToString() + "\r\n" +
                                        "Cond. Fiscal Clifor: " + rNf.Cd_condfiscal_clifor.Trim() + "\r\n" +
                                        "Cond. Fiscal Produto: " + rItem.Cd_condfiscal_produto.Trim() + "\r\n" +
                                        "UF Origem: " + (rNf.Tp_movimento.Trim().ToUpper().Equals("E") ? rNf.Uf_clifor.Trim() : rNf.Uf_empresa.Trim()) + "\r\n" +
                                        "UF Destino: " + (rNf.Tp_movimento.Trim().ToUpper().Equals("E") ? rNf.Uf_empresa.Trim() : rNf.Uf_clifor.Trim()));
                }

                //Procurar impostos sobre os itens da nota fiscal de destino
                CamadaNegocio.Faturamento.NotaFiscal.TCN_LanFaturamento_Item.PreencherOutrosImpostos(
                    CamadaNegocio.Faturamento.NotaFiscal.TCN_LanFaturamento_Item.procuraCondicaoFiscalImpostos(rNf.Cd_condfiscal_clifor,
                                                                                                               rItem.Cd_condfiscal_produto,
                                                                                                               rNf.Cd_movimentacaostring,
                                                                                                               rNf.Tp_movimento,
                                                                                                               rNf.Tp_pessoa,
                                                                                                               rNf.Cd_empresa,
                                                                                                               rNf.Nr_serie,
                                                                                                               rNf.Cd_clifor,
                                                                                                               rItem.Cd_unidEst,
                                                                                                               rNf.Dt_emissao,
                                                                                                               rItem.Quantidade,
                                                                                                               rItem.Vl_subtotal,
                                                                                                               rNf.Tp_nota,
                                                                                                               rNf.Cd_municipioexecservico,
                                                                                                               null), rItem, rNf.Tp_movimento);
                rItem.rItemFichaTec = item;
                rNf.ItensNota.Add(rItem);
            });
            return(rNf);
        }
예제 #6
0
        public static string GravarDireto(TRegistro_Orcamento orcamento, TList_FichaTec litens, BancoDados.TObjetoBanco banco)
        {
            bool st_transacao = false;
            TCD_CompraEmpreendimento qtb_orc = new TCD_CompraEmpreendimento();

            try
            {
                if (banco == null)
                {
                    st_transacao = qtb_orc.CriarBanco_Dados(true);
                }
                else
                {
                    qtb_orc.Banco_Dados = banco;
                }

                TList_CadCFGEmpreendimento lCfg = TCN_CadCFGEmpreendimento.Busca(string.Empty, string.Empty, qtb_orc.Banco_Dados);
                if (lCfg.Count.Equals(0))
                {
                    throw new Exception("Não existe cadastro CFG.Empreendimento.");
                }

                TList_FichaTec itensDireto = new TList_FichaTec();
                if (litens == null)
                {
                    orcamento.lOrcProjeto.ForEach(o =>
                    {
                        o.lFicha.ForEach(p =>
                        {
                            if (p.St_fatdiretobool)
                            {
                                itensDireto.Add(p);
                            }
                        });
                    });
                }
                else
                {
                    litens.ForEach(p =>
                    {
                        itensDireto.Add(p);
                    });
                }

                string ret = string.Empty;
                itensDireto.ForEach(p =>
                {
                    CamadaDados.Compra.Lancamento.TRegistro_Requisicao req = new CamadaDados.Compra.Lancamento.TRegistro_Requisicao();
                    req.Cd_empresa = orcamento.Cd_empresa;
                    req.Cd_produto = p.Cd_produto;
                    req.Ds_produto = p.Ds_produto;
                    req.Quantidade = p.quantidade_agregar == decimal.Zero? p.Quantidade : p.quantidade_agregar;
                    CamadaDados.Financeiro.Cadastros.TList_CadClifor lclifor = new CamadaDados.Financeiro.Cadastros.TCD_CadClifor().Select(
                        new Utils.TpBusca[]
                    {
                        new Utils.TpBusca()
                        {
                            vNM_Campo = "isnull(a.st_registro, 'A')",
                            vOperador = "<>",
                            vVL_Busca = "'C'"
                        },
                        new Utils.TpBusca()
                        {
                            vNM_Campo = string.Empty,
                            vOperador = "exists",
                            vVL_Busca = "(select 1 from tb_cmp_usuariocompra x " +
                                        "where x.cd_clifor_cmp = a.cd_clifor " +
                                        "and isnull(x.st_requisitar, 'N') = 'S' " +
                                        "and x.login = '******')"
                        }
                    }, 0, string.Empty);
                    if (lclifor.Count > 0)
                    {
                        req.Cd_clifor_comprador    = lclifor[0].Cd_clifor;
                        req.Cd_clifor_requisitante = lclifor[0].Cd_clifor;
                    }

                    req.St_requisicao      = "AC";
                    req.Id_tprequisicaostr = p.St_fatdiretobool ? lCfg[0].tp_requisicaodir: lCfg[0].tp_requisicao;
                    //GRAVAR
                    req.Id_requisicao = Convert.ToDecimal(CamadaDados.TDataQuery.getPubVariavel(
                                                              CamadaNegocio.Compra.Lancamento.TCN_Requisicao.GravarRequisicao(req, qtb_orc.Banco_Dados), "@P_ID_REQUISICAO"));

                    TRegistro_CompraEmpreendimento val = new TRegistro_CompraEmpreendimento();
                    val.Id_orcamentostr = p.Id_orcamentostr;
                    val.Id_registrostr  = p.Id_registrostr;
                    val.Id_requisicao   = req.Id_requisicao;
                    val.Nr_versao       = p.Nr_versao;
                    val.Id_ficha        = p.Id_ficha;
                    val.id_atividade    = p.Id_projetostr;
                    val.Cd_empresa      = p.Cd_empresa;
                    ret = qtb_orc.Gravar(val);
                    val.Id_requisicao = Convert.ToDecimal(CamadaDados.TDataQuery.getPubVariavel(ret, "@P_ID_REQUISICAO"));
                });


                //string ret = qtb_orc.Gravar(val);

                if (st_transacao)
                {
                    qtb_orc.Banco_Dados.Commit_Tran();
                }
                return(ret);
            }
            catch (Exception ex)
            {
                if (st_transacao)
                {
                    qtb_orc.Banco_Dados.RollBack_Tran();
                }
                throw new Exception("Erro gravar requisicao: " + ex.Message.Trim());
            }
            finally
            {
                if (st_transacao)
                {
                    qtb_orc.deletarBanco_Dados();
                }
            }
        }
예제 #7
0
        public static string Gravar(TRegistro_Orcamento val, BancoDados.TObjetoBanco banco)
        {
            bool          st_transacao = false;
            TCD_Orcamento qtb_orc      = new TCD_Orcamento();

            try
            {
                if (banco == null)
                {
                    st_transacao = qtb_orc.CriarBanco_Dados(true);
                }
                else
                {
                    qtb_orc.Banco_Dados = banco;
                }
                val.Id_orcamentostr = CamadaDados.TDataQuery.getPubVariavel(qtb_orc.Gravar(val), "@P_ID_ORCAMENTO");
                //Excluir itens
                if (val.lItensDel != null)
                {
                    val.lItensDel.ForEach(p => TCN_Orcamento_X_Itens.Excluir(p, qtb_orc.Banco_Dados));
                }
                //Gravar itens
                if (val.lItens != null)
                {
                    val.lItens.ForEach(p =>
                    {
                        p.Cd_empresa   = val.Cd_empresa;
                        p.Id_orcamento = val.Id_orcamento;
                        TCN_Orcamento_X_Itens.Gravar(p, qtb_orc.Banco_Dados);
                    });
                }
                //Excluir encaixotamento
                if (val.lEncDel != null)
                {
                    val.lEncDel.ForEach(p => TCN_Encaixotamento.Excluir(p, qtb_orc.Banco_Dados));
                }
                //Gravar encaixotamento
                if (val.lEnc != null)
                {
                    val.lEnc.ForEach(p =>
                    {
                        p.Cd_empresa   = val.Cd_empresa;
                        p.Id_orcamento = val.Id_orcamento;
                        TCN_Encaixotamento.Gravar(p, qtb_orc.Banco_Dados);
                    });
                }

                if (val.lSerDel != null)
                {
                    val.lSerDel.ForEach(p => TCN_ServicoOrc.Excluir(p, qtb_orc.Banco_Dados));
                }

                if (val.lSer != null)
                {
                    val.lSer.ForEach(p =>
                    {
                        p.Cd_empresa   = val.Cd_empresa;
                        p.Id_orcamento = val.Id_orcamento;
                        TCN_ServicoOrc.Gravar(p, qtb_orc.Banco_Dados);
                    });
                }

                if (st_transacao)
                {
                    qtb_orc.Banco_Dados.Commit_Tran();
                }
                return(val.Id_orcamentostr);
            }
            catch (Exception ex)
            {
                if (st_transacao)
                {
                    qtb_orc.Banco_Dados.RollBack_Tran();
                }
                throw new Exception("Erro gravar orçamento: " + ex.Message.Trim());
            }
            finally
            {
                if (st_transacao)
                {
                    qtb_orc.deletarBanco_Dados();
                }
            }
        }
예제 #8
0
        private void toolStripLabel1_Click(object sender, EventArgs e)
        {
            if (bsOrcamento.Current == null)
            {
                return;
            }

            using (FRequisicaoCompra comp = new FRequisicaoCompra())
            {//Buscar Atividades
                TRegistro_Orcamento orc = new TRegistro_Orcamento();
                orc             = (bsOrcamento.Current as TRegistro_Orcamento);
                orc.lOrcProjeto =
                    TCN_OrcProjeto.Buscar((bsOrcamento.Current as TRegistro_Orcamento).Cd_empresa,
                                          (bsOrcamento.Current as TRegistro_Orcamento).Id_orcamentostr,
                                          (bsOrcamento.Current as TRegistro_Orcamento).Nr_versaostr,
                                          string.Empty,
                                          string.Empty,
                                          null);
                orc.lOrcProjeto.ForEach(p =>
                {
                    TpBusca[] filtro = new TpBusca[0];
                    if (!string.IsNullOrEmpty(p.Cd_empresa))
                    {
                        Array.Resize(ref filtro, filtro.Length + 1);
                        filtro[filtro.Length - 1].vNM_Campo = "a.cd_empresa";
                        filtro[filtro.Length - 1].vOperador = "=";
                        filtro[filtro.Length - 1].vVL_Busca = "'" + p.Cd_empresa.Trim() + "'";
                    }
                    if (!string.IsNullOrEmpty(p.Id_orcamentostr))
                    {
                        Array.Resize(ref filtro, filtro.Length + 1);
                        filtro[filtro.Length - 1].vNM_Campo = "a.id_orcamento";
                        filtro[filtro.Length - 1].vOperador = "=";
                        filtro[filtro.Length - 1].vVL_Busca = p.Id_orcamentostr;
                    }
                    if (!string.IsNullOrEmpty(p.Nr_versaostr))
                    {
                        Array.Resize(ref filtro, filtro.Length + 1);
                        filtro[filtro.Length - 1].vNM_Campo = "a.nr_versao";
                        filtro[filtro.Length - 1].vOperador = "=";
                        filtro[filtro.Length - 1].vVL_Busca = p.Nr_versaostr;
                    }
                    if (!string.IsNullOrEmpty(p.Id_projetostr))
                    {
                        Array.Resize(ref filtro, filtro.Length + 1);
                        filtro[filtro.Length - 1].vNM_Campo = "a.id_atividade";
                        filtro[filtro.Length - 1].vOperador = "=";
                        filtro[filtro.Length - 1].vVL_Busca = p.Id_projetostr;
                    }
                    if (!string.IsNullOrEmpty(p.Id_registrostr))
                    {
                        Array.Resize(ref filtro, filtro.Length + 1);
                        filtro[filtro.Length - 1].vNM_Campo = "a.Id_Registro";
                        filtro[filtro.Length - 1].vOperador = "=";
                        filtro[filtro.Length - 1].vVL_Busca = p.Id_registrostr;
                    }

                    Array.Resize(ref filtro, filtro.Length + 1);
                    filtro[filtro.Length - 1].vOperador = "not exists ";
                    filtro[filtro.Length - 1].vVL_Busca = " (select 1 from TB_EMP_CompraEmpreendimento x " +
                                                          "where a.id_orcamento = x.id_orcamento and a.nr_versao = x.nr_versao " +
                                                          "and a.ID_Atividade = x.ID_Atividade and a.ID_Ficha = x.ID_Ficha " +
                                                          "and a.ID_Registro = x.ID_Registro and a.cd_empresa = x.cd_empresa) ";



                    p.lFicha = new TCD_FichaTec().Select(filtro, 0, string.Empty);
                });
                comp.rOrcamento = orc;
                if (comp.ShowDialog() == DialogResult.OK)
                {
                    TList_FichaTec lficha = new TList_FichaTec();
                    lficha = comp.objetoItens.lFicha;
                    //(bsOrcamento.Current as TRegistro_Orcamento).St_registro = "E";
                    TList_FichaTec lficha2 = new TList_FichaTec();
                    lficha.ForEach(p =>
                    {
                        if (p.st_agregar)
                        {
                            lficha2.Add(p);
                        }
                    });

                    try
                    {
                        TCN_Orcamento.GravarOrcReq((bsOrcamento.Current as TRegistro_Orcamento), lficha2, null);
                        MessageBox.Show("Requisição de compra gravada com sucesso.", "Informativo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        LimparFiltros();
                        afterBusca();
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.Message, "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                }
            }
        }
예제 #9
0
        private void toolStripButton3_Click(object sender, EventArgs e)
        {
            if ((bsOrcamento.Current) != null)
            {
                if ((bsOrcamento.Current as TRegistro_Orcamento).St_registro.Equals("T"))
                {
                    if (CamadaNegocio.Diversos.TCN_Usuario_RegraEspecial.ValidaRegra(Parametros.pubLogin, "VISAO PROJETISTA", null))
                    {
                        if (MessageBox.Show("Orcamento está em " + (bsOrcamento.Current as TRegistro_Orcamento).Status + ", Deseja finalizar o projeto e evoluir para execução?", "Pergunta", MessageBoxButtons.YesNo, MessageBoxIcon.Question,
                                            MessageBoxDefaultButton.Button1) == DialogResult.Yes)
                        {
                            try
                            {
                                bsOrcamento_PositionChanged(this, new EventArgs());
                                TList_FichaTec lficha = new TList_FichaTec();

                                //valida
                                TList_CadCFGEmpreendimento lcfg = new TCD_CadCFGEmpreendimento().Select(
                                    new TpBusca[]
                                {
                                    new TpBusca()
                                    {
                                        vNM_Campo = "a.cd_empresa",
                                        vOperador = "=",
                                        vVL_Busca = (bsOrcamento.Current as TRegistro_Orcamento).Cd_empresa
                                    }
                                }, 1, string.Empty);
                                if (string.IsNullOrEmpty(lcfg[0].tp_requisicao) || string.IsNullOrEmpty(lcfg[0].tp_requisicaodir))
                                {
                                    MessageBox.Show("Favor corrigir a configuração do empreendimento!\n (Tipo Requisição)", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
                                    return;
                                }
                                (bsOrcamento.Current as TRegistro_Orcamento).lOrcProjeto.ForEach(o =>
                                {
                                    o.lFicha.ForEach(p =>
                                    {
                                        if (p.Tot_saldo < p.Quantidade)
                                        {
                                            p.st_agregar         = true;
                                            p.quantidade_agregar = p.Quantidade;
                                        }
                                    });
                                });

                                TList_FichaTec lista_nao_cadastrados = new TList_FichaTec();
                                bool           lista = false;
                                (bsOrcamento.Current as TRegistro_Orcamento).lOrcProjeto.ForEach(o =>
                                {
                                    o.lFicha.ForEach(p =>
                                    {
                                        if (string.IsNullOrEmpty(p.Cd_produto))
                                        {
                                            lista_nao_cadastrados.Add(p);
                                            lista = true;
                                        }
                                    });
                                });

                                if (lista)
                                {
                                    using (FListCadProd ls = new FListCadProd())
                                    {
                                        ls.rLItens = lista_nao_cadastrados;
                                        if (ls.ShowDialog() == DialogResult.OK)
                                        {
                                            (bsOrcamento.Current as TRegistro_Orcamento).lOrcProjeto.ForEach(o =>
                                            {
                                                o.lFicha.ForEach(p =>
                                                {
                                                    ls.rLItens.ForEach(i =>
                                                    {
                                                        if (p.Ds_produto.Equals(i.Ds_produto))
                                                        {
                                                            p.Cd_produto = i.Cd_produto;
                                                            CamadaNegocio.Empreendimento.TCN_FichaTec.Gravar(p, null);
                                                        }
                                                    });
                                                });
                                            });
                                            bsOrcamento.ResetCurrentItem();
                                        }
                                        else
                                        {
                                            return;
                                        }
                                    }
                                }

                                using (FRequisicaoCompra comp = new FRequisicaoCompra())
                                {//Buscar Atividades
                                    TRegistro_Orcamento orc = new TRegistro_Orcamento();
                                    orc             = (bsOrcamento.Current as TRegistro_Orcamento);
                                    orc.lOrcProjeto =
                                        TCN_OrcProjeto.Buscar((bsOrcamento.Current as TRegistro_Orcamento).Cd_empresa,
                                                              (bsOrcamento.Current as TRegistro_Orcamento).Id_orcamentostr,
                                                              (bsOrcamento.Current as TRegistro_Orcamento).Nr_versaostr,
                                                              string.Empty,
                                                              string.Empty,
                                                              null);
                                    orc.lOrcProjeto.ForEach(p =>
                                    {
                                        TpBusca[] filtro = new TpBusca[0];
                                        if (!string.IsNullOrEmpty(p.Cd_empresa))
                                        {
                                            Array.Resize(ref filtro, filtro.Length + 1);
                                            filtro[filtro.Length - 1].vNM_Campo = "a.cd_empresa";
                                            filtro[filtro.Length - 1].vOperador = "=";
                                            filtro[filtro.Length - 1].vVL_Busca = "'" + p.Cd_empresa.Trim() + "'";
                                        }
                                        if (!string.IsNullOrEmpty(p.Id_orcamentostr))
                                        {
                                            Array.Resize(ref filtro, filtro.Length + 1);
                                            filtro[filtro.Length - 1].vNM_Campo = "a.id_orcamento";
                                            filtro[filtro.Length - 1].vOperador = "=";
                                            filtro[filtro.Length - 1].vVL_Busca = p.Id_orcamentostr;
                                        }
                                        if (!string.IsNullOrEmpty(p.Nr_versaostr))
                                        {
                                            Array.Resize(ref filtro, filtro.Length + 1);
                                            filtro[filtro.Length - 1].vNM_Campo = "a.nr_versao";
                                            filtro[filtro.Length - 1].vOperador = "=";
                                            filtro[filtro.Length - 1].vVL_Busca = p.Nr_versaostr;
                                        }
                                        if (!string.IsNullOrEmpty(p.Id_projetostr))
                                        {
                                            Array.Resize(ref filtro, filtro.Length + 1);
                                            filtro[filtro.Length - 1].vNM_Campo = "a.id_atividade";
                                            filtro[filtro.Length - 1].vOperador = "=";
                                            filtro[filtro.Length - 1].vVL_Busca = p.Id_projetostr;
                                        }
                                        if (!string.IsNullOrEmpty(p.Id_registrostr))
                                        {
                                            Array.Resize(ref filtro, filtro.Length + 1);
                                            filtro[filtro.Length - 1].vNM_Campo = "a.Id_Registro";
                                            filtro[filtro.Length - 1].vOperador = "=";
                                            filtro[filtro.Length - 1].vVL_Busca = p.Id_registrostr;
                                        }

                                        Array.Resize(ref filtro, filtro.Length + 1);
                                        filtro[filtro.Length - 1].vOperador = "not exists ";
                                        filtro[filtro.Length - 1].vVL_Busca = " (select 1 from TB_EMP_CompraEmpreendimento x " +
                                                                              "where a.id_orcamento = x.id_orcamento and a.nr_versao = x.nr_versao " +
                                                                              "and a.ID_Atividade = x.ID_Atividade and a.ID_Ficha = x.ID_Ficha " +
                                                                              "and a.ID_Registro = x.ID_Registro and a.cd_empresa = x.cd_empresa) ";



                                        p.lFicha = new TCD_FichaTec().Select(filtro, 0, string.Empty);
                                    });
                                    comp.rOrcamento = orc;
                                    if (comp.ShowDialog() == DialogResult.OK)
                                    {
                                        lficha = comp.objetoItens.lFicha;
                                        //(bsOrcamento.Current as TRegistro_Orcamento) = comp.rOrcamento;
                                        (bsOrcamento.Current as TRegistro_Orcamento).St_registro = "E";
                                        TList_FichaTec lficha2 = new TList_FichaTec();
                                        lficha.ForEach(p =>
                                        {
                                            if (p.st_agregar)
                                            {
                                                lficha2.Add(p);
                                            }
                                        });
                                        TCN_Orcamento.GravarOrcReq((bsOrcamento.Current as TRegistro_Orcamento), lficha2, null);

                                        // MessageBox.Show("Orçamento gravado com sucesso.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information);
                                        LimparFiltros();
                                        //cbHomologacao.Checked = true;
                                        afterBusca();
                                        MessageBox.Show("Orçamento está aguardando em execução.", "Orçamento", MessageBoxButtons.OK, MessageBoxIcon.Information);
                                    }
                                }
                            }
                            catch (Exception ex)
                            { MessageBox.Show(ex.Message.Trim(), "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error); }
                        }
                    }
                    else
                    {
                        MessageBox.Show("Usuário não tem permissão de projetista para esta evolução.", "Orçamento", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                }
            }
            else
            {
                MessageBox.Show("Selecione um orcamento!", "Orçamento", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }
예제 #10
0
 private void OtimizarOrcamento()
 {
     if (MessageBox.Show("Deseja gerar nova versão do orçamento?", "Pergunta", MessageBoxButtons.YesNo, MessageBoxIcon.Question,
                         MessageBoxDefaultButton.Button1) == DialogResult.Yes)
     {
         if (bsOrcamento.Current != null)
         {
             if ((bsOrcamento.Current as TRegistro_Orcamento).St_registro.Trim().ToUpper().Equals("N"))
             {
                 //Verificar se orçamento possui versão em Aberto
                 if (new TCD_Orcamento().BuscarEscalar(
                         new TpBusca[]
                 {
                     new TpBusca()
                     {
                         vNM_Campo = "a.cd_empresa",
                         vOperador = "=",
                         vVL_Busca = "'" + (bsOrcamento.Current as TRegistro_Orcamento).Cd_empresa.Trim() + "'"
                     },
                     new TpBusca()
                     {
                         vNM_Campo = "a.id_orcamento",
                         vOperador = "=",
                         vVL_Busca = (bsOrcamento.Current as TRegistro_Orcamento).Id_orcamentostr
                     },
                     new TpBusca()
                     {
                         vNM_Campo = "isnull(a.st_registro, 'A')",
                         vOperador = "=",
                         vVL_Busca = "'A'"
                     }
                 }, "1") != null)
                 {
                     MessageBox.Show("Orçamento possui versão disponivel para OTIMIZAR.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information);
                     return;
                 }
                 string ds_tarefa = string.Empty;
                 using (TFTarefas fTarefa = new TFTarefas())
                 {
                     if (fTarefa.ShowDialog() == DialogResult.OK)
                     {
                         ds_tarefa = fTarefa.pDs_tarefa;
                     }
                 }
                 try
                 {
                     TRegistro_Orcamento aux = TCN_Orcamento.GerarNovaVersao(bsOrcamento.Current as TRegistro_Orcamento, ds_tarefa, null);
                     MessageBox.Show("Nova versão gerada com sucesso.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information);
                     LimparFiltros();
                     cd_empresa.Text   = aux.Cd_empresa;
                     id_orcamento.Text = aux.Id_orcamentostr;
                     nr_versao.Text    = aux.Nr_versaostr;
                     // cbAberto.Checked = true;
                     afterBusca();
                 }
                 catch (Exception ex)
                 { MessageBox.Show(ex.Message.Trim(), "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error); }
             }
             else
             {
                 MessageBox.Show("Permitido otimizar somente orçamento que estiver em NEGOCIAÇÃO.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information);
             }
         }
         else
         {
             MessageBox.Show("Selecione um orcamento!", "Orçamento", MessageBoxButtons.OK, MessageBoxIcon.Information);
         }
     }
 }