Beispiel #1
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);
        }
Beispiel #2
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);
        }