public static void Estornar(TRegistro_OrdemCompra val, BancoDados.TObjetoBanco banco) { bool st_transacao = false; TCD_OrdemCompra qtb_ordem = new TCD_OrdemCompra(); try { if (banco == null) { st_transacao = qtb_ordem.CriarBanco_Dados(true); } else { qtb_ordem.Banco_Dados = banco; } //Buscar requisicao amarrada a ordem compra if (val.Id_requisicao != null) { TRegistro_Requisicao rReq = TCN_Requisicao.Buscar(val.Id_requisicao.Value.ToString(), string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, false, false, false, "'E'", false, qtb_ordem.Banco_Dados)[0]; rReq.St_requisicao = "AP"; TCN_Requisicao.AlterarRequisicao(rReq, qtb_ordem.Banco_Dados); } //Cancelar Ordem Compra val.St_registro = "C"; Gravar(val, qtb_ordem.Banco_Dados); if (st_transacao) { qtb_ordem.Banco_Dados.Commit_Tran(); } } catch (Exception ex) { if (st_transacao) { qtb_ordem.Banco_Dados.RollBack_Tran(); } throw new Exception("Erro cancelar ordem compra: " + ex.Message.Trim()); } finally { if (st_transacao) { qtb_ordem.deletarBanco_Dados(); } } }
public static string AlterarRequisicao(TRegistro_Requisicao val, BancoDados.TObjetoBanco banco) { bool st_transacao = false; TCD_Requisicao qtb_req = new TCD_Requisicao(); try { if (banco == null) { st_transacao = qtb_req.CriarBanco_Dados(true); } else { qtb_req.Banco_Dados = banco; } //Gravar requisicao string retorno = qtb_req.GravarRequisicao(val); if (st_transacao) { qtb_req.Banco_Dados.Commit_Tran(); } return(retorno); } catch (Exception ex) { if (st_transacao) { qtb_req.Banco_Dados.RollBack_Tran(); } throw new Exception("Erro alterar requisição: " + ex.Message.Trim()); } finally { if (st_transacao) { qtb_req.deletarBanco_Dados(); } } }
public static void EstornarProcessamentoRequisicao(TRegistro_Requisicao val, BancoDados.TObjetoBanco banco) { bool st_transacao = false; TCD_Requisicao qtb_requisicao = new TCD_Requisicao(); try { if (banco == null) { st_transacao = qtb_requisicao.CriarBanco_Dados(true); } else { qtb_requisicao.Banco_Dados = banco; } //Verificar se o usuario que realizou o processamento e o mesmo que esta tentando estornar CamadaDados.Compra.TList_CadUsuarioCompra lUser = CamadaNegocio.Compra.TCN_CadUsuarioCompra.Busca(val.Cd_clifor_aprovador, Utils.Parametros.pubLogin, false, false, true, false, 1, string.Empty, qtb_requisicao.Banco_Dados); if (lUser.Count.Equals(0)) { throw new Exception("Só é permitido estornar processamento realizado pelo usuario atual logado no sistema.\r\n" + "Login: "******"."); } //Alterar registro requisicao val.Qtd_aprovada = decimal.Zero; val.St_requisicao = "AA"; AlterarRequisicao(val, qtb_requisicao.Banco_Dados); //Alterar status das negociacoes val.lReqneg.ForEach(p => { p.St_NegReq = "S"; //StandBy TCN_Requisicao_X_Negociacao.GravarRequisicao_X_Negociacao(p, qtb_requisicao.Banco_Dados); }); //Alterar status das cotacoes val.lCotacoes.ForEach(p => { p.St_registro = "A"; //Aberta TCN_Cotacao.GravarCotacao(p, qtb_requisicao.Banco_Dados); }); if (st_transacao) { qtb_requisicao.Banco_Dados.Commit_Tran(); } } catch (Exception ex) { if (st_transacao) { qtb_requisicao.Banco_Dados.RollBack_Tran(); } throw new Exception("Erro estornar processamento requisição: " + ex.Message.Trim()); } finally { if (st_transacao) { qtb_requisicao.deletarBanco_Dados(); } } }
public static void ProcessarRequisicao(TRegistro_Requisicao val, BancoDados.TObjetoBanco banco) { bool st_transacao = false; TCD_Requisicao qtb_requisicao = new TCD_Requisicao(); try { if (banco == null) { st_transacao = qtb_requisicao.CriarBanco_Dados(true); } else { qtb_requisicao.Banco_Dados = banco; } if (val.St_requisicao.Trim().ToUpper().Equals("AP")) { //Aprovar requisicao val.lReqneg.ForEach(p => { if (p.St_processar) { p.St_NegReq = "A"; //Negociacao aprovada para a compra TCN_Requisicao_X_Negociacao.GravarRequisicao_X_Negociacao(p, qtb_requisicao.Banco_Dados); } else { p.St_NegReq = "R"; //Negociacao reprovada para a compra TCN_Requisicao_X_Negociacao.GravarRequisicao_X_Negociacao(p, qtb_requisicao.Banco_Dados); } }); val.lCotacoes.ForEach(p => { if (p.St_integrar) { p.St_registro = "P"; //Aprovada TCN_Cotacao.GravarCotacao(p, qtb_requisicao.Banco_Dados); } else { p.St_registro = "R"; //Reprovada TCN_Cotacao.GravarCotacao(p, qtb_requisicao.Banco_Dados); } }); } else if (val.St_requisicao.Trim().ToUpper().Equals("RE")) { //Reprovar requisicao val.lReqneg.ForEach(p => { p.St_NegReq = "R"; //Negociacao reprovada para a compra TCN_Requisicao_X_Negociacao.GravarRequisicao_X_Negociacao(p, qtb_requisicao.Banco_Dados); }); //Reprovar cotacoes val.lCotacoes.ForEach(p => { p.St_registro = "R"; //Reprovada TCN_Cotacao.GravarCotacao(p, qtb_requisicao.Banco_Dados); }); } //Alterar requisicao //Buscar usuario que esta aprovando a requisicao CamadaDados.Compra.TList_CadUsuarioCompra lUser = CamadaNegocio.Compra.TCN_CadUsuarioCompra.Busca(string.Empty, Utils.Parametros.pubLogin, false, false, true, false, 0, string.Empty, qtb_requisicao.Banco_Dados); if (lUser.Count < 1) { throw new Exception("Não existe usuario para APROVAR configurado para o login " + Utils.Parametros.pubLogin.Trim().ToUpper() + "."); } val.Cd_clifor_aprovador = lUser[0].Cd_clifor_cmp; AlterarRequisicao(val, qtb_requisicao.Banco_Dados); if (st_transacao) { qtb_requisicao.Banco_Dados.Commit_Tran(); } } catch (Exception ex) { if (st_transacao) { qtb_requisicao.Banco_Dados.RollBack_Tran(); } throw new Exception("Erro processar requisição: " + ex.Message.Trim()); } finally { if (st_transacao) { qtb_requisicao.deletarBanco_Dados(); } } }
public static void FecharCotacoesRequisicao(TRegistro_Requisicao val, BancoDados.TObjetoBanco banco) { bool st_transacao = false; TCD_Requisicao qtb_req = new TCD_Requisicao(); try { if (banco == null) { st_transacao = qtb_req.CriarBanco_Dados(true); } else { qtb_req.Banco_Dados = banco; } //Verificar se existe configuracao de compra para a empresa da requisicao CamadaDados.Compra.TList_CFGCompra lCfg = CamadaNegocio.Compra.TCN_CFGCompra.Buscar(val.Cd_empresa, string.Empty, string.Empty, string.Empty, string.Empty, 0, string.Empty, qtb_req.Banco_Dados); //Verificar se existem cotacoes if (val.lCotacoes.Count.Equals(0)) { val.lCotacoes = CamadaNegocio.Compra.Lancamento.TCN_Cotacao.Buscar(string.Empty, string.Empty, val.Cd_empresa, val.Id_requisicao.ToString(), 0, string.Empty, string.Empty, null); } if (lCfg.Count > 0) { if (lCfg[0].Qtd_min_cotacao > 0) { if (lCfg[0].Qtd_min_cotacao > val.lCotacoes.Count) { throw new Exception("Configuração de compras da empresa " + val.Cd_empresa.Trim() + " exige no minimo " + lCfg[0].Qtd_min_cotacao.ToString() + " para fechar cotações."); } } } //Alterar status da requisicao para AA - Aguardando Aprovacao val.St_requisicao = "AA"; AlterarRequisicao(val, qtb_req.Banco_Dados); if (st_transacao) { qtb_req.Banco_Dados.Commit_Tran(); } } catch (Exception ex) { if (st_transacao) { qtb_req.Banco_Dados.RollBack_Tran(); } throw new Exception("Erro fechar cotações requisição: " + ex.Message.Trim()); } finally { if (st_transacao) { qtb_req.deletarBanco_Dados(); } } }
public static string DeletarRequisicao(TRegistro_Requisicao val, BancoDados.TObjetoBanco banco) { bool st_transacao = false; TCD_Requisicao qtb_req = new TCD_Requisicao(); try { if (banco == null) { st_transacao = qtb_req.CriarBanco_Dados(true); } else { qtb_req.Banco_Dados = banco; } if (val.St_requisicao.Trim().ToUpper().Equals("AC") && val.Id_ordem == null) { //Deletar negociacao val.lregnegdel.ForEach(p => TCN_Requisicao_X_Negociacao.DeletarRequisicao_X_Negociacao(p, qtb_req.Banco_Dados)); val.lReqneg.ForEach(p => { p.Id_requisicao = val.Id_requisicao; TCN_Requisicao_X_Negociacao.DeletarRequisicao_X_Negociacao(p, qtb_req.Banco_Dados); }); //Verificar se Requisição for originada pelo modulo empreendimento CamadaDados.Empreendimento.TList_CompraEmpreendimento lEmpCompra = CamadaNegocio.Empreendimento.TCN_CompraEmpreendimento.Buscar(val.Cd_empresa, string.Empty, string.Empty, string.Empty, val.Id_requisicao.ToString(), qtb_req.Banco_Dados); //Excluir Compra Empreendimento. lEmpCompra.ForEach(p => CamadaNegocio.Empreendimento.TCN_CompraEmpreendimento.Excluir(p, qtb_req.Banco_Dados)); //Deletar Cotacao val.lCotacoes.ForEach(p => TCN_Cotacao.DeletarCotacao(p, qtb_req.Banco_Dados)); //Gravar requisicao qtb_req.DeletarRequisicao(val); } else { //Altera o status para CA - Cancelada val.St_requisicao = "CA"; AlterarRequisicao(val, qtb_req.Banco_Dados); } if (st_transacao) { qtb_req.Banco_Dados.Commit_Tran(); } return("OK"); } catch (Exception ex) { if (st_transacao) { qtb_req.Banco_Dados.RollBack_Tran(); } throw new Exception("Erro excluir requisição: " + ex.Message.Trim()); } finally { if (st_transacao) { qtb_req.deletarBanco_Dados(); } } }
public static string GravarRequisicao(TRegistro_Requisicao val, BancoDados.TObjetoBanco banco) { bool st_transacao = false; TCD_Requisicao qtb_req = new TCD_Requisicao(); try { if (banco == null) { st_transacao = qtb_req.CriarBanco_Dados(true); } else { qtb_req.Banco_Dados = banco; } //Gravar requisicao string retorno = qtb_req.GravarRequisicao(val); val.Id_requisicao = Convert.ToDecimal(CamadaDados.TDataQuery.getPubVariavel(retorno, "@P_ID_REQUISICAO")); //Gravar Cotação val.lCotacoes.ForEach(p => { p.Id_requisicao = val.Id_requisicao; TCN_Cotacao.GravarCotacao(p, qtb_req.Banco_Dados); }); //Gravar negociacao val.lReqneg.ForEach(p => { p.Id_requisicao = val.Id_requisicao; p.Cd_empresa = val.Cd_empresa; TCN_Requisicao_X_Negociacao.GravarRequisicao_X_Negociacao(p, qtb_req.Banco_Dados); }); val.lOrdemProd.ForEach(p => { p.Id_requisicao = val.Id_requisicao; p.Cd_empresa = val.Cd_empresa; CamadaNegocio.Producao.Producao.TCN_OrdemProducao_X_Requisicao.Gravar(p, qtb_req.Banco_Dados); }); //Deletar Negociacao val.lregnegdel.ForEach(p => TCN_Requisicao_X_Negociacao.DeletarRequisicao_X_Negociacao(p, qtb_req.Banco_Dados)); if (st_transacao) { qtb_req.Banco_Dados.Commit_Tran(); } return(retorno); } catch (Exception ex) { if (st_transacao) { qtb_req.Banco_Dados.RollBack_Tran(); } throw new Exception("Erro gravar requisição: " + ex.Message.Trim()); } finally { if (st_transacao) { qtb_req.deletarBanco_Dados(); } } }
public static void ProcessarPedido(List <TRegistro_OrdemCompra> val, string Cfg_pedido, CamadaDados.Financeiro.Duplicata.TRegistro_LanDuplicata rDup, byte[] anexo_pedido, BancoDados.TObjetoBanco banco) { bool st_transacao = false; TCD_OrdemCompra qtb_oc = new TCD_OrdemCompra(); try { if (banco == null) { st_transacao = qtb_oc.CriarBanco_Dados(true); } else { qtb_oc.Banco_Dados = banco; } //Verificar se existe configuracao para gerar pedido TRegistro_Requisicao rReq = TCN_Requisicao.Buscar(val[0].Id_requisicaostr, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, false, false, false, "'E'", false, qtb_oc.Banco_Dados)[0]; CamadaDados.Compra.TList_CFGCompra lCfg = TCN_CFGCompra.Buscar(rReq.Cd_empresa, string.Empty, string.Empty, string.Empty, string.Empty, 0, string.Empty, qtb_oc.Banco_Dados); if (lCfg.Count < 1) { throw new Exception("Não existe configuração do modulo de compras para a empresa " + rReq.Cd_empresa.Trim()); } if ((!lCfg[0].St_utilizarmoedaocbool) && lCfg[0].Cd_moeda.Trim().Equals(string.Empty)) { throw new Exception("Não existe moeda configurada para gerar o pedido."); } //Gravar pedido string retorno = CamadaNegocio.Faturamento.Pedido.TCN_Pedido.Grava_Pedido( new CamadaDados.Faturamento.Pedido.TRegistro_Pedido() { CD_Empresa = rReq.Cd_empresa, CD_CondPGTO = val[0].Cd_condpgto, DT_Pedido = DateTime.Now, TP_Movimento = "E", CFG_Pedido = string.IsNullOrEmpty(Cfg_pedido) ? lCfg[0].Cfg_pedidocompra : Cfg_pedido, CD_Clifor = val[0].Cd_fornecedor, CD_Endereco = val[0].Cd_endfornecedor, ST_Pedido = "F", ST_Registro = "A", Cd_moeda = lCfg[0].St_utilizarmoedaocbool ? val[0].Cd_moeda : lCfg[0].Cd_moeda, CD_TRANSPORTADORA = val[0].Cd_transportadora, CD_ENDERECOTRANSP = val[0].Cd_endtransportadora, Tp_frete = val[0].Tp_frete, Vl_frete = val.Sum(p => p.Vl_frete), Cd_clifor_comprador = rReq.Cd_clifor_comprador, Anexo_compra = anexo_pedido }, qtb_oc.Banco_Dados); //grava duplicata object st_dup = new CamadaDados.Faturamento.Cadastros.TCD_CadCFGPedido().BuscarEscalar( null, "a.st_gerarfin"); if (st_dup != null && rDup != null) { if (st_dup.Equals("S")) { rDup.Nr_pedido = Convert.ToDecimal(retorno.ToString()); rDup.Nr_docto = rDup.Nr_pedido.ToString(); string rtn = CamadaNegocio.Financeiro.Duplicata.TCN_LanDuplicata.GravarDuplicata(rDup, false, qtb_oc.Banco_Dados); CamadaDados.Faturamento.Pedido.TRegistro_LanPedido_X_Duplicata reg = new CamadaDados.Faturamento.Pedido.TRegistro_LanPedido_X_Duplicata(); reg.Cd_empresa = lCfg[0].Cd_empresa; reg.Nr_pedido = rDup.Nr_pedido; reg.Nr_lancto = Convert.ToDecimal(CamadaDados.TDataQuery.getPubVariavel(rtn, "@P_NR_LANCTO")); CamadaNegocio.Faturamento.Pedido.TCN_LanPedido_X_Duplicata.Gravar(reg, qtb_oc.Banco_Dados); } } //Gravar itens do pedido val.ForEach(p => { //Buscar unidade do produto para gravar no pedido object obj = new CamadaDados.Estoque.Cadastros.TCD_CadProduto(qtb_oc.Banco_Dados).BuscarEscalar( new Utils.TpBusca[] { new Utils.TpBusca() { vNM_Campo = "a.cd_produto", vOperador = "=", vVL_Busca = "'" + p.Cd_produto.Trim() + "'" } }, "a.cd_unidade"); if (obj == null) { throw new Exception("Não foi possivel localizar produto " + p.Cd_produto.Trim() + " no cadastro de produto."); } if (obj.ToString().Trim().Equals(string.Empty)) { throw new Exception("Não existe unidade cadastrada para o produto " + p.Cd_produto.Trim() + "."); } string ret_item = CamadaNegocio.Faturamento.Pedido.TCN_LanPedido_Item.GravaPedido_Item( new CamadaDados.Faturamento.Pedido.TRegistro_LanPedido_Item() { Cd_Empresa = rReq.Cd_empresa, Cd_local = !string.IsNullOrEmpty(rReq.Cd_local) ? rReq.Cd_local : lCfg[0].Cd_local, Cd_produto = p.Cd_produto, Nr_pedido = Convert.ToDecimal(retorno), Cd_unidade_est = obj.ToString(), Cd_unidade_valor = obj.ToString(), Quantidade = p.Quantidade, Vl_unitario = p.Vl_unitConvertido, Vl_subtotal = p.Vl_Convertido, Ds_observacaoitem = p.ObsRequisicao }, qtb_oc.Banco_Dados); //Alterar status da OC para F - Faturada p.St_registro = "F"; TCN_OrdemCompra.Gravar(p, qtb_oc.Banco_Dados); //Gravar OC X Pedido TCN_OrdemCompra_X_PedItem.GravarOC_X_PedItem( new TRegistro_OrdemCompra_X_PedItem() { Cd_produto = p.Cd_produto, Id_oc = p.Id_oc, Id_pedidoitem = Convert.ToDecimal(CamadaDados.TDataQuery.getPubVariavel(ret_item, "@P_ID_PEDIDOITEM")), Nr_pedido = Convert.ToDecimal(CamadaDados.TDataQuery.getPubVariavel(ret_item, "@P_NR_PEDIDO")) }, qtb_oc.Banco_Dados); p.Nr_pedido = Convert.ToDecimal(CamadaDados.TDataQuery.getPubVariavel(ret_item, "@P_NR_PEDIDO")); }); if (st_transacao) { qtb_oc.Banco_Dados.Commit_Tran(); } } catch (Exception ex) { if (st_transacao) { qtb_oc.Banco_Dados.RollBack_Tran(); } throw new Exception("Erro processar pedido: " + ex.Message.Trim()); } finally { if (st_transacao) { qtb_oc.deletarBanco_Dados(); } } }