public bool EnviaEmail(dynamic _objCompra, string email_to, string mensaguem, ref string str_aviso, ref string str_erro) { bool flag; string source = "GestaoOrcamentos.EnviaEmails"; string log = base.GetParameter("Mail_log"); string idioma = "2070"; try { GcpBEDocumentoCompra objCompra = (GcpBEDocumentoCompra)_objCompra; base.GetParameter("Mail_Report"); string email_mensaguem = base.GetParameter("Mail_Mensaguem"); string email_cc = base.GetParameter("Mail_CC"); string email_bcc = base.GetParameter("Mail_BCC"); base.GetParameter("Mail_TipoContacto"); string email_assunto = base.GetParameter("Mail_Assunto"); string email_body = ""; Dictionary <string, string> dicionario = new Dictionary <string, string>() { { "Artigo_2070", "Artigo" }, { "Descricao_2070", "Descrição" }, { "Unidade_2070", "Unidade" }, { "Quantidade_2070", "Quantidade" }, { "PrecUnit_2070", "Preço Unit." }, { "Total_2070", "Total" }, { "ContaCBL_2070", "Conta" }, { "CCustoCBL_2070", "Area de Negocio" } }; string primPar = base.GetParameter("Mail_primPar"); string segPar = base.GetParameter("Mail_segPar"); string terPar = base.GetParameter("Mail_terPar"); email_body = string.Concat(email_body, " \r\n <html xmlns:v='urn:schemas-microsoft-com:vml' xmlns:o='urn:schemas-microsoft-com:office:office' xmlns:w='urn:schemas-microsoft-com:office:word' xmlns:m='http://schemas.microsoft.com/office/2004/12/omml' xmlns='http://www.w3.org/TR/REC-html40'><head><meta http-equiv=Content-Type content='text/html; charset=iso-8859-1'><meta name=Generator content='Microsoft Word 15 (filtered medium)'><!--[if gte mso 9]><xml>\r\n <o:shapedefaults v:ext='edit' spidmax='1026' /></xml><![endif]--><!--[if gte mso 9]><xml><o:shapelayout v:ext='edit'><o:idmap v:ext='edit' data='1' />\r\n </o:shapelayout></xml><![endif]-->\r\n <style>\r\n body {\r\n font: normal 10px Verdana, Arial, sans-serif;\r\n font-size:11.0pt;\r\n font-family:'Calibri',sans-serif;\r\n mso-fareast-language:PT\r\n }\r\n </style>\r\n\r\n </head><body lang=PT > "); email_body = string.Concat(email_body, string.Format("<div> \r\n <p><span>{0}</span></p>\r\n {1}\r\n <p><span>{2}</span></p>\r\n <p><span>{3}</span></p>\r\n </div>", new object[] { primPar, mensaguem, segPar, terPar })); email_body = string.Concat(email_body, "<div><table border=2 cellspacing=10 cellpadding=10 style='border-collapse:collapse'>"); email_body = string.Concat(email_body, string.Format("<tr>\r\n <td width=100 valign=top style='width:100pt;color:white;background:#5C6BC0;padding:0cm 5.4pt 0cm 5.4pt'><p align=center style='text-align:center'><b>{0}</b></p></td>\r\n <td width=100 valign=top style='width:100pt;color:white;background:#5C6BC0;padding:0cm 5.4pt 0cm 5.4pt'><p align=center style='text-align:center'><b>{1}</b></p></td>\r\n <td width=100 valign=top style='width:100pt;color:white;background:#5C6BC0;padding:0cm 5.4pt 0cm 5.4pt'><p align=center style='text-align:center'><b>{2}</b></p></td>\r\n <td width=100 valign=top style='width:100pt;color:white;background:#5C6BC0;padding:0cm 5.4pt 0cm 5.4pt'><p align=center style='text-align:center'><b>{3}</b></p></td>\r\n <td width=100 valign=top style='width:100pt;color:white;background:#5C6BC0;padding:0cm 5.4pt 0cm 5.4pt'><p align=center style='text-align:center'><b>{4}</b></p></td>\r\n <td width=100 valign=top style='width:100pt;color:white;background:#5C6BC0;padding:0cm 5.4pt 0cm 5.4pt'><p align=center style='text-align:center'><b>{5}</b></p></td>\r\n <td width=100 valign=top style='width:100pt;color:white;background:#5C6BC0;padding:0cm 5.4pt 0cm 5.4pt'><p align=center style='text-align:center'><b>{6}</b></p></td>\r\n <td width=100 valign=top style='width:100pt;color:white;background:#5C6BC0;padding:0cm 5.4pt 0cm 5.4pt'><p align=center style='text-align:center'><b>{7}</b></p></td>\r\n </tr>\r\n ", new object[] { dicionario[string.Concat("Artigo_", idioma)], dicionario[string.Concat("Descricao_", idioma)], dicionario[string.Concat("Unidade_", idioma)], dicionario[string.Concat("Quantidade_", idioma)], dicionario[string.Concat("PrecUnit_", idioma)], dicionario[string.Concat("Total_", idioma)], dicionario[string.Concat("ContaCBL_", idioma)], dicionario[string.Concat("CCustoCBL_", idioma)] })); for (int i = 1; i <= objCompra.get_Linhas().NumItens; i++) { int num = i; GcpBELinhaDocumentoCompra linha = objCompra.get_Linhas().get_Edita(ref num); short ano = (short)objCompra.get_DataDoc().Year; string cCustoCBL = linha.get_CCustoCBL(); string contaCBL = linha.get_ContaCBL(); string centroNome = base.bso.Contabilidade.CentrosCusto.DaValorAtributo(ano, cCustoCBL, "Descricao").ToString(); string contaNome = base.bso.Contabilidade.PlanoContas.DaValorAtributo(ano, contaCBL, "Descricao").ToString(); email_body = string.Concat(email_body, string.Format("\r\n <tr>\r\n <td width=100 valign=top style='width:100pt;padding:0cm 5.4pt 0cm 5.4pt'><p align=right style='text-align:left'>{0}</p></td>\r\n <td width=100 valign=top style='width:100pt;padding:0cm 5.4pt 0cm 5.4pt'><p align=right style='text-align:left'>{1}</p></td>\r\n <td width=100 valign=top style='width:100pt;padding:0cm 5.4pt 0cm 5.4pt'><p align=right style='text-align:left'>{2}</p></td>\r\n <td width=100 valign=top style='width:100pt;padding:0cm 5.4pt 0cm 5.4pt'><p align=right style='text-align:left'>{3}</p></td>\r\n <td width=100 valign=top style='width:100pt;padding:0cm 5.4pt 0cm 5.4pt'><p align=right style='text-align:left'>{4}</p></td>\r\n <td width=100 valign=top style='width:100pt;padding:0cm 5.4pt 0cm 5.4pt'><p align=right style='text-align:left'>{5}</p></td>\r\n <td width=100 valign=top style='width:100pt;padding:0cm 5.4pt 0cm 5.4pt'><p align=right style='text-align:left'>{6} - {7}</p></td>\r\n <td width=100 valign=top style='width:100pt;padding:0cm 5.4pt 0cm 5.4pt'><p align=right style='text-align:left'>{8} - {9}</p></td>\r\n </tr>\r\n ", new object[] { linha.get_Artigo(), linha.get_Descricao(), linha.get_Unidade(), linha.get_Quantidade(), linha.get_PrecUnit(), linha.get_PrecoLiquido(), linha.get_ContaCBL(), contaNome, linha.get_CCustoCBL(), centroNome })); } email_body = string.Concat(email_body, " </table> <p></p> </div>"); email_body = string.Concat(email_body, "</body></html>"); email_mensaguem = email_body; if (email_to.Length <= 0) { throw new Exception(string.Format("O email não foi enviado porque não existe nenhum contacto associado ao utilizador!", new object[0])); } this.EnviaEmailNativo(email_to, email_mensaguem, email_cc, email_bcc, email_assunto); flag = true; } catch (Exception exception) { Exception ex = exception; base.escreveErro(log, source, string.Format("<{0}>_{1}", source, ex.Message)); flag = false; } return(flag); }
public bool ValidaAlteracoesDocumentoOriginal(dynamic _objCompra, ref string str_msg, ref string str_msgEmail, ref string str_aviso, ref string str_erro) { bool flag; string source = "GestaoOrcamentos.ValidaAlteracoesDocumentoOriginal"; string log = base.GetParameter("PastaErro"); double precoAnterior = 0; double quantAnterior = 0; string erro_linha = ""; string erro_linhaEmail = ""; string user = base.bso.Contexto.UtilizadorActual; try { GcpBEDocumentoCompra objCompra = (GcpBEDocumentoCompra)_objCompra; str_msg = ""; str_msgEmail = ""; string documento = string.Format("{0} {1}/{2}", objCompra.get_Tipodoc(), objCompra.get_NumDoc(), objCompra.get_Serie()); string documentoOrc = ""; for (int i = 1; i <= objCompra.get_Linhas().NumItens; i++) { erro_linha = ""; erro_linhaEmail = ""; int num = i; GcpBELinhaDocumentoCompra linha = objCompra.get_Linhas().get_Edita(ref num); string idLinhaOrigem = linha.get_IDLinhaOriginal().Replace("{", "").Replace("}", ""); DataTable dt = base.ConsultaSQLDatatable( string.Format("select [Documento],[DocumentoOrc],[id],[Artigo],[unidade],[Quantidade],[PrecUnit] from View_Linhas_Documento_OCP where id= '{0}'", idLinhaOrigem ) ); if (dt.Rows.Count > 0) { precoAnterior = StringHelper.DaDouble(dt.Rows[0]["PrecUnit"]); quantAnterior = StringHelper.DaDouble(dt.Rows[0]["Quantidade"]); documentoOrc = StringHelper.DaString(dt.Rows[0]["DocumentoOrc"]); if (linha.get_PrecUnit() > precoAnterior) { erro_linha = string.Concat(string.Format(new CultureInfo("pt-PT", false), "Preço Orçamentado = {0:N2}", new object[] { precoAnterior }), Environment.NewLine); erro_linha = string.Concat(erro_linha, string.Format(new CultureInfo("pt-PT", false), "Preço = {0:N2} ", new object[] { linha.get_PrecUnit() }), Environment.NewLine, Environment.NewLine); erro_linhaEmail = string.Format(new CultureInfo("pt-PT", false), "<p>Preço Orçamentado = {0:N2}</p>", new object[] { precoAnterior }); erro_linhaEmail = string.Concat(erro_linhaEmail, string.Format(new CultureInfo("pt-PT", false), "<p>Preço = {0:N2} </p> </br>", new object[] { linha.get_PrecUnit() })); } if (linha.get_Quantidade() > quantAnterior) { erro_linha = string.Concat(erro_linha, string.Format(new CultureInfo("pt-PT", false), "Quantidade Orçamentada = {0:N2}", new object[] { quantAnterior }), Environment.NewLine); erro_linha = string.Concat(erro_linha, string.Format(new CultureInfo("pt-PT", false), "Quantidade = {0:N2}", new object[] { linha.get_Quantidade() }), Environment.NewLine, Environment.NewLine); erro_linhaEmail = string.Format(new CultureInfo("pt-PT", false), "<p>Quantidade Orçamentada = {0:N2}</p>", new object[] { quantAnterior }); erro_linhaEmail = string.Concat(erro_linhaEmail, string.Format(new CultureInfo("pt-PT", false), "<p>Quantidade = {0:N2} </p> </br>", new object[] { linha.get_Quantidade() })); } if (erro_linha.Length > 0) { object[] str = new object[] { i, documento, null, null, null, null, null }; DateTime dataDoc = objCompra.get_DataDoc(); str[2] = dataDoc.ToString("dd/MM/yyyy"); str[3] = user; str[4] = Environment.NewLine; str[5] = erro_linha; str[6] = documentoOrc; str_msg = string.Concat(str_msg, string.Format("A Linha ({0}) do documento {1} do dia {2} pelo(a) {3} \r\n falhou na validação com o documento {6} orçamentado. Assim, a vide abaixo o detalhe: {4} {5}", str)); str_msg = string.Concat(str_msg, Environment.NewLine); object[] objArray = new object[] { i, documento, null, null, null, null, null }; dataDoc = objCompra.get_DataDoc(); objArray[2] = dataDoc.ToString("dd/MM/yyyy"); objArray[3] = user; objArray[4] = "</br>"; objArray[5] = erro_linhaEmail; objArray[6] = documentoOrc; str_msgEmail = string.Concat(str_msgEmail, string.Format("<p><b>A Linha ({0}) do documento {1} do dia {2} pelo(a) {3} \r\n falhou na validação com o documento {6} orçamentado. Assim, a vide abaixo o detalhe:</b></p> {4} {5}", objArray)); } } } flag = (str_msg.Length <= 0 ? true : false); } catch (Exception exception) { Exception ex = exception; str_erro = string.Concat(str_erro, ex.Message, Environment.NewLine); base.escreveErro(log, source, string.Format("<{0}>_{1}", source, ex.Message)); flag = true; } return(flag); }