Пример #1
0
        /// <summary>
        /// Calcula os impostos do item da nota fiscal (ICMS, Base ICMS, ICMS de Substituição, ICMS de Substituição e Total IPI,
        /// e grava na tabela TB_ITEM_NOTA_SAIDA
        /// </summary>
        /// <param name="dados">Objeto JSON com as informações das colunas da tabela</param>
        /// <returns>Retorna os totais da nota</returns>
        public Dictionary <string, object> Calcula_e_Grava_Item_Nota_Saida(Dictionary <string, object> dados)
        {
            using (Doran_ERP_Servicos_DadosDataContext ctx = new Doran_ERP_Servicos_DadosDataContext())
            {
                try
                {
                    ctx.Connection.Open();
                    ctx.Transaction = ctx.Connection.BeginTransaction(IsolationLevel.ReadUncommitted);

                    decimal CODIGO_CLIENTE = dados.ContainsKey("ID_CLIENTE") ?
                                             decimal.TryParse(dados["ID_CLIENTE"].ToString(), out CODIGO_CLIENTE) ?
                                             Convert.ToDecimal(dados["ID_CLIENTE"]) : 0
                                : 0;

                    if (!dados.ContainsKey("ID_PRODUTO"))
                    {
                        dados.Add("ID_PRODUTO", Busca_ID_PRODUTO(dados["CODIGO_PRODUTO_ITEM_NF"].ToString()));
                    }

                    decimal ALIQ_ISS = dados.ContainsKey("ALIQ_ISS_ITEM_NF") ? decimal.TryParse(dados["ALIQ_ISS_ITEM_NF"].ToString(), out ALIQ_ISS) ?
                                       Convert.ToDecimal(dados["ALIQ_ISS_ITEM_NF"]) : 0 :
                                       decimal.TryParse(dados["ALIQ_ISS"].ToString(), out ALIQ_ISS) ?
                                       Convert.ToDecimal(dados["ALIQ_ISS"]) : 0;

                    decimal VALOR_TOTAL_ITEM_NF = Convert.ToDecimal(dados["VALOR_TOTAL_ITEM_NF"]);

                    decimal VALOR_ISS_ITEM_NF = ALIQ_ISS > Convert.ToDecimal(0.00) ?
                                                Math.Round(VALOR_TOTAL_ITEM_NF * (ALIQ_ISS / 100), 2, MidpointRounding.ToEven) : 0;

                    decimal BASE_ISS_ITEM_NF = VALOR_TOTAL_ITEM_NF;

                    System.Data.Linq.Table <TB_ITEM_NOTA_SAIDA> Entidade = ctx.GetTable <TB_ITEM_NOTA_SAIDA>();

                    TB_ITEM_NOTA_SAIDA novo = new TB_ITEM_NOTA_SAIDA();

                    novo.NUMERO_ITEM_NF            = _NUMERO_SEQ;
                    novo.ID_PRODUTO_ITEM_NF        = Convert.ToDecimal(dados["ID_PRODUTO"]);
                    novo.CODIGO_PRODUTO_ITEM_NF    = dados["CODIGO_PRODUTO_ITEM_NF"].ToString();
                    novo.DESCRICAO_PRODUTO_ITEM_NF = dados["DESCRICAO_PRODUTO_ITEM_NF"].ToString();

                    novo.UNIDADE_MEDIDA_ITEM_NF = dados["UNIDADE_MEDIDA_ITEM_NF"].ToString();
                    novo.QTDE_ITEM_NF           = Convert.ToDecimal(dados["QTDE_ITEM_NF"]);
                    novo.VALOR_UNITARIO_ITEM_NF = Convert.ToDecimal(dados["VALOR_UNITARIO_ITEM_NF"]);

                    novo.VALOR_DESCONTO_ITEM_NF = dados.ContainsKey("VALOR_DESCONTO_ITEM_NF") ?
                                                  Convert.ToDecimal(dados["VALOR_DESCONTO_ITEM_NF"]) : 0;

                    novo.VALOR_TOTAL_ITEM_NF = VALOR_TOTAL_ITEM_NF;
                    novo.VALOR_ISS_ITEM_NF   = VALOR_ISS_ITEM_NF;
                    novo.ALIQ_ISS_ITEM_NF    = ALIQ_ISS;
                    novo.BASE_ISS_ITEM_NF    = BASE_ISS_ITEM_NF;

                    novo.NUMERO_PEDIDO_VENDA = dados.ContainsKey("NUMERO_PEDIDO_VENDA") ?
                                               Convert.ToDecimal(dados["NUMERO_PEDIDO_VENDA"]) : 0;

                    novo.NUMERO_ITEM_PEDIDO_VENDA = dados.ContainsKey("NUMERO_ITEM_PEDIDO_VENDA") ?
                                                    Convert.ToDecimal(dados["NUMERO_ITEM_PEDIDO_VENDA"]) : 0;

                    Entidade.InsertOnSubmit(novo);

                    Doran_Base.Auditoria_ERP_Servicos.Doran_Auditoria.Audita_Insert(ctx, novo, Entidade.ToString(), ID_USUARIO);

                    ctx.SubmitChanges();

                    Dictionary <string, decimal> linha1 = new Dictionary <string, decimal>();

                    linha1.Add("TOTAL_SERVICOS_NF", VALOR_TOTAL_ITEM_NF);
                    linha1.Add("TOTAL_ISS_NF", VALOR_ISS_ITEM_NF);
                    linha1.Add("BASE_ISS_NF", BASE_ISS_ITEM_NF);

                    ctx.Transaction.Commit();

                    return(Calcula_e_Grava_Totais_Nota_Saida(linha1, true));
                }
                catch
                {
                    ctx.Transaction.Rollback();
                    throw;
                }
            }
        }
Пример #2
0
        private void Analisa_Disponibilidade_Estoque()
        {
            using (Doran_ERP_Servicos_DadosDataContext ctx = new Doran_ERP_Servicos_DadosDataContext())
            {
                var query = from linha in ctx.TB_PEDIDO_VENDAs

                            orderby linha.NUMERO_PEDIDO

                            where linha.NUMERO_PEDIDO == NUMERO_PEDIDO

                            select new
                {
                    linha.ID_PRODUTO_PEDIDO,
                    linha.QTDE_PRODUTO_ITEM_PEDIDO,
                    linha.TB_STATUS_PEDIDO.DESCRICAO_STATUS_PEDIDO,
                    linha.TB_STATUS_PEDIDO.COR_STATUS,
                    linha.TB_STATUS_PEDIDO.COR_FONTE_STATUS
                };

                List <decimal?> STATUS_PEDIDO_EM_ANDAMENTO = new List <decimal?>();

                STATUS_PEDIDO_EM_ANDAMENTO.Add(2);
                STATUS_PEDIDO_EM_ANDAMENTO.Add(3);
                STATUS_PEDIDO_EM_ANDAMENTO.Add(4);
                STATUS_PEDIDO_EM_ANDAMENTO.Add(9);
                STATUS_PEDIDO_EM_ANDAMENTO.Add(10);
                STATUS_PEDIDO_EM_ANDAMENTO.Add(11);
                STATUS_PEDIDO_EM_ANDAMENTO.Add(12);
                STATUS_PEDIDO_EM_ANDAMENTO.Add(13);
                STATUS_PEDIDO_EM_ANDAMENTO.Add(14);
                STATUS_PEDIDO_EM_ANDAMENTO.Add(15);

                string linhaHTML = "";

                foreach (var item in query)
                {
                    var query1 = from linha in ctx.TB_PEDIDO_VENDAs

                                 where (linha.ID_PRODUTO_PEDIDO == item.ID_PRODUTO_PEDIDO &&
                                        STATUS_PEDIDO_EM_ANDAMENTO.Contains(linha.STATUS_ITEM_PEDIDO))

                                 && linha.NUMERO_PEDIDO != NUMERO_PEDIDO

                                 select new
                    {
                        linha.NUMERO_PEDIDO,
                        linha.CODIGO_PRODUTO_PEDIDO,
                        linha.QTDE_PRODUTO_ITEM_PEDIDO,
                        linha.UNIDADE_ITEM_PEDIDO,
                        linha.TB_STATUS_PEDIDO.DESCRICAO_STATUS_PEDIDO,
                        linha.TB_STATUS_PEDIDO.COR_STATUS,
                        linha.TB_STATUS_PEDIDO.COR_FONTE_STATUS,
                        linha.TB_ITEM_ORCAMENTO_VENDA.TB_ORCAMENTO_VENDA.TB_VENDEDORE.NOME_VENDEDOR
                    };

                    decimal?SOMA = query1.Sum(s => s.QTDE_PRODUTO_ITEM_PEDIDO);

                    if (SOMA.HasValue)
                    {
                        foreach (var item1 in query1)
                        {
                            linhaHTML += string.Concat("<tr><td style='font-family: tahoma; text-align: center;'>", item1.NUMERO_PEDIDO.ToString(), "</td><td style='font-family: tahoma; background-color: ", item1.COR_STATUS.Trim(), "; color: ", item1.COR_FONTE_STATUS.Trim(), ";'>",
                                                       item1.DESCRICAO_STATUS_PEDIDO.Trim(), "</td><td style='font-family: tahoma;'>", item1.CODIGO_PRODUTO_PEDIDO.Trim(), "</td><td style='font-family: tahoma; text-align: center;'>",
                                                       ApoioXML.Valor2((decimal)item1.QTDE_PRODUTO_ITEM_PEDIDO), "</td><td style='font-family: tahoma; text-align: center;'>", item1.UNIDADE_ITEM_PEDIDO.Trim(), "</td>",
                                                       "<td style='font-family: tahoma;'>",
                                                       string.IsNullOrEmpty(item1.NOME_VENDEDOR) ? "" : item1.NOME_VENDEDOR.Trim(), "</td></tr>");
                        }
                    }
                }

                if (linhaHTML.Length > 0)
                {
                    string tabelaHTML = string.Concat("<table style='width: 100%;'>",
                                                      "<tr><td style='font-family: tahoma; font-weight: bold; width: 80px; text-align: center;' >Pedido</td>",
                                                      "<td style='font-family: tahoma; font-weight: bold; width: 170px;'>Posi&ccedil;&atilde;o do Item</td>",
                                                      "<td style='font-family: tahoma; font-weight: bold;'>Produto</td>",
                                                      "<td style='font-family: tahoma; font-weight: bold; width: 70px; text-align: center;'>Qtde.</td>",
                                                      "<td style='font-family: tahoma; font-weight: bold; width: 35px; text-align: center;'>Un.</td>",
                                                      "<td style='font-family: tahoma; font-weight: bold;'>Vendedor(a)</td></tr>",
                                                      linhaHTML, "</table>");

                    AdicionaRestricao(CRITERIOS_DE_ANALISE.Analise_Estoque, tabelaHTML);
                }
            }
        }
Пример #3
0
        public string ListaClientes(Dictionary <string, string> dados)
        {
            try
            {
                using (Doran_ERP_Servicos_DadosDataContext ctx = new Doran_ERP_Servicos_DadosDataContext())
                {
                    var query = from cliente in ctx.TB_CLIENTEs
                                join ufs in ctx.TB_UFs on cliente.ESTADO_FATURA equals ufs.ID_UF

                                where cliente.NOMEFANTASIA_CLIENTE.StartsWith(dados["nomeFantasia"].ToString()) &&
                                cliente.NOME_CLIENTE.Contains(dados["nome"].ToString())

                                orderby cliente.NOMEFANTASIA_CLIENTE

                                select new
                    {
                        cliente.ID_CLIENTE,
                        cliente.NOME_CLIENTE,
                        cliente.NOMEFANTASIA_CLIENTE,
                        cliente.CNPJ_CLIENTE,
                        cliente.IE_CLIENTE,
                        cliente.IE_SUFRAMA,
                        cliente.ENDERECO_FATURA,
                        cliente.NUMERO_END_FATURA,
                        cliente.COMP_END_FATURA,
                        cliente.CEP_FATURA,
                        cliente.BAIRRO_FATURA,
                        cliente.CIDADE_FATURA,
                        DESCRICAO_CIDADE_FATURA = cliente.TB_MUNICIPIO.NOME_MUNICIPIO,
                        cliente.ESTADO_FATURA,
                        DESCRICAO_ESTADO_FATURA = ufs.DESCRICAO_UF,
                        cliente.TELEFONE_FATURA,

                        cliente.ENDERECO_ENTREGA,
                        cliente.CEP_ENTREGA,
                        cliente.BAIRRO_ENTREGA,
                        cliente.CIDADE_ENTREGA,
                        cliente.ESTADO_ENTREGA,
                        cliente.TELEFONE_ENTREGA,

                        cliente.ENDERECO_COBRANCA,
                        cliente.CEP_COBRANCA,
                        cliente.BAIRRO_COBRANCA,
                        cliente.CIDADE_COBRANCA,
                        cliente.ESTADO_COBRANCA,
                        cliente.TELEFONE_COBRANCA,

                        cliente.CODIGO_CP_CLIENTE,

                        cliente.CONTATOS,

                        cliente.FORNECEDOR,
                        cliente.CODIGO_VENDEDOR_CLIENTE
                    };

                    int rowCount = query.Count();

                    var query2 = query.Skip(Convert.ToInt32(dados["start"])).Take(Convert.ToInt32(dados["limit"]));

                    return(objQueryToXML(ctx, query2, rowCount, Convert.ToDecimal(dados["ID_USUARIO"])));
                }
            }
            catch (Exception ex)
            {
                Doran_Base.Auditoria_ERP_Servicos.Doran_Exception.GravaErro(ex, Convert.ToDecimal(dados["ID_USUARIO"]));
                throw ex;
            }
        }
Пример #4
0
        public string Imprime_Pedido(string LOGIN_USUARIO)
        {
            string str1 = "";

            string modeloORCAMENTO            = ConfigurationManager.AppSettings["Modelo_PEDIDO"];
            string modeloPEDIDO_ProximaPagina = ConfigurationManager.AppSettings["Modelo_PEDIDO_ProximaPagina"];

            _NUMERO_ITENS_PRIMEIRA_PAGINA = Convert.ToDecimal(ConfigurationManager.AppSettings["NUMERO_ITENS_PRIMEIRA_PAGINA_PEDIDO"]);
            _NUMERO_ITENS_PROXIMA_PAGINA  = Convert.ToDecimal(ConfigurationManager.AppSettings["NUMERO_ITENS_PROXIMA_PAGINA_PEDIDO"]);

            using (Doran_ERP_Servicos_DadosDataContext ctx = new Doran_ERP_Servicos_DadosDataContext())
            {
                var GERENTE_COMERCIAL = (from linha in ctx.TB_USUARIOs
                                         where linha.ID_USUARIO == ID_USUARIO
                                         select linha).Any() ?

                                        (from linha in ctx.TB_USUARIOs
                                         where linha.ID_USUARIO == ID_USUARIO
                                         select linha.GERENTE_COMERCIAL).First() : 0;

                var query = (from linha in ctx.TB_PEDIDO_VENDAs
                             where linha.NUMERO_PEDIDO == NUMERO_PEDIDO &&
                             linha.TB_STATUS_PEDIDO.STATUS_ESPECIFICO != 4
                             select linha).ToList();

                int nItens = query.Count();

                decimal ITENS_RESTANTES = nItens > _NUMERO_ITENS_PRIMEIRA_PAGINA ?
                                          nItens - _NUMERO_ITENS_PRIMEIRA_PAGINA :
                                          0;

                if (ITENS_RESTANTES == 0)
                {
                    _PAGINAS = 1;
                }
                else
                {
                    decimal NR_PAGINAS_RESTANTES = Convert.ToInt32(ITENS_RESTANTES / _NUMERO_ITENS_PROXIMA_PAGINA);
                    _PAGINAS = NR_PAGINAS_RESTANTES + 1;
                }

                using (TextReader tr = new StreamReader(modeloORCAMENTO))
                {
                    _htmlPEDIDO.Append(tr.ReadToEnd());
                }

                StringBuilder htmlPEDIDO = _htmlPEDIDO;
                htmlPEDIDO = SetaVariaveisPedido(htmlPEDIDO, true, LOGIN_USUARIO);

                StringBuilder linhaProduto = new StringBuilder();

                linhaProduto.Append(@"<tr>
<td style=""WIDTH: 362px"">#PRODUTO#</td>
<td style=""WIDTH: 80px"" align=""middle"">#QTDE#</td>
<td style=""WIDTH: 30px"" align=""middle"">#UN#</td>
<td style=""WIDTH: 80px"" align=""right"">#CUSTO#</td>
<td style=""WIDTH: 60px"" align=""middle"">#MARGEM#</td>
<td style=""WIDTH: 80px"" align=""right"">#PRECO#</td>
<td style=""WIDTH: 98px"" align=""right"">#TOTAL#</td>
<td style=""WIDTH: 70px"" align=""right"">#IPI#</td>
<td style=""WIDTH: 70px"" align=""right"">#ICMS#</td>
<td style=""WIDTH: 70px"" align=""right"">#ICMS_ST#</td></tr></tbody></table>
<table style=""WIDTH: 1100px"">
<tbody>
<tr>
<td><b>Nr. Pedido do Cliente:</b> #NUMERO_ITEM_PEDIDO_CLIENTE#</td>
<td colspan=""2""><b>Código do Cliente:</b></td>
<td colspan=""2"">#CODIGO_ITEM_CLIENTE#</td>
<td colspan=""5""><b>Ordem Compra:</b> #ORDEM_COMPRA#</td></tr>
<tr>
<td style=""border-bottom-style: solid; border-bottom-width: 1px; border-color: #000000;"" colspan=""5""><b>Obs.:</b> #OBS_ITEM#</td>
<td style=""border-bottom-style: solid; border-bottom-width: 1px; border-color: #000000;"" align=""right""><b>Posição:</b></td>
<td style=""border-bottom-style: solid; border-bottom-width: 1px; border-color: #000000;"">#STATUS_PEDIDO#</td>
<td style=""border-bottom-style: solid; border-bottom-width: 1px; border-color: #000000;"" align=""right""><b>Entrega:</b></td>
<td style=""border-bottom-style: solid; border-bottom-width: 1px; border-color: #000000;"">#ENTREGA#</td></tr></tbody></table>
<div style=""TEXT-ALIGN: right"">
<table style=""WIDTH: 1100px"">
<tbody>");

                StringBuilder itemPEDIDO = new StringBuilder();
                int           itens      = 1;

                int _CONFIG_NUMERO_ITENS_NF = Convert.ToInt32(_NUMERO_ITENS_PRIMEIRA_PAGINA);

                foreach (var item in query)
                {
                    if (itens > _CONFIG_NUMERO_ITENS_NF)
                    {
                        htmlPEDIDO = htmlPEDIDO.Replace(linhaProduto.ToString(), itemPEDIDO.ToString());

                        GravaPaginaPEDIDO(htmlPEDIDO);

                        _CONFIG_NUMERO_ITENS_NF = Convert.ToInt32(_NUMERO_ITENS_PROXIMA_PAGINA);
                        _htmlPEDIDO.Remove(0, _htmlPEDIDO.Length);

                        using (TextReader tr = new StreamReader(modeloPEDIDO_ProximaPagina))
                        {
                            _htmlPEDIDO.Append(tr.ReadToEnd());
                        }

                        htmlPEDIDO = SetaVariaveisPedido(_htmlPEDIDO, false, LOGIN_USUARIO);
                        itemPEDIDO.Remove(0, itemPEDIDO.Length);

                        itens = 1;
                    }

                    itemPEDIDO.Append(linhaProduto);

                    string Sugestao_Fornecedor = "";

                    var query1 = (from linha1 in ctx.TB_CUSTO_ITEM_PEDIDO_VENDAs
                                  orderby linha1.NUMERO_PEDIDO, linha1.NUMERO_ITEM_PEDIDO
                                  where (linha1.NUMERO_PEDIDO == item.NUMERO_PEDIDO &&
                                         linha1.NUMERO_ITEM_PEDIDO == item.NUMERO_ITEM) &&
                                  linha1.NUMERO_CUSTO_VENDA == 9
                                  select linha1).ToList();

                    if (query1.Any())
                    {
                        Sugestao_Fornecedor = string.Concat(" - <b>Fornecedor (Vendas):</b> ", query1.First().CODIGO_FORNECEDOR.HasValue&&
                                                            query1.First().CODIGO_FORNECEDOR.Value > 0 ?
                                                            "[" + query1.First().TB_FORNECEDOR.NOME_FANTASIA_FORNECEDOR.Trim() + "] [" + query1.First().OBS_CUSTO_VENDA.Trim() + "]" :
                                                            "[" + query1.First().OBS_CUSTO_VENDA.Trim() + "]");
                    }

                    string DESCRICAO_PRODUTO = item.TB_ITEM_ORCAMENTO_VENDA.DESCRICAO_PRODUTO_ITEM_ORCAMENTO.Trim().Length > 0 ?
                                               item.TB_ITEM_ORCAMENTO_VENDA.DESCRICAO_PRODUTO_ITEM_ORCAMENTO.Trim() :
                                               item.TB_PRODUTO.DESCRICAO_PRODUTO.Trim();

                    string NUMERO_ORDEM_COMPRA = Busca_Ordens_Compra(item.NUMERO_PEDIDO, item.NUMERO_ITEM);

                    itemPEDIDO = itemPEDIDO.Replace("#PRODUTO#", string.Concat("<span style='font-size: 9pt;'>", DESCRICAO_PRODUTO, "</span>"));
                    itemPEDIDO = itemPEDIDO.Replace("#UN#", string.Concat("<span style='font-size: 9pt;'>", item.UNIDADE_ITEM_PEDIDO.Trim(), "</span>"));
                    itemPEDIDO = itemPEDIDO.Replace("#QTDE#", string.Concat("<span style='font-size: 9pt;'>", ApoioXML.Valor2_2((decimal)item.QTDE_PRODUTO_ITEM_PEDIDO), "</span>"));

                    itemPEDIDO = itemPEDIDO.Replace("#PRECO#", ApoioXML.formata_Valor_Impressao((decimal)item.PRECO_ITEM_PEDIDO, 4));
                    itemPEDIDO = itemPEDIDO.Replace("#TOTAL#", ApoioXML.formata_Valor_Impressao((decimal)item.VALOR_TOTAL_ITEM_PEDIDO, 2));

                    itemPEDIDO = itemPEDIDO.Replace("#ORDEM_COMPRA#", string.Concat("<span style='font-size: 9pt;'>", NUMERO_ORDEM_COMPRA, "</span>"));
                    itemPEDIDO = itemPEDIDO.Replace("#OBS_ITEM#", string.Concat("<span style='font-size: 9pt;'>", item.OBS_ITEM_PEDIDO.Trim(), "</span>"));
                    itemPEDIDO = itemPEDIDO.Replace("#ENTREGA#", string.Concat("<span style='font-size: 9pt;'>", ApoioXML.TrataData2(item.ENTREGA_PEDIDO), "</span>"));
                    itemPEDIDO = itemPEDIDO.Replace("#STATUS_PEDIDO#", string.Concat("<span style='font-size: 9pt;'>", item.TB_STATUS_PEDIDO.DESCRICAO_STATUS_PEDIDO.Trim(), "</span>"));
                    itemPEDIDO = itemPEDIDO.Replace("#LIDER#", BuscaLider(item.TB_ITEM_ORCAMENTO_VENDA.TB_ORCAMENTO_VENDA.TB_VENDEDORE.SUPERVISOR_LIDER));

                    itens++;
                }

                htmlPEDIDO = htmlPEDIDO.Replace(linhaProduto.ToString(), itemPEDIDO.ToString());

                GravaPaginaPEDIDO(htmlPEDIDO);

                htmlPEDIDO = _htmlPEDIDO;

                Merge(_Arquivo);

                str1 = ConfigurationManager.AppSettings["PastaVirtualPDF"] + _Arquivo.Substring(_Arquivo.LastIndexOf("\\") + 1);
            }

            return(str1);
        }
Пример #5
0
        public string Lista_TB_ITEM_ORCAMENTO_VENDA(Dictionary <string, object> dados)
        {
            try
            {
                using (Doran_ERP_Servicos_DadosDataContext ctx = new Doran_ERP_Servicos_DadosDataContext())
                {
                    var query = from linha in ctx.TB_ITEM_ORCAMENTO_VENDAs
                                where linha.NUMERO_ORCAMENTO == Convert.ToDecimal(dados["NUMERO_ORCAMENTO"])
                                select new
                    {
                        linha.NUMERO_ORCAMENTO,
                        linha.NUMERO_ITEM,
                        linha.ID_PRODUTO,
                        linha.CODIGO_PRODUTO,
                        linha.DESCRICAO_PRODUTO_ITEM_ORCAMENTO,
                        linha.QTDE_PRODUTO,
                        linha.PRECO_PRODUTO,
                        linha.VALOR_TOTAL,
                        linha.UNIDADE_PRODUTO,
                        linha.VALOR_DESCONTO,
                        linha.TIPO_DESCONTO,
                        linha.ALIQ_ISS,
                        VALOR_ISS = Math.Round(linha.VALOR_TOTAL.Value * (linha.ALIQ_ISS.Value / 100), 2, MidpointRounding.ToEven),
                        linha.DATA_ENTREGA,
                        linha.NUMERO_PEDIDO_VENDA,
                        linha.OBS_ITEM_ORCAMENTO,
                        linha.PROGRAMACAO_ITEM_ORCAMENTO,
                        linha.NAO_GERAR_PEDIDO,
                        linha.CEP_FINAL_ITEM_ORCAMENTO,
                        linha.CEP_INICIAL_ITEM_ORCAMENTO,
                        linha.CIDADE_FINAL_ITEM_ORCAMENTO,
                        linha.CIDADE_INICIAL_ITEM_ORCAMENTO,
                        linha.COMPL_FINAL_ITEM_ORCAMENTO,
                        linha.COMPL_INICIAL_ITEM_ORCAMENTO,
                        linha.ENDERECO_FINAL_ITEM_ORCAMENTO,
                        linha.ENDERECO_INICIAL_ITEM_ORCAMENTO,
                        linha.ESTADO_FINAL_ITEM_ORCAMENTO,
                        linha.ESTADO_INICIAL_ITEM_ORCAMENTO,
                        linha.NUMERO_FINAL_ITEM_ORCAMENTO,
                        linha.NUMERO_INICIAL_ITEM_ORCAMENTO,
                        linha.DISTANCIA_EM_METROS
                    };

                    string retorno = "";

                    if (dados.ContainsKey("start"))
                    {
                        var rowCount = query.Count();

                        query = query.Skip(Convert.ToInt32(dados["start"])).Take(Convert.ToInt32(dados["limit"]));

                        retorno = ApoioXML.objQueryToXML(ctx, query, rowCount);
                    }
                    else
                    {
                        retorno = ApoioXML.objQueryToXML(ctx, query);
                    }

                    return(retorno);
                }
            }
            catch (Exception ex)
            {
                Doran_Base.Auditoria_ERP_Servicos.Doran_Exception.GravaErro(ex, Convert.ToDecimal(dados["ID_USUARIO"]));
                throw ex;
            }
        }
Пример #6
0
        public string Imprime_Orcamento()
        {
            string str1 = "";

            string modeloORCAMENTO = ConfigurationManager.AppSettings["Modelo_ORCAMENTO"];
            string modeloORCAMENTO_ProximaPagina = ConfigurationManager.AppSettings["Modelo_ORCAMENTO_ProximaPagina"];

            _NUMERO_ITENS_PRIMEIRA_PAGINA = Convert.ToDecimal(ConfigurationManager.AppSettings["NUMERO_ITENS_PRIMEIRA_PAGINA"]);
            _NUMERO_ITENS_PROXIMA_PAGINA  = Convert.ToDecimal(ConfigurationManager.AppSettings["NUMERO_ITENS_PROXIMA_PAGINA"]);

            using (Doran_ERP_Servicos_DadosDataContext ctx = new Doran_ERP_Servicos_DadosDataContext())
            {
                var query = (from linha in ctx.TB_ITEM_ORCAMENTO_VENDAs
                             where linha.NUMERO_ORCAMENTO == _NUMERO_ORCAMENTO
                             select linha).ToList();

                int nItens = query.Count();

                if (nItens < (_NUMERO_ITENS_PRIMEIRA_PAGINA + 1))
                {
                    _PAGINAS = 1;
                }
                else
                {
                    if (Convert.ToInt32((nItens - _NUMERO_ITENS_PRIMEIRA_PAGINA) % _NUMERO_ITENS_PROXIMA_PAGINA) > 0.00)
                    {
                        _PAGINAS = Convert.ToInt32((nItens - _NUMERO_ITENS_PRIMEIRA_PAGINA) / _NUMERO_ITENS_PROXIMA_PAGINA) + 2;
                    }
                    else
                    {
                        _PAGINAS = ((nItens - _NUMERO_ITENS_PRIMEIRA_PAGINA) / _NUMERO_ITENS_PROXIMA_PAGINA) + 1;
                    }
                }

                using (TextReader tr = new StreamReader(modeloORCAMENTO))
                {
                    _htmlORCAMENTO.Append(tr.ReadToEnd());
                }

                StringBuilder htmlORCAMENTO = _htmlORCAMENTO;
                htmlORCAMENTO = SetaVariaveisOrcamento(htmlORCAMENTO, true);

                StringBuilder linhaProduto = new StringBuilder();

                linhaProduto.Append(@"<tr style=""border-bottom: solid 1px;"">
<td style=""border-left-width: 1px; border-left-style: solid;"" valign=""top"">
#DESCRICAO_PRODUTO#
</td>
<td style=""border-left-width: 1px; border-left-style: solid;"" valign=""top"">
#UNIDADE#
</td>
<td align=""right"" style=""border-left-width: 1px; border-left-style: solid;"" valign=""top"">
#QTDE#
</td>
<td align=""right"" style=""border-left-width: 1px; border-left-style: solid;"" valign=""top"">
#PRECO#
</td>
<td align=""right"" style=""border-left-width: 1px; border-left-style: solid;"" valign=""top"">
#TOTAL_ITEM#
</td>
<td align=""right"" style=""border-left-width: 1px; border-left-style: solid;"" valign=""top"">
#VALOR_ISS#
</td>
</tr>
<tr style=""border-bottom: solid 1px;"">
<td colspan=""9"" style=""border-left-width: 1px; border-left-style: solid;"" valign=""top"">
#OBS_ITEM#
</td>
</tr>");

                StringBuilder itemORCAMENTO = new StringBuilder();
                int           itens         = 1;

                int _CONFIG_NUMERO_ITENS_NF = Convert.ToInt32(_NUMERO_ITENS_PRIMEIRA_PAGINA);

                foreach (var item in query)
                {
                    if (itens > _CONFIG_NUMERO_ITENS_NF)
                    {
                        htmlORCAMENTO = htmlORCAMENTO.Replace(linhaProduto.ToString(), itemORCAMENTO.ToString());

                        GravaPaginaORCAMENTO(htmlORCAMENTO);

                        _CONFIG_NUMERO_ITENS_NF = Convert.ToInt32(_NUMERO_ITENS_PROXIMA_PAGINA);
                        _htmlORCAMENTO.Remove(0, _htmlORCAMENTO.Length);

                        using (TextReader tr = new StreamReader(modeloORCAMENTO_ProximaPagina))
                        {
                            _htmlORCAMENTO.Append(tr.ReadToEnd());
                        }

                        htmlORCAMENTO = SetaVariaveisOrcamento(_htmlORCAMENTO, false);
                        itemORCAMENTO.Remove(0, itemORCAMENTO.Length);

                        itens = 1;
                    }

                    itemORCAMENTO.Append(linhaProduto);

                    CultureInfo info = CultureInfo.CurrentCulture;

                    string DESCRICAO_PRODUTO = item.DESCRICAO_PRODUTO_ITEM_ORCAMENTO.Trim();

                    decimal PRECO_FINAL = item.TIPO_DESCONTO.Value == 0 ?
                                          Math.Round(item.PRECO_PRODUTO.Value * (1 - (item.VALOR_DESCONTO.Value / 100)), 4) :
                                          Math.Round(item.PRECO_PRODUTO.Value - item.VALOR_DESCONTO.Value, 4);

                    string dados_Entrega = string.Concat(@"<table style=""border-width: 1px; border-style: solid; font-name: tahoma; font-size: 9pt;""><tr><td><b>Origem</b><br />
            <b>Endere&ccedil;o:</b> ", item.ENDERECO_INICIAL_ITEM_ORCAMENTO.Trim(), " ", item.NUMERO_INICIAL_ITEM_ORCAMENTO.Trim(), " ", item.COMPL_INICIAL_ITEM_ORCAMENTO.Trim(), @"<br />
            <b>CEP:</b> ", item.CEP_INICIAL_ITEM_ORCAMENTO.Trim(), " - <b>Cidade:</b> ", item.CIDADE_INICIAL_ITEM_ORCAMENTO.Trim(), " - <b>Estado:</b> ", item.ESTADO_INICIAL_ITEM_ORCAMENTO.Trim(), @"</td>
            <td><td><b>Destino</b><br />
            <b>Endere&ccedil;o:</b> ", item.ENDERECO_FINAL_ITEM_ORCAMENTO.Trim(), " ", item.NUMERO_FINAL_ITEM_ORCAMENTO.Trim(), " ", item.COMPL_FINAL_ITEM_ORCAMENTO.Trim(), @"<br />
            <b>CEP:</b> ", item.CEP_FINAL_ITEM_ORCAMENTO.Trim(), " - <b>Cidade:</b> ", item.CIDADE_FINAL_ITEM_ORCAMENTO.Trim(), " - <b>Estado:</b> ", item.ESTADO_FINAL_ITEM_ORCAMENTO.Trim(), @"</td>
            </tr></table>");

                    itemORCAMENTO = itemORCAMENTO.Replace("#DESCRICAO_PRODUTO#", string.Concat("<span style='font-size: 9pt;'>", DESCRICAO_PRODUTO, "</span>"));
                    itemORCAMENTO = itemORCAMENTO.Replace("#UNIDADE#", string.Concat("<span style='font-size: 9pt;'>", item.UNIDADE_PRODUTO.Trim(), "</span>"));
                    itemORCAMENTO = itemORCAMENTO.Replace("#QTDE#", string.Concat("<span style='font-size: 9pt;'>", ApoioXML.Valor2((decimal)item.QTDE_PRODUTO), "</span>"));
                    itemORCAMENTO = itemORCAMENTO.Replace("#PRECO#", ApoioXML.formata_Valor_Impressao(PRECO_FINAL, 4));
                    itemORCAMENTO = itemORCAMENTO.Replace("#TOTAL_ITEM#", ApoioXML.formata_Valor_Impressao((decimal)item.VALOR_TOTAL, 2));
                    itemORCAMENTO = itemORCAMENTO.Replace("#VALOR_ISS#", Math.Round(item.VALOR_TOTAL.Value * (item.ALIQ_ISS.Value / 100), 2, MidpointRounding.ToEven).ToString("c"));
                    itemORCAMENTO = itemORCAMENTO.Replace("#OBS_ITEM#", string.Concat(dados_Entrega, item.OBS_ITEM_ORCAMENTO.Trim().Length == 0 ?
                                                                                      "&nbsp;" : item.OBS_ITEM_ORCAMENTO.Trim(), "<br /><br />"));

                    itens += 1;
                }

                htmlORCAMENTO = htmlORCAMENTO.Replace(linhaProduto.ToString(), itemORCAMENTO.ToString());

                if (_PAGINAS == 1 && (query.Count - 7) > 16)
                {
                    htmlORCAMENTO.Append("<div style='page-break-after: always;'></div>");
                }

                if (_PAGINAS > 1)
                {
                    int ITENS_PROXIMAS_PAGINAS = query.Count - (int)_NUMERO_ITENS_PRIMEIRA_PAGINA;

                    int ITENS_ULTIMA_PAGINA = 0;

                    if (ITENS_PROXIMAS_PAGINAS > _NUMERO_ITENS_PROXIMA_PAGINA)
                    {
                        for (int i = 0; i < ITENS_PROXIMAS_PAGINAS; i += (int)_NUMERO_ITENS_PROXIMA_PAGINA)
                        {
                            ITENS_ULTIMA_PAGINA = i;
                        }

                        ITENS_ULTIMA_PAGINA = ITENS_PROXIMAS_PAGINAS - ITENS_ULTIMA_PAGINA;
                    }
                    else
                    {
                        ITENS_ULTIMA_PAGINA = ITENS_PROXIMAS_PAGINAS;
                    }

                    if ((ITENS_ULTIMA_PAGINA - 7) > 30)
                    {
                        htmlORCAMENTO.Append("<div style='page-break-after: always;'></div>");
                    }
                }

                string strTotais = @"<hr align=""left"" width=""770"">

<table width=""770"" style=""font-name: tahoma; font-size: 9pt;"">
<tbody>
<tr>
<td style=""WIDTH: 50%""></td>
<td>
<table width=""100%"">
<tbody>
<tr>
<td align=""right""><b>Sub Total:</b> </td>
<td align=""right"">#TOTAL_SERVICOS# </td></tr>
<tr>
<td align=""right""><b>Total de ISS:</b> </td>
<td align=""right"">#TOTAL_ISS# </td></tr>
<tr>
<td align=""right""><b>Total do Orçamento:</b> </td>
<td align=""right"">#TOTAL_ORCAMENTO# </td></tr></tbody></table></td></tr></tbody></table>";

                using (Doran_Comercial_Orcamentos orc = new Doran_Comercial_Orcamentos(_NUMERO_ORCAMENTO, ID_USUARIO))
                {
                    Dictionary <string, object> totais = orc.Calcula_Totais_Orcamento();

                    strTotais = strTotais.Replace("#TOTAL_SERVICOS#", totais["VALOR_TOTAL"].ToString());
                    strTotais = strTotais.Replace("#TOTAL_ISS#", totais["VALOR_ISS"].ToString());
                    strTotais = strTotais.Replace("#TOTAL_ORCAMENTO#", totais["TOTAL_ORCAMENTO"].ToString());
                }

                htmlORCAMENTO.Append(strTotais);

                GravaPaginaORCAMENTO(htmlORCAMENTO);

                htmlORCAMENTO = _htmlORCAMENTO;

                Merge(_Arquivo);

                str1          = ConfigurationManager.AppSettings["PastaVirtualPDF"] + _Arquivo.Substring(_Arquivo.LastIndexOf("\\") + 1);
                arquivo_final = ConfigurationManager.AppSettings["PastaFisicaPDF"] + _Arquivo.Substring(_Arquivo.LastIndexOf("\\") + 1);
            }

            return(str1);
        }
Пример #7
0
        public string MontaRelatorioEmissao()
        {
            string retorno = "";

            using (Th2_Report r = new Th2_Report(ExpertPdf.HtmlToPdf.PdfPageSize.A4, ExpertPdf.HtmlToPdf.PDFPageOrientation.Portrait))
            {
                r.ID_EMPRESA = ID_EMPRESA;

                DateTime df = DataFinal.AddSeconds(-1);

                string nome_banco = "";

                using (Doran_ERP_Servicos_DadosDataContext ctx = new Doran_ERP_Servicos_DadosDataContext())
                {
                    if (Banco > 0)
                    {
                        nome_banco = (from linha in ctx.TB_BANCOs
                                      where linha.NUMERO_BANCO == Banco
                                      select linha.NOME_BANCO.Trim()).ToList().First().Trim();
                    }
                }

                string cabecalho = string.Format("Relat&oacute;rio T&iacute;tulos a Receber por Emiss&atilde;o<br /><span style='font-family: Tahoma; font-size: 8pt;'>Per&iacute;odo de {0} at&eacute; {1}<br />{2}</span>",
                                                 ApoioXML.TrataData2(DataInicial), ApoioXML.TrataData2(df), Banco > 0 ? "Banco: " + nome_banco : "");

                r.DefineCabecalho(cabecalho, 60);

                using (Doran_ERP_Servicos_DadosDataContext ctx = new Doran_ERP_Servicos_DadosDataContext())
                {
                    ctx.Connection.Open();
                    ctx.ExecuteCommand("SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;");

                    DateTime _dt = DataInicial;

                    StringBuilder _conteudo = new StringBuilder();

                    _conteudo.Append("<table style='width: 70%; font-family: tahoma; font-size: 8pt;'>");

                    _conteudo.Append(@"<tr>
                                    <td style='BORDER-BOTTOM: 1px solid; border-color:#C0C0C0;'>NF / Duplicata</td>
                                    <td style='BORDER-BOTTOM: 1px solid; border-color:#C0C0C0;'>Emiss&atilde;o</td>
                                    <td style='BORDER-BOTTOM: 1px solid; border-color:#C0C0C0;'>Vencimento</td>
                                    <td style='BORDER-BOTTOM: 1px solid; border-color:#C0C0C0;'>Pagamento</td>

                                    <td style='BORDER-BOTTOM: 1px solid; width: 280px; border-color:#C0C0C0;'>Hist&oacute;rico</td>
                                    <td style='BORDER-BOTTOM: 1px solid; text-align: right; border-color:#C0C0C0;'>Valor do T&iacute;tulo</td>
                                  </tr>");

                    var query = from linha in ctx.TB_FINANCEIROs
                                orderby linha.DATA_LANCAMENTO
                                where (linha.DATA_LANCAMENTO >= DataInicial &&
                                       linha.DATA_LANCAMENTO < DataFinal) &&
                                linha.CODIGO_EMITENTE == ID_EMPRESA

                                && linha.CREDITO_DEBITO == 0

                                && (linha.NUMERO_BANCO == Banco || Banco == 0)

                                select new
                    {
                        linha.NUMERO_FINANCEIRO,
                        linha.NUMERO_SEQ_NF_SAIDA,
                        linha.NUMERO_NF_SAIDA,
                        linha.DATA_LANCAMENTO,
                        linha.DATA_VENCIMENTO,
                        linha.DATA_PAGAMENTO,
                        linha.HISTORICO,
                        linha.VALOR_TOTAL
                    };

                    decimal TOTAL_PERIODO = 0;

                    foreach (var item in query)
                    {
                        string pagamento = ApoioXML.Data((DateTime)item.DATA_PAGAMENTO) == "01/01/1901" ? "" : ApoioXML.Data((DateTime)item.DATA_PAGAMENTO);

                        _conteudo.Append(string.Format(@"<tr>
                                        <td style='BORDER-BOTTOM: 1px solid; BORDER-TOP: 1px solid; BORDER-LEFT: 1px solid; BORDER-RIGHT: 1px solid; border-color:#C0C0C0;'>{0}</td>
                                        <td style='BORDER-BOTTOM: 1px solid; BORDER-TOP: 1px solid; BORDER-LEFT: 1px solid; BORDER-RIGHT: 1px solid; border-color:#C0C0C0;'>{1}</td>
                                        <td style='BORDER-BOTTOM: 1px solid; BORDER-TOP: 1px solid; BORDER-LEFT: 1px solid; BORDER-RIGHT: 1px solid; border-color:#C0C0C0;'>{2}</td>
                                        <td style='BORDER-BOTTOM: 1px solid; BORDER-TOP: 1px solid; BORDER-LEFT: 1px solid; BORDER-RIGHT: 1px solid; border-color:#C0C0C0;'>{3}</td>
                                        <td style='text-align: right; BORDER-BOTTOM: 1px solid; BORDER-TOP: 1px solid; BORDER-LEFT: 1px solid; BORDER-RIGHT: 1px solid; border-color:#C0C0C0;'>{4}</td>
                                        <td style='text-align: right; BORDER-BOTTOM: 1px solid; BORDER-TOP: 1px solid; BORDER-LEFT: 1px solid; BORDER-RIGHT: 1px solid; border-color:#C0C0C0;'>{5}</td>
                                      </tr>", item.NUMERO_NF_SAIDA.ToString() + "/" + ApoioXML.LetrasDuplicatas_ERP_Servicos(item.NUMERO_SEQ_NF_SAIDA, 0, item.DATA_VENCIMENTO),
                                                       ApoioXML.Data((DateTime)item.DATA_LANCAMENTO),
                                                       ApoioXML.Data((DateTime)item.DATA_VENCIMENTO),
                                                       pagamento,
                                                       item.HISTORICO.Trim(),
                                                       ApoioXML.Valor2((decimal)item.VALOR_TOTAL)));

                        TOTAL_PERIODO += (decimal)item.VALOR_TOTAL;
                    }

                    _conteudo.Append(string.Format(@"<tr>
                                        <td style='BORDER-BOTTOM: 1px solid; BORDER-TOP: 1px solid; BORDER-LEFT: 1px solid; BORDER-RIGHT: 1px solid; border-color:#C0C0C0;'></td>
                                        <td style='BORDER-BOTTOM: 1px solid; BORDER-TOP: 1px solid; BORDER-LEFT: 1px solid; BORDER-RIGHT: 1px solid; border-color:#C0C0C0;'></td>
                                        <td style='BORDER-BOTTOM: 1px solid; BORDER-TOP: 1px solid; BORDER-LEFT: 1px solid; BORDER-RIGHT: 1px solid; border-color:#C0C0C0;'></td>
                                        <td style='font-size: 7pt; BORDER-BOTTOM: 1px solid; BORDER-TOP: 1px solid; BORDER-LEFT: 1px solid; BORDER-RIGHT: 1px solid; border-color:#C0C0C0;'></td>
                                        <td style='text-align: right; BORDER-BOTTOM: 1px solid; BORDER-TOP: 1px solid; BORDER-LEFT: 1px solid; BORDER-RIGHT: 1px solid; border-color:#C0C0C0;'>Total:</td>
                                        <td style='text-align: right; BORDER-BOTTOM: 1px solid; BORDER-TOP: 1px solid; BORDER-LEFT: 1px solid; BORDER-RIGHT: 1px solid; border-color:#C0C0C0;'>{0}</td>
                                      </tr>", ApoioXML.Valor2(TOTAL_PERIODO)));

                    _conteudo.Append("</table>");

                    r.InsereConteudo(_conteudo.ToString());
                    retorno = r.SalvaDocumento("Doran_Titulos_Receber_Emissao");
                }

                return(retorno);
            }
        }
Пример #8
0
        private string AtualizaStatusPedido(decimal?NUMERO_PEDIDO, decimal?NUMERO_ITEM, decimal?QTDE_A_FATURAR, decimal?QTDE_PEDIDO)
        {
            string retorno = "";

            using (Doran_ERP_Servicos_DadosDataContext ctx = new Doran_ERP_Servicos_DadosDataContext())
            {
                try
                {
                    ctx.Connection.Open();
                    ctx.Transaction = ctx.Connection.BeginTransaction(IsolationLevel.ReadUncommitted);

                    var totalQtde = (from linha in ctx.TB_ITEM_NOTA_SAIDAs
                                     where linha.NUMERO_PEDIDO_VENDA == NUMERO_PEDIDO &&
                                     linha.NUMERO_ITEM_PEDIDO_VENDA == NUMERO_ITEM &&
                                     new List <decimal?>()
                    {
                        1, 2
                    }.Contains(linha.TB_NOTA_SAIDA.STATUS_NF)
                                     select linha.QTDE_ITEM_NF).Sum();

                    decimal status        = 0;
                    decimal codigo_status = 0;

                    if (totalQtde < QTDE_PEDIDO)
                    {
                        status = 2;
                    }

                    if (totalQtde >= QTDE_PEDIDO)
                    {
                        status = 3;
                    }

                    ////////////////////////
                    var numerosInternos = (from linha in ctx.TB_ITEM_NOTA_SAIDAs
                                           where linha.NUMERO_PEDIDO_VENDA == NUMERO_PEDIDO &&
                                           linha.NUMERO_ITEM_PEDIDO_VENDA == NUMERO_ITEM &&
                                           new List <decimal?>()
                    {
                        1, 2
                    }.Contains(linha.TB_NOTA_SAIDA.STATUS_NF)
                                           select linha.NUMERO_ITEM_NF).ToList().Distinct();

                    string cNumerosInternos = "";

                    foreach (var item in numerosInternos)
                    {
                        cNumerosInternos += string.Concat(item.ToString(), "/");
                    }

                    if (cNumerosInternos.Length > 0)
                    {
                        cNumerosInternos = cNumerosInternos.Substring(0, cNumerosInternos.Length - 1);
                    }

                    var numerosNF = (from linha in ctx.TB_ITEM_NOTA_SAIDAs
                                     where linha.NUMERO_PEDIDO_VENDA == NUMERO_PEDIDO &&
                                     linha.NUMERO_ITEM_PEDIDO_VENDA == NUMERO_ITEM &&
                                     new List <decimal?>()
                    {
                        1, 2
                    }.Contains(linha.TB_NOTA_SAIDA.STATUS_NF)
                                     select linha.TB_NOTA_SAIDA.NUMERO_NF).ToList().Distinct();

                    string cNumerosNF = "";

                    foreach (var item in numerosNF)
                    {
                        cNumerosNF += string.Concat(item.ToString(), "/");
                    }

                    if (cNumerosNF.Length > 0)
                    {
                        cNumerosNF = cNumerosNF.Substring(0, cNumerosNF.Length - 1);
                    }

                    var query = (from linha in ctx.TB_STATUS_PEDIDOs
                                 where linha.STATUS_ESPECIFICO == status
                                 select new
                    {
                        linha.DESCRICAO_STATUS_PEDIDO,
                        linha.COR_STATUS,
                        linha.COR_FONTE_STATUS,
                        linha.CODIGO_STATUS_PEDIDO
                    }).ToList();

                    string qtdeC_Faturada = totalQtde.HasValue ? totalQtde.ToString() : "0";
                    qtdeC_Faturada = qtdeC_Faturada.Replace(",", ".");

                    string qtdeC_Faturar = "0";

                    if (totalQtde.HasValue)
                    {
                        qtdeC_Faturar = status == 2 ? (QTDE_PEDIDO - totalQtde).ToString() : "0";
                    }

                    qtdeC_Faturar = qtdeC_Faturar.Replace(",", ".");

                    foreach (var item in query)
                    {
                        retorno = string.Concat("[{NUMERO_PEDIDO: ", NUMERO_PEDIDO.ToString(),
                                                ", NUMERO_ITEM: ", NUMERO_ITEM.ToString(), ", COR_STATUS: '", item.COR_STATUS.Trim(),
                                                "', COR_FONTE_STATUS: '", item.COR_FONTE_STATUS.Trim(), "', DESCRICAO_STATUS_PEDIDO: '",
                                                item.DESCRICAO_STATUS_PEDIDO.Trim(), "', CODIGO_STATUS_PEDIDO: ", item.CODIGO_STATUS_PEDIDO,
                                                ", QTDE_A_FATURAR: ", qtdeC_Faturar, ", QTDE_FATURADA: ", qtdeC_Faturada,
                                                ", NUMEROS_INTERNOS: '", cNumerosInternos, "', NUMEROS_NF: '", cNumerosNF, "'}],");

                        codigo_status = item.CODIGO_STATUS_PEDIDO;
                    }

                    var pedido = (from linha in ctx.TB_PEDIDO_VENDAs
                                  where linha.NUMERO_PEDIDO == NUMERO_PEDIDO &&
                                  linha.NUMERO_ITEM == NUMERO_ITEM
                                  select linha).ToList();

                    DateTime _hoje = DateTime.Now;

                    foreach (var item in pedido)
                    {
                        var DATA_STATUS_ANTERIOR = (from linha in ctx.TB_MUDANCA_STATUS_PEDIDOs
                                                    where linha.NUMERO_PEDIDO_VENDA == item.NUMERO_PEDIDO &&
                                                    linha.NUMERO_ITEM_VENDA == item.NUMERO_ITEM
                                                    select linha).Any() ?

                                                   (from linha in ctx.TB_MUDANCA_STATUS_PEDIDOs
                                                    where linha.NUMERO_PEDIDO_VENDA == item.NUMERO_PEDIDO &&
                                                    linha.NUMERO_ITEM_VENDA == item.NUMERO_ITEM
                                                    select linha.DATA_MUDANCA).Max() : item.DATA_PEDIDO;

                        System.Data.Linq.Table <Doran_Servicos_ORM.TB_MUDANCA_STATUS_PEDIDO> Entidade = ctx.GetTable <Doran_Servicos_ORM.TB_MUDANCA_STATUS_PEDIDO>();

                        Doran_Servicos_ORM.TB_MUDANCA_STATUS_PEDIDO novo = new Doran_Servicos_ORM.TB_MUDANCA_STATUS_PEDIDO();

                        novo.NUMERO_PEDIDO_VENDA  = item.NUMERO_PEDIDO;
                        novo.NUMERO_ITEM_VENDA    = item.NUMERO_ITEM;
                        novo.DATA_MUDANCA         = _hoje;
                        novo.ID_USUARIO           = ID_USUARIO;
                        novo.ID_STATUS_ANTERIOR   = item.STATUS_ITEM_PEDIDO;
                        novo.ID_STATUS_NOVO       = codigo_status;
                        novo.DATA_STATUS_ANTERIOR = DATA_STATUS_ANTERIOR;
                        novo.ID_PRODUTO           = item.ID_PRODUTO_PEDIDO;

                        Entidade.InsertOnSubmit(novo);

                        Doran_Base.Auditoria_ERP_Servicos.Doran_Auditoria.Audita_Insert_PEDIDO_VENDA(ctx, novo, Entidade.ToString(), item.NUMERO_PEDIDO, ID_USUARIO);

                        ctx.SubmitChanges();

                        item.QTDE_A_FATURAR            = status == 2 ? QTDE_PEDIDO - totalQtde : 0;
                        item.ID_USUARIO_ITEM_A_FATURAR = 0;
                        item.ITEM_A_FATURAR            = 0;
                        item.STATUS_ITEM_PEDIDO        = codigo_status;

                        Doran_Base.Auditoria_ERP_Servicos.Doran_Auditoria.Audita_Update_PEDIDO_VENDA(ctx, ctx.TB_PEDIDO_VENDAs.GetModifiedMembers(item),
                                                                                                     ctx.TB_PEDIDO_VENDAs.ToString(), (decimal)NUMERO_PEDIDO, ID_USUARIO);

                        ctx.SubmitChanges();
                    }

                    ctx.Transaction.Commit();
                }
                catch
                {
                    ctx.Transaction.Rollback();
                    throw;
                }

                return(retorno);
            }
        }
Пример #9
0
        public string Fatura_Pedidos()
        {
            using (Doran_ERP_Servicos_DadosDataContext ctx = new Doran_ERP_Servicos_DadosDataContext())
            {
                var clientes = (from linha in ctx.TB_PEDIDO_VENDAs
                                orderby linha.ID_USUARIO_ITEM_A_FATURAR, linha.ITEM_A_FATURAR, linha.NUMERO_PEDIDO

                                where (linha.ID_USUARIO_ITEM_A_FATURAR == ID_USUARIO &&
                                       linha.ITEM_A_FATURAR == 1)

                                select linha.TB_ITEM_ORCAMENTO_VENDA.TB_ORCAMENTO_VENDA.CODIGO_CLIENTE_ORCAMENTO).Distinct().ToList();

                if (clientes.Count == 0)
                {
                    throw new Exception("N&atilde;o h&aacute; itens marcados para faturar.<br />Marque os itens antes de faturar o(s) servi&ccedil;o(s)");
                }

                for (int i = 0; i < clientes.Count; i++)
                {
                    var query = (from linha in ctx.TB_PEDIDO_VENDAs
                                 orderby linha.ID_USUARIO_ITEM_A_FATURAR, linha.ITEM_A_FATURAR, linha.NUMERO_PEDIDO

                                 where (linha.ID_USUARIO_ITEM_A_FATURAR == ID_USUARIO &&
                                        linha.ITEM_A_FATURAR == 1)

                                 && linha.TB_ITEM_ORCAMENTO_VENDA.TB_ORCAMENTO_VENDA.CODIGO_CLIENTE_ORCAMENTO == clientes[i]
                                 select linha).ToList();

                    decimal NUMERO_NOTA_FISCAL = 0;

                    decimal       SUFRAMA = 0;
                    List <string> DADOS_ADICIONAIS_CFOP = new List <string>();

                    using (Doran_Nota_Saida nota1 = new Doran_Nota_Saida(ID_EMPRESA, ID_USUARIO))
                    {
                        Dictionary <string, object> dados = new Dictionary <string, object>();

                        dados.Add("IE_SUBST_TRIB_NF", "");
                        dados.Add("CODIGO_CLIENTE_NF", query.First().TB_ITEM_ORCAMENTO_VENDA.TB_ORCAMENTO_VENDA.CODIGO_CLIENTE_ORCAMENTO);

                        dados.Add("DATA_EMISSAO_NF", ApoioXML.TrataData2(DateTime.Today));

                        dados.Add("CODIGO_CP_NF", query.First().TB_ITEM_ORCAMENTO_VENDA.TB_ORCAMENTO_VENDA.CODIGO_COND_PAGTO);

                        dados.Add("BASE_ISS_NF", 0);
                        dados.Add("VALOR_ICMS_NF", 0);
                        dados.Add("BASE_ICMS_SUBS_NF", 0);
                        dados.Add("VALOR_ICMS_SUBS_NF", 0);
                        dados.Add("TOTAL_PRODUTOS_NF", 0);
                        dados.Add("VALOR_SEGURO_NF", 0);
                        dados.Add("OUTRAS_DESP_NF", 0);
                        dados.Add("TOTAL_IPI_NF", 0);
                        dados.Add("TOTAL_NF", 0);

                        var _dados_fatura = (from linha in ctx.TB_DADOS_FATURAMENTOs
                                             where linha.NUMERO_PEDIDO == query.First().NUMERO_PEDIDO
                                             select linha).ToList();

                        if (!_dados_fatura.Any())
                        {
                            throw new Exception("Os dados de faturamento não foram confirmados");
                        }

                        var dados_fatura = _dados_fatura.First();

                        dados.Add("PLACA_VEICULO_NF", string.Empty);

                        dados.Add("QTDE_NF", dados_fatura.QTDE_NF.ToString());
                        dados.Add("ESPECIE_NF", dados_fatura.ESPECIE.Trim());
                        dados.Add("MARCA_NF", dados_fatura.MARCA.Trim());
                        dados.Add("NUMERO_QTDE_NF", dados_fatura.NUMERACAO.Trim());

                        dados.Add("DADOS_ADICIONAIS_NF", dados_fatura.OBS_NF.Trim());
                        dados.Add("CODIGO_VENDEDOR_NF", query.First().TB_ITEM_ORCAMENTO_VENDA.TB_ORCAMENTO_VENDA.CODIGO_VENDEDOR);

                        dados.Add("NUMERO_PEDIDO_NF", dados_fatura.NUMERO_PEDIDO_CLIENTE.Trim());
                        dados.Add("CHAVE_ACESSO_NF", "");
                        dados.Add("PROTOCOLO_AUTORIZACAO_NF", "");
                        dados.Add("SERIE", SERIE);

                        NUMERO_NOTA_FISCAL = nota1.Nova_Nota_Saida(dados);
                    }

                    int nItem = 0;

                    foreach (var item in query)
                    {
                        using (Doran_Calculo_Nota_Saida nota2 = new Doran_Calculo_Nota_Saida(NUMERO_NOTA_FISCAL, ID_USUARIO))
                        {
                            Dictionary <string, object> dados = new Dictionary <string, object>();

                            dados.Add("CODIGO_PRODUTO_ITEM_NF", item.CODIGO_PRODUTO_PEDIDO.Trim());
                            dados.Add("QTDE_ITEM_NF", item.QTDE_A_FATURAR);

                            dados.Add("DESCRICAO_PRODUTO_ITEM_NF", item.TB_ITEM_ORCAMENTO_VENDA.DESCRICAO_PRODUTO_ITEM_ORCAMENTO.Trim().Length > 0 ?
                                      item.TB_ITEM_ORCAMENTO_VENDA.DESCRICAO_PRODUTO_ITEM_ORCAMENTO.Trim() :
                                      item.TB_PRODUTO.DESCRICAO_PRODUTO.Trim());

                            dados.Add("UNIDADE_MEDIDA_ITEM_NF", item.UNIDADE_ITEM_PEDIDO.Trim());

                            dados.Add("VALOR_UNITARIO_ITEM_NF", item.PRECO_ITEM_PEDIDO);

                            dados.Add("VALOR_DESCONTO_ITEM_NF", item.VALOR_DESCONTO_ITEM_PEDIDO);

                            dados.Add("ALIQ_ISS", item.ALIQ_ISS_ITEM_PEDIDO);
                            dados.Add("VALOR_TOTAL_ITEM_NF", item.VALOR_TOTAL_ITEM_PEDIDO);

                            dados.Add("NUMERO_PEDIDO_VENDA", item.NUMERO_PEDIDO);
                            dados.Add("NUMERO_ITEM_PEDIDO_VENDA", item.NUMERO_ITEM);

                            dados.Add("ID_PRODUTO", item.ID_PRODUTO_PEDIDO);
                            dados.Add("ID_CLIENTE", item.TB_ITEM_ORCAMENTO_VENDA.TB_ORCAMENTO_VENDA.CODIGO_CLIENTE_ORCAMENTO);

                            dados.Add("SUFRAMA_CFOP", SUFRAMA);

                            string x = "";

                            for (var y = 0; y < DADOS_ADICIONAIS_CFOP.Count; y++)
                            {
                                x += string.Concat(DADOS_ADICIONAIS_CFOP[y], " - ");
                            }

                            dados.Add("DADOS_ADICIONAIS_CFOP", x);

                            Dictionary <string, object> retorno = nota2.Calcula_e_Grava_Item_Nota_Saida(dados);

                            STATUS_NF += AtualizaStatusPedido(item.NUMERO_PEDIDO, item.NUMERO_ITEM, item.QTDE_A_FATURAR, item.QTDE_PRODUTO_ITEM_PEDIDO);

                            nItem++;
                        }
                    }
                }

                STATUS_NF = STATUS_NF.Substring(0, STATUS_NF.Length - 1) + "]";

                return(STATUS_NF);
            }
        }
Пример #10
0
        public string Lista_Cotacao(decimal ID_EMPRESA, string NOME_FANTASIA_EMITENTE)
        {
            string retorno = "";

            string FORNECEDOR = "";

            using (Doran_ERP_Servicos_DadosDataContext ctx = new Doran_ERP_Servicos_DadosDataContext())
            {
                var _FORNECEDOR = (from linha in ctx.TB_FORNECEDORs
                                   where linha.CODIGO_FORNECEDOR == CODIGO_FORNECEDOR
                                   select linha.NOME_FANTASIA_FORNECEDOR).ToList();

                foreach (var item in _FORNECEDOR)
                {
                    FORNECEDOR = item.Trim();
                }
            }

            using (Th2_Report r = new Th2_Report(ExpertPdf.HtmlToPdf.PdfPageSize.A4, ExpertPdf.HtmlToPdf.PDFPageOrientation.Portrait))
            {
                r.ID_EMPRESA = ID_EMPRESA;

                r.DefineCabecalho(NOME_FANTASIA_EMITENTE.Trim() + " - COTA&Ccedil;&Atilde;O N&ordm; " + NUMERO_PEDIDO_COMPRA.ToString() + "<br />" + FORNECEDOR, 60);

                using (Doran_ERP_Servicos_DadosDataContext ctx = new Doran_ERP_Servicos_DadosDataContext())
                {
                    var query = (from linha in ctx.TB_PEDIDO_COMPRAs
                                 orderby linha.NUMERO_PEDIDO_COMPRA

                                 where linha.NUMERO_PEDIDO_COMPRA == NUMERO_PEDIDO_COMPRA &&
                                 linha.CODIGO_FORNECEDOR == CODIGO_FORNECEDOR

                                 && linha.COTACAO_RESPONDIDA == 0

                                 select linha).ToList();

                    string _conteudo = "<table style='width: 70%; font-family: tahoma; font-size: 8pt;'>";

                    _conteudo += @"<tr>
                                    <td style='BORDER-BOTTOM: 1px solid;'>Produto</td>
                                    <td style='BORDER-BOTTOM: 1px solid;'>Descri&ccedil;&atilde;o</td>
                                    <td style='BORDER-BOTTOM: 1px solid;'>Un.</td>
                                    <td style='BORDER-BOTTOM: 1px solid;'>Qtde.</td>
                                    <td style='BORDER-BOTTOM: 1px solid;'>Entrega</td>
                                    <td style='BORDER-BOTTOM: 1px solid;'>Pre&ccedil;o</td>
                                  </tr>";

                    foreach (var item in query)
                    {
                        _conteudo += string.Format(@"<tr>
                                        <td style='BORDER-LEFT: 1px solid; BORDER-BOTTOM: 1px solid; BORDER-RIGHT: 1px solid; border-color:#C0C0C0;'>{0}</td>
                                        <td style='BORDER-RIGHT: 1px solid; BORDER-BOTTOM: 1px solid; border-color:#C0C0C0;'>{1}</td>
                                        <td style='BORDER-RIGHT: 1px solid; BORDER-BOTTOM: 1px solid; border-color:#C0C0C0;'>{2}</td>
                                        <td style='BORDER-RIGHT: 1px solid; BORDER-BOTTOM: 1px solid; border-color:#C0C0C0;'>{3}</td>
                                        <td style='BORDER-RIGHT: 1px solid; BORDER-BOTTOM: 1px solid; border-color:#C0C0C0;'>{4}</td>
                                        <td style='BORDER-RIGHT: 1px solid; BORDER-BOTTOM: 1px solid; border-color:#C0C0C0;'></td>
                                      </tr>", item.CODIGO_PRODUTO_COMPRA.ToString(),
                                                   item.TB_PRODUTO.DESCRICAO_PRODUTO.Trim(),
                                                   item.UNIDADE_ITEM_COMPRA,
                                                   ApoioXML.ValorN((decimal)item.QTDE_ITEM_COMPRA, 2),
                                                   string.Concat(item.PREVISAO_ENTREGA_ITEM_COMPRA.Value.Day.ToString().PadLeft(2, '0'),
                                                                 "/", item.PREVISAO_ENTREGA_ITEM_COMPRA.Value.Month.ToString().PadLeft(2, '0'),
                                                                 "/", item.PREVISAO_ENTREGA_ITEM_COMPRA.Value.Year.ToString()));
                    }

                    r.InsereConteudo(_conteudo);

                    retorno = r.SalvaDocumento("Doran_Lista_Cotacao");
                }

                return(retorno);
            }
        }
Пример #11
0
        public Dictionary <string, object> Copia_Orcamento(decimal ID_USUARIO, double DIAS_PRAZO_ORCAMENTO)
        {
            Dictionary <string, object> retorno = new Dictionary <string, object>();

            DateTime entrega = DateTime.Today;

            while (Doran_TitulosVencidos.Feriado_FimDeSemana(entrega))
            {
                entrega = entrega.AddDays(1);
            }

            using (Doran_ERP_Servicos_DadosDataContext ctx = new Doran_ERP_Servicos_DadosDataContext())
            {
                var query = (from linha in ctx.TB_ORCAMENTO_VENDAs
                             where linha.NUMERO_ORCAMENTO == NUMERO_ORCAMENTO
                             select linha).ToList();

                foreach (var item in query)
                {
                    System.Data.Linq.Table <TB_ORCAMENTO_VENDA> Entidade = ctx.GetTable <TB_ORCAMENTO_VENDA>();

                    TB_ORCAMENTO_VENDA novo = new TB_ORCAMENTO_VENDA();

                    using (Doran_Comercial_Orcamentos oc = new Doran_Comercial_Orcamentos(NUMERO_ORCAMENTO, ID_USUARIO))
                    {
                        CHAVE_ORCAMENTO = oc.CRIA_CHAVE_ORCAMENTO();
                    }

                    if (CHAVE_ORCAMENTO.Length > 100)
                    {
                        CHAVE_ORCAMENTO = CHAVE_ORCAMENTO.Substring(0, 100);
                    }

                    novo.DATA_ORCAMENTO           = DateTime.Now;
                    novo.CODIGO_COND_PAGTO        = item.CODIGO_COND_PAGTO;
                    novo.CODIGO_CLIENTE_ORCAMENTO = item.CODIGO_CLIENTE_ORCAMENTO;
                    novo.CODIGO_VENDEDOR          = item.CODIGO_VENDEDOR;
                    novo.CONTATO_ORCAMENTO        = item.CONTATO_ORCAMENTO;
                    novo.EMAIL_CONTATO            = item.EMAIL_CONTATO;
                    novo.NUMERO_REVISAO           = 1;
                    novo.TELEFONE_CONTATO         = item.TELEFONE_CONTATO;
                    novo.TEXTO_PROPOSTA           = item.TEXTO_PROPOSTA;
                    novo.CHAVE_ORCAMENTO          = CHAVE_ORCAMENTO;
                    novo.ID_UF_ORCAMENTO          = item.ID_UF_ORCAMENTO;
                    novo.OBS_ORCAMENTO            = item.OBS_ORCAMENTO;
                    novo.VALIDADE_ORCAMENTO       = DateTime.Today.AddDays(DIAS_PRAZO_ORCAMENTO);
                    novo.NUMERO_REVISAO           = 0;
                    novo.OBS_NF_ORCAMENTO         = item.OBS_NF_ORCAMENTO;

                    Entidade.InsertOnSubmit(novo);

                    Doran_Base.Auditoria_ERP_Servicos.Doran_Auditoria.Audita_Insert(ctx, novo, Entidade.ToString(), ID_USUARIO);

                    retorno.Add("DATA_ORCAMENTO", ApoioXML.TrataData2(DateTime.Today));
                    retorno.Add("NOMEFANTASIA_CLIENTE", item.TB_CLIENTE.NOMEFANTASIA_CLIENTE.Trim());
                    retorno.Add("CONTATO_ORCAMENTO", item.CONTATO_ORCAMENTO.Trim());
                    retorno.Add("TELEFONE_CONTATO", item.TELEFONE_CONTATO.Trim());
                    retorno.Add("EMAIL_CONTATO", item.EMAIL_CONTATO.Trim());
                    retorno.Add("VALIDADE_ORCAMENTO", ApoioXML.TrataData2(DateTime.Today.AddDays(DIAS_PRAZO_ORCAMENTO)));
                    retorno.Add("CODIGO_CLIENTE_ORCAMENTO", item.CODIGO_CLIENTE_ORCAMENTO);
                    retorno.Add("STATUS", "<span style='background-color: #FF3300; color: #FFFFFF;'>Pendente</span>");
                    retorno.Add("ID_STATUS", "3");
                    retorno.Add("OBS_NF_ORCAMENTO", item.OBS_NF_ORCAMENTO);
                    retorno.Add("NOME_VENDEDOR", item.TB_VENDEDORE.NOME_VENDEDOR.Trim());

                    ctx.SubmitChanges();
                }
            }

            using (Doran_ERP_Servicos_DadosDataContext ctx = new Doran_ERP_Servicos_DadosDataContext())
            {
                var _NUMERO_ORCAMENTO = (from linha in ctx.TB_ORCAMENTO_VENDAs
                                         orderby linha.CHAVE_ORCAMENTO
                                         where linha.CHAVE_ORCAMENTO == CHAVE_ORCAMENTO
                                         select linha.NUMERO_ORCAMENTO).First();

                NOVO_NUMERO_ORCAMENTO = _NUMERO_ORCAMENTO;

                retorno.Add("NUMERO_ORCAMENTO", NOVO_NUMERO_ORCAMENTO);

                var query = (from linha in ctx.TB_ITEM_ORCAMENTO_VENDAs
                             orderby linha.NUMERO_ORCAMENTO, linha.NUMERO_ITEM
                             where linha.NUMERO_ORCAMENTO == NUMERO_ORCAMENTO
                             select linha).ToList();

                int i = 0;

                foreach (var item in query)
                {
                    using (Doran_ERP_Servicos_DadosDataContext ctx1 = new Doran_ERP_Servicos_DadosDataContext())
                    {
                        System.Data.Linq.Table <TB_ITEM_ORCAMENTO_VENDA> Entidade = ctx1.GetTable <TB_ITEM_ORCAMENTO_VENDA>();

                        TB_ITEM_ORCAMENTO_VENDA novo = new TB_ITEM_ORCAMENTO_VENDA();

                        novo.NUMERO_ORCAMENTO                 = NOVO_NUMERO_ORCAMENTO;
                        novo.ID_PRODUTO                       = item.ID_PRODUTO;
                        novo.CODIGO_PRODUTO                   = item.CODIGO_PRODUTO;
                        novo.QTDE_PRODUTO                     = item.QTDE_PRODUTO;
                        novo.PRECO_PRODUTO                    = item.PRECO_PRODUTO;
                        novo.UNIDADE_PRODUTO                  = item.UNIDADE_PRODUTO;
                        novo.VALOR_TOTAL                      = item.VALOR_TOTAL;
                        novo.TIPO_DESCONTO                    = item.TIPO_DESCONTO;
                        novo.VALOR_DESCONTO                   = item.VALOR_DESCONTO;
                        novo.ALIQ_ISS                         = item.ALIQ_ISS;
                        novo.DATA_ENTREGA                     = entrega;
                        novo.OBS_ITEM_ORCAMENTO               = item.OBS_ITEM_ORCAMENTO;
                        novo.NUMERO_PEDIDO_VENDA              = 0;
                        novo.NAO_GERAR_PEDIDO                 = 0;
                        novo.PROGRAMACAO_ITEM_ORCAMENTO       = 0;
                        novo.DESCRICAO_PRODUTO_ITEM_ORCAMENTO = item.DESCRICAO_PRODUTO_ITEM_ORCAMENTO.Trim();
                        novo.ITEM_APROVADO                    = item.ITEM_APROVADO;

                        Entidade.InsertOnSubmit(novo);

                        Doran_Base.Auditoria_ERP_Servicos.Doran_Auditoria.Audita_Insert(ctx1, novo, Entidade.ToString(), ID_USUARIO);

                        ctx1.SubmitChanges();

                        GravaCustos(i, item.NUMERO_ITEM, entrega, ID_USUARIO);

                        i++;
                    }
                }
            }

            retorno.Add("TOTAL_ORCAMENTO", Doran_Comercial_Orcamentos.Calcula_Total_Orcamento(NOVO_NUMERO_ORCAMENTO));

            return(retorno);
        }
Пример #12
0
        public static Dictionary <DateTime, decimal> Calcula_Vencimentos_e_Valores(decimal TOTAL_SERVICOS, decimal TOTAL_NF, decimal CODIGO_CP)
        {
            decimal QTDE_PARCELAS     = 0;
            decimal DIAS_PARCELA1_CP  = 0;
            decimal DIAS_PARCELA2_CP  = 0;
            decimal DIAS_PARCELA3_CP  = 0;
            decimal DIAS_PARCELA4_CP  = 0;
            decimal DIAS_PARCELA5_CP  = 0;
            decimal DIAS_PARCELA6_CP  = 0;
            decimal DIAS_PARCELA7_CP  = 0;
            decimal DIAS_PARCELA8_CP  = 0;
            decimal DIAS_PARCELA9_CP  = 0;
            decimal DIAS_PARCELA10_CP = 0;

            using (Doran_ERP_Servicos_DadosDataContext ctx = new Doran_ERP_Servicos_DadosDataContext())
            {
                var query = (from linha in ctx.TB_COND_PAGTOs
                             where linha.CODIGO_CP == CODIGO_CP
                             select linha).ToList();

                foreach (var item in query)
                {
                    QTDE_PARCELAS = (decimal)item.QTDE_PARCELAS_CP;

                    DIAS_PARCELA1_CP  = (decimal)item.DIAS_PARCELA1_CP;
                    DIAS_PARCELA2_CP  = (decimal)item.DIAS_PARCELA2_CP;
                    DIAS_PARCELA3_CP  = (decimal)item.DIAS_PARCELA3_CP;
                    DIAS_PARCELA4_CP  = (decimal)item.DIAS_PARCELA4_CP;
                    DIAS_PARCELA5_CP  = (decimal)item.DIAS_PARCELA5_CP;
                    DIAS_PARCELA6_CP  = (decimal)item.DIAS_PARCELA6_CP;
                    DIAS_PARCELA7_CP  = (decimal)item.DIAS_PARCELA7_CP;
                    DIAS_PARCELA8_CP  = (decimal)item.DIAS_PARCELA8_CP;
                    DIAS_PARCELA9_CP  = (decimal)item.DIAS_PARCELA9_CP;
                    DIAS_PARCELA10_CP = (decimal)item.DIAS_PARCELA10_CP;
                }
            }

            Dictionary <DateTime, decimal> parcelas = new Dictionary <DateTime, decimal>();

            decimal VALOR_PARCELA = 0;

            if (QTDE_PARCELAS > 0)
            {
                VALOR_PARCELA = TOTAL_SERVICOS / QTDE_PARCELAS;
            }

            DateTime venc1 = DateTime.Today.AddDays(1).AddSeconds(-1);

            venc1 = venc1.AddDays((double)DIAS_PARCELA1_CP);

            DateTime vencimento = DateTime.Today;

            DateTime venc2  = DIAS_PARCELA2_CP > 0 ? vencimento.AddDays((double)DIAS_PARCELA2_CP + 1).AddSeconds(-1) : vencimento;
            DateTime venc3  = DIAS_PARCELA3_CP > 0 ? vencimento.AddDays((double)DIAS_PARCELA3_CP + 1).AddSeconds(-1) : vencimento;
            DateTime venc4  = DIAS_PARCELA4_CP > 0 ? vencimento.AddDays((double)DIAS_PARCELA4_CP + 1).AddSeconds(-1) : vencimento;
            DateTime venc5  = DIAS_PARCELA5_CP > 0 ? vencimento.AddDays((double)DIAS_PARCELA5_CP + 1).AddSeconds(-1) : vencimento;
            DateTime venc6  = DIAS_PARCELA6_CP > 0 ? vencimento.AddDays((double)DIAS_PARCELA6_CP + 1).AddSeconds(-1) : vencimento;
            DateTime venc7  = DIAS_PARCELA7_CP > 0 ? vencimento.AddDays((double)DIAS_PARCELA7_CP + 1).AddSeconds(-1) : vencimento;
            DateTime venc8  = DIAS_PARCELA8_CP > 0 ? vencimento.AddDays((double)DIAS_PARCELA8_CP + 1).AddSeconds(-1) : vencimento;
            DateTime venc9  = DIAS_PARCELA9_CP > 0 ? vencimento.AddDays((double)DIAS_PARCELA9_CP + 1).AddSeconds(-1) : vencimento;
            DateTime venc10 = DIAS_PARCELA10_CP > 0 ? vencimento.AddDays((double)DIAS_PARCELA10_CP + 1).AddSeconds(-1) : vencimento;

            parcelas.Add(venc1, VALOR_PARCELA);

            if (QTDE_PARCELAS == 2)
            {
                parcelas.Add(venc2, Diferenca_Parcela(QTDE_PARCELAS, VALOR_PARCELA, TOTAL_NF));
            }
            else if (QTDE_PARCELAS == 3)
            {
                parcelas.Add(venc2, VALOR_PARCELA);
                parcelas.Add(venc3, Diferenca_Parcela(QTDE_PARCELAS, VALOR_PARCELA, TOTAL_NF));
            }
            else if (QTDE_PARCELAS == 4)
            {
                parcelas.Add(venc2, VALOR_PARCELA);
                parcelas.Add(venc3, VALOR_PARCELA);
                parcelas.Add(venc4, Diferenca_Parcela(QTDE_PARCELAS, VALOR_PARCELA, TOTAL_NF));
            }
            else if (QTDE_PARCELAS == 5)
            {
                parcelas.Add(venc2, VALOR_PARCELA);
                parcelas.Add(venc3, VALOR_PARCELA);
                parcelas.Add(venc4, VALOR_PARCELA);
                parcelas.Add(venc5, Diferenca_Parcela(QTDE_PARCELAS, VALOR_PARCELA, TOTAL_NF));
            }
            else if (QTDE_PARCELAS == 6)
            {
                parcelas.Add(venc2, VALOR_PARCELA);
                parcelas.Add(venc3, VALOR_PARCELA);
                parcelas.Add(venc4, VALOR_PARCELA);
                parcelas.Add(venc5, VALOR_PARCELA);
                parcelas.Add(venc6, Diferenca_Parcela(QTDE_PARCELAS, VALOR_PARCELA, TOTAL_NF));
            }
            else if (QTDE_PARCELAS == 7)
            {
                parcelas.Add(venc2, VALOR_PARCELA);
                parcelas.Add(venc3, VALOR_PARCELA);
                parcelas.Add(venc4, VALOR_PARCELA);
                parcelas.Add(venc5, VALOR_PARCELA);
                parcelas.Add(venc6, VALOR_PARCELA);
                parcelas.Add(venc7, Diferenca_Parcela(QTDE_PARCELAS, VALOR_PARCELA, TOTAL_NF));
            }
            else if (QTDE_PARCELAS == 8)
            {
                parcelas.Add(venc2, VALOR_PARCELA);
                parcelas.Add(venc3, VALOR_PARCELA);
                parcelas.Add(venc4, VALOR_PARCELA);
                parcelas.Add(venc5, VALOR_PARCELA);
                parcelas.Add(venc6, VALOR_PARCELA);
                parcelas.Add(venc7, VALOR_PARCELA);
                parcelas.Add(venc8, Diferenca_Parcela(QTDE_PARCELAS, VALOR_PARCELA, TOTAL_NF));
            }
            else if (QTDE_PARCELAS == 9)
            {
                parcelas.Add(venc2, VALOR_PARCELA);
                parcelas.Add(venc3, VALOR_PARCELA);
                parcelas.Add(venc4, VALOR_PARCELA);
                parcelas.Add(venc5, VALOR_PARCELA);
                parcelas.Add(venc6, VALOR_PARCELA);
                parcelas.Add(venc7, VALOR_PARCELA);
                parcelas.Add(venc8, VALOR_PARCELA);
                parcelas.Add(venc9, Diferenca_Parcela(QTDE_PARCELAS, VALOR_PARCELA, TOTAL_NF));
            }
            else if (QTDE_PARCELAS == 10)
            {
                parcelas.Add(venc2, VALOR_PARCELA);
                parcelas.Add(venc3, VALOR_PARCELA);
                parcelas.Add(venc4, VALOR_PARCELA);
                parcelas.Add(venc5, VALOR_PARCELA);
                parcelas.Add(venc6, VALOR_PARCELA);
                parcelas.Add(venc7, VALOR_PARCELA);
                parcelas.Add(venc8, VALOR_PARCELA);
                parcelas.Add(venc9, VALOR_PARCELA);
                parcelas.Add(venc10, Diferenca_Parcela(QTDE_PARCELAS, VALOR_PARCELA, TOTAL_NF));
            }

            return(parcelas);
        }
Пример #13
0
        public string Monta_Vencimentos_NF()
        {
            using (Doran_ERP_Servicos_DadosDataContext ctx = new Doran_ERP_Servicos_DadosDataContext())
            {
                decimal?COBRANCA_ISENTA = 0;

                _NUMERO_SEQ = COBRANCA_ISENTA == 1 ? -1 : _NUMERO_SEQ;

                CultureInfo cultura = CultureInfo.CurrentCulture;
                string[]    dias    = cultura.DateTimeFormat.DayNames;

                var query1 = from linha in ctx.TB_FINANCEIROs
                             where linha.NUMERO_SEQ_NF_SAIDA == _NUMERO_SEQ

                             select new
                {
                    VENCIMENTO = linha.DATA_VENCIMENTO,
                    VALOR      = linha.VALOR_TOTAL
                };

                DataTable dt1 = ApoioXML.ToDataTable(ctx, query1);

                dt1.Columns.Add("DIA");

                foreach (DataRow linha in dt1.Rows)
                {
                    linha["DIA"] = dias[(int)((DateTime)linha["VENCIMENTO"]).DayOfWeek].ToUpper();
                }

                string retorno = "";

                if (dt1.Rows.Count > 0)
                {
                    System.IO.StringWriter tr = new System.IO.StringWriter();
                    dt1.WriteXml(tr);

                    retorno = tr.ToString();
                }
                else
                {
                    decimal TOTAL_NF       = 0;
                    decimal CODIGO_CP      = 0;
                    decimal TOTAL_PRODUTOS = 0;

                    var query = (from nota in ctx.GetTable <TB_NOTA_SAIDA>()
                                 where nota.NUMERO_SEQ == _NUMERO_SEQ
                                 select new
                    {
                        nota.CODIGO_CP_NF,
                        nota.TOTAL_NF,
                        nota.TOTAL_SERVICOS_NF
                    }).ToList();

                    foreach (var item in query)
                    {
                        TOTAL_PRODUTOS = item.TOTAL_SERVICOS_NF.Value;
                        TOTAL_NF       = item.TOTAL_NF.Value;
                        CODIGO_CP      = item.CODIGO_CP_NF.Value;
                    }

                    Dictionary <DateTime, decimal> Parcelas = Calcula_Vencimentos_e_Valores(TOTAL_PRODUTOS, TOTAL_NF, CODIGO_CP);

                    if (COBRANCA_ISENTA == 1)
                    {
                        Parcelas.Clear();
                    }

                    DataTable dt = new DataTable("Tabela");

                    dt.Columns.Add("VENCIMENTO", typeof(DateTime));
                    dt.Columns.Add("DIA", typeof(string));
                    dt.Columns.Add("VALOR", typeof(decimal));

                    foreach (DateTime key in Parcelas.Keys)
                    {
                        if (query.First().TOTAL_NF > (decimal)0.00)
                        {
                            DataRow nova = dt.NewRow();
                            nova[0] = key;
                            nova[1] = dias[(int)((DateTime)key).DayOfWeek].ToUpper();
                            nova[2] = Parcelas[key];
                            dt.Rows.Add(nova);
                        }
                    }

                    System.IO.StringWriter tr = new System.IO.StringWriter();
                    dt.WriteXml(tr);

                    retorno = tr.ToString();
                }

                return(retorno);
            }
        }
Пример #14
0
        private void Gerar_Contas_a_Receber(Doran_ERP_Servicos_DadosDataContext ctx)
        {
            var query1 = (from item in ctx.TB_FINANCEIROs
                          where item.NUMERO_SEQ_NF_SAIDA == _NUMERO_SEQ
                          select item).ToList();

            foreach (var linha in query1)
            {
                ctx.TB_FINANCEIROs.DeleteOnSubmit(linha);
                Doran_Base.Auditoria_ERP_Servicos.Doran_Auditoria.Audita_Delete(ctx, linha, ctx.TB_FINANCEIROs.ToString(), ID_USUARIO);
            }

            ctx.SubmitChanges();

            var query = (from nota in ctx.TB_NOTA_SAIDAs
                         where nota.NUMERO_SEQ == _NUMERO_SEQ
                         select new
            {
                nota.CODIGO_CLIENTE_NF,
                nota.TOTAL_NF,
                nota.TOTAL_SERVICOS_NF,
                nota.TB_COND_PAGTO.CODIGO_CP,
                nota.TB_COND_PAGTO.DIAS_PARCELA1_CP,
                nota.TB_COND_PAGTO.DIAS_PARCELA2_CP,
                nota.TB_COND_PAGTO.DIAS_PARCELA3_CP,
                nota.TB_COND_PAGTO.DIAS_PARCELA4_CP,
                nota.TB_COND_PAGTO.DIAS_PARCELA5_CP,
                nota.TB_COND_PAGTO.DIAS_PARCELA6_CP,
                nota.TB_COND_PAGTO.DIAS_PARCELA7_CP,
                nota.TB_COND_PAGTO.DIAS_PARCELA8_CP,
                nota.TB_COND_PAGTO.DIAS_PARCELA9_CP,
                nota.TB_COND_PAGTO.DIAS_PARCELA10_CP,
                nota.TB_COND_PAGTO.QTDE_PARCELAS_CP
            }).ToList();

            foreach (var item in query)
            {
                if (item.QTDE_PARCELAS_CP == 1)
                {
                    Table <TB_FINANCEIRO> Entidade = ctx.GetTable <TB_FINANCEIRO>();

                    TB_FINANCEIRO novo   = new TB_FINANCEIRO();
                    DateTime      VENCTO = DateTime.Today;
                    VENCTO = VENCTO.AddDays(1);
                    VENCTO = VENCTO.AddSeconds(-1);
                    VENCTO = VENCTO.AddDays((double)item.DIAS_PARCELA1_CP);

                    novo.DATA_LANCAMENTO       = DateTime.Now;
                    novo.DATA_VENCIMENTO       = VENCTO;
                    novo.DATA_PAGAMENTO        = new DateTime(1901, 1, 1);
                    novo.NUMERO_SEQ_NF_ENTRADA = 0;
                    novo.NUMERO_SEQ_NF_SAIDA   = _NUMERO_SEQ;
                    novo.CODIGO_CLIENTE        = item.CODIGO_CLIENTE_NF;
                    novo.CODIGO_FORNECEDOR     = 0;
                    novo.HISTORICO             = string.Format("NOTA FISCAL: {0} - CLIENTE: {1} - VENDEDOR: {2}", _NUMERO_NF, _CLIENTE.Trim(), _VENDEDOR.Trim());
                    novo.VALOR             = item.TOTAL_NF;
                    novo.VALOR_DESCONTO    = 0;
                    novo.VALOR_ACRESCIMO   = 0;
                    novo.VALOR_TOTAL       = item.TOTAL_NF;
                    novo.CREDITO_DEBITO    = 0;
                    novo.NUMERO_NF_SAIDA   = _NUMERO_NF;
                    novo.NUMERO_NF_ENTRADA = 0;
                    novo.VALOR_MULTA       = 0;
                    novo.PERC_JUROS_DIA    = 0;
                    novo.CODIGO_EMITENTE   = ID_EMPRESA;
                    novo.ID_PLANO          = "5.1.1.001";
                    novo.VALOR_APROXIMADO  = 0;

                    novo.MARCA_REMESSA         = 0;
                    novo.REMESSA               = 0;
                    novo.RETORNO               = 0;
                    novo.NUMERO_BANCO          = 0;
                    novo.INSTRUCAO_REMESSA     = 0;
                    novo.NOSSO_NUMERO_BANCARIO = string.Empty;

                    Entidade.InsertOnSubmit(novo);

                    Doran_Base.Auditoria_ERP_Servicos.Doran_Auditoria.Audita_Insert(ctx, novo, Entidade.ToString(), ID_USUARIO);

                    ctx.SubmitChanges();
                }
                else
                {
                    Dictionary <DateTime, decimal> Parcelas =
                        Calcula_Vencimentos_e_Valores(item.TOTAL_SERVICOS_NF.Value, item.TOTAL_NF.Value, item.CODIGO_CP);

                    foreach (DateTime key in Parcelas.Keys)
                    {
                        Table <TB_FINANCEIRO> Entidade = ctx.GetTable <TB_FINANCEIRO>();

                        TB_FINANCEIRO novo = new TB_FINANCEIRO();

                        novo.DATA_LANCAMENTO       = DateTime.Now;
                        novo.DATA_VENCIMENTO       = key;
                        novo.DATA_PAGAMENTO        = new DateTime(1901, 1, 1);
                        novo.NUMERO_SEQ_NF_ENTRADA = 0;
                        novo.NUMERO_SEQ_NF_SAIDA   = _NUMERO_SEQ;
                        novo.CODIGO_CLIENTE        = item.CODIGO_CLIENTE_NF;
                        novo.CODIGO_FORNECEDOR     = 0;
                        novo.HISTORICO             = string.Format("NOTA FISCAL: {0} - CLIENTE: {1} - VENDEDOR: {2}", _NUMERO_NF, _CLIENTE.Trim(), _VENDEDOR.Trim());
                        novo.VALOR             = Parcelas[key];
                        novo.VALOR_DESCONTO    = 0;
                        novo.VALOR_ACRESCIMO   = 0;
                        novo.VALOR_TOTAL       = Parcelas[key];
                        novo.CREDITO_DEBITO    = 0;
                        novo.NUMERO_NF_SAIDA   = _NUMERO_NF;
                        novo.NUMERO_NF_ENTRADA = 0;
                        novo.VALOR_MULTA       = 0;
                        novo.PERC_JUROS_DIA    = 0;
                        novo.CODIGO_EMITENTE   = ID_EMPRESA;
                        novo.ID_PLANO          = "5.1.1.001";

                        novo.VALOR_APROXIMADO      = 0;
                        novo.MARCA_REMESSA         = 0;
                        novo.REMESSA               = 0;
                        novo.RETORNO               = 0;
                        novo.NUMERO_BANCO          = 0;
                        novo.INSTRUCAO_REMESSA     = 0;
                        novo.NOSSO_NUMERO_BANCARIO = string.Empty;

                        Entidade.InsertOnSubmit(novo);

                        Doran_Base.Auditoria_ERP_Servicos.Doran_Auditoria.Audita_Insert(ctx, novo, Entidade.ToString(), ID_USUARIO);

                        ctx.SubmitChanges();
                    }
                }
            }
        }
Пример #15
0
        public void AtualizaFOLLOW_UP(Dictionary <string, object> dados, List <string> DESTINATARIOS, decimal ID_USUARIO, string LOGIN_USUARIO)
        {
            try
            {
                using (Doran_ERP_Servicos_DadosDataContext ctx = new Doran_ERP_Servicos_DadosDataContext())
                {
                    object[] items = (object[])dados["NUMERO_ITENS"];

                    string CLIENTE        = "";
                    string CODIGO_PRODUTO = "";

                    for (int i = 0; i < items.Count(); i++)
                    {
                        var query1 = (from linha in ctx.TB_PEDIDO_VENDAs
                                      where linha.NUMERO_PEDIDO == Convert.ToDecimal(dados["NUMERO_PEDIDO"]) &&
                                      linha.NUMERO_ITEM == Convert.ToDecimal(items.GetValue(i))
                                      select new
                        {
                            linha.TB_ITEM_ORCAMENTO_VENDA.TB_ORCAMENTO_VENDA.TB_CLIENTE.NOMEFANTASIA_CLIENTE,
                            linha.CODIGO_PRODUTO_PEDIDO
                        }).ToList();

                        foreach (var item in query1)
                        {
                            CLIENTE         = item.NOMEFANTASIA_CLIENTE.Trim();
                            CODIGO_PRODUTO += string.Concat("[", item.CODIGO_PRODUTO_PEDIDO.Trim(), "]");
                        }

                        var query = (from item in ctx.TB_FOLLOW_UP_ITEM_PEDIDOs
                                     where item.NUMERO_FOLLOW_UP == Convert.ToDecimal(dados["NUMERO_FOLLOW_UP"]) &&
                                     item.NUMERO_ITEM == Convert.ToDecimal(items.GetValue(i))
                                     select item).ToList();

                        foreach (var uf in query)
                        {
                            uf.ID_USUARIO_FOLLOW_UP = ID_USUARIO;
                            uf.DATA_HORA_FOLLOW_UP  = DateTime.Now;
                            uf.TEXTO_FOLLOW_UP      = dados["TEXTO_FOLLOW_UP"].ToString();

                            Doran_Base.Auditoria_ERP_Servicos.Doran_Auditoria.Audita_Update_PEDIDO_VENDA(ctx, ctx.TB_FOLLOW_UP_ITEM_PEDIDOs.GetModifiedMembers(uf),
                                                                                                         ctx.TB_FOLLOW_UP_ITEM_PEDIDOs.ToString(), uf.NUMERO_PEDIDO, ID_USUARIO);

                            ctx.SubmitChanges();
                        }
                    }

                    if (DESTINATARIOS.Count > 0)
                    {
                        using (Doran_Email_Posicao_Pedido email = new Doran_Email_Posicao_Pedido(ID_USUARIO))
                        {
                            string _OBS = string.Concat(LOGIN_USUARIO.ToUpper(), " salvou uma nova mensagem de Follow Up no item do pedido ", dados["NUMERO_PEDIDO"].ToString(),
                                                        "<br /><br />", dados["TEXTO_FOLLOW_UP"].ToString(), "<br /><br />",
                                                        dados["ASSINATURA"].ToString());

                            email.NUMERO_PEDIDO  = Convert.ToDecimal(dados["NUMERO_PEDIDO"]);
                            email.CLIENTE        = CLIENTE;
                            email.CODIGO_PRODUTO = CODIGO_PRODUTO;
                            email.HISTORICO      = _OBS;
                            email.DESTINATARIOS  = DESTINATARIOS;
                            email.ID_CONTA_EMAIL = Convert.ToDecimal(dados["ID_CONTA_EMAIL"]);
                            email.FROM_ADDRESS   = dados["FROM_ADDRESS"].ToString();

                            email.Envia_Email_Posicao_Pedido();
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Doran_Base.Auditoria_ERP_Servicos.Doran_Exception.GravaErro(ex, ID_USUARIO);
                throw ex;
            }
        }
Пример #16
0
        public string BuscaUltimoPreco(Dictionary <string, object> dados)
        {
            try
            {
                string retorno = "";

                if (dados["CLIENTE_FORNECEDOR"].ToString() == "C")
                {
                    using (Doran_ERP_Servicos_DadosDataContext ctx = new Doran_ERP_Servicos_DadosDataContext())
                    {
                        var query = from linha in ctx.TB_ITEM_NOTA_SAIDAs
                                    where linha.CODIGO_PRODUTO_ITEM_NF == dados["CODIGO_PRODUTO"].ToString() &&
                                    linha.TB_NOTA_SAIDA.DATA_EMISSAO_NF >= Convert.ToDateTime(dados["DATA_EMISSAO"]) &&
                                    linha.TB_NOTA_SAIDA.NOME_FANTASIA_CLIENTE_NF.Contains(dados["NOME_CLIENTE"].ToString())
                                    orderby linha.CODIGO_PRODUTO_ITEM_NF, linha.TB_NOTA_SAIDA.DATA_EMISSAO_NF descending
                            select new
                        {
                            linha.NUMERO_ITEM_NF,
                            linha.CODIGO_PRODUTO_ITEM_NF,
                            linha.DESCRICAO_PRODUTO_ITEM_NF,
                            linha.UNIDADE_MEDIDA_ITEM_NF,
                            linha.QTDE_ITEM_NF,
                            linha.VALOR_UNITARIO_ITEM_NF,
                            linha.VALOR_TOTAL_ITEM_NF,
                            DATA_EMISSAO = linha.TB_NOTA_SAIDA.DATA_EMISSAO_NF,
                            NOME_CLIENTE = linha.TB_NOTA_SAIDA.NOME_FANTASIA_CLIENTE_NF
                        };

                        var rowCount = query.Count();

                        query = query.Skip(Convert.ToInt32(dados["start"])).Take(Convert.ToInt32(dados["limit"]));

                        retorno = ApoioXML.objQueryToXML(ctx, query, rowCount);
                    }
                }
                else
                {
                    using (Doran_ERP_Servicos_DadosDataContext ctx = new Doran_ERP_Servicos_DadosDataContext())
                    {
                        var query = from linha in ctx.TB_ITEM_NOTA_ENTRADAs
                                    where linha.CODIGO_PRODUTO_ITEM_NFE == dados["CODIGO_PRODUTO"].ToString() &&
                                    linha.TB_NOTA_ENTRADA.DATA_EMISSAO_NFE >= Convert.ToDateTime(dados["DATA_EMISSAO"]) &&
                                    linha.TB_NOTA_ENTRADA.TB_FORNECEDOR.NOME_FANTASIA_FORNECEDOR.Contains(dados["NOME_CLIENTE"].ToString())
                                    orderby linha.CODIGO_PRODUTO_ITEM_NFE, linha.TB_NOTA_ENTRADA.DATA_EMISSAO_NFE descending
                            select new
                        {
                            NUMERO_ITEM_NF            = linha.NUMERO_SEQ_ITEM_NFE,
                            CODIGO_PRODUTO_ITEM_NF    = linha.CODIGO_PRODUTO_ITEM_NFE,
                            DESCRICAO_PRODUTO_ITEM_NF = linha.DESCRICAO_PRODUTO_ITEM_NFE,
                            CODIGO_CFOP_ITEM_NF       = linha.CODIGO_CFOP_ITEM_NFE,
                            QTDE_ITEM_NF           = linha.QTDE_ITEM_NFE,
                            VALOR_UNITARIO_ITEM_NF = linha.VALOR_UNITARIO_ITEM_NFE,
                            VALOR_TOTAL_ITEM_NF    = linha.VALOR_TOTAL_ITEM_NFE,
                            CODIGO_ITEM_CLIENTE    = "",
                            DATA_EMISSAO           = linha.TB_NOTA_ENTRADA.DATA_EMISSAO_NFE,
                            NOME_CLIENTE           = linha.TB_NOTA_ENTRADA.TB_FORNECEDOR.NOME_FANTASIA_FORNECEDOR,
                            NUMERO_LOTE_ITEM_NF    = linha.NUMERO_LOTE_ITEM_NFE
                        };

                        var rowCount = query.Count();

                        query = query.Skip(Convert.ToInt32(dados["start"])).Take(Convert.ToInt32(dados["limit"]));

                        retorno = ApoioXML.objQueryToXML(ctx, query, rowCount);
                    }
                }

                return(retorno);
            }
            catch (Exception ex)
            {
                Doran_Base.Auditoria_ERP_Servicos.Doran_Exception.GravaErro(ex, Convert.ToDecimal(dados["ID_USUARIO"]));
                throw ex;
            }
        }
Пример #17
0
        private StringBuilder SetaVariaveisOrcamento(StringBuilder html, bool PRIMEIRA_PAGINA)
        {
            html = html.Replace("#NUMERO_ORCAMENTO#", _NUMERO_ORCAMENTO.ToString());
            html = html.Replace("#PAGINA#", (PAGINA + 1).ToString());
            html = html.Replace("#DATA_EMISSAO#", string.Concat(DateTime.Today.Day.ToString().PadLeft(2, '0'), "/",
                                                                DateTime.Today.Month.ToString().PadLeft(2, '0'), "/", DateTime.Today.Year.ToString()));

            decimal FATURAMENTO_MINIMO = 0;

            using (Doran_ERP_Servicos_DadosDataContext ctx1 = new Doran_ERP_Servicos_DadosDataContext())
            {
                var query = (from linha in ctx1.TB_CONFIG_VENDAs
                             where linha.ID_CONFIGURACAO_VENDAS == 1
                             select linha).ToList();

                foreach (var item in query)
                {
                    html = html.Replace("#LOGOTIPO#",
                                        "<img src='" + ConfigurationManager.AppSettings["PastaVirtual"] + item.LOGOTIPO_ORCAMENTO_VENDAS.Trim() + "'>");
                    FATURAMENTO_MINIMO = (decimal)item.VALOR_FATURAMENTO_MINIMO;
                }
            }

            if (PRIMEIRA_PAGINA)
            {
                using (Doran_ERP_Servicos_DadosDataContext ctx = new Doran_ERP_Servicos_DadosDataContext())
                {
                    var query1 = (from linha1 in ctx.TB_EMITENTEs
                                  where linha1.CODIGO_EMITENTE == ID_EMPRESA
                                  select linha1).ToList();

                    foreach (var item in query1)
                    {
                        html = html.Replace("#RAZAO_SOCIAL_EMITENTE#", item.NOME_EMITENTE.Trim());
                        html = html.Replace("#CNPJ_EMITENTE#", item.CNPJ_EMITENTE.Trim());
                        html = html.Replace("#IE_EMITENTE#", item.IE_EMITENTE.Trim());

                        html = html.Replace("#ENDERECO_EMITENTE#",
                                            string.Format("{0}, {1} {2}", item.ENDERECO_EMITENTE.Trim(), item.NUMERO_END_EMITENTE.Trim(),
                                                          item.COMPLEMENTO_END_EMITENTE.Trim()));

                        html = html.Replace("#CIDADE_EMITENTE#", item.TB_MUNICIPIO.NOME_MUNICIPIO.Trim());
                        html = html.Replace("#ESTADO_EMITENTE#", item.TB_MUNICIPIO.TB_UF.SIGLA_UF);
                        html = html.Replace("#PAIS_EMITENTE#", "BRASIL");

                        html = html.Replace("#CEP_EMITENTE#", item.CEP_EMITENTE.Trim());
                        html = html.Replace("#TELEFONE_EMITENTE#", item.TELEFONE_EMITENTE.Trim());
                        html = html.Replace("#FAX_EMITENTE#", item.FAX_EMITENTE.Trim());
                        html = html.Replace("#SITE#", item.SITE_EMITENTE.Trim());
                    }

                    var query = (from linha in ctx.TB_ORCAMENTO_VENDAs
                                 where linha.NUMERO_ORCAMENTO == _NUMERO_ORCAMENTO
                                 select linha).ToList();

                    foreach (var item in query)
                    {
                        html = html.Replace("#VENDEDOR#", string.Concat(item.TB_VENDEDORE.NOME_VENDEDOR.Trim(), " - <b>Tel.:</b>", item.TB_VENDEDORE.CELULAR_VENDEDOR.Trim()));
                        html = html.Replace("#EMAIL_VENDEDOR#", item.TB_VENDEDORE.EMAIL_VENDEDOR.Trim().ToLower());

                        html = html.Replace("#CODIGO_CLIENTE#", item.CODIGO_CLIENTE_ORCAMENTO.ToString());
                        html = html.Replace("#NOME_CLIENTE#", item.TB_CLIENTE.NOME_CLIENTE);
                        html = html.Replace("#ENDERECO_CLIENTE#", string.Concat(item.TB_CLIENTE.ENDERECO_FATURA.Trim(), " ",
                                                                                item.TB_CLIENTE.NUMERO_END_FATURA.Trim(), " ", item.TB_CLIENTE.COMP_END_FATURA.Trim()));

                        html = html.Replace("#CIDADE_CLIENTE#", item.TB_CLIENTE.TB_MUNICIPIO.NOME_MUNICIPIO.Trim());
                        html = html.Replace("#ESTADO_CLIENTE#", item.TB_CLIENTE.TB_MUNICIPIO.TB_UF.SIGLA_UF.Trim());
                        html = html.Replace("#CEP_CLIENTE#", item.TB_CLIENTE.CEP_FATURA.Trim());
                        html = html.Replace("#CNPJ_CLIENTE#", item.TB_CLIENTE.CNPJ_CLIENTE.Trim());
                        html = html.Replace("#IE_CLIENTE#", item.TB_CLIENTE.IE_CLIENTE.Trim());
                        html = html.Replace("#CONTATO_CLIENTE#", item.CONTATO_ORCAMENTO.Trim());
                        html = html.Replace("#TELEFONE_CLIENTE#", item.TELEFONE_CONTATO.Trim());
                        html = html.Replace("#EMAIL_CLIENTE#", item.EMAIL_CONTATO.ToLower().Trim());

                        html = html.Replace("#CONDICAO_PAGAMENTO#", item.TB_COND_PAGTO.DESCRICAO_CP.Trim());

                        html = html.Replace("#VALIDADE_ORCAMENTO#", ApoioXML.TrataData2(item.VALIDADE_ORCAMENTO));
                        html = html.Replace("#FATURAMENTO_MINIMO#", FATURAMENTO_MINIMO.ToString("c"));
                        html = html.Replace("#OBS#", item.OBS_ORCAMENTO.Trim());
                    }
                }
            }

            return(html);
        }
Пример #18
0
        public static Dictionary <string, string> Creditos_do_Cliente(decimal CODIGO_CLIENTE, string DataInicial, string DataFinal, decimal ID_EMPRESA)
        {
            DateTime dt1 = Convert.ToDateTime(DataInicial);
            DateTime dt2 = Convert.ToDateTime(DataFinal);

            dt2 = dt2.AddDays(1);

            Dictionary <string, string> retorno = new Dictionary <string, string>();

            using (Doran_ERP_Servicos_DadosDataContext ctx = new Doran_ERP_Servicos_DadosDataContext())
            {
                var faturamento = (from linha in ctx.TB_NOTA_SAIDAs
                                   where linha.CODIGO_CLIENTE_NF == CODIGO_CLIENTE &&
                                   (linha.DATA_EMISSAO_NF >= dt1 &&
                                    linha.DATA_EMISSAO_NF < dt2) &&
                                   (linha.STATUS_NF == 2 || linha.STATUS_NF == 4)

                                   select linha).Sum(fat => fat.TOTAL_NF);

                if (faturamento.HasValue)
                {
                    retorno.Add("Faturamento", ((decimal)faturamento).ToString("c", CultureInfo.CurrentCulture));
                }
                else
                {
                    retorno.Add("Faturamento", 0.ToString("c", CultureInfo.CurrentCulture));
                }

                DateTime amanha = DateTime.Today;
                amanha = amanha.AddDays(1);

                var aReceber = (from linha in ctx.TB_FINANCEIROs
                                where linha.CODIGO_CLIENTE == CODIGO_CLIENTE &&
                                linha.DATA_VENCIMENTO >= amanha &&
                                linha.DATA_PAGAMENTO == new DateTime(1901, 01, 01) &&
                                linha.CREDITO_DEBITO == 0

                                select linha).Sum(ar => ar.VALOR_TOTAL);

                if (aReceber.HasValue)
                {
                    retorno.Add("aReceber", ((decimal)aReceber).ToString("c", CultureInfo.CurrentCulture));
                }
                else
                {
                    retorno.Add("aReceber", 0.ToString("c", CultureInfo.CurrentCulture));
                }


                var Recebido = (from linha in ctx.TB_FINANCEIROs
                                where linha.CODIGO_CLIENTE == CODIGO_CLIENTE &&
                                (linha.DATA_PAGAMENTO >= dt1 &&
                                 linha.DATA_PAGAMENTO < dt2) &&
                                linha.CREDITO_DEBITO == 0

                                select linha).Sum(pa => pa.VALOR_TOTAL);

                if (Recebido.HasValue)
                {
                    retorno.Add("Recebido", ((decimal)Recebido).ToString("c", CultureInfo.CurrentCulture));
                }
                else
                {
                    retorno.Add("Recebido", 0.ToString("c", CultureInfo.CurrentCulture));
                }

                decimal Inadimplente = Doran_TitulosVencidos.TotalVencidos(Vencidos.RECEBER, CODIGO_CLIENTE, ID_EMPRESA);

                if (Inadimplente > (decimal)0.00)
                {
                    retorno.Add("Inadimplente", "<span style='color: red;'>" + Inadimplente.ToString("c", CultureInfo.CurrentCulture) + "</span>");
                }
                else
                {
                    retorno.Add("Inadimplente", "<span>" + Inadimplente.ToString("c", CultureInfo.CurrentCulture) + "</span>");
                }

                var limiteCliente = (from linha in ctx.TB_CLIENTEs
                                     where linha.ID_CLIENTE == CODIGO_CLIENTE
                                     select new
                {
                    linha.TB_LIMITE.VALOR_LIMITE
                }).ToList();

                decimal _limiteCliente = 0;

                foreach (var item in limiteCliente)
                {
                    _limiteCliente = (decimal)item.VALOR_LIMITE;
                }

                var EmAberto = (from linha in ctx.TB_FINANCEIROs
                                where linha.CODIGO_CLIENTE == CODIGO_CLIENTE &&
                                linha.DATA_PAGAMENTO == new DateTime(1901, 01, 01) &&
                                linha.CREDITO_DEBITO == 0

                                select linha).Sum(ab => ab.VALOR_TOTAL);

                if (EmAberto > _limiteCliente)
                {
                    EmAberto = EmAberto - _limiteCliente;
                }
                else
                {
                    EmAberto = 0;
                }

                EmAberto += Doran_Limite_Credito_Cliente.Limite_Excedido_Cliente(CODIGO_CLIENTE);

                if (EmAberto > (decimal)0.00)
                {
                    retorno.Add("Excedido", "<span style='color: red;'>" + ((decimal)EmAberto).ToString("c", CultureInfo.CurrentCulture) + "</span>");
                }
                else
                {
                    retorno.Add("Excedido", ((decimal)EmAberto).ToString("c", CultureInfo.CurrentCulture));
                }

                var Abatimentos = (from linha in ctx.GetTable <TB_SALDO_CLIENTE_FORNECEDOR>()
                                   orderby linha.CODIGO_CLIENTE, linha.SALDO_RESTANTE

                                   where linha.CODIGO_CLIENTE == CODIGO_CLIENTE &&
                                   linha.SALDO_RESTANTE > (decimal)0.00

                                   select linha).Sum(a => a.SALDO_RESTANTE);

                if (Abatimentos.HasValue)
                {
                    retorno.Add("Abatimentos", "<span style='color: navy;'>" + ((decimal)Abatimentos).ToString("c", CultureInfo.CurrentCulture) + "</span>");
                }
                else
                {
                    retorno.Add("Abatimentos", ((decimal)0.00).ToString("c", CultureInfo.CurrentCulture));
                }

                // Data e Valor da Ultima Compra

                var ultimaCompra = (from linha in ctx.TB_NOTA_SAIDAs
                                    orderby linha.CODIGO_CLIENTE_NF, linha.DATA_EMISSAO_NF descending
                                    where linha.CODIGO_CLIENTE_NF == CODIGO_CLIENTE &&
                                    linha.STATUS_NF == 4
                                    select new { linha.DATA_EMISSAO_NF, linha.TOTAL_SERVICOS_NF }).Take(1).ToList();

                if (ultimaCompra.Any())
                {
                    foreach (var item in ultimaCompra)
                    {
                        retorno.Add("data_ultima_compra", ApoioXML.TrataData2(item.DATA_EMISSAO_NF));
                        retorno.Add("valor_ultima_compra", ((decimal)item.TOTAL_SERVICOS_NF).ToString("c"));
                    }
                }
                else
                {
                    retorno.Add("data_ultima_compra", "");
                    retorno.Add("valor_ultima_compra", ((decimal)0.00).ToString("c"));
                }

                // Maior compra

                var maiorCompra = (from linha in ctx.TB_NOTA_SAIDAs
                                   orderby linha.CODIGO_CLIENTE_NF, linha.DATA_EMISSAO_NF
                                   where linha.CODIGO_CLIENTE_NF == CODIGO_CLIENTE &&
                                   linha.STATUS_NF == 4
                                   select linha).Max(m => m.TOTAL_SERVICOS_NF);

                retorno.Add("maior_compra", maiorCompra.HasValue ? ((decimal)maiorCompra).ToString("c") : ((decimal)0.00).ToString("c"));

                return(retorno);
            }
        }
Пример #19
0
        public List <string> Gera_Nota_Entrada(decimal NUMERO_NFE, decimal ID_EMPRESA)
        {
            List <string>  retorno      = new List <string>();
            List <decimal> items_compra = new List <decimal>();

            using (Doran_ERP_Servicos_DadosDataContext ctx = new Doran_ERP_Servicos_DadosDataContext())
            {
                var fornecedores = (from linha in ctx.TB_PEDIDO_COMPRAs
                                    orderby linha.ID_USUARIO_QTDE_NF, linha.QTDE_NF_ITEM_COMPRA

                                    where linha.ID_USUARIO_QTDE_NF == ID_USUARIO &&
                                    linha.QTDE_NF_ITEM_COMPRA > (decimal)0.000

                                    select linha.CODIGO_FORNECEDOR).ToList();

                if (fornecedores.Distinct().Count() > 1)
                {
                    throw new Exception("H&aacute; fornecedores diferentes na sele&ccedil;&atilde;o de itens para gerar a nota.");
                }

                var pedido = (from linha in ctx.TB_PEDIDO_COMPRAs
                              orderby linha.ID_USUARIO_QTDE_NF, linha.QTDE_NF_ITEM_COMPRA
                              where linha.ID_USUARIO_QTDE_NF == ID_USUARIO &&
                              linha.QTDE_NF_ITEM_COMPRA > (decimal)0.000
                              select linha).ToList().First();

                decimal NUMERO_SEQ = 0;

                using (Doran_Nota_Entrada nota = new Doran_Nota_Entrada(ID_EMPRESA, ID_USUARIO))
                {
                    Dictionary <string, object> dados = new Dictionary <string, object>();

                    dados.Add("NUMERO_NFE", NUMERO_NFE);
                    dados.Add("SERIE_NFE", "");

                    dados.Add("DATA_EMISSAO_NFE", DateTime.Today.ToShortDateString());
                    dados.Add("DATA_CHEGADA_NFE", DateTime.Today.ToShortDateString());

                    dados.Add("CODIGO_FORNECEDOR", pedido.CODIGO_FORNECEDOR);
                    dados.Add("CODIGO_CP_NFE", pedido.CODIGO_CP_COTACAO_FORNECEDOR);
                    dados.Add("GERA_COBRANCA_NFE", 1);
                    dados.Add("CODIGO_CFOP_NFE", pedido.CODIGO_CFOP_ITEM_COMPRA.Trim());

                    dados.Add("BASE_ICMS_NFE", 0);
                    dados.Add("VALOR_ICMS_NFE", 0);
                    dados.Add("BASE_ICMS_SUBS_NFE", 0);
                    dados.Add("VALOR_ICMS_SUBS_NFE", 0);
                    dados.Add("TOTAL_PRODUTOS_NFE", 0);
                    dados.Add("VALOR_FRETE_NFE", 0);
                    dados.Add("VALOR_SEGURO_NFE", 0);
                    dados.Add("OUTRAS_DESP_NFE", 0);
                    dados.Add("TOTAL_IPI_NFE", 0);
                    dados.Add("TOTAL_NFE", 0);
                    dados.Add("OBS_NFE", "");

                    dados.Add("FRETE_NFE", pedido.FRETE_COTACAO_FORNECEDOR);

                    dados.Add("PESO_LIQUIDO_NFE", 0);
                    dados.Add("PESO_BRUTO_NFE", 0);

                    NUMERO_SEQ = nota.Grava_Nota_Entrada(dados);
                }

                var query = (from linha in ctx.TB_PEDIDO_COMPRAs
                             orderby linha.ID_USUARIO_QTDE_NF, linha.QTDE_NF_ITEM_COMPRA
                             where linha.ID_USUARIO_QTDE_NF == ID_USUARIO &&
                             linha.QTDE_NF_ITEM_COMPRA > (decimal)0.000
                             select linha).ToList();

                foreach (var item in query)
                {
                    using (Doran_Calculo_Nota_Entrada items = new Doran_Calculo_Nota_Entrada(NUMERO_SEQ, ID_USUARIO))
                    {
                        Dictionary <string, object> dados = new Dictionary <string, object>();

                        decimal?PRECO_FINAL = item.TIPO_DESCONTO_ITEM_COMPRA == 0 ?
                                              item.PRECO_ITEM_COMPRA * (1 - (item.VALOR_DESCONTO_ITEM_COMPRA / 100)) :
                                              item.PRECO_ITEM_COMPRA - item.VALOR_DESCONTO_ITEM_COMPRA;

                        decimal VALOR_IPI = Math.Round(((decimal)PRECO_FINAL * (decimal)item.QTDE_NF_ITEM_COMPRA) * ((decimal)item.ALIQ_IPI_ITEM_COMPRA / 100), 2);

                        dados.Add("CODIGO_CFOP_ITEM_NFE", item.CODIGO_CFOP_ITEM_COMPRA.Trim());

                        dados.Add("VALOR_TOTAL_ITEM_NFE", Math.Round((decimal)item.QTDE_NF_ITEM_COMPRA * (decimal)PRECO_FINAL, 2));

                        dados.Add("ALIQ_IPI_ITEM_NFE", item.ALIQ_IPI_ITEM_COMPRA);
                        dados.Add("ALIQ_ICMS_ITEM_NFE", item.ALIQ_ICMS_ITEM_COMPRA);

                        dados.Add("BASE_ICMS_SUBS_ITEM_NFE", item.BASE_ICMS_ST_ITEM_COMPRA);
                        dados.Add("VALOR_ICMS_SUBS_ITEM_NFE", item.VALOR_ICMS_ST_ITEM_COMPRA);

                        dados.Add("ID_PRODUTO", item.ID_PRODUTO_COMPRA);
                        dados.Add("CODIGO_PRODUTO_ITEM_NFE", item.CODIGO_PRODUTO_COMPRA.Trim());
                        dados.Add("DESCRICAO_PRODUTO_ITEM_NFE", item.TB_PRODUTO.DESCRICAO_PRODUTO.Trim());
                        dados.Add("QTDE_ITEM_NFE", item.QTDE_NF_ITEM_COMPRA);

                        dados.Add("VALOR_UNITARIO_ITEM_NFE", PRECO_FINAL);

                        dados.Add("PERC_IVA_ITEM_NFE", 0);

                        dados.Add("NUMERO_LOTE_ITEM_NFE", Busca_Lote_Recebimento(item.NUMERO_PEDIDO_COMPRA, item.NUMERO_ITEM_COMPRA, NUMERO_NFE,
                                                                                 item.CODIGO_PRODUTO_COMPRA.Trim()));

                        dados.Add("NUMERO_PEDIDO_COMPRA", item.NUMERO_PEDIDO_COMPRA);
                        dados.Add("NUMERO_ITEM_COMPRA", item.NUMERO_ITEM_COMPRA);

                        items.Calcula_e_Grava_Item_Nota_Entrada(dados);

                        item.QTDE_NF_ITEM_COMPRA = 0;
                        item.ID_USUARIO_QTDE_NF  = 0;

                        Doran_Base.Auditoria_ERP_Servicos.Doran_Auditoria.Audita_Update(ctx, ctx.TB_PEDIDO_COMPRAs.GetModifiedMembers(item),
                                                                                        ctx.TB_PEDIDO_COMPRAs.ToString(), ID_USUARIO);

                        items_compra.Add(item.NUMERO_ITEM_COMPRA);
                    }
                }

                ctx.SubmitChanges();
            }

            using (Doran_ERP_Servicos_DadosDataContext ctx = new Doran_ERP_Servicos_DadosDataContext())
            {
                foreach (var item in items_compra)
                {
                    Dictionary <string, string> _item = new Dictionary <string, string>();

                    var notas = (from linha in ctx.TB_ITEM_NOTA_ENTRADAs
                                 orderby linha.NUMERO_ITEM_COMPRA

                                 where linha.NUMERO_ITEM_COMPRA == item

                                 select linha).ToList();

                    string _notas = "";

                    foreach (var item1 in notas)
                    {
                        _notas += item1.TB_NOTA_ENTRADA.NUMERO_NFE.ToString() + " / ";
                    }

                    _notas = _notas.Substring(0, _notas.Length - 3);

                    retorno.Add(item.ToString() + " - " + _notas);
                }
            }

            return(retorno);
        }
Пример #20
0
        public string MontaRelatorioRealizado()
        {
            string retorno = "";

            using (Th2_Report r = new Th2_Report(ExpertPdf.HtmlToPdf.PdfPageSize.A4, ExpertPdf.HtmlToPdf.PDFPageOrientation.Portrait))
            {
                r.ID_EMPRESA = ID_EMPRESA;

                DateTime df = DataFinal.AddSeconds(-1);

                string nome_banco = "";

                using (Doran_ERP_Servicos_DadosDataContext ctx = new Doran_ERP_Servicos_DadosDataContext())
                {
                    if (Banco > 0)
                    {
                        nome_banco = (from linha in ctx.TB_BANCOs
                                      where linha.NUMERO_BANCO == Banco
                                      select linha.NOME_BANCO.Trim()).ToList().First().Trim();
                    }
                }

                string cabecalho = string.Format("Relat&oacute;rio do Fluxo de Caixa (Realizado)<br /><span style='font-family: Tahoma; font-size: 8pt;'>Per&iacute;odo de {0} at&eacute; {1}<br />{2}</span>",
                                                 ApoioXML.TrataData2(DataInicial), ApoioXML.TrataData2(df), Banco > 0 ? "Banco: " + nome_banco : "");

                r.DefineCabecalho(cabecalho, 60);

                decimal CreditoTotal = 0;
                decimal DebitoTotal  = 0;

                using (Doran_ERP_Servicos_DadosDataContext ctx = new Doran_ERP_Servicos_DadosDataContext())
                {
                    ctx.Connection.Open();
                    ctx.ExecuteCommand("SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;");

                    DateTime _dt = DataInicial;

                    StringBuilder _conteudo = new StringBuilder();

                    _conteudo.Append("<table style='width: 70%; font-family: tahoma; font-size: 8pt;'>");

                    _conteudo.Append(@"<tr>
                                    <td style='BORDER-BOTTOM: 1px solid; border-color:#C0C0C0;'>NF / Duplicata</td>
                                    <td style='BORDER-BOTTOM: 1px solid; border-color:#C0C0C0;'>Vencimento</td>
                                    <td style='BORDER-BOTTOM: 1px solid; border-color:#C0C0C0;'>Pagamento</td>

                                    <td style='BORDER-BOTTOM: 1px solid; width: 280px; border-color:#C0C0C0;'>Hist&oacute;rico</td>
                                    <td style='BORDER-BOTTOM: 1px solid; text-align: right; border-color:#C0C0C0;'>Cr&eacute;dito</td>
                                    <td style='BORDER-BOTTOM: 1px solid; text-align: right; border-color:#C0C0C0;'>D&eacute;bito</td>
                                    <td style='BORDER-BOTTOM: 1px solid; text-align: right; border-color:#C0C0C0;'>Saldo</td>
                                    <td style='BORDER-BOTTOM: 1px solid; text-align: right; border-color:#C0C0C0;'>Valor Aproximado?</td>
                                  </tr>");

                    decimal Saldo         = 0;
                    decimal saldoAnterior = SaldoAnterior();

                    while (_dt < DataFinal)
                    {
                        var query = from linha in ctx.TB_FINANCEIROs
                                    where (linha.DATA_PAGAMENTO >= _dt &&
                                           linha.DATA_PAGAMENTO < _dt.AddDays(1)) &&
                                    linha.CODIGO_EMITENTE == ID_EMPRESA

                                    && (linha.NUMERO_BANCO == Banco || Banco == 0)

                                    select new
                        {
                            linha.NUMERO_FINANCEIRO,
                            linha.NUMERO_SEQ_NF_SAIDA,
                            linha.NUMERO_NF_SAIDA,
                            linha.NUMERO_SEQ_NF_ENTRADA,
                            linha.NUMERO_NF_ENTRADA,
                            linha.DATA_VENCIMENTO,
                            linha.DATA_PAGAMENTO,
                            linha.HISTORICO,
                            VALOR_TOTAL = (linha.VALOR + linha.VALOR_ACRESCIMO + linha.VALOR_MULTA) - linha.VALOR_DESCONTO,
                            linha.CREDITO_DEBITO,
                            linha.VALOR_APROXIMADO
                        };

                        decimal CreditoDia = 0;
                        decimal DebitoDia  = 0;

                        foreach (var item in query)
                        {
                            if (item.CREDITO_DEBITO == 0)
                            {
                                if (ResumidoDetalhado == "D")
                                {
                                    _conteudo.Append(string.Format(@"<tr>
                                        <td style='BORDER-BOTTOM: 1px solid; BORDER-TOP: 1px solid; BORDER-LEFT: 1px solid; BORDER-RIGHT: 1px solid; border-color:#C0C0C0;'>{0}</td>
                                        <td style='BORDER-BOTTOM: 1px solid; BORDER-TOP: 1px solid; BORDER-LEFT: 1px solid; BORDER-RIGHT: 1px solid; border-color:#C0C0C0;'>{1}</td>
                                        <td style='BORDER-BOTTOM: 1px solid; BORDER-TOP: 1px solid; BORDER-LEFT: 1px solid; BORDER-RIGHT: 1px solid; border-color:#C0C0C0;'>{2}</td>
                                        <td style='font-size: 7pt; BORDER-BOTTOM: 1px solid; BORDER-TOP: 1px solid; BORDER-LEFT: 1px solid; BORDER-RIGHT: 1px solid; border-color:#C0C0C0;'>{3}</td>
                                        <td style='text-align: right; BORDER-BOTTOM: 1px solid; BORDER-TOP: 1px solid; BORDER-LEFT: 1px solid; BORDER-RIGHT: 1px solid; border-color:#C0C0C0;'>{4}</td>
                                        <td>{5}</td>
                                        <td>{6}</td>
                                        <td style='BORDER-BOTTOM: 1px solid; BORDER-TOP: 1px solid; BORDER-LEFT: 1px solid; BORDER-RIGHT: 1px solid; border-color:#C0C0C0;'>{7}</td>
                                      </tr>", item.NUMERO_NF_SAIDA.ToString() + "/" + ApoioXML.LetrasDuplicatas_ERP_Servicos(item.NUMERO_SEQ_NF_SAIDA, item.NUMERO_SEQ_NF_ENTRADA, item.DATA_VENCIMENTO),
                                                                   ApoioXML.Data((DateTime)item.DATA_VENCIMENTO),
                                                                   ApoioXML.Data((DateTime)item.DATA_PAGAMENTO),
                                                                   item.HISTORICO.Trim(),
                                                                   ApoioXML.Valor_Moeda(((decimal)item.VALOR_TOTAL).ToString(), 2), "", "",
                                                                   item.VALOR_APROXIMADO == 1 ? "S" : ""));
                                }

                                CreditoDia   += (decimal)item.VALOR_TOTAL;
                                CreditoTotal += (decimal)item.VALOR_TOTAL;
                            }
                            else
                            {
                                if (ResumidoDetalhado == "D")
                                {
                                    _conteudo.Append(string.Format(@"<tr>
                                        <td style='BORDER-BOTTOM: 1px solid; BORDER-TOP: 1px solid; BORDER-LEFT: 1px solid; BORDER-RIGHT: 1px solid; border-color:#C0C0C0;'>{0}</td>
                                        <td style='BORDER-BOTTOM: 1px solid; BORDER-TOP: 1px solid; BORDER-LEFT: 1px solid; BORDER-RIGHT: 1px solid; border-color:#C0C0C0;'>{1}</td>
                                        <td style='BORDER-BOTTOM: 1px solid; BORDER-TOP: 1px solid; BORDER-LEFT: 1px solid; BORDER-RIGHT: 1px solid; border-color:#C0C0C0;'>{2}</td>
                                        <td style='font-size: 7pt; BORDER-BOTTOM: 1px solid; BORDER-TOP: 1px solid; BORDER-LEFT: 1px solid; BORDER-RIGHT: 1px solid; border-color:#C0C0C0;'>{3}</td>
                                        <td style='BORDER-BOTTOM: 1px solid; BORDER-TOP: 1px solid; BORDER-LEFT: 1px solid; BORDER-RIGHT: 1px solid; border-color:#C0C0C0;'>{4}</td>
                                        <td style='BORDER-BOTTOM: 1px solid; BORDER-TOP: 1px solid; BORDER-LEFT: 1px solid; BORDER-RIGHT: 1px solid; text-align: right; border-color:#C0C0C0;'>{5}</td>
                                        <td >{6}</td>
                                        <td style='BORDER-BOTTOM: 1px solid; BORDER-TOP: 1px solid; BORDER-LEFT: 1px solid; BORDER-RIGHT: 1px solid; border-color:#C0C0C0;'>{7}</td>
                                      </tr>", item.NUMERO_NF_ENTRADA.ToString() + "/" + ApoioXML.LetrasDuplicatas_ERP_Servicos(item.NUMERO_SEQ_NF_SAIDA, item.NUMERO_SEQ_NF_ENTRADA, item.DATA_VENCIMENTO),
                                                                   ApoioXML.Data((DateTime)item.DATA_VENCIMENTO),
                                                                   ApoioXML.Data((DateTime)item.DATA_PAGAMENTO),
                                                                   item.HISTORICO.Trim(),
                                                                   "",
                                                                   ApoioXML.Valor_Moeda(((decimal)item.VALOR_TOTAL).ToString(), 2),
                                                                   "", item.VALOR_APROXIMADO == 1 ? "S" : ""));
                                }

                                DebitoDia   += (decimal)item.VALOR_TOTAL;
                                DebitoTotal += (decimal)item.VALOR_TOTAL;
                            }
                        }

                        // Pagamentos Parciais
                        var query2 = from linha in ctx.TB_PAGTO_PARCIALs
                                     where (linha.DATA_PAGTO >= _dt &&
                                            linha.DATA_PAGTO < _dt.AddDays(1)) &&
                                     linha.TB_FINANCEIRO.CODIGO_EMITENTE == ID_EMPRESA
                                     select new
                        {
                            linha.NUMERO_FINANCEIRO,
                            linha.TB_FINANCEIRO.NUMERO_SEQ_NF_SAIDA,
                            linha.TB_FINANCEIRO.NUMERO_NF_SAIDA,
                            linha.TB_FINANCEIRO.NUMERO_SEQ_NF_ENTRADA,
                            linha.TB_FINANCEIRO.NUMERO_NF_ENTRADA,
                            linha.TB_FINANCEIRO.DATA_VENCIMENTO,
                            linha.DATA_PAGTO,
                            linha.TB_FINANCEIRO.HISTORICO,
                            linha.VALOR_PAGTO,
                            linha.TB_FINANCEIRO.CREDITO_DEBITO,
                        };

                        foreach (var item in query2)
                        {
                            if (item.CREDITO_DEBITO == 0)
                            {
                                if (ResumidoDetalhado == "D")
                                {
                                    _conteudo.Append(string.Format(@"<tr>
                                        <td style='BORDER-BOTTOM: 1px solid; BORDER-TOP: 1px solid; BORDER-LEFT: 1px solid; BORDER-RIGHT: 1px solid; border-color:#C0C0C0;'>{0}</td>
                                        <td style='BORDER-BOTTOM: 1px solid; BORDER-TOP: 1px solid; BORDER-LEFT: 1px solid; BORDER-RIGHT: 1px solid; border-color:#C0C0C0;'>{1}</td>
                                        <td style='BORDER-BOTTOM: 1px solid; BORDER-TOP: 1px solid; BORDER-LEFT: 1px solid; BORDER-RIGHT: 1px solid; border-color:#C0C0C0;'>{2}</td>
                                        <td style='font-size: 7pt; BORDER-BOTTOM: 1px solid; BORDER-TOP: 1px solid; BORDER-LEFT: 1px solid; BORDER-RIGHT: 1px solid; border-color:#C0C0C0;'>{3}</td>
                                        <td style='text-align: right; BORDER-BOTTOM: 1px solid; BORDER-TOP: 1px solid; BORDER-LEFT: 1px solid; BORDER-RIGHT: 1px solid; border-color:#C0C0C0;'>{4}</td>
                                        <td>{5}</td>
                                        <td>{6}</td>
                                        <td style='BORDER-BOTTOM: 1px solid; BORDER-TOP: 1px solid; BORDER-LEFT: 1px solid; BORDER-RIGHT: 1px solid; border-color:#C0C0C0;'>{7}</td>
                                      </tr>", item.NUMERO_NF_SAIDA.ToString() + "/" + ApoioXML.LetrasDuplicatas_ERP_Servicos(item.NUMERO_SEQ_NF_SAIDA, item.NUMERO_SEQ_NF_ENTRADA, item.DATA_VENCIMENTO),
                                                                   ApoioXML.Data((DateTime)item.DATA_VENCIMENTO),
                                                                   ApoioXML.Data((DateTime)item.DATA_PAGTO),
                                                                   item.HISTORICO.Trim(),
                                                                   ApoioXML.Valor_Moeda(((decimal)item.VALOR_PAGTO).ToString(), 2), "", "",
                                                                   ""));
                                }

                                CreditoDia   += (decimal)item.VALOR_PAGTO;
                                CreditoTotal += (decimal)item.VALOR_PAGTO;
                            }
                            else
                            {
                                if (ResumidoDetalhado == "D")
                                {
                                    _conteudo.Append(string.Format(@"<tr>
                                        <td style='BORDER-BOTTOM: 1px solid; BORDER-TOP: 1px solid; BORDER-LEFT: 1px solid; BORDER-RIGHT: 1px solid; border-color:#C0C0C0;'>{0}</td>
                                        <td style='BORDER-BOTTOM: 1px solid; BORDER-TOP: 1px solid; BORDER-LEFT: 1px solid; BORDER-RIGHT: 1px solid; border-color:#C0C0C0;'>{1}</td>
                                        <td style='BORDER-BOTTOM: 1px solid; BORDER-TOP: 1px solid; BORDER-LEFT: 1px solid; BORDER-RIGHT: 1px solid; border-color:#C0C0C0;'>{2}</td>
                                        <td style='font-size: 7pt; BORDER-BOTTOM: 1px solid; BORDER-TOP: 1px solid; BORDER-LEFT: 1px solid; BORDER-RIGHT: 1px solid; border-color:#C0C0C0;'>{3}</td>
                                        <td style='BORDER-BOTTOM: 1px solid; BORDER-TOP: 1px solid; BORDER-LEFT: 1px solid; BORDER-RIGHT: 1px solid; border-color:#C0C0C0;'>{4}</td>
                                        <td style='BORDER-BOTTOM: 1px solid; BORDER-TOP: 1px solid; BORDER-LEFT: 1px solid; BORDER-RIGHT: 1px solid; text-align: right; border-color:#C0C0C0;'>{5}</td>
                                        <td >{6}</td>
                                        <td style='BORDER-BOTTOM: 1px solid; BORDER-TOP: 1px solid; BORDER-LEFT: 1px solid; BORDER-RIGHT: 1px solid; border-color:#C0C0C0;'>{7}</td>
                                      </tr>", item.NUMERO_NF_ENTRADA.ToString() + "/" + ApoioXML.LetrasDuplicatas_ERP_Servicos(item.NUMERO_SEQ_NF_SAIDA, item.NUMERO_SEQ_NF_ENTRADA, item.DATA_VENCIMENTO),
                                                                   ApoioXML.Data((DateTime)item.DATA_VENCIMENTO),
                                                                   ApoioXML.Data((DateTime)item.DATA_PAGTO),
                                                                   item.HISTORICO.Trim(),
                                                                   "",
                                                                   ApoioXML.Valor_Moeda(((decimal)item.VALOR_PAGTO).ToString(), 2),
                                                                   "", ""));
                                }

                                DebitoDia   += (decimal)item.VALOR_PAGTO;
                                DebitoTotal += (decimal)item.VALOR_PAGTO;
                            }
                        }

                        if (DebitoDia > (decimal)0.00 || CreditoDia > (decimal)0.00)
                        {
                            Saldo = (saldoAnterior + CreditoDia) - DebitoDia;

                            _conteudo.Append(string.Format(@"<tr>
                                        <td style='BORDER-TOP: 1px solid; BORDER-BOTTOM: 1px solid; text-align: right;' colspan='3'>Saldo Anterior {0}</td>
                                        <td style='BORDER-TOP: 1px solid; BORDER-BOTTOM: 1px solid; text-align: right;'>Total do dia {1}</td>
                                        <td style='BORDER-TOP: 1px solid; BORDER-BOTTOM: 1px solid; BORDER-LEFT: 1px solid; BORDER-RIGHT: 1px solid; text-align: right; border-color:#C0C0C0;'><b>{2}</b></td>
                                        <td style='BORDER-TOP: 1px solid; BORDER-BOTTOM: 1px solid; BORDER-LEFT: 1px solid; BORDER-RIGHT: 1px solid; text-align: right; border-color:#C0C0C0;'><b>{3}</b></td>
                                        <td style='BORDER-TOP: 1px solid; BORDER-BOTTOM: 1px solid; BORDER-LEFT: 1px solid; BORDER-RIGHT: 1px solid; text-align: right; border-color:#C0C0C0;'><b>{4}</b></td>
                                      </tr>", ApoioXML.Valor_Moeda(saldoAnterior.ToString(), 2), ApoioXML.TrataData2(_dt), ApoioXML.Valor_Moeda(CreditoDia.ToString(), 2)
                                                           , ApoioXML.Valor_Moeda(DebitoDia.ToString(), 2), ApoioXML.Valor_Moeda(Saldo.ToString(), 2)));

                            saldoAnterior = Saldo;

                            CreditoDia = 0;
                            DebitoDia  = 0;
                        }

                        _dt = _dt.AddDays(1);
                    }

                    _conteudo.Append(string.Format(@"<tr>
                                        <td style='BORDER-TOP: 1px solid; BORDER-BOTTOM: 1px solid; text-align: right;' colspan='3'></td>
                                        <td style='BORDER-TOP: 1px solid; BORDER-BOTTOM: 1px solid; text-align: right;'>Total no Per&iacute;odo</td>
                                        <td style='BORDER-TOP: 1px solid; BORDER-BOTTOM: 1px solid; BORDER-LEFT: 1px solid; BORDER-RIGHT: 1px solid; text-align: right; border-color:#C0C0C0;'><b>{0}</b></td>
                                        <td style='BORDER-TOP: 1px solid; BORDER-BOTTOM: 1px solid; BORDER-LEFT: 1px solid; BORDER-RIGHT: 1px solid; text-align: right; border-color:#C0C0C0;'><b>{1}</b></td>
                                        <td style='BORDER-TOP: 1px solid; BORDER-BOTTOM: 1px solid; BORDER-LEFT: 1px solid; BORDER-RIGHT: 1px solid; text-align: right; border-color:#C0C0C0;'></td>
                                      </tr>", ApoioXML.Valor_Moeda(CreditoTotal.ToString(), 2)
                                                   , ApoioXML.Valor_Moeda(DebitoTotal.ToString(), 2)));

                    _conteudo.Append("</table>");

                    r.InsereConteudo(_conteudo.ToString());
                    retorno = r.SalvaDocumento("FaTh2_Fluxo_Realizado");
                }

                return(retorno);
            }
        }
Пример #21
0
        private StringBuilder SetaVariaveisPedido(StringBuilder html, bool PRIMEIRA_PAGINA, string LOGIN_USUARIO)
        {
            html = html.Replace("#NUMERO_PEDIDO#", NUMERO_PEDIDO.ToString());
            html = html.Replace("#PAGINA#", (PAGINA + 1).ToString() + "/" + _PAGINAS.ToString());
            html = html.Replace("#DATA_EMISSAO#", ApoioXML.TrataData2(DateTime.Today));

            if (LOGOTIPO.Length > 0)
            {
                html = html.Replace("#LOGOTIPO#", LOGOTIPO);
            }

            html = html.Replace("#DATA_HORA#", ApoioXML.TrataDataHora2(DateTime.Now));

            if (PRIMEIRA_PAGINA)
            {
                using (Doran_ERP_Servicos_DadosDataContext ctx1 = new Doran_ERP_Servicos_DadosDataContext())
                {
                    var query = (from linha in ctx1.TB_CONFIG_VENDAs
                                 where linha.ID_CONFIGURACAO_VENDAS == 1
                                 select linha).ToList();

                    foreach (var item in query)
                    {
                        html = html.Replace("#LOGOTIPO#",
                                            "<img src='" + ConfigurationManager.AppSettings["PastaVirtual"] + item.LOGOTIPO_ORCAMENTO_VENDAS.Trim() + "' width=100>");

                        LOGOTIPO = "<img src='" + ConfigurationManager.AppSettings["PastaVirtual"] + item.LOGOTIPO_ORCAMENTO_VENDAS.Trim() + "' width=100>";
                    }
                }

                using (Doran_ERP_Servicos_DadosDataContext ctx = new Doran_ERP_Servicos_DadosDataContext())
                {
                    var item = (from linha in ctx.TB_PEDIDO_VENDAs
                                where linha.NUMERO_PEDIDO == NUMERO_PEDIDO
                                select linha).ToList().First();

                    html = html.Replace("#DATA_ENTREGA#", ApoioXML.TrataData2(item.ENTREGA_PEDIDO));
                    html = html.Replace("#ULTIMA_COMPRA#", Busca_Ultima_Compra_Cliente(item.TB_ITEM_ORCAMENTO_VENDA.TB_ORCAMENTO_VENDA.CODIGO_CLIENTE_ORCAMENTO));

                    html = html.Replace("#NOME_CLIENTE#", item.TB_ITEM_ORCAMENTO_VENDA.TB_ORCAMENTO_VENDA.CODIGO_CLIENTE_ORCAMENTO.ToString() + " - " +
                                        item.TB_ITEM_ORCAMENTO_VENDA.TB_ORCAMENTO_VENDA.TB_CLIENTE.NOME_CLIENTE.Trim() +
                                        " - " + item.TB_ITEM_ORCAMENTO_VENDA.TB_ORCAMENTO_VENDA.TB_CLIENTE.NOMEFANTASIA_CLIENTE.Trim());

                    html = html.Replace("#USUARIO_IMPRESSAO#", LOGIN_USUARIO.ToUpper());

                    html = html.Replace("#FATURAMENTO#", Previsao_Faturamento());
                    html = html.Replace("#COND_PAGTO#", item.TB_ITEM_ORCAMENTO_VENDA.TB_ORCAMENTO_VENDA.TB_COND_PAGTO.DESCRICAO_CP.Trim());
                    html = html.Replace("#VENDEDORES#", item.TB_ITEM_ORCAMENTO_VENDA.TB_ORCAMENTO_VENDA.TB_VENDEDORE.NOME_VENDEDOR.Trim());
                    html = html.Replace("#LIDER#", BuscaLider(item.TB_ITEM_ORCAMENTO_VENDA.TB_ORCAMENTO_VENDA.TB_VENDEDORE.SUPERVISOR_LIDER));

                    LIDER = (decimal)item.TB_ITEM_ORCAMENTO_VENDA.TB_ORCAMENTO_VENDA.TB_VENDEDORE.SUPERVISOR_LIDER;

                    string ENDERECO_ENTREGA = item.TB_ITEM_ORCAMENTO_VENDA.TB_ORCAMENTO_VENDA.TB_CLIENTE.ENDERECO_ENTREGA.Trim().Length > 0 ?
                                              string.Concat(item.TB_ITEM_ORCAMENTO_VENDA.TB_ORCAMENTO_VENDA.TB_CLIENTE.ENDERECO_ENTREGA.Trim(), " ",
                                                            item.TB_ITEM_ORCAMENTO_VENDA.TB_ORCAMENTO_VENDA.TB_CLIENTE.NUMERO_END_ENTREGA.Trim(), " ",
                                                            item.TB_ITEM_ORCAMENTO_VENDA.TB_ORCAMENTO_VENDA.TB_CLIENTE.COMP_END_ENTREGA.Trim(), " - ",
                                                            item.TB_ITEM_ORCAMENTO_VENDA.TB_ORCAMENTO_VENDA.TB_CLIENTE.BAIRRO_ENTREGA.Trim(), " - ",
                                                            item.TB_ITEM_ORCAMENTO_VENDA.TB_ORCAMENTO_VENDA.TB_CLIENTE.CIDADE_ENTREGA, " ",
                                                            item.TB_ITEM_ORCAMENTO_VENDA.TB_ORCAMENTO_VENDA.TB_CLIENTE.TB_MUNICIPIO.TB_UF.SIGLA_UF) :
                                              "";

                    html = html.Replace("#ENDERECO_ENTREGA#", ENDERECO_ENTREGA);
                    html = html.Replace("#OBS_PEDIDO#", item.TB_ITEM_ORCAMENTO_VENDA.TB_ORCAMENTO_VENDA.OBS_ORCAMENTO.Trim());

                    using (Doran_Comercial_Pedido orc = new Doran_Comercial_Pedido())
                    {
                        DataTable dt = new DataTable();
                        dt.Columns.Add("NUMERO_PEDIDO");

                        DataRow nova = dt.NewRow();
                        nova[0] = NUMERO_PEDIDO;
                        dt.Rows.Add(nova);

                        DataTable totais = orc.Calcula_Totais_Pedido(dt);

                        html = html.Replace("#TOTAL_PRODUTOS#", totais.Rows[0]["VALOR_TOTAL"].ToString());
                        html = html.Replace("#TOTAL_IPI#", totais.Rows[0]["VALOR_IPI"].ToString());
                        html = html.Replace("#TOTAL_ICMS#", totais.Rows[0]["VALOR_ICMS"].ToString());
                        html = html.Replace("#TOTAL_ICMS_ST#", totais.Rows[0]["VALOR_ICMS_SUBS"].ToString());
                        html = html.Replace("#TOTAL_FRETE#", totais.Rows[0]["VALOR_FRETE"].ToString());
                        html = html.Replace("#TOTAL_PEDIDO#", totais.Rows[0]["TOTAL_PEDIDO"].ToString());
                        html = html.Replace("#MARGEM_MEDIA#", totais.Rows[0]["MARGEM"].ToString());
                        html = html.Replace("#TOTAL_CUSTO#", totais.Rows[0]["TOTAL_CUSTO"].ToString());
                        html = html.Replace("#CUSTO_FINANCEIRO#", totais.Rows[0]["CUSTO_FINANCEIRO"].ToString());
                        html = html.Replace("#ADICIONAL_REPRESENTANTE#", totais.Rows[0]["ADICIONAL_REPRESENTANTE"].ToString());
                    }
                }
            }
            else
            {
                html = html.Replace("#LIDER#", BuscaLider(LIDER));
            }

            return(html);
        }
Пример #22
0
        private StringBuilder SetaVariaveisPedido(StringBuilder html, bool PRIMEIRA_PAGINA)
        {
            html = html.Replace("#NUMERO_PEDIDO#", NUMERO_PEDIDO_COMPRA.ToString());
            html = html.Replace("#PAGINA#", (PAGINA + 1).ToString() + "/" + _PAGINAS.ToString());
            html = html.Replace("#DATA_EMISSAO#", ApoioXML.TrataData2(DateTime.Today));

            if (LOGOTIPO.Length > 0)
            {
                html = html.Replace("#LOGOTIPO#", LOGOTIPO);
            }

            html = html.Replace("#DATA_HORA#", ApoioXML.TrataDataHora2(DateTime.Now));

            if (PRIMEIRA_PAGINA)
            {
                using (Doran_ERP_Servicos_DadosDataContext ctx1 = new Doran_ERP_Servicos_DadosDataContext())
                {
                    var query = (from linha in ctx1.TB_CONFIG_VENDAs
                                 where linha.ID_CONFIGURACAO_VENDAS == 1
                                 select linha).ToList();

                    foreach (var item in query)
                    {
                        html = html.Replace("#LOGOTIPO#",
                                            "<img src='" + ConfigurationManager.AppSettings["PastaVirtual"] + item.LOGOTIPO_ORCAMENTO_VENDAS.Trim() + "' width=100>");

                        LOGOTIPO = "<img src='" + ConfigurationManager.AppSettings["PastaVirtual"] + item.LOGOTIPO_ORCAMENTO_VENDAS.Trim() + "' width=100>";
                    }
                }

                using (Doran_ERP_Servicos_DadosDataContext ctx = new Doran_ERP_Servicos_DadosDataContext())
                {
                    var item = (from linha in ctx.TB_PEDIDO_COMPRAs
                                orderby linha.NUMERO_PEDIDO_COMPRA, linha.CODIGO_FORNECEDOR
                                where (linha.NUMERO_PEDIDO_COMPRA == NUMERO_PEDIDO_COMPRA &&
                                       linha.CODIGO_FORNECEDOR == CODIGO_FORNECEDOR)

                                && linha.TB_STATUS_PEDIDO_COMPRA.STATUS_ESPECIFICO_ITEM_COMPRA < 7

                                select linha).ToList().First();

                    var _entrega = (from linha in ctx.TB_PEDIDO_COMPRAs
                                    orderby linha.NUMERO_PEDIDO_COMPRA, linha.CODIGO_FORNECEDOR
                                    where (linha.NUMERO_PEDIDO_COMPRA == NUMERO_PEDIDO_COMPRA &&
                                           linha.CODIGO_FORNECEDOR == CODIGO_FORNECEDOR)

                                    && linha.TB_STATUS_PEDIDO_COMPRA.STATUS_ESPECIFICO_ITEM_COMPRA < 7

                                    select linha.PREVISAO_ENTREGA_ITEM_COMPRA).Max();

                    var _fornecedor = (from linha in ctx.TB_PEDIDO_COMPRAs
                                       orderby linha.NUMERO_PEDIDO_COMPRA, linha.CODIGO_FORNECEDOR
                                       where (linha.NUMERO_PEDIDO_COMPRA == NUMERO_PEDIDO_COMPRA &&
                                              linha.CODIGO_FORNECEDOR == CODIGO_FORNECEDOR)

                                       && linha.TB_STATUS_PEDIDO_COMPRA.STATUS_ESPECIFICO_ITEM_COMPRA < 7

                                       select linha.TB_FORNECEDOR.NOME_FORNECEDOR).ToList().First();

                    html = html.Replace("#DATA_ENTREGA#", ApoioXML.TrataData2(_entrega));

                    html = html.Replace("#NOME_FORNECEDOR#", _fornecedor.Trim());
                    html = html.Replace("#USUARIO_IMPRESSAO#", LOGIN_USUARIO.ToUpper());

                    html = html.Replace("#COND_PAGTO#", item.TB_COND_PAGTO.DESCRICAO_CP.Trim());
                    html = html.Replace("#CONTATO#", item.CONTATO_COTACAO_FORNECEDOR.Trim());

                    html = html.Replace("#FRETE#", item.FRETE_COTACAO_FORNECEDOR == 0 ? "FOB" : "CIF");
                    html = html.Replace("#ULTIMA_COMPRA#", Ultima_Compra((decimal)item.CODIGO_FORNECEDOR));

                    //html = html.Replace("#OBS_PEDIDO#", item.TB_ITEM_ORCAMENTO_VENDA.TB_ORCAMENTO_VENDA.OBS_ORCAMENTO.Trim());

                    NOME_FORNECEDOR = item.TB_FORNECEDOR.NOME_FANTASIA_FORNECEDOR.Trim();
                    NOME_FORNECEDOR = NOME_FORNECEDOR.Replace(" ", "_");
                    NOME_FORNECEDOR = ApoioXML.TrataSinais(NOME_FORNECEDOR);

                    using (Doran_Compras orc = new Doran_Compras(NUMERO_PEDIDO_COMPRA, ID_USUARIO))
                    {
                        DataTable dt = new DataTable();
                        dt.Columns.Add("NUMERO_PEDIDO_COMPRA");

                        DataRow nova = dt.NewRow();
                        nova[0] = NUMERO_PEDIDO_COMPRA;
                        dt.Rows.Add(nova);

                        var query = (from linha in ctx.TB_PEDIDO_COMPRAs
                                     orderby linha.NUMERO_PEDIDO_COMPRA, linha.CODIGO_FORNECEDOR
                                     where (linha.NUMERO_PEDIDO_COMPRA == NUMERO_PEDIDO_COMPRA &&
                                            linha.CODIGO_FORNECEDOR == CODIGO_FORNECEDOR) &&
                                     linha.TB_STATUS_PEDIDO_COMPRA.STATUS_ESPECIFICO_ITEM_COMPRA < 7

                                     select linha).ToList();

                        decimal TOTAL_PRODUTOS = 0;
                        decimal TOTAL_IPI      = 0;
                        decimal TOTAL_ICMS     = 0;
                        decimal TOTAL_ICMS_ST  = 0;
                        decimal TOTAL_FRETE    = 0;
                        decimal TOTAL_PEDIDO   = 0;

                        foreach (var item1 in query)
                        {
                            if (ITENS_COMPRA.Contains(item1.NUMERO_ITEM_COMPRA))
                            {
                                TOTAL_PRODUTOS += (decimal)item1.VALOR_TOTAL_ITEM_COMPRA;
                                TOTAL_IPI      += (decimal)item1.VALOR_IPI_ITEM_COMPRA;
                                TOTAL_ICMS     += (decimal)item1.VALOR_ICMS_ITEM_COMPRA;
                                TOTAL_ICMS_ST  += (decimal)item1.VALOR_ICMS_ST_ITEM_COMPRA;
                                TOTAL_FRETE    += (decimal)item1.VALOR_FRETE_COTACAO_FORNECEDOR;
                                TOTAL_PEDIDO   += (decimal)item1.VALOR_TOTAL_ITEM_COMPRA +
                                                  (decimal)item1.VALOR_ICMS_ST_ITEM_COMPRA + (decimal)item1.VALOR_IPI_ITEM_COMPRA;
                            }
                        }

                        html = html.Replace("#TOTAL_PRODUTOS#", TOTAL_PRODUTOS.ToString("c", CultureInfo.CurrentCulture));
                        html = html.Replace("#TOTAL_IPI#", TOTAL_IPI.ToString("c", CultureInfo.CurrentCulture));
                        html = html.Replace("#TOTAL_ICMS#", TOTAL_ICMS.ToString("c", CultureInfo.CurrentCulture));
                        html = html.Replace("#TOTAL_ICMS_ST#", TOTAL_ICMS_ST.ToString("c", CultureInfo.CurrentCulture));
                        html = html.Replace("#TOTAL_FRETE#", TOTAL_FRETE.ToString("c", CultureInfo.CurrentCulture));
                        html = html.Replace("#TOTAL_PEDIDO#", TOTAL_PEDIDO.ToString("c", CultureInfo.CurrentCulture));

                        // DataTable totais = orc.Calcula_Totais_Pedido(dt);
                    }
                }
            }

            return(html);
        }
Пример #23
0
        public string ListaClientesComLimiteExcedido(Dictionary <string, object> dados)
        {
            using (Doran_ERP_Servicos_DadosDataContext ctx = new Doran_ERP_Servicos_DadosDataContext())
            {
                var query = from linha in ctx.TB_FINANCEIROs

                            where linha.DATA_PAGAMENTO == new DateTime(1901, 01, 01) &&
                            linha.CREDITO_DEBITO == 0 && linha.CODIGO_CLIENTE > 0 &&
                            (linha.TB_CLIENTE.NOME_CLIENTE.Contains(dados["pesquisa"].ToString()) ||
                             linha.TB_CLIENTE.NOMEFANTASIA_CLIENTE.Contains(dados["pesquisa"].ToString()))

                            group linha by new
                {
                    linha.CODIGO_CLIENTE,
                    linha.TB_CLIENTE.NOMEFANTASIA_CLIENTE,
                    linha.TB_CLIENTE.TB_MUNICIPIO.NOME_MUNICIPIO,
                    linha.TB_CLIENTE.TB_MUNICIPIO1.TB_UF.SIGLA_UF,
                    linha.TB_CLIENTE.TELEFONE_FATURA,
                    linha.TB_CLIENTE.TB_LIMITE.VALOR_LIMITE
                }
                into grupo

                    select new
                {
                    CODIGO_CLIENTE       = grupo.Key.CODIGO_CLIENTE,
                    NOMEFANTASIA_CLIENTE = grupo.Key.NOMEFANTASIA_CLIENTE,
                    CIDADE       = grupo.Key.NOME_MUNICIPIO,
                    UF           = grupo.Key.SIGLA_UF,
                    TELEFONE     = grupo.Key.TELEFONE_FATURA,
                    VALOR_LIMITE = grupo.Key.VALOR_LIMITE,

                    VALOR_EM_ABERTO = grupo.Sum(linha => linha.VALOR_TOTAL)
                };

                query = query.Where(m => m.VALOR_EM_ABERTO > 0);

                int rowCount = query.Count();

                query = query.Skip(Convert.ToInt32(dados["start"])).Take(Convert.ToInt32(dados["limit"]));

                DataTable dt = ApoioXML.ToDataTable(ctx, query);

                dt.Columns["VALOR_EM_ABERTO"].ReadOnly = false;

                foreach (DataRow dr in dt.Rows)
                {
                    decimal valorEmAberto = Convert.ToDecimal(dr["VALOR_EM_ABERTO"]);

                    valorEmAberto += Doran_Limite_Credito_Cliente.Limite_Excedido_Cliente(Convert.ToDecimal(dr["CODIGO_CLIENTE"]));

                    valorEmAberto -= Convert.ToDecimal(dr["VALOR_LIMITE"]);

                    if (valorEmAberto < (decimal)0.00)
                    {
                        valorEmAberto = 0;
                    }

                    dr["VALOR_EM_ABERTO"] = valorEmAberto;
                }

                return(ClientesInadimplentes(dt, rowCount, ID_EMPRESA));
            }
        }
Пример #24
0
        public List <object> Imprime_Pedido()
        {
            List <object> retorno = new List <object>();

            string str1 = "";

            string modeloORCAMENTO            = ConfigurationManager.AppSettings["Modelo_COMPRA"];
            string modeloPEDIDO_ProximaPagina = ConfigurationManager.AppSettings["Modelo_COMPRA_ProximaPagina"];

            _NUMERO_ITENS_PRIMEIRA_PAGINA = Convert.ToDecimal(ConfigurationManager.AppSettings["NUMERO_ITENS_PRIMEIRA_PAGINA_PEDIDO_COMPRA"]);
            _NUMERO_ITENS_PROXIMA_PAGINA  = Convert.ToDecimal(ConfigurationManager.AppSettings["NUMERO_ITENS_PROXIMA_PAGINA_PEDIDO_COMPRA"]);

            using (Doran_ERP_Servicos_DadosDataContext ctx = new Doran_ERP_Servicos_DadosDataContext())
            {
                var STATUS_CONFIRMADO = (from linha in ctx.TB_STATUS_PEDIDO_COMPRAs
                                         where linha.STATUS_ESPECIFICO_ITEM_COMPRA == 6
                                         select linha.CODIGO_STATUS_COMPRA).ToList().First();

                var query = (from linha in ctx.TB_PEDIDO_COMPRAs
                             orderby linha.NUMERO_PEDIDO_COMPRA, linha.CODIGO_FORNECEDOR
                             where (linha.NUMERO_PEDIDO_COMPRA == NUMERO_PEDIDO_COMPRA &&
                                    linha.CODIGO_FORNECEDOR == CODIGO_FORNECEDOR) &&
                             linha.TB_STATUS_PEDIDO_COMPRA.STATUS_ESPECIFICO_ITEM_COMPRA < 7

                             select linha).ToList();

                int nItens = 0;

                foreach (var item in query)
                {
                    if (ITENS_COMPRA.Contains(item.NUMERO_ITEM_COMPRA))
                    {
                        nItens++;
                    }
                }

                if (nItens < (_NUMERO_ITENS_PRIMEIRA_PAGINA + 1))
                {
                    _PAGINAS = 1;
                }
                else
                {
                    if (Convert.ToInt32((nItens - _NUMERO_ITENS_PRIMEIRA_PAGINA) % _NUMERO_ITENS_PROXIMA_PAGINA) > 0.00)
                    {
                        _PAGINAS = Convert.ToInt32((nItens - _NUMERO_ITENS_PRIMEIRA_PAGINA) / _NUMERO_ITENS_PROXIMA_PAGINA) + 2;
                    }
                    else
                    {
                        _PAGINAS = ((nItens - _NUMERO_ITENS_PRIMEIRA_PAGINA) / _NUMERO_ITENS_PROXIMA_PAGINA) + 1;
                    }
                }

                using (TextReader tr = new StreamReader(modeloORCAMENTO))
                {
                    _htmlPEDIDO.Append(tr.ReadToEnd());
                }

                StringBuilder htmlPEDIDO = _htmlPEDIDO;
                htmlPEDIDO = SetaVariaveisPedido(htmlPEDIDO, true);

                StringBuilder linhaProduto = new StringBuilder();

                linhaProduto.Append(@"<tr>
<td style=""WIDTH: 362px"">#PRODUTO#</td>
<td style=""WIDTH: 80px"" align=""middle"">#QTDE#</td>
<td style=""WIDTH: 30px"" align=""middle"">#UN#</td>
<td style=""WIDTH: 80px"" align=""right"">#PRECO#</td>
<td style=""WIDTH: 30px"" align=""middle"">#DESCONTO#</td>
<td style=""WIDTH: 80px"" align=""right"">#PRECO_FINAL#</td>
<td style=""WIDTH: 98px"" align=""right"">#TOTAL#</td>
<td style=""WIDTH: 70px"" align=""right"">#IPI#</td>
<td style=""WIDTH: 70px"" align=""right"">#ICMS#</td>
<td style=""WIDTH: 70px"" align=""right"">#ICMS_ST#</td></tr></tbody></table>
<table style=""WIDTH: 1100px; font-family: Tahoma; font-size: 10pt;"">
<tbody>
<tr>
<td><b>Código do Fornecedor:</b>#CODIGO_ITEM_FORNECEDOR#</td>
<td><b>Peso:</b></td>
<td>#PESO_ITEM# Kgs</td>
<td><b>P.Venda:</b></td>
<td>#PEDIDO_VENDA#</td>
<td align=""right""><b>Entrega:</b></td>
<td>#ENTREGA#</td></tr>
<tr>
<td style=""BORDER-BOTTOM: #808080 1px solid"" colspan=""6""><b>Obs.:</b> #OBS_ITEM#</td></tr></tbody>");

                StringBuilder itemPEDIDO = new StringBuilder();
                int           itens      = 1;

                int _CONFIG_NUMERO_ITENS_NF = Convert.ToInt32(_NUMERO_ITENS_PRIMEIRA_PAGINA);

                foreach (var item in query)
                {
                    if (ITENS_COMPRA.Contains(item.NUMERO_ITEM_COMPRA))
                    {
                        if (itens > _CONFIG_NUMERO_ITENS_NF)
                        {
                            htmlPEDIDO = htmlPEDIDO.Replace(linhaProduto.ToString(), itemPEDIDO.ToString());

                            GravaPaginaPEDIDO(htmlPEDIDO);

                            _CONFIG_NUMERO_ITENS_NF = Convert.ToInt32(_NUMERO_ITENS_PROXIMA_PAGINA);
                            _htmlPEDIDO.Remove(0, _htmlPEDIDO.Length);

                            using (TextReader tr = new StreamReader(modeloPEDIDO_ProximaPagina))
                            {
                                _htmlPEDIDO.Append(tr.ReadToEnd());
                            }

                            htmlPEDIDO = SetaVariaveisPedido(_htmlPEDIDO, false);
                            itemPEDIDO.Remove(0, itemPEDIDO.Length);

                            itens = 1;
                        }

                        itemPEDIDO.Append(linhaProduto);

                        decimal PRECO_FINAL = 0;

                        if (item.TIPO_DESCONTO_ITEM_COMPRA == 1)
                        {
                            PRECO_FINAL = (decimal)item.PRECO_FINAL_FORNECEDOR - (decimal)item.VALOR_DESCONTO_ITEM_COMPRA;
                        }
                        else
                        {
                            PRECO_FINAL = Math.Round((decimal)item.PRECO_FINAL_FORNECEDOR * (1 - ((decimal)item.VALOR_DESCONTO_ITEM_COMPRA / 100)), 4);
                        }

                        string DESCRICAO_PRODUTO = string.Concat(item.CODIGO_PRODUTO_COMPRA.Trim(), " - ", item.TB_PRODUTO.DESCRICAO_PRODUTO.Trim());

                        var xPEDIDOS = (from linha1 in ctx.TB_ASSOCIACAO_COMPRA_VENDAs
                                        orderby linha1.NUMERO_PEDIDO_COMPRA, linha1.NUMERO_ITEM_COMPRA
                                        where linha1.NUMERO_PEDIDO_COMPRA == item.NUMERO_PEDIDO_COMPRA &&
                                        linha1.NUMERO_ITEM_COMPRA == item.NUMERO_ITEM_COMPRA
                                        select linha1).ToList();

                        string PEDIDOS_VENDA = "";
                        string OBS_VENDAS    = "";

                        foreach (var item1 in xPEDIDOS)
                        {
                            PEDIDOS_VENDA += string.Concat("<div style='align: center;'><b>P.V.</b>", item1.NUMERO_PEDIDO_VENDA.ToString(), "<br />",
                                                           "<b>Qtde</b>", ApoioXML.Valor2_2((decimal)item1.TB_PEDIDO_VENDA.QTDE_PRODUTO_ITEM_PEDIDO),
                                                           "&nbsp;", item1.TB_PEDIDO_VENDA.UNIDADE_ITEM_PEDIDO.Trim(), "</div>");

                            if (item1.TB_PEDIDO_VENDA.OBS_ITEM_PEDIDO.Trim().Length > 0)
                            {
                                OBS_VENDAS += string.Concat("[", item1.TB_PEDIDO_VENDA.OBS_ITEM_PEDIDO.Trim(), "]");
                            }
                        }

                        if (PEDIDOS_VENDA.Length > 0)
                        {
                            PEDIDOS_VENDA = PEDIDOS_VENDA.Substring(0, PEDIDOS_VENDA.Length - 3);
                        }

                        itemPEDIDO = itemPEDIDO.Replace("#PRODUTO#", string.Concat("<span style='font-size: 9pt;'>", DESCRICAO_PRODUTO, "</span>"));
                        itemPEDIDO = itemPEDIDO.Replace("#UN#", string.Concat("<span style='font-size: 9pt;'>", item.UNIDADE_ITEM_COMPRA.Trim(), "</span>"));
                        itemPEDIDO = itemPEDIDO.Replace("#QTDE#", string.Concat("<span style='font-size: 9pt;'>", ApoioXML.Valor2_2((decimal)item.QTDE_ITEM_COMPRA), "</span>"));

                        itemPEDIDO = itemPEDIDO.Replace("#PRECO#", ApoioXML.formata_Valor_Impressao((decimal)item.PRECO_FINAL_FORNECEDOR, 4));

                        itemPEDIDO = itemPEDIDO.Replace("#DESCONTO#", string.Concat("<span style='font-size: 9pt; text-align: center;'>", item.TIPO_DESCONTO_ITEM_COMPRA == 1 ?
                                                                                    ApoioXML.formata_Valor_Impressao((decimal)item.VALOR_DESCONTO_ITEM_COMPRA, 2) :
                                                                                    ((decimal)item.VALOR_DESCONTO_ITEM_COMPRA / 100).ToString("p"), "</span>"));

                        itemPEDIDO = itemPEDIDO.Replace("#PRECO_FINAL#", ApoioXML.formata_Valor_Impressao(PRECO_FINAL, 4));

                        itemPEDIDO = itemPEDIDO.Replace("#TOTAL#", ApoioXML.formata_Valor_Impressao((decimal)item.VALOR_TOTAL_ITEM_COMPRA, 2));

                        itemPEDIDO = itemPEDIDO.Replace("#ICMS#", ApoioXML.formata_Valor_Impressao((decimal)item.VALOR_ICMS_ITEM_COMPRA, 2));
                        itemPEDIDO = itemPEDIDO.Replace("#ICMS_ST#", ApoioXML.formata_Valor_Impressao((decimal)item.VALOR_ICMS_ST_ITEM_COMPRA, 2));
                        itemPEDIDO = itemPEDIDO.Replace("#IPI#", ApoioXML.formata_Valor_Impressao((decimal)item.VALOR_IPI_ITEM_COMPRA, 2));

                        itemPEDIDO = itemPEDIDO.Replace("#CODIGO_ITEM_FORNECEDOR#", string.Concat("<span style='font-size: 9pt;'>", item.CODIGO_FORNECEDOR_ITEM_COMPRA.Trim(), "</span>"));

                        itemPEDIDO = itemPEDIDO.Replace("#OBS_ITEM#", string.Concat("<span style='font-size: 9pt;'>", item.OBS_ITEM_COMPRA.Trim(), OBS_VENDAS, "</span>"));
                        itemPEDIDO = itemPEDIDO.Replace("#ENTREGA#", string.Concat("<span style='font-size: 9pt;'>", ApoioXML.TrataData2(item.PREVISAO_ENTREGA_ITEM_COMPRA), "</span>"));

                        itemPEDIDO = itemPEDIDO.Replace("#PEDIDO_VENDA#", string.Concat("<span style='font-size: 9pt;'>", PEDIDOS_VENDA, "</span>"));

                        if (StatusEspecifico(item.STATUS_ITEM_COMPRA) == 2)
                        {
                            item.STATUS_ITEM_COMPRA = STATUS_CONFIRMADO; // Pedido Confirmado

                            Doran_Base.Auditoria_ERP_Servicos.Doran_Auditoria.Audita_Update(ctx, ctx.TB_PEDIDO_COMPRAs.GetModifiedMembers(item),
                                                                                            ctx.TB_PEDIDO_COMPRAs.ToString(), ID_USUARIO);
                        }

                        itens++;
                    }
                }

                ctx.SubmitChanges();

                htmlPEDIDO = htmlPEDIDO.Replace(linhaProduto.ToString(), itemPEDIDO.ToString());

                GravaPaginaPEDIDO(htmlPEDIDO);

                htmlPEDIDO = _htmlPEDIDO;

                Merge(_Arquivo);

                str1 = ConfigurationManager.AppSettings["PastaVirtualPDF"] + _Arquivo.Substring(_Arquivo.LastIndexOf("\\") + 1);

                retorno.Add(str1);
            }

            using (Doran_ERP_Servicos_DadosDataContext ctx1 = new Doran_ERP_Servicos_DadosDataContext())
            {
                var query1 = (from linha in ctx1.TB_PEDIDO_COMPRAs
                              orderby linha.NUMERO_PEDIDO_COMPRA, linha.NUMERO_ITEM_COMPRA
                              where linha.NUMERO_PEDIDO_COMPRA == NUMERO_PEDIDO_COMPRA &&
                              linha.NUMERO_ITEM_COMPRA == ITENS_COMPRA[0]

                              select linha).ToList();

                retorno.Add(query1.First().STATUS_ITEM_COMPRA);
                retorno.Add(query1.First().TB_STATUS_PEDIDO_COMPRA.DESCRICAO_STATUS_PEDIDO_COMPRA.Trim());
                retorno.Add(query1.First().TB_STATUS_PEDIDO_COMPRA.COR_STATUS_PEDIDO_COMPRA.Trim());
                retorno.Add(query1.First().TB_STATUS_PEDIDO_COMPRA.COR_FONTE_STATUS_PEDIDO_COMPRA.Trim());
                retorno.Add(query1.First().TB_STATUS_PEDIDO_COMPRA.STATUS_ESPECIFICO_ITEM_COMPRA);
            }

            return(retorno);
        }
Пример #25
0
        public List <object> Salva_Custos(List <Dictionary <string, object> > LINHAS)
        {
            try
            {
                using (Doran_ERP_Servicos_DadosDataContext ctx = new Doran_ERP_Servicos_DadosDataContext())
                {
                    decimal NUMERO_ORCAMENTO      = 0;
                    decimal NUMERO_ITEM_ORCAMENTO = 0;

                    foreach (Dictionary <string, object> CUSTO in LINHAS)
                    {
                        NUMERO_ORCAMENTO      = Convert.ToDecimal(CUSTO["NUMERO_ORCAMENTO"]);
                        NUMERO_ITEM_ORCAMENTO = Convert.ToDecimal(CUSTO["NUMERO_ITEM_ORCAMENTO"]);

                        var query = (from linha in ctx.TB_CUSTO_ITEM_ORCAMENTO_VENDAs
                                     where linha.NUMERO_ORCAMENTO == Convert.ToDecimal(CUSTO["NUMERO_ORCAMENTO"]) &&
                                     linha.NUMERO_ITEM_ORCAMENTO == Convert.ToDecimal(CUSTO["NUMERO_ITEM_ORCAMENTO"]) &&
                                     linha.NUMERO_CUSTO_VENDA == Convert.ToDecimal(CUSTO["NUMERO_CUSTO_VENDA"])
                                     select linha).ToList();

                        if (query.Count() > 0)
                        {
                            foreach (var item in query)
                            {
                                string VALOR_CUSTO = CUSTO["CUSTO_ITEM_ORCAMENTO"].ToString().Replace(".", ",");

                                item.CUSTO_ITEM_ORCAMENTO = Convert.ToDecimal(VALOR_CUSTO);
                                item.PREVISAO_ENTREGA     = Convert.ToDateTime(CUSTO["PREVISAO_ENTREGA"]);
                                item.OBS_CUSTO_VENDA      = string.IsNullOrEmpty(CUSTO["OBS_CUSTO_VENDA"].ToString()) ? "" :
                                                            CUSTO["OBS_CUSTO_VENDA"].ToString();

                                if (string.IsNullOrEmpty(CUSTO["CODIGO_FORNECEDOR"].ToString()))
                                {
                                    CUSTO["CODIGO_FORNECEDOR"] = null;
                                }

                                item.CODIGO_FORNECEDOR = Convert.ToDecimal(CUSTO["CODIGO_FORNECEDOR"]);

                                item.CODIGO_FORNECEDOR = item.CODIGO_FORNECEDOR.HasValue ? item.CODIGO_FORNECEDOR : null;

                                Doran_Base.Auditoria_ERP_Servicos.Doran_Auditoria.Audita_Update(ctx, ctx.TB_CUSTO_ITEM_ORCAMENTO_VENDAs.GetModifiedMembers(item),
                                                                                                ctx.TB_CUSTO_ITEM_ORCAMENTO_VENDAs.ToString(), Convert.ToDecimal(CUSTO["ID_USUARIO"]));
                            }
                        }
                        else
                        {
                            System.Data.Linq.Table <TB_CUSTO_ITEM_ORCAMENTO_VENDA> Entidade = ctx.GetTable <TB_CUSTO_ITEM_ORCAMENTO_VENDA>();

                            TB_CUSTO_ITEM_ORCAMENTO_VENDA novo = new TB_CUSTO_ITEM_ORCAMENTO_VENDA();

                            string VALOR_CUSTO = CUSTO["CUSTO_ITEM_ORCAMENTO"].ToString().Replace(".", ",");

                            novo.NUMERO_ORCAMENTO      = Convert.ToDecimal(CUSTO["NUMERO_ORCAMENTO"]);
                            novo.NUMERO_ITEM_ORCAMENTO = Convert.ToDecimal(CUSTO["NUMERO_ITEM_ORCAMENTO"]);
                            novo.NUMERO_CUSTO_VENDA    = Convert.ToDecimal(CUSTO["NUMERO_CUSTO_VENDA"]);
                            novo.CUSTO_ITEM_ORCAMENTO  = Convert.ToDecimal(VALOR_CUSTO);
                            novo.PREVISAO_ENTREGA      = Convert.ToDateTime(CUSTO["PREVISAO_ENTREGA"]);
                            novo.OBS_CUSTO_VENDA       = string.IsNullOrEmpty(CUSTO["OBS_CUSTO_VENDA"].ToString()) ? "" :
                                                         CUSTO["OBS_CUSTO_VENDA"].ToString();

                            if (string.IsNullOrEmpty(CUSTO["CODIGO_FORNECEDOR"].ToString()))
                            {
                                CUSTO["CODIGO_FORNECEDOR"] = null;
                            }

                            novo.CODIGO_FORNECEDOR = Convert.ToDecimal(CUSTO["CODIGO_FORNECEDOR"]);

                            novo.CODIGO_FORNECEDOR = novo.CODIGO_FORNECEDOR.HasValue ? novo.CODIGO_FORNECEDOR : null;

                            Entidade.InsertOnSubmit(novo);

                            Doran_Base.Auditoria_ERP_Servicos.Doran_Auditoria.Audita_Insert(ctx, novo, Entidade.ToString(), Convert.ToDecimal(CUSTO["ID_USUARIO"]));
                        }
                    }

                    ctx.SubmitChanges();

                    List <object> retorno = new List <object>();

                    using (Doran_Comercial_Orcamentos item = new Doran_Comercial_Orcamentos(NUMERO_ORCAMENTO, Convert.ToDecimal(LINHAS[0]["ID_USUARIO"])))
                    {
                        retorno = item.Recalcula_Custos(NUMERO_ITEM_ORCAMENTO);
                    }

                    return(retorno);
                }
            }
            catch (Exception ex)
            {
                Doran_Base.Auditoria_ERP_Servicos.Doran_Exception.GravaErro(ex, Convert.ToDecimal(LINHAS[0]["ID_USUARIO"]));
                throw ex;
            }
        }
Пример #26
0
        public string Lista_Relatorio(decimal ID_EMPRESA)
        {
            string retorno = "";

            using (Th2_Report r = new Th2_Report(ExpertPdf.HtmlToPdf.PdfPageSize.A4, ExpertPdf.HtmlToPdf.PDFPageOrientation.Portrait))
            {
                r.ID_EMPRESA = ID_EMPRESA;

                r.DefineCabecalho("Itens de compra com entrega atrasada", 60);

                using (Doran_ERP_Servicos_DadosDataContext ctx = new Doran_ERP_Servicos_DadosDataContext())
                {
                    var query = (from linha in ctx.TB_PEDIDO_COMPRAs
                                 orderby linha.PREVISAO_ENTREGA_ITEM_COMPRA descending

                                 where linha.PREVISAO_ENTREGA_ITEM_COMPRA < dataLimite &&
                                 (linha.TB_STATUS_PEDIDO_COMPRA.STATUS_ESPECIFICO_ITEM_COMPRA == 2 ||
                                  linha.TB_STATUS_PEDIDO_COMPRA.STATUS_ESPECIFICO_ITEM_COMPRA == 3 ||
                                  linha.TB_STATUS_PEDIDO_COMPRA.STATUS_ESPECIFICO_ITEM_COMPRA == 6)

                                 && (linha.TB_FORNECEDOR.NOME_FANTASIA_FORNECEDOR.Contains(FORNECEDOR) ||
                                     linha.TB_FORNECEDOR.NOME_FORNECEDOR.Contains(FORNECEDOR))

                                 select new
                    {
                        linha.NUMERO_PEDIDO_COMPRA,
                        linha.DATA_ITEM_COMPRA,
                        linha.PREVISAO_ENTREGA_ITEM_COMPRA,
                        linha.TB_FORNECEDOR.NOME_FANTASIA_FORNECEDOR,
                        linha.CODIGO_PRODUTO_COMPRA,
                        linha.QTDE_ITEM_COMPRA,
                        linha.UNIDADE_ITEM_COMPRA,

                        QTDE_RECEBIDA = (from linha1 in ctx.TB_RECEBIMENTO_PEDIDO_COMPRAs

                                         orderby linha1.NUMERO_PEDIDO_COMPRA, linha1.NUMERO_ITEM_COMPRA

                                         where linha1.NUMERO_PEDIDO_COMPRA == linha.NUMERO_PEDIDO_COMPRA &&
                                         linha1.NUMERO_ITEM_COMPRA == linha.NUMERO_ITEM_COMPRA

                                         select linha1.QTDE_RECEBIDA).Any() ?

                                        (from linha1 in ctx.TB_RECEBIMENTO_PEDIDO_COMPRAs

                                         orderby linha1.NUMERO_PEDIDO_COMPRA, linha1.NUMERO_ITEM_COMPRA

                                         where linha1.NUMERO_PEDIDO_COMPRA == linha.NUMERO_PEDIDO_COMPRA &&
                                         linha1.NUMERO_ITEM_COMPRA == linha.NUMERO_ITEM_COMPRA

                                         select linha1.QTDE_RECEBIDA).Sum() : 0
                    }).ToList();

                    string _conteudo = "<table style='width: 70%; font-family: tahoma; font-size: 8pt;'>";

                    _conteudo += @"<tr>
                                    <td style='BORDER-BOTTOM: 1px solid;'>N&ordm; do Pedido</td>
                                    <td style='BORDER-BOTTOM: 1px solid;'>Fornecedor</td>
                                    <td style='BORDER-BOTTOM: 1px solid;'>Produto</td>
                                    <td style='BORDER-BOTTOM: 1px solid;'>Un.</td>
                                    <td style='BORDER-BOTTOM: 1px solid;'>Qtde. pedida</td>
                                    <td style='BORDER-BOTTOM: 1px solid;'>Qtde. faltante</td>
                                    <td style='BORDER-BOTTOM: 1px solid;'>Entrega</td>
                                    <td style='BORDER-BOTTOM: 1px solid;'>Dias de atraso</td>
                                  </tr>";

                    foreach (var item in query)
                    {
                        TimeSpan ts = DateTime.Today.Subtract(item.PREVISAO_ENTREGA_ITEM_COMPRA.Value);

                        int dias = ts.Days;

                        _conteudo += string.Format(@"<tr>
                                        <td style='BORDER-LEFT: 1px solid; BORDER-BOTTOM: 1px solid; BORDER-RIGHT: 1px solid; border-color:#C0C0C0; text-align: center;'>{0}</td>
                                        <td style='BORDER-RIGHT: 1px solid; BORDER-BOTTOM: 1px solid; border-color:#C0C0C0;'>{1}</td>
                                        <td style='BORDER-RIGHT: 1px solid; BORDER-BOTTOM: 1px solid; border-color:#C0C0C0;'>{2}</td>
                                        <td style='BORDER-RIGHT: 1px solid; BORDER-BOTTOM: 1px solid; border-color:#C0C0C0;'>{3}</td>
                                        <td style='BORDER-RIGHT: 1px solid; BORDER-BOTTOM: 1px solid; border-color:#C0C0C0; text-align: center;'>{4}</td>
                                        <td style='BORDER-RIGHT: 1px solid; BORDER-BOTTOM: 1px solid; border-color:#C0C0C0; text-align: center;'>{5}</td>
                                        <td style='BORDER-RIGHT: 1px solid; BORDER-BOTTOM: 1px solid; border-color:#C0C0C0;'>{6}</td>
                                        <td style='BORDER-RIGHT: 1px solid; BORDER-BOTTOM: 1px solid; border-color:#C0C0C0; text-align: center;'>{7}</td>
                                      </tr>", item.NUMERO_PEDIDO_COMPRA.ToString(),
                                                   item.NOME_FANTASIA_FORNECEDOR.Trim(),
                                                   item.CODIGO_PRODUTO_COMPRA.Trim(),
                                                   item.UNIDADE_ITEM_COMPRA,
                                                   ((decimal)item.QTDE_ITEM_COMPRA).ToString("n"),
                                                   ((decimal)(item.QTDE_ITEM_COMPRA - item.QTDE_RECEBIDA)).ToString("n"),
                                                   ApoioXML.TrataData2(item.PREVISAO_ENTREGA_ITEM_COMPRA),
                                                   ts.Days.ToString());
                    }

                    _conteudo += "</table>";

                    r.InsereConteudo(_conteudo);

                    retorno = r.SalvaDocumento("Doran_Itens_Compra_Nao_Entregues");
                }

                return(retorno);
            }
        }
Пример #27
0
        public Dictionary <string, object> BuscaPorID(int ID_CLIENTE, decimal ID_USUARIO)
        {
            try
            {
                using (Doran_ERP_Servicos_DadosDataContext ctx = new Doran_ERP_Servicos_DadosDataContext())
                {
                    var query = (from cliente in ctx.TB_CLIENTEs
                                 join ufs in ctx.TB_UFs on cliente.ESTADO_FATURA equals ufs.ID_UF
                                 where cliente.ID_CLIENTE == ID_CLIENTE

                                 select new
                    {
                        cliente.ID_CLIENTE,
                        cliente.NOME_CLIENTE,
                        cliente.NOMEFANTASIA_CLIENTE,
                        cliente.CNPJ_CLIENTE,
                        cliente.IE_CLIENTE,
                        cliente.IE_SUFRAMA,
                        cliente.ENDERECO_FATURA,
                        cliente.NUMERO_END_FATURA,
                        cliente.COMP_END_FATURA,
                        cliente.CEP_FATURA,
                        cliente.BAIRRO_FATURA,
                        cliente.CIDADE_FATURA,
                        DESCRICAO_CIDADE_FATURA = cliente.TB_MUNICIPIO.NOME_MUNICIPIO,
                        cliente.ESTADO_FATURA,
                        DESCRICAO_ESTADO_FATURA = ufs.DESCRICAO_UF,
                        cliente.TELEFONE_FATURA,

                        cliente.ENDERECO_ENTREGA,
                        cliente.NUMERO_END_ENTREGA,
                        cliente.COMP_END_ENTREGA,
                        cliente.CEP_ENTREGA,
                        cliente.BAIRRO_ENTREGA,
                        cliente.CIDADE_ENTREGA,
                        DESCRICAO_CIDADE_ENTREGA = cliente.TB_MUNICIPIO1.NOME_MUNICIPIO,
                        cliente.ESTADO_ENTREGA,
                        cliente.TELEFONE_ENTREGA,

                        cliente.ENDERECO_COBRANCA,
                        cliente.CEP_COBRANCA,
                        cliente.BAIRRO_COBRANCA,
                        cliente.CIDADE_COBRANCA,
                        DESCRICAO_CIDADE_COBRANCA = cliente.TB_MUNICIPIO2.NOME_MUNICIPIO,
                        cliente.ESTADO_COBRANCA,
                        cliente.TELEFONE_COBRANCA,
                        cliente.CODIGO_CP_CLIENTE,
                        cliente.ID_LIMITE,
                        cliente.CODIGO_VENDEDOR_CLIENTE,
                        cliente.OBS_CLIENTE,
                        cliente.EMAIL_CLIENTE,
                        cliente.ENVIO_NFE_CLIENTE,
                        cliente.PESSOA,
                        cliente.CLIENTE_BLOQUEADO,
                        cliente.FORNECEDOR,

                        cliente.CONTATOS,
                        cliente.DATA_CADASTRO,
                        cliente.CODIGO_REGIAO,
                    }).ToList();

                    if (query.Count() == 0)
                    {
                        throw new Exception("Cliente n&atilde;o encontrado");
                    }

                    Dictionary <string, object> dados = new Dictionary <string, object>();

                    foreach (var item in query)
                    {
                        dados.Add("ID_CLIENTE", item.ID_CLIENTE);
                        dados.Add("NOME_CLIENTE", item.NOME_CLIENTE.Trim());
                        dados.Add("NOMEFANTASIA_CLIENTE", item.NOMEFANTASIA_CLIENTE.ToString().Trim());
                        dados.Add("CNPJ_CLIENTE", item.CNPJ_CLIENTE.ToString().Trim());
                        dados.Add("IE_CLIENTE", item.IE_CLIENTE.ToString().Trim());
                        dados.Add("IE_SUFRAMA", item.IE_SUFRAMA.ToString().Trim());
                        dados.Add("ENDERECO_FATURA", item.ENDERECO_FATURA.ToString().Trim());

                        dados.Add("NUMERO_END_FATURA", item.NUMERO_END_FATURA.ToString().Trim());
                        dados.Add("COMP_END_FATURA", item.COMP_END_FATURA.ToString().Trim());

                        dados.Add("CEP_FATURA", item.CEP_FATURA.ToString().Trim());
                        dados.Add("BAIRRO_FATURA", item.BAIRRO_FATURA.ToString().Trim());
                        dados.Add("CIDADE_FATURA", item.CIDADE_FATURA.ToString().Trim());
                        dados.Add("DESCRICAO_CIDADE_FATURA", item.DESCRICAO_CIDADE_FATURA.Trim());

                        dados.Add("ESTADO_FATURA", item.ESTADO_FATURA.ToString().Trim());
                        dados.Add("DESCRICAO_ESTADO_FATURA", item.DESCRICAO_ESTADO_FATURA.ToString().Trim());

                        dados.Add("TELEFONE_FATURA", item.TELEFONE_FATURA.ToString().Trim());

                        dados.Add("ENDERECO_ENTREGA", item.ENDERECO_ENTREGA.ToString().Trim());
                        dados.Add("NUMERO_END_ENTREGA", item.NUMERO_END_ENTREGA.ToString().Trim());
                        dados.Add("COMP_END_ENTREGA", item.COMP_END_ENTREGA.ToString().Trim());
                        dados.Add("CEP_ENTREGA", item.CEP_ENTREGA.ToString().Trim());
                        dados.Add("BAIRRO_ENTREGA", item.BAIRRO_ENTREGA.ToString().Trim());
                        dados.Add("CIDADE_ENTREGA", item.CIDADE_ENTREGA.ToString().Trim());
                        dados.Add("DESCRICAO_CIDADE_ENTREGA", item.DESCRICAO_CIDADE_ENTREGA.ToString().Trim());
                        dados.Add("ESTADO_ENTREGA", item.ESTADO_ENTREGA.ToString().Trim());
                        dados.Add("TELEFONE_ENTREGA", item.TELEFONE_ENTREGA.ToString().Trim());

                        dados.Add("ENDERECO_COBRANCA", item.ENDERECO_COBRANCA.ToString().Trim());
                        dados.Add("CEP_COBRANCA", item.CEP_COBRANCA.ToString().Trim());
                        dados.Add("BAIRRO_COBRANCA", item.BAIRRO_COBRANCA.ToString().Trim());
                        dados.Add("CIDADE_COBRANCA", item.CIDADE_COBRANCA.ToString().Trim());
                        dados.Add("DESCRICAO_CIDADE_COBRANCA", item.DESCRICAO_CIDADE_COBRANCA.ToString().Trim());
                        dados.Add("ESTADO_COBRANCA", item.ESTADO_COBRANCA.ToString().Trim());
                        dados.Add("TELEFONE_COBRANCA", item.TELEFONE_COBRANCA.ToString().Trim());

                        dados.Add("CODIGO_CP_CLIENTE", item.CODIGO_CP_CLIENTE.ToString().Trim());
                        dados.Add("ID_LIMITE_CLIENTE", item.ID_LIMITE.ToString().Trim());

                        dados.Add("CODIGO_VENDEDOR_CLIENTE", item.CODIGO_VENDEDOR_CLIENTE);
                        dados.Add("OBS_CLIENTE", item.OBS_CLIENTE.Trim());

                        dados.Add("ENVIO_NFE_CLIENTE", item.ENVIO_NFE_CLIENTE);

                        dados.Add("EMAIL_CLIENTE", item.EMAIL_CLIENTE.Trim());
                        dados.Add("PESSOA", item.PESSOA);

                        dados.Add("CLIENTE_BLOQUEADO", item.CLIENTE_BLOQUEADO);
                        dados.Add("FORNECEDOR", item.FORNECEDOR);

                        dados.Add("DATA_CADASTRO", ApoioXML.TrataData2(item.DATA_CADASTRO));
                        dados.Add("CODIGO_REGIAO", item.CODIGO_REGIAO);
                    }

                    return(dados);
                }
            }
            catch (Exception ex)
            {
                Doran_Base.Auditoria_ERP_Servicos.Doran_Exception.GravaErro(ex, ID_USUARIO);
                throw ex;
            }
        }
Пример #28
0
        public string MontaRelatorioRemessa()
        {
            string retorno = "";

            using (Th2_Report r = new Th2_Report(ExpertPdf.HtmlToPdf.PdfPageSize.A4, ExpertPdf.HtmlToPdf.PDFPageOrientation.Portrait))
            {
                r.ID_EMPRESA = ID_EMPRESA;

                string nome_banco = "";

                using (Doran_ERP_Servicos_DadosDataContext ctx = new Doran_ERP_Servicos_DadosDataContext())
                {
                    ctx.Connection.Open();
                    ctx.ExecuteCommand("SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;");

                    if (NUMERO_BANCO > 0)
                    {
                        nome_banco = (from linha in ctx.TB_BANCOs
                                      where linha.NUMERO_BANCO == NUMERO_BANCO
                                      select linha.NOME_BANCO.Trim()).ToList().First().Trim();
                    }

                    string cabecalho = string.Format("Relat&oacute;rio Remessa Banc&aacute;ria por Emiss&atilde;o<br /><span style='font-family: Tahoma; font-size: 8pt;'>Per&iacute;odo de {0} at&eacute; {1}<br />{2}</span>",
                                                     ApoioXML.TrataData2(DATA_INICIAL), ApoioXML.TrataData2(DATA_FINAL.AddDays(-1)), NUMERO_BANCO > 0 ? "Banco: " + nome_banco : "");

                    r.DefineCabecalho(cabecalho, 60);

                    DateTime _dt = DATA_INICIAL;

                    StringBuilder _conteudo = new StringBuilder();

                    _conteudo.Append("<table style='width: 70%; font-family: tahoma; font-size: 8pt;'>");

                    _conteudo.Append(@"<tr>
                                    <td style='BORDER-BOTTOM: 1px solid; border-color:#C0C0C0;'>NF / Duplicata</td>
                                    <td style='BORDER-BOTTOM: 1px solid; border-color:#C0C0C0;'>Emiss&atilde;o</td>
                                    <td style='BORDER-BOTTOM: 1px solid; border-color:#C0C0C0;'>Vencimento</td>

                                    <td style='BORDER-BOTTOM: 1px solid; border-color:#C0C0C0;'>Cliente</td>
                                    <td style='BORDER-BOTTOM: 1px solid; text-align: right; border-color:#C0C0C0;'>Valor do T&iacute;tulo</td>
                                    <td style='BORDER-BOTTOM: 1px solid; border-color:#C0C0C0;'>Instru&ccedil;&atilde;o de Remessa</td>
                                  </tr>");

                    var query = from linha in ctx.TB_HISTORICO_CNABs

                                where linha.NUMERO_BANCO == NUMERO_BANCO &&
                                (linha.DATA_HISTORICO >= DATA_INICIAL &&
                                 linha.DATA_HISTORICO < DATA_FINAL)

                                && linha.REMESSA_RETORNO == 0 &&
                                linha.TB_FINANCEIRO.CODIGO_CLIENTE > 0 &&
                                linha.TB_FINANCEIRO.CODIGO_EMITENTE == ID_EMPRESA

                                && linha.TB_FINANCEIRO.CREDITO_DEBITO == 0

                                select new
                    {
                        linha.NUMERO_FINANCEIRO,
                        linha.TB_FINANCEIRO.NUMERO_SEQ_NF_SAIDA,
                        linha.TB_FINANCEIRO.NUMERO_NF_SAIDA,
                        linha.TB_FINANCEIRO.DATA_LANCAMENTO,
                        linha.TB_FINANCEIRO.DATA_VENCIMENTO,
                        linha.TB_FINANCEIRO.TB_CLIENTE.NOMEFANTASIA_CLIENTE,
                        linha.TB_FINANCEIRO.VALOR_TOTAL,
                        linha.TB_FINANCEIRO.TB_OCORRENCIA_BANCARIA_REMESSA.DESCRICAO_OCORRENCIA
                    };

                    decimal TOTAL_PERIODO = 0;

                    foreach (var item in query)
                    {
                        string duplicata = "";

                        if (NUMERO_BANCO == 237)
                        {
                            duplicata = Doran_Base.CNAB.FaTh2_Remessa_Bradesco.Duplicata(ctx, item.NUMERO_NF_SAIDA, item.DATA_VENCIMENTO);
                        }

                        if (NUMERO_BANCO == 1)
                        {
                            duplicata = Doran_Base.CNAB.FaTh2_Remessa_Brasil.Duplicata(ctx, item.NUMERO_NF_SAIDA, item.DATA_VENCIMENTO);
                        }

                        _conteudo.Append(string.Format(@"<tr>
                                        <td style='text-align: center; BORDER-BOTTOM: 1px solid; BORDER-TOP: 1px solid; BORDER-LEFT: 1px solid; BORDER-RIGHT: 1px solid; border-color:#C0C0C0;'>{0}</td>
                                        <td style='text-align: center; BORDER-BOTTOM: 1px solid; BORDER-TOP: 1px solid; BORDER-LEFT: 1px solid; BORDER-RIGHT: 1px solid; border-color:#C0C0C0;'>{1}</td>
                                        <td style='text-align: center; BORDER-BOTTOM: 1px solid; BORDER-TOP: 1px solid; BORDER-LEFT: 1px solid; BORDER-RIGHT: 1px solid; border-color:#C0C0C0;'>{2}</td>
                                        <td style='BORDER-BOTTOM: 1px solid; BORDER-TOP: 1px solid; BORDER-LEFT: 1px solid; BORDER-RIGHT: 1px solid; border-color:#C0C0C0;'>{3}</td>
                                        <td style='text-align: right; BORDER-BOTTOM: 1px solid; BORDER-TOP: 1px solid; BORDER-LEFT: 1px solid; BORDER-RIGHT: 1px solid; border-color:#C0C0C0;'>{4}</td>
                                        <td style='BORDER-BOTTOM: 1px solid; BORDER-TOP: 1px solid; BORDER-LEFT: 1px solid; BORDER-RIGHT: 1px solid; border-color:#C0C0C0;'>{5}</td>
                                          </tr>", duplicata,
                                                       ApoioXML.Data((DateTime)item.DATA_LANCAMENTO),
                                                       ApoioXML.Data((DateTime)item.DATA_VENCIMENTO),
                                                       item.NOMEFANTASIA_CLIENTE.Trim(),
                                                       ((decimal)item.VALOR_TOTAL).ToString("c"),
                                                       item.DESCRICAO_OCORRENCIA.Trim()));


                        TOTAL_PERIODO += (decimal)item.VALOR_TOTAL;
                    }

                    _conteudo.Append(string.Format(@"<tr>
                                        <td style='BORDER-BOTTOM: 1px solid; BORDER-TOP: 1px solid; BORDER-LEFT: 1px solid; BORDER-RIGHT: 1px solid; border-color:#C0C0C0;'></td>
                                        <td style='BORDER-BOTTOM: 1px solid; BORDER-TOP: 1px solid; BORDER-LEFT: 1px solid; BORDER-RIGHT: 1px solid; border-color:#C0C0C0;'></td>
                                        <td style='BORDER-BOTTOM: 1px solid; BORDER-TOP: 1px solid; BORDER-LEFT: 1px solid; BORDER-RIGHT: 1px solid; border-color:#C0C0C0;'></td>
                                        <td style='BORDER-BOTTOM: 1px solid; BORDER-TOP: 1px solid; BORDER-LEFT: 1px solid; BORDER-RIGHT: 1px solid; border-color:#C0C0C0;'>Total</td>
                                        <td style='text-align: right; BORDER-BOTTOM: 1px solid; BORDER-TOP: 1px solid; BORDER-LEFT: 1px solid; BORDER-RIGHT: 1px solid; border-color:#C0C0C0;'>{0}</td>
                                        <td style='BORDER-BOTTOM: 1px solid; BORDER-TOP: 1px solid; BORDER-LEFT: 1px solid; BORDER-RIGHT: 1px solid; border-color:#C0C0C0;'></td>
                                      </tr>",
                                                   ((decimal)TOTAL_PERIODO).ToString("c")));

                    _conteudo.Append("</table>");

                    r.InsereConteudo(_conteudo.ToString());
                    retorno = r.SalvaDocumento("Doran_Remessa_Bancaria");
                }

                return(retorno);
            }
        }
Пример #29
0
        public string MontaRelatorioAReceber()
        {
            string retorno = "";

            using (Th2_Report r = new Th2_Report(ExpertPdf.HtmlToPdf.PdfPageSize.A4, ExpertPdf.HtmlToPdf.PDFPageOrientation.Portrait))
            {
                r.ID_EMPRESA = ID_EMPRESA;

                r.DefineCabecalho("Relat&oacute;rio de T&iacute;tulos a Receber Vencidos", 60);

                DateTime dataLimite = Doran_TitulosVencidos.DataLimiteParaVencimento();

                using (Doran_ERP_Servicos_DadosDataContext ctx = new Doran_ERP_Servicos_DadosDataContext())
                {
                    ctx.Connection.Open();
                    ctx.ExecuteCommand("SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;");

                    var query = from linha in ctx.TB_FINANCEIROs
                                where linha.DATA_PAGAMENTO == new DateTime(1901, 01, 01) &&
                                linha.DATA_VENCIMENTO < dataLimite &&
                                linha.CREDITO_DEBITO == 0
                                // && linha.CODIGO_CLIENTE > 0
                                && linha.HISTORICO.Contains(cliente_fornecedor) &&
                                linha.CODIGO_EMITENTE == ID_EMPRESA

                                select new
                    {
                        linha.NUMERO_FINANCEIRO,
                        linha.NUMERO_SEQ_NF_SAIDA,
                        linha.NUMERO_NF_SAIDA,
                        linha.NUMERO_SEQ_NF_ENTRADA,
                        linha.HISTORICO,
                        linha.DATA_LANCAMENTO,
                        linha.DATA_VENCIMENTO,
                        CLIENTE         = linha.TB_NOTA_SAIDA == null ? "" : linha.TB_NOTA_SAIDA.TB_CLIENTE.NOMEFANTASIA_CLIENTE,
                        VENDEDOR        = linha.TB_NOTA_SAIDA == null ? "" : linha.TB_NOTA_SAIDA.NOME_VENDEDOR_NF,
                        CODIGO_VENDEDOR = linha.TB_NOTA_SAIDA == null ? 0 : linha.TB_NOTA_SAIDA.CODIGO_VENDEDOR_NF,
                        VALOR_TOTAL     = (linha.VALOR + linha.VALOR_ACRESCIMO + linha.VALOR_MULTA) - linha.VALOR_DESCONTO,
                        linha.VALOR_APROXIMADO
                    };

                    if (VENDEDOR > 0)
                    {
                        query = query.Where(_ => _.CODIGO_VENDEDOR == VENDEDOR);
                    }

                    string _conteudo = "<table style='width: 70%; font-family: tahoma; font-size: 8pt;'>";

                    _conteudo += @"<tr>
                                    <td style='BORDER-BOTTOM: 1px solid; border-color:#C0C0C0;'>NF / Duplicata</td>
                                    <td style='BORDER-BOTTOM: 1px solid; border-color:#C0C0C0;'>Lan&ccedil;amento</td>
                                    <td style='BORDER-BOTTOM: 1px solid; border-color:#C0C0C0;'>Vencimento</td>
                                    <td style='BORDER-BOTTOM: 1px solid; border-color:#C0C0C0;'>Cliente</td>
                                    <td style='BORDER-BOTTOM: 1px solid;  border-color:#C0C0C0;'>Vendedor</td>
                                    <td style='BORDER-BOTTOM: 1px solid; text-align: right; border-color:#C0C0C0;'>Valor</td>
                                    <td style='BORDER-BOTTOM: 1px solid; text-align: right; border-color:#C0C0C0;'>Valor Aproximado?</td>
                                  </tr>";

                    decimal Total = 0;

                    foreach (var item in query)
                    {
                        DateTime _vencimento = Convert.ToDateTime(item.DATA_VENCIMENTO);

                        while (Feriado_FimDeSemana(_vencimento))
                        {
                            _vencimento = _vencimento.AddDays(1);
                        }

                        DateTime _limite = DateTime.Now;

                        if (_limite.DayOfWeek == DayOfWeek.Saturday)
                        {
                            _limite = _limite.AddDays(-2);
                        }

                        if (_limite.DayOfWeek == DayOfWeek.Sunday)
                        {
                            _limite = _limite.AddDays(-3);
                        }

                        decimal valor = (decimal)item.VALOR_TOTAL - Doran_TitulosVencidos.PagoParcialmente(item.NUMERO_FINANCEIRO);

                        if (_vencimento < _limite)
                        {
                            _conteudo += string.Format(@"<tr>
                                        <td style='BORDER-LEFT: 1px solid; BORDER-RIGHT: 1px solid; border-color:#C0C0C0;'>{0}</td>
                                        <td style='BORDER-RIGHT: 1px solid; border-color:#C0C0C0;'>{1}</td>
                                        <td style='BORDER-RIGHT: 1px solid; border-color:#C0C0C0;'>{2}</td>
                                        <td style='BORDER-RIGHT: 1px solid; border-color:#C0C0C0;'>{3}</td>
                                        <td style='BORDER-RIGHT: 1px solid; border-color:#C0C0C0;'>{4}</td>
                                        <td style='BORDER-RIGHT: 1px solid; border-color:#C0C0C0; text-align: right;'>{5}</td>
                                        <td style='BORDER-RIGHT: 1px solid; border-color:#C0C0C0;'>{6}</td>
                                      </tr>", item.NUMERO_NF_SAIDA.ToString() + "/" + ApoioXML.LetrasDuplicatas_ERP_Servicos(item.NUMERO_SEQ_NF_SAIDA, item.NUMERO_SEQ_NF_ENTRADA, item.DATA_VENCIMENTO),
                                                       ApoioXML.Data((DateTime)item.DATA_LANCAMENTO),
                                                       ApoioXML.Data((DateTime)item.DATA_VENCIMENTO),
                                                       string.IsNullOrEmpty(item.CLIENTE) ? item.HISTORICO : item.CLIENTE.Trim(),
                                                       string.IsNullOrEmpty(item.VENDEDOR) ? "" : item.VENDEDOR.Trim(),
                                                       ((decimal)valor).ToString("c"),
                                                       item.VALOR_APROXIMADO == 1 ? "S" : "");

                            Total += valor;
                        }
                    }

                    _conteudo += string.Format(@"<tr>
                                        <td style='BORDER-TOP: 1px solid; text-align: right; border-color:#C0C0C0;'>&nbsp;</td>
                                        <td style='BORDER-TOP: 1px solid; text-align: right; border-color:#C0C0C0;'>&nbsp;</td>
                                        <td style='BORDER-TOP: 1px solid; text-align: right; border-color:#C0C0C0;'>&nbsp;</td>
                                        <td style='BORDER-TOP: 1px solid; text-align: right; border-color:#C0C0C0;'>&nbsp;</td>
                                        <td style='BORDER-TOP: 1px solid; text-align: right; border-color:#C0C0C0;'>{0}</td>
                                        <td style='BORDER-TOP: 1px solid; text-align: right; border-color:#C0C0C0;'>{1}</td>
                                        <td style='BORDER-TOP: 1px solid; text-align: right; border-color:#C0C0C0;'>&nbsp;</td>
                                      </tr></table>", "Total..:", ((decimal)Total).ToString("c"));

                    r.InsereConteudo(_conteudo);

                    retorno = r.SalvaDocumento("Doran_Titulos_Receber_Vencidos");
                }

                return(retorno);
            }
        }
Пример #30
0
        public Dictionary <string, object> Calcula_e_Grava_Totais_Nota_Saida(Dictionary <string, decimal> linha, bool Moeda)
        {
            using (Doran_ERP_Servicos_DadosDataContext ctx = new Doran_ERP_Servicos_DadosDataContext())
            {
                Dictionary <string, object> retorno = new Dictionary <string, object>();

                var queryItens = (from itens in ctx.GetTable <TB_ITEM_NOTA_SAIDA>()
                                  where itens.NUMERO_ITEM_NF == _NUMERO_SEQ
                                  select itens).ToList();


                decimal TOTAL_SERVICOS_NF = decimal.TryParse(queryItens.Sum(c => c.VALOR_TOTAL_ITEM_NF).ToString(), out TOTAL_SERVICOS_NF) ?
                                            (decimal)queryItens.Sum(c => c.VALOR_TOTAL_ITEM_NF) : 0;

                decimal TOTAL_ISS_NF = decimal.TryParse(queryItens.Sum(c => c.VALOR_ISS_ITEM_NF).ToString(), out TOTAL_ISS_NF) ?
                                       (decimal)queryItens.Sum(c => c.VALOR_ISS_ITEM_NF) : 0;

                decimal BASE_ISS_NF = decimal.TryParse(queryItens.Sum(c => c.BASE_ISS_ITEM_NF).ToString(), out BASE_ISS_NF) ?
                                      (decimal)queryItens.Sum(c => c.BASE_ISS_ITEM_NF) : 0;

                decimal TOTAL_NF = TOTAL_SERVICOS_NF;

                Completa_DADOS_ADICIONAIS_NF();

                var query = (from linha1 in ctx.TB_NOTA_SAIDAs
                             where linha1.NUMERO_SEQ == _NUMERO_SEQ
                             select linha1).ToList();

                foreach (var nota in query)
                {
                    nota.BASE_ISS_NF       = BASE_ISS_NF;
                    nota.VALOR_ISS_NF      = TOTAL_ISS_NF;
                    nota.TOTAL_SERVICOS_NF = TOTAL_SERVICOS_NF;
                    nota.TOTAL_NF          = TOTAL_SERVICOS_NF;

                    TOTAL_NF = nota.TOTAL_NF.Value;

                    nota.DADOS_ADICIONAIS_NF = DADOS_ADICIONAIS;

                    Doran_Base.Auditoria_ERP_Servicos.Doran_Auditoria.Audita_Update(ctx, ctx.GetTable <TB_NOTA_SAIDA>().GetModifiedMembers(nota),
                                                                                    ctx.GetTable <TB_NOTA_SAIDA>().ToString(), ID_USUARIO);

                    ctx.SubmitChanges();
                }

                if (Moeda)
                {
                    retorno.Add("BASE_ISS_NF", BASE_ISS_NF.ToString("c", CultureInfo.CurrentCulture));
                    retorno.Add("VALOR_ISS_NF", TOTAL_ISS_NF.ToString("c", CultureInfo.CurrentCulture));
                    retorno.Add("TOTAL_SERVICOS_NF", TOTAL_SERVICOS_NF.ToString("c", CultureInfo.CurrentCulture));
                    retorno.Add("TOTAL_NF", TOTAL_NF.ToString("c", CultureInfo.CurrentCulture));
                }
                else
                {
                    retorno.Add("BASE_ISS_NF", BASE_ISS_NF.ToString());
                    retorno.Add("VALOR_ISS_NF", TOTAL_ISS_NF.ToString());
                    retorno.Add("TOTAL_SERVICOS_NF", TOTAL_SERVICOS_NF.ToString());
                    retorno.Add("TOTAL_NF", TOTAL_NF.ToString());
                }

                retorno.Add("DADOS_ADICIONAIS_NF", DADOS_ADICIONAIS);

                return(retorno);
            }
        }