示例#1
0
        //public static RececaoFaturacaoWorkflow Create(RececaoFaturacaoWorkflow item)
        //{
        //    if (item == null)
        //        throw new ArgumentNullException("item");
        //    try
        //    {
        //        using (var ctx = new SuchDBContext())
        //        {
        //            //item.Estado = BillingReceptionStates.Rececao;
        //            item.DataCriacao = DateTime.Now;
        //            //item.DataUltimaInteracao = DateTime.Now.ToString();
        //            ctx.RececaoFaturacaoWorkflow.Add(item);
        //            ctx.SaveChanges();
        //        }
        //        return item;
        //    }
        //    catch (Exception ex)
        //    {
        //        return null;
        //    }
        //}

        //public static RececaoFaturacaoWorkflow Update(RececaoFaturacaoWorkflow item)
        //{
        //    if (item == null)
        //        throw new ArgumentNullException("item");
        //    try
        //    {
        //        using (var ctx = new SuchDBContext())
        //        {
        //            item.DataModificacao = DateTime.Now;
        //            //item.DataUltimaInteracao = DateTime.Now.ToString();
        //            ctx.RececaoFaturacaoWorkflow.Update(item);
        //            ctx.SaveChanges();
        //        }

        //        return item;
        //    }
        //    catch (Exception ex)
        //    {
        //        return null;
        //    }
        //}

        //public static bool Delete(RececaoFaturacaoWorkflow item)
        //{
        //    if (item == null)
        //        throw new ArgumentNullException("item");
        //    try
        //    {
        //        using (var ctx = new SuchDBContext())
        //        {
        //            ctx.RececaoFaturacaoWorkflow.Remove(item);
        //            ctx.SaveChanges();
        //        }
        //        return true;
        //    }
        //    catch (Exception ex)
        //    {
        //        return false;
        //    }
        //}

        #endregion

        #region Parse Utilities
        public static BillingRecWorkflowModel ParseToViewModel(this RececaoFaturacaoWorkflow item)
        {
            if (item != null)
            {
                return(new BillingRecWorkflowModel()
                {
                    Id = item.Id,
                    CriadoPor = item.CriadoPor,
                    DataCriacao = item.DataCriacao,
                    DataModificacao = item.DataModificacao,
                    Estado = (Enumerations.BillingReceptionStates)item.Estado,
                    ModificadoPor = item.ModificadoPor,
                    AreaWorkflow = item.AreaWorkflow,
                    Area = item.Area,
                    Data = item.Data,
                    Descricao = item.Descricao,
                    IdRecFaturacao = item.IdRecFaturacao,
                    Utilizador = item.Utilizador,
                    CodTipoProblema = item.CodTipoProblema,
                    CodProblema = item.CodProblema,
                    EnderecoEnvio = item.EnderecoEnvio,
                    EnderecoFornecedor = item.EnderecoFornecedor,
                    Comentario = item.Comentario,
                    AttachedIs = item.Anexo,
                    Destinatario = item.Destinatario,
                });
            }
            return(null);
        }
示例#2
0
        public void Delete(RececaoFaturacaoWorkflow item)
        {
            if (item == null)
            {
                throw new ArgumentNullException("item");
            }

            ctx.RececaoFaturacaoWorkflow.Remove(item);
        }
        public BillingReceptionModel Create(BillingReceptionModel item)
        {
            bool autoGenId = false;
            bool isRec     = true;
            int  Cfg       = (int)DBUserConfigurations.GetById(item.CriadoPor).PerfilNumeraçãoRecDocCompras;

            item.DataCriacao       = DateTime.Now;
            item.IdAreaPendente    = (int)BillingReceptionAreas.Contabilidade;
            item.AreaPendente      = BillingReceptionAreas.Contabilidade.ToString();
            item.Estado            = BillingReceptionStates.Rececao;
            item.DataCriacao       = DateTime.Now;
            item.DescricaoProblema = "Entrada fatura em receção";

            if (item.Id == "" || item.Id == null)
            {
                ConfiguraçãoNumerações CfgNumeration = DBNumerationConfigurations.GetById(Cfg);

                autoGenId = true;

                item.Id = DBNumerationConfigurations.GetNextNumeration(Cfg, autoGenId, isRec);
            }
            if (item.Id != "" && item.Id != null)
            {
                item = repo.Create(item);

                RececaoFaturacaoWorkflow wfItem = new RececaoFaturacaoWorkflow();
                wfItem.IdRecFaturacao = item.Id;
                wfItem.AreaWorkflow   = Data.EnumHelper.GetDescriptionFor(typeof(BillingReceptionAreas), (int)BillingReceptionAreas.Contabilidade);
                wfItem.Descricao      = "Entrada fatura em receção";
                wfItem.CriadoPor      = item.CriadoPor;
                wfItem.Data           = DateTime.Now;
                wfItem.DataCriacao    = DateTime.Now;
                wfItem.Estado         = (int)BillingReceptionStates.Rececao;//TODO: Identificar estados possivels “Receção/Conferência”

                repo.Create(wfItem);

                try
                {
                    repo.SaveChanges();

                    //Update Last Numeration Used
                    ConfiguraçãoNumerações ConfigNumerations = DBNumerationConfigurations.GetById(Cfg);
                    ConfigNumerations.ÚltimoNºUsado         = wfItem.IdRecFaturacao;
                    ConfigNumerations.UtilizadorModificação = item.CriadoPor;
                    DBNumerationConfigurations.Update(ConfigNumerations);
                }
                catch (Exception ex)
                {
                    return(null);
                }
                return(item);
            }
            else
            {
                return(item);
            }
        }
示例#4
0
        public RececaoFaturacaoWorkflow Update(RececaoFaturacaoWorkflow item)
        {
            if (item == null)
            {
                throw new ArgumentNullException("item");
            }

            item.DataModificacao = DateTime.Now;
            item.Destinatario    = ExtractUserNameFromEmail(item.Destinatario);
            item.Utilizador      = ExtractUserNameFromEmail(item.Utilizador);
            ctx.RececaoFaturacaoWorkflow.Update(item);

            return(item);
        }
        public BillingReceptionModel UpdateWorkFlow(BillingReceptionModel item, BillingRecWorkflowModel wfItemLast, string postedByUserName)
        {
            RececaoFaturacaoWorkflow wfItem = new RececaoFaturacaoWorkflow();

            wfItem               = DBBillingReceptionWf.ParseToDB(wfItemLast);
            item.Descricao       = wfItemLast.Comentario;
            item.DataModificacao = DateTime.Now;
            wfItem.Utilizador    = postedByUserName;
            wfItem.Id            = 0;
            item = repo.Update(item);

            repo.Create(wfItem);

            try
            {
                repo.SaveChanges();
            }
            catch (Exception ex)
            {
                return(null);
            }
            return(item);
        }
        public int GetWorkFlow(BillingReceptionModel item)
        {
            RececaoFaturacaoWorkflow LastWork = DBBillingReceptionWf.GetAll().FirstOrDefault();

            return(LastWork.Id);
        }
        public BillingReceptionModel CreateWorkFlowSend(BillingReceptionModel item, BillingRecWorkflowModel wfItemLast, string postedByUserName)
        {
            //Update Header
            RecFacturasProblemas questao = new RecFacturasProblemas();

            item.Estado = BillingReceptionStates.Pendente;
            RececaoFaturacaoWorkflow LastID = DBBillingReceptionWf.GetAll().LastOrDefault();

            if (wfItemLast.CodProblema != null)
            {
                questao = GetQuestionID(wfItemLast.CodProblema, wfItemLast.CodTipoProblema);

                if (questao.Devolvido == true)
                {
                    item.Estado = BillingReceptionStates.Devolvido;
                }
                else
                {
                    item.Estado = BillingReceptionStates.Pendente;
                    if (item.DataPassaPendente == null || item.DataPassaPendente == "")
                    {
                        item.DataPassaPendente = DateTime.Now.ToString("dd/MM/yyyy");
                    }
                }
            }

            item.DataUltimaInteracao = (item.DataModificacao == null) ? item.DataModificacao.ToString() : item.DataCriacao.ToString();
            item.TipoProblema        = wfItemLast.CodTipoProblema;
            item.AreaPendente        = wfItemLast.AreaWorkflow;
            item.AreaPendente2       = wfItemLast.Area;
            item.Destinatario        = wfItemLast.Destinatario;
            item.Descricao           = wfItemLast.Comentario;
            item.TipoProblema        = wfItemLast.CodTipoProblema;
            item.DescricaoProblema   = wfItemLast.Descricao;
            item.DataModificacao     = DateTime.Now;
            item.ModificadoPor       = postedByUserName;
            item.AreaUltimaInteracao = wfItemLast.AreaWorkflow;
            item.UserUltimaInteracao = wfItemLast.CriadoPor;


            item = repo.Update(item);


            RececaoFaturacaoWorkflow wfItem = new RececaoFaturacaoWorkflow();

            wfItem.IdRecFaturacao = item.Id;
            if (questao.Devolvido == true)
            {
                wfItem.Estado = (int)BillingReceptionStates.Devolvido;
            }
            else
            {
                wfItem.Estado = (int)BillingReceptionStates.Pendente;
            }
            wfItem.Area               = wfItemLast.Area;
            wfItem.AreaWorkflow       = wfItemLast.AreaWorkflow;
            wfItem.ModificadoPor      = item.ModificadoPor;
            wfItem.Data               = item.DataCriacao;
            wfItem.DataCriacao        = DateTime.Now;
            wfItem.CriadoPor          = postedByUserName;
            wfItem.EnderecoEnvio      = postedByUserName;
            wfItem.EnderecoFornecedor = wfItemLast.EnderecoFornecedor;
            wfItem.CodDestino         = wfItemLast.CodDestino;
            wfItem.Destinatario       = wfItemLast.Destinatario;
            wfItem.CodTipoProblema    = wfItemLast.CodTipoProblema;
            wfItem.CodProblema        = wfItemLast.CodProblema;
            wfItem.Descricao          = wfItemLast.Descricao;
            wfItem.Comentario         = wfItemLast.Comentario;
            wfItem.Utilizador         = postedByUserName;
            wfItem.Anexo              = wfItemLast.AttachedIs;

            repo.Create(wfItem);

            if (wfItemLast.Attached != null)
            {
                int id     = 0;
                int Idwork = GetWorkFlow(item);
                item.WorkflowItems.LastOrDefault().Id     = Idwork + 1;
                RececaoFaturacaoWorkflowAnexo wfAnexoItem = new RececaoFaturacaoWorkflowAnexo();
                foreach (BillingRecWorkflowModelAttached attached in wfItemLast.Attached)
                {
                    wfAnexoItem           = DBBillingReceptionWFAttach.ParseToDB(attached);
                    wfAnexoItem.Idwokflow = Idwork + 1;
                    wfAnexoItem.Id        = id;
                    repo.Create(wfAnexoItem);
                }
            }
            try
            {
                repo.SaveChanges();
            }
            catch (Exception ex)
            {
                return(null);
            }

            RecFaturacaoConfigDestinatarios destino = null;

            if (wfItem.CodProblema == "RF1P")
            {
                destino = GetDestinationAreaDest(wfItemLast.CodDestino);
            }
            if (destino != null)
            {
                //Rever o Envio de Areas
                if (destino.EnviaEmail == true && wfItem.EnderecoFornecedor != "")
                {
                    SendEmailBillingReception Email = new SendEmailBillingReception
                    {
                        Subject = "eSUCH - Recepção da Factura : " + item.Id,
                        //From = "*****@*****.**"
                        From = postedByUserName
                    };

                    Email.To.Add(wfItem.EnderecoFornecedor);

                    Email.Body = MakeEmailBodyContent("Solicita-se a validação da fatura enviada em anexo:", item.Id, item.CodFornecedor, item.DataUltimaInteracao, item.Valor.ToString(), postedByUserName);

                    Email.IsBodyHtml = true;

                    Email.SendEmail();
                    try
                    {
                        item.eReasonCode = 1;
                        item.eMessage    = "Resposta enviada com sucesso.";
                    }
                    catch
                    {
                        item.eReasonCode = 2;
                        item.eMessage    = "Não foi possível enviar email ao utilizador que criou o pedido (" + item.Id + ")";
                    }
                }
            }
            return(item);
        }