Пример #1
0
        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;
            }
        }
Пример #2
0
        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&ccedil;amento para gerar o servi&ccedil;o");
                    }

                    if (_query.Count(m => m.PRECO_PRODUTO <= (decimal)0.0000) > 0)
                    {
                        throw new Exception("H&aacute; itens com pre&ccedil;o de venda zerado. Acerte os pre&ccedil;os de venda e gere o servi&ccedil;o novamente");
                    }

                    if (_query.First().TB_ORCAMENTO_VENDA.TB_CLIENTE == null)
                    {
                        throw new Exception("O or&ccedil;amento est&aacute;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&ccedil;amento n&atilde;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&iacute;nimo n&atilde;o foi atingido.<br />Pe&ccedil;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&iacute;nimo n&atilde;o foi atingido nesta cond. de pagamento.<br />Pe&ccedil;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());
        }