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ç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ç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 ? " " : 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); }
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); }