public List <object> Gera_Pedido(decimal JA_FATURAR, List <decimal> CICLISTAS) { string str_conn = ConfigurationManager.ConnectionStrings["Doran_Servicos_ORM.Properties.Settings.Doran_ERP_ServicosConnectionString"].ConnectionString; decimal NUMERO_SERVICO = 0; using (Doran_ERP_Servicos_DadosDataContext ctx = new Doran_ERP_Servicos_DadosDataContext()) { try { ctx.Connection.Open(); ctx.Transaction = ctx.Connection.BeginTransaction(IsolationLevel.ReadUncommitted); NUMERO_PEDIDO = Busca_Numero_Pedido_Venda(str_conn); var _query = from linha in ctx.TB_ITEM_ORCAMENTO_VENDAs where linha.NUMERO_ORCAMENTO == NUMERO_ORCAMENTO && linha.NAO_GERAR_PEDIDO == 0 && linha.NUMERO_PEDIDO_VENDA == 0 select linha; if (!_query.Any()) { throw new Exception("Selecione um orçamento para gerar o serviço"); } if (_query.Count(m => m.PRECO_PRODUTO <= (decimal)0.0000) > 0) { throw new Exception("Há itens com preço de venda zerado. Acerte os preços de venda e gere o serviço novamente"); } if (_query.First().TB_ORCAMENTO_VENDA.TB_CLIENTE == null) { throw new Exception("O orçamento estásem cliente definido"); } if (!(from linha in ctx.TB_CLIENTEs where linha.ID_CLIENTE == _query.First().TB_ORCAMENTO_VENDA.CODIGO_CLIENTE_ORCAMENTO select linha).Any()) { throw new Exception("O cliente definido neste orçamento não foi encontrado no cadastro de clientes"); } // Condição de Pagamento if (GERENTE_COMERCIAL == 0) { var CONDICAO_PAGAMENTO = from linha in ctx.TB_COND_PAGTOs where linha.CODIGO_CP == _query.First().TB_ORCAMENTO_VENDA.CODIGO_COND_PAGTO select linha; int MEDIA_DIAS = 0; int NUMERO_PARCELAS = 0; foreach (var item in CONDICAO_PAGAMENTO) { NUMERO_PARCELAS = (int)item.QTDE_PARCELAS_CP; MEDIA_DIAS = ((int)item.DIAS_PARCELA1_CP + (int)item.DIAS_PARCELA2_CP + (int)item.DIAS_PARCELA3_CP + (int)item.DIAS_PARCELA4_CP + (int)item.DIAS_PARCELA5_CP + (int)item.DIAS_PARCELA6_CP + (int)item.DIAS_PARCELA7_CP + (int)item.DIAS_PARCELA8_CP + (int)item.DIAS_PARCELA9_CP + (int)item.DIAS_PARCELA10_CP) / (int)item.QTDE_PARCELAS_CP; } if (_query.Sum(m => m.VALOR_TOTAL) < 300) { throw new Exception("Faturamento mínimo não foi atingido.<br />Peça para o seu gerente liberar o pedido"); } if (_query.Sum(m => m.VALOR_TOTAL) >= 300 && _query.Sum(m => m.VALOR_TOTAL) < 2000 && MEDIA_DIAS > 45) { throw new Exception("Faturamento mínimo não foi atingido nesta cond. de pagamento.<br />Peça para o seu gerente liberar o pedido"); } } int i = 0; foreach (var item in _query) { System.Data.Linq.Table <Doran_Servicos_ORM.TB_PEDIDO_VENDA> Entidade = ctx.GetTable <Doran_Servicos_ORM.TB_PEDIDO_VENDA>(); Doran_Servicos_ORM.TB_PEDIDO_VENDA novo = new Doran_Servicos_ORM.TB_PEDIDO_VENDA(); NUMERO_SERVICO = NUMERO_PEDIDO; novo.NUMERO_PEDIDO = NUMERO_PEDIDO; novo.NUMERO_ORCAMENTO = NUMERO_ORCAMENTO; novo.NUMERO_ITEM_ORCAMENTO = item.NUMERO_ITEM; novo.ID_PRODUTO_PEDIDO = item.ID_PRODUTO; novo.DATA_PEDIDO = DateTime.Now; novo.ENTREGA_PEDIDO = item.DATA_ENTREGA < DateTime.Today ? DateTime.Today : item.DATA_ENTREGA; novo.CODIGO_PRODUTO_PEDIDO = item.CODIGO_PRODUTO; novo.QTDE_PRODUTO_ITEM_PEDIDO = item.QTDE_PRODUTO; novo.QTDE_A_FATURAR = item.QTDE_PRODUTO; if (item.TIPO_DESCONTO == 0) { novo.PRECO_ITEM_PEDIDO = item.PRECO_PRODUTO * (1 - (item.VALOR_DESCONTO / 100)); } else { novo.PRECO_ITEM_PEDIDO = item.PRECO_PRODUTO - item.VALOR_DESCONTO; } novo.UNIDADE_ITEM_PEDIDO = item.UNIDADE_PRODUTO; novo.VALOR_TOTAL_ITEM_PEDIDO = item.VALOR_TOTAL; novo.ALIQ_ISS_ITEM_PEDIDO = item.ALIQ_ISS; novo.TIPO_DESCONTO_ITEM_PEDIDO = item.TIPO_DESCONTO; novo.VALOR_DESCONTO_ITEM_PEDIDO = 0; if (item.PROGRAMACAO_ITEM_ORCAMENTO == 1) { novo.STATUS_ITEM_PEDIDO = Busca_Status_Programacao(); // Pedido em Análise } else { novo.STATUS_ITEM_PEDIDO = JA_FATURAR == 1 ? Busca_Status_Liberado_Faturar() : Busca_Status_em_Analise(); } novo.ITEM_A_FATURAR = 0; // Nao novo.PROGRAMACAO_ITEM_PEDIDO = item.PROGRAMACAO_ITEM_ORCAMENTO; Entidade.InsertOnSubmit(novo); Doran_Base.Auditoria_ERP_Servicos.Doran_Auditoria.Audita_Insert_PEDIDO_VENDA(ctx, novo, Entidade.ToString(), NUMERO_PEDIDO, ID_USUARIO); ctx.SubmitChanges(); /// item.NUMERO_PEDIDO_VENDA = NUMERO_PEDIDO; Doran_Base.Auditoria_ERP_Servicos.Doran_Auditoria.Audita_Update(ctx, ctx.TB_ITEM_ORCAMENTO_VENDAs.GetModifiedMembers(item), ctx.TB_ITEM_ORCAMENTO_VENDAs.ToString(), ID_USUARIO); GravaCustos(i, item.NUMERO_ITEM, ctx); ctx.SubmitChanges(); i++; } //////////// var query2 = (from linha in ctx.TB_PEDIDO_VENDAs where linha.NUMERO_PEDIDO == NUMERO_PEDIDO select new { linha.NUMERO_ITEM }).ToList().First(); var query1 = (from linha in ctx.TB_ORCAMENTO_VENDAs where linha.NUMERO_ORCAMENTO == NUMERO_ORCAMENTO select new { linha.OBS_NF_ORCAMENTO }).ToList(); System.Data.Linq.Table <Doran_Servicos_ORM.TB_DADOS_FATURAMENTO> Entidade1 = ctx.GetTable <Doran_Servicos_ORM.TB_DADOS_FATURAMENTO>(); Doran_Servicos_ORM.TB_DADOS_FATURAMENTO novo1 = new Doran_Servicos_ORM.TB_DADOS_FATURAMENTO(); novo1.NUMERO_PEDIDO = NUMERO_PEDIDO; novo1.NUMERO_ITEM_PEDIDO = query2.NUMERO_ITEM; novo1.NUMERACAO = ""; novo1.ESPECIE = ""; novo1.MARCA = NOME_FANTASIA_EMITENTE; novo1.QTDE_NF = 0; novo1.NUMERO_PEDIDO_CLIENTE = ""; novo1.OBS_NF = query1.First().OBS_NF_ORCAMENTO; Entidade1.InsertOnSubmit(novo1); Doran_Base.Auditoria_ERP_Servicos.Doran_Auditoria.Audita_Insert_PEDIDO_VENDA(ctx, novo1, Entidade1.ToString(), NUMERO_PEDIDO, ID_USUARIO); ctx.SubmitChanges(); Doran_Analise_Pedido_Venda analise = new Doran_Analise_Pedido_Venda(NUMERO_PEDIDO, ID_EMPRESA, ctx); DataTable dt = analise.Aplica_Analise(ctx, ID_EMPRESA); foreach (DataRow item in dt.Rows) { System.Data.Linq.Table <Doran_Servicos_ORM.TB_FOLLOW_UP_PEDIDO> Entidade = ctx.GetTable <Doran_Servicos_ORM.TB_FOLLOW_UP_PEDIDO>(); Doran_Servicos_ORM.TB_FOLLOW_UP_PEDIDO novo = new TB_FOLLOW_UP_PEDIDO(); novo.NUMERO_PEDIDO = NUMERO_PEDIDO; novo.DATA_HORA_FOLLOW_UP = DateTime.Now; novo.ID_USUARIO_FOLLOW_UP = ID_USUARIO; novo.TEXTO_FOLLOW_UP = string.Concat("[", item["CRITERIO"].ToString(), "] - ", item["MOTIVO"].ToString()); Entidade.InsertOnSubmit(novo); Doran_Base.Auditoria_ERP_Servicos.Doran_Auditoria.Audita_Insert_PEDIDO_VENDA(ctx, novo, Entidade.ToString(), NUMERO_PEDIDO, ID_USUARIO); } ctx.SubmitChanges(); var query3 = (from linha in ctx.TB_PEDIDO_VENDAs where linha.NUMERO_PEDIDO == NUMERO_PEDIDO select new { linha.NUMERO_PEDIDO, linha.NUMERO_ITEM }).ToList(); for (int N = 0; N < CICLISTAS.Count; N++) { foreach (var item1 in query3) { System.Data.Linq.Table <Doran_Servicos_ORM.TB_SERVICO_CICLISTA> Entidade = ctx.GetTable <Doran_Servicos_ORM.TB_SERVICO_CICLISTA>(); Doran_Servicos_ORM.TB_SERVICO_CICLISTA novo = new Doran_Servicos_ORM.TB_SERVICO_CICLISTA(); novo.NUMERO_PEDIDO_VENDA = item1.NUMERO_PEDIDO; novo.NUMERO_ITEM_VENDA = item1.NUMERO_ITEM; novo.ID_CICLISTA = CICLISTAS[N]; Entidade.InsertOnSubmit(novo); Doran_Base.Auditoria_ERP_Servicos.Doran_Auditoria.Audita_Insert(ctx, novo, "TB_SERVICO_CICLISTA", ID_USUARIO); } ctx.SubmitChanges(); } ctx.Transaction.Commit(); } catch { ctx.Transaction.Rollback(); throw; } } return(Status_Orcamento()); }
public List <object> Gera_Pedido_Antigo(decimal ID_EMPRESA) { using (Doran_ERP_Servicos_DadosDataContext ctx = new Doran_ERP_Servicos_DadosDataContext()) { NUMERO_PEDIDO = Busca_Numero_Pedido_Venda(ctx.Connection.ConnectionString); var query = (from linha in ctx.TB_ITEM_ORCAMENTO_VENDAs where linha.NUMERO_ORCAMENTO == NUMERO_ORCAMENTO && linha.NAO_GERAR_PEDIDO == 0 && linha.NUMERO_PEDIDO_VENDA == 0 select linha).ToList(); var entrega_atrasada = query.Where(s => s.DATA_ENTREGA < DateTime.Today); if (entrega_atrasada.Count() > 0) { throw new Exception("Há itens com data de entrega atrasada. Acerte as datas de entrega e gere o pedido novamente"); } int itens_com_margem_abaixo = query.Count(m => m.ITEM_APROVADO == 1); if (itens_com_margem_abaixo > 0) { throw new Exception("Há itens com margem de venda abaixo do permitido. <br />Não é possível imprimir o oçamento"); } int i = 0; foreach (var item in query) { using (Doran_ERP_Servicos_DadosDataContext ctx1 = new Doran_ERP_Servicos_DadosDataContext()) { System.Data.Linq.Table <Doran_Servicos_ORM.TB_PEDIDO_VENDA> Entidade = ctx1.GetTable <Doran_Servicos_ORM.TB_PEDIDO_VENDA>(); Doran_Servicos_ORM.TB_PEDIDO_VENDA novo = new Doran_Servicos_ORM.TB_PEDIDO_VENDA(); novo.NUMERO_PEDIDO = NUMERO_PEDIDO; novo.NUMERO_ORCAMENTO = NUMERO_ORCAMENTO; novo.NUMERO_ITEM_ORCAMENTO = item.NUMERO_ITEM; novo.ID_PRODUTO_PEDIDO = item.ID_PRODUTO; novo.DATA_PEDIDO = DateTime.Today; novo.ENTREGA_PEDIDO = item.DATA_ENTREGA; novo.CODIGO_PRODUTO_PEDIDO = item.CODIGO_PRODUTO; novo.QTDE_PRODUTO_ITEM_PEDIDO = item.QTDE_PRODUTO; novo.QTDE_A_FATURAR = item.QTDE_PRODUTO; novo.PRECO_ITEM_PEDIDO = item.PRECO_PRODUTO; novo.UNIDADE_ITEM_PEDIDO = item.UNIDADE_PRODUTO; novo.VALOR_TOTAL_ITEM_PEDIDO = item.VALOR_TOTAL; novo.TIPO_DESCONTO_ITEM_PEDIDO = item.TIPO_DESCONTO; novo.VALOR_DESCONTO_ITEM_PEDIDO = item.VALOR_DESCONTO; novo.OBS_ITEM_PEDIDO = item.OBS_ITEM_ORCAMENTO; if (item.PROGRAMACAO_ITEM_ORCAMENTO == 1) { novo.STATUS_ITEM_PEDIDO = Busca_Status_Programacao(); // Pedido em Análise } else { novo.STATUS_ITEM_PEDIDO = 4; } novo.ITEM_A_FATURAR = 0; // Nao novo.PROGRAMACAO_ITEM_PEDIDO = item.PROGRAMACAO_ITEM_ORCAMENTO; Entidade.InsertOnSubmit(novo); Doran_Base.Auditoria_ERP_Servicos.Doran_Auditoria.Audita_Insert_PEDIDO_VENDA(ctx1, novo, Entidade.ToString(), NUMERO_PEDIDO, ID_USUARIO); ctx1.SubmitChanges(); } item.NUMERO_PEDIDO_VENDA = NUMERO_PEDIDO; Doran_Base.Auditoria_ERP_Servicos.Doran_Auditoria.Audita_Update(ctx, ctx.TB_ITEM_ORCAMENTO_VENDAs.GetModifiedMembers(item), ctx.TB_ITEM_ORCAMENTO_VENDAs.ToString(), ID_USUARIO); //GravaCustos(i, item.NUMERO_ITEM); i++; } ctx.SubmitChanges(); } using (Doran_ERP_Servicos_DadosDataContext ctx3 = new Doran_ERP_Servicos_DadosDataContext()) { var query = (from linha in ctx3.TB_PEDIDO_VENDAs where linha.NUMERO_PEDIDO == NUMERO_PEDIDO select new { linha.NUMERO_ITEM }).ToList().First(); string PLACA = ""; System.Data.Linq.Table <Doran_Servicos_ORM.TB_DADOS_FATURAMENTO> Entidade1 = ctx3.GetTable <Doran_Servicos_ORM.TB_DADOS_FATURAMENTO>(); Doran_Servicos_ORM.TB_DADOS_FATURAMENTO novo1 = new Doran_Servicos_ORM.TB_DADOS_FATURAMENTO(); novo1.NUMERO_PEDIDO = NUMERO_PEDIDO; novo1.NUMERO_ITEM_PEDIDO = query.NUMERO_ITEM; novo1.PLACA_VEICULO = PLACA; novo1.NUMERACAO = ""; novo1.ESPECIE = "CAIXAS"; novo1.MARCA = NOME_FANTASIA_EMITENTE; novo1.QTDE_NF = 0; novo1.NUMERO_PEDIDO_CLIENTE = ""; novo1.OBS_NF = ""; Entidade1.InsertOnSubmit(novo1); Doran_Base.Auditoria_ERP_Servicos.Doran_Auditoria.Audita_Insert_PEDIDO_VENDA(ctx3, novo1, Entidade1.ToString(), NUMERO_PEDIDO, ID_USUARIO); ctx3.SubmitChanges(); } Doran_Analise_Pedido_Venda analise = new Doran_Analise_Pedido_Venda(NUMERO_PEDIDO, ID_EMPRESA); DataTable dt = analise.Aplica_Analise(ID_EMPRESA); analise.Dispose(); using (Doran_ERP_Servicos_DadosDataContext ctx2 = new Doran_ERP_Servicos_DadosDataContext()) { foreach (DataRow item in dt.Rows) { System.Data.Linq.Table <Doran_Servicos_ORM.TB_FOLLOW_UP_PEDIDO> Entidade = ctx2.GetTable <Doran_Servicos_ORM.TB_FOLLOW_UP_PEDIDO>(); Doran_Servicos_ORM.TB_FOLLOW_UP_PEDIDO novo = new TB_FOLLOW_UP_PEDIDO(); novo.NUMERO_PEDIDO = NUMERO_PEDIDO; novo.DATA_HORA_FOLLOW_UP = DateTime.Now; novo.ID_USUARIO_FOLLOW_UP = ID_USUARIO; novo.TEXTO_FOLLOW_UP = string.Concat("[", item["CRITERIO"].ToString(), "] - ", item["MOTIVO"].ToString()); Entidade.InsertOnSubmit(novo); Doran_Base.Auditoria_ERP_Servicos.Doran_Auditoria.Audita_Insert_PEDIDO_VENDA(ctx2, novo, Entidade.ToString(), NUMERO_PEDIDO, ID_USUARIO); } ctx2.SubmitChanges(); } return(Status_Orcamento()); }
public void Grava_Dados_Faturamento(Dictionary <string, object> dados) { try { decimal NUMERO_PEDIDO_VENDA = 0; using (Doran_ERP_Servicos_DadosDataContext ctx = new Doran_ERP_Servicos_DadosDataContext()) { var query = (from item in ctx.TB_DADOS_FATURAMENTOs where item.NUMERO_PEDIDO == Convert.ToDecimal(dados["NUMERO_PEDIDO"]) select item).ToList(); if (!query.Any()) { System.Data.Linq.Table <Doran_Servicos_ORM.TB_DADOS_FATURAMENTO> Entidade = ctx.GetTable <Doran_Servicos_ORM.TB_DADOS_FATURAMENTO>(); Doran_Servicos_ORM.TB_DADOS_FATURAMENTO novo = new Doran_Servicos_ORM.TB_DADOS_FATURAMENTO(); novo.NUMERO_PEDIDO = Convert.ToDecimal(dados["NUMERO_PEDIDO"]); novo.NUMERACAO = dados["NUMERACAO"].ToString(); novo.ESPECIE = dados["ESPECIE"].ToString(); novo.MARCA = dados["MARCA"].ToString(); novo.QTDE_NF = Convert.ToDecimal(dados["QTDE_NF"]); novo.NUMERO_PEDIDO_CLIENTE = dados["NUMERO_PEDIDO_CLIENTE"].ToString(); novo.OBS_NF = dados["OBS_NF"].ToString(); Entidade.InsertOnSubmit(novo); Doran_Base.Auditoria_ERP_Servicos.Doran_Auditoria.Audita_Insert(ctx, novo, Entidade.ToString(), Convert.ToDecimal(dados["ID_USUARIO"])); } else { foreach (var item in query) { item.NUMERACAO = dados["NUMERACAO"].ToString(); item.ESPECIE = dados["ESPECIE"].ToString(); item.MARCA = dados["MARCA"].ToString(); item.QTDE_NF = Convert.ToDecimal(dados["QTDE_NF"]); item.NUMERO_PEDIDO_CLIENTE = dados["NUMERO_PEDIDO_CLIENTE"].ToString(); item.OBS_NF = dados["OBS_NF"].ToString(); if (Convert.ToDecimal(dados["CODIGO_COND_PAGTO"]) != item.TB_PEDIDO_VENDA.TB_ITEM_ORCAMENTO_VENDA.TB_ORCAMENTO_VENDA.CODIGO_COND_PAGTO) { Atualiza_Condicao_Pagamento(Convert.ToDecimal(dados["CODIGO_COND_PAGTO"]), item.TB_PEDIDO_VENDA.NUMERO_ORCAMENTO, ctx, Convert.ToDecimal(dados["ID_USUARIO"])); NUMERO_PEDIDO_VENDA = item.NUMERO_PEDIDO.Value; } Doran_Base.Auditoria_ERP_Servicos.Doran_Auditoria.Audita_Update(ctx, ctx.TB_DADOS_FATURAMENTOs.GetModifiedMembers(item), ctx.TB_DADOS_FATURAMENTOs.ToString(), Convert.ToDecimal(dados["ID_USUARIO"])); } } ctx.SubmitChanges(); } } catch (Exception ex) { Doran_Base.Auditoria_ERP_Servicos.Doran_Exception.GravaErro(ex, Convert.ToDecimal(dados["ID_USUARIO"])); throw ex; } }