public void GravaNovoServico(List <decimal> NUMEROS_PEDIDO, List <decimal> NUMEROS_ITEM, List <decimal> IDS_CICLISTAS, decimal ID_USUARIO) { try { for (int i = 0; i < IDS_CICLISTAS.Count; i++) { for (int n = 0; n < NUMEROS_PEDIDO.Count; n++) { using (Doran_ERP_Servicos_DadosDataContext ctx = new Doran_ERP_Servicos_DadosDataContext()) { if (!(from linha in ctx.TB_SERVICO_CICLISTAs where linha.NUMERO_PEDIDO_VENDA == NUMEROS_PEDIDO[n] && linha.NUMERO_ITEM_VENDA == NUMEROS_ITEM[n] && linha.ID_CICLISTA == IDS_CICLISTAS[i] select linha).Any()) { 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 = NUMEROS_PEDIDO[n]; novo.NUMERO_ITEM_VENDA = NUMEROS_ITEM[n]; novo.ID_CICLISTA = IDS_CICLISTAS[i]; Entidade.InsertOnSubmit(novo); Doran_Base.Auditoria_ERP_Servicos.Doran_Auditoria.Audita_Insert(ctx, novo, "TB_SERVICO_CICLISTA", ID_USUARIO); } ctx.SubmitChanges(); } } } } catch (Exception ex) { Doran_Base.Auditoria_ERP_Servicos.Doran_Exception.GravaErro(ex, ID_USUARIO); throw ex; } }
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()); }