public object Execute(ContextDataObject context, Entity document) { /* **************************************** */ /* **************************************** */ /* ADD YOUR CODE HERE */ ErpBS bsERP = new ErpBS(); try { if (!context.Parameters.ContainsKey("TipoPlataforma")) { throw new Exception("TipoPlataforma inválido"); } EnumTipoPlataforma tipoPlataforma; if (!Enum.TryParse <EnumTipoPlataforma>((string)context.Parameters["TipoPlataforma"], out tipoPlataforma)) { throw new Exception("TipoPlataforma inválido"); } try { bsERP.AbreEmpresaTrabalho(tipoPlataforma, context.Company, context.Username, context.Password); } catch (Exception e) { throw new Exception("Erro a abrir a empresa no ERP: " + e.Message); } GcpBEDocumentoCompra purchaseOrder = new GcpBEDocumentoCompra(); purchaseOrder.set_Tipodoc("ECF"); purchaseOrder.set_Serie("A"); purchaseOrder.set_TipoEntidade("F"); purchaseOrder.set_Entidade(document.Attributes.Supplier); purchaseOrder.set_NumDocExterno("0"); purchaseOrder.set_Observacoes("Documento gerado no portal OMNIA: Pedido de Encomenda " + document.NumberSerieCode + "/" + document.Number); purchaseOrder.set_DataCarga(document.DateCreated.ToShortDateString()); purchaseOrder.set_DataDescarga(document.DateCreated.ToShortDateString()); bsERP.Comercial.Compras.PreencheDadosRelacionados(purchaseOrder); foreach (var line in document.Commitments.GoodsPurchaseRequest) { bsERP.Comercial.Compras.AdicionaLinha(purchaseOrder, line.Resource, line.Quantity, "A1", "", line.Amount); } bsERP.Comercial.Compras.Actualiza(purchaseOrder); bsERP.FechaEmpresaTrabalho(); return(new ScriptResponse { Message = "Integrado documento " + purchaseOrder.get_Tipodoc() + " " + purchaseOrder.get_Serie() + "/" + purchaseOrder.get_NumDoc() }); } catch (Exception ex) { bsERP.FechaEmpresaTrabalho(); throw ex; } }
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); }