Ejemplo n.º 1
0
        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;
            }
        }
Ejemplo n.º 2
0
        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);
        }