public BillingReceptionModel OpenOrderByBilling(BillingReceptionModel item, string postedByUserName, NAVConfigurations _config, NAVWSConfigurations _configws)
        {
            if (item != null)
            {
                Task <WSGenericCodeUnit.FxGetURLOrderRequisition_Result> createOrderBillingLinkTask = WSGeneric.GetOrderRequisition(item.Id, _configws);

                createOrderBillingLinkTask.Wait();
                if (createOrderBillingLinkTask.IsCompletedSuccessfully)
                {
                    try
                    {
                        item.eReasonCode = 1;
                        item.eMessage    = "Factura Aberta.";
                        item.link        = createOrderBillingLinkTask.Result.return_value;
                    }
                    catch
                    {
                        item.eReasonCode = 2;
                        item.eMessage    = "Não foi possivel abrir a Factura nº:" + item.Id;
                    }
                }
                else
                {
                    item.Id = item.Id.Remove(0, 2);
                }
            }
            else
            {
                item.eReasonCode = 2;
                item.eMessage    = "O registo não pode ser nulo";
            }
            return(item);
        }
        public bool CheckIfDocumentExistsFor(BillingReceptionModel item)
        {
            DateTime date  = DateTime.Parse(item.DataDocFornecedor);
            var      items = repo.GetByExternalDoc(item.NumDocFornecedor, date.Year, item.CodFornecedor);

            return(items.Any());
        }
Пример #3
0
 public BillingReceptionModel Update(BillingReceptionModel item)
 {
     item.DataUltimaInteracao = DateTime.Now.ToString("");
     item.Destinatario        = ExtractUserNameFromEmail(item.Destinatario);
     ctx.RececaoFaturacao.Update(item.ParseToDB());
     return(item);
 }
        private bool ValidateForPosting(ref BillingReceptionModel item, NAVConfigurations _config)
        {
            bool isValid = true;

            try
            {
                //Check if exists
                bool documentAlreadyExist = DBNAV2017Purchases.DocumentExistsFor(_config.NAVDatabaseName, _config.NAVCompanyName, item.Id);
                if (documentAlreadyExist)
                {
                    item.eMessage = "Já foi criada uma fatura para a receção selecionada.";
                    isValid       = false;
                }
            }
            catch (Exception ex)
            {
                item.eMessage = "Não foi possivel validar a existência da fatura. Por favor tente novamente. Se o problema persistir contacte o administrador.";
                isValid       = false;
            }
            if (!isValid)
            {
                return(isValid);
            }


            PurchaseHeader purchOrderInfo = null;

            if (Convert.ToDateTime(item.DataDocFornecedor) > item.DataModificacao)
            {
                item.eMessage = "A data do documento (" + item.DataDocFornecedor + ") é maior que a data do registo (" + (item.DataModificacao.HasValue ? item.DataModificacao.Value.ToString("yyyy-MM-dd") : string.Empty) + ")";
                //item.eMessages.Add(new TraceInformation(TraceType.Error, "A data do documento: " + item.DataDocFornecedor + " é maior que a data do registo: " + item.DataModificacao));
                isValid = false;
            }
            else if (!string.IsNullOrEmpty(item.NumEncomenda))
            {
                purchOrderInfo = DBNAV2017Purchases.GetOrderById(_config.NAVDatabaseName, _config.NAVCompanyName, item.NumEncomenda);
                if (purchOrderInfo.No != item.NumEncomenda)
                {
                    item.eMessage = "A encomenda " + item.NumEncomenda + " não existe ou já está registada.";
                    //item.eMessages.Add(new TraceInformation(TraceType.Error, "A encomenda " + item.NumEncomenda + " não existe ou já está registada."));
                    isValid = false;
                }
            }
            else
            {
                if (!string.IsNullOrEmpty(item.NumEncomendaManual))
                {
                    purchOrderInfo = DBNAV2017Purchases.GetOrderById(_config.NAVDatabaseName, _config.NAVCompanyName, item.NumEncomendaManual);
                    if (purchOrderInfo.No != item.NumEncomendaManual)
                    {
                        item.eMessage = "A encomenda (Núm. Encomenda Manual) " + item.NumEncomendaManual + " não existe ou já está registada.";
                        //item.eMessages.Add(new TraceInformation(TraceType.Error, "A encomenda (Núm. Encomenda Manual) " + item.NumEncomendaManual + " não existe ou já está registada."));
                        isValid = false;
                    }
                }
            }
            return(isValid);
        }
Пример #5
0
        public void Delete(BillingReceptionModel item)
        {
            if (item == null)
            {
                throw new ArgumentNullException("item");
            }

            ctx.RececaoFaturacao.Remove(item.ParseToDB());
        }
        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);
            }
        }
Пример #7
0
        public BillingReceptionModel Create(BillingReceptionModel item)
        {
            if (item == null)
            {
                throw new ArgumentNullException("item");
            }
            item.DataUltimaInteracao = DateTime.Now.ToString("");
            item.Destinatario        = ExtractUserNameFromEmail(item.Destinatario);
            ctx.RececaoFaturacao.Add(item.ParseToDB());

            return(item);
        }
 public bool Delete(BillingReceptionModel item)
 {
     repo.Delete(item);
     try
     {
         repo.SaveChanges();
     }
     catch (Exception ex)
     {
         return(false);
     }
     return(true);
 }
        //public static List<BillingReceptionModel> GetAll()
        //{
        //    try
        //    {
        //        using (var ctx = new SuchDBContext())
        //        {
        //            return ctx.RececaoFaturacao
        //                .OrderByDescending(x => x.Id)
        //                .ToList()
        //                .ParseToViewModel();
        //        }
        //    }
        //    catch (Exception ex)
        //    {
        //        return null;
        //    }
        //}

        //public static BillingReceptionModel GetById(string id)
        //{
        //    try
        //    {
        //        using (var ctx = new SuchDBContext())
        //        {
        //            return ctx.RececaoFaturacao
        //                .SingleOrDefault(x => x.Id == id)
        //                .ParseToViewModel();
        //        }
        //    }
        //    catch (Exception ex)
        //    {
        //        return null;
        //    }
        //}

        //public static BillingReceptionModel Create(BillingReceptionModel 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.RececaoFaturacao.Add(item.ParseToDB());

        //            RececaoFaturacaoWorkflow wf = new RececaoFaturacaoWorkflow();
        //            wf.IdRecFaturacao = item.Id;
        //            wf.AreaWorkflow = "Contabilidade";//TODO: Identificar áres possivels
        //            wf.Descricao = "Entrada fatura em receção";
        //            wf.CriadoPor = item.CriadoPor;
        //            wf.Data = DateTime.Now;
        //            wf.DataCriacao = DateTime.Now;
        //            wf.Estado = (int)BillingReceptionStates.Rececao;//TODO: Identificar estados possivels “Receção/Conferência”
        //            wf.Utilizador = item.CriadoPor;
        //            ctx.RececaoFaturacaoWorkflow.Add(wf);

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

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

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

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

        #endregion

        #region Parse Utilities
        public static BillingReceptionModel ParseToViewModel(this RececaoFaturacao item)
        {
            if (item != null)
            {
                var parsedItem = new BillingReceptionModel();
                parsedItem.Id                            = item.Id;
                parsedItem.IdAreaPendente                = item.IdAreaPendente.HasValue ? (BillingReceptionAreas)item.IdAreaPendente : (BillingReceptionAreas?)null;
                parsedItem.AreaPendente                  = item.AreaPendente;
                parsedItem.AreaPendente2                 = item.AreaPendente2;
                parsedItem.CodAreaFuncional              = item.CodAreaFuncional;
                parsedItem.CodCentroResponsabilidade     = item.CodCentroResponsabilidade;
                parsedItem.CodFornecedor                 = item.CodFornecedor;
                parsedItem.CodLocalizacao                = string.IsNullOrEmpty(item.CodLocalizacao) ? item.CodLocalizacao : item.CodLocalizacao.Trim();
                parsedItem.CodRegiao                     = item.CodRegiao;
                parsedItem.CriadoPor                     = item.CriadoPor;
                parsedItem.DataCriacao                   = item.DataCriacao;
                parsedItem.DataDocFornecedor             = !item.DataDocFornecedor.HasValue ? "" : item.DataDocFornecedor.Value.ToString("yyyy-MM-dd");
                parsedItem.DataModificacao               = item.DataModificacao;
                parsedItem.DataRececao                   = !item.DataRececao.HasValue ? "" : item.DataRececao.Value.ToString("yyyy-MM-dd");
                parsedItem.DataUltimaInteracao           = !item.DataUltimaInteracao.HasValue ? "" : item.DataUltimaInteracao.Value.ToString("yyyy-MM-dd");
                parsedItem.Destinatario                  = item.Destinatario;
                parsedItem.Estado                        = (Enumerations.BillingReceptionStates)item.Estado;
                parsedItem.Local                         = item.Local;
                parsedItem.ModificadoPor                 = item.ModificadoPor;
                parsedItem.NumAcordoFornecedor           = item.NumAcordoFornecedor;
                parsedItem.NumDocFornecedor              = item.NumDocFornecedor;
                parsedItem.NumEncomenda                  = item.NumEncomenda;
                parsedItem.NumEncomendaManual            = item.NumEncomendaManual;
                parsedItem.QuantidadeEncomenda           = item.QuantidadeEncomenda;
                parsedItem.QuantidadeRecebida            = item.QuantidadeRecebida;
                parsedItem.TipoDocumento                 = (Enumerations.BillingDocumentTypes)item.TipoDocumento;
                parsedItem.Valor                         = item.Valor;
                parsedItem.ValorEncomendaOriginal        = item.ValorEncomendaOriginal;
                parsedItem.ValorRecebidoNaoContabilizado = item.ValorRecebidoNaoContabilizado;
                parsedItem.DocumentoCriadoEm             = item.DocumentoCriadoEm;
                parsedItem.DocumentoCriadoPor            = item.DocumentoCriadoPor;
                parsedItem.DataPassaPendente             = !item.DataPassaPendente.HasValue ? "" : item.DataPassaPendente.Value.ToString("dd-MM-yyyy");
                parsedItem.Descricao                     = item.Descricao;
                parsedItem.DescricaoProblema             = item.DescricaoProblema;
                parsedItem.TipoProblema                  = item.TipoProblema;
                parsedItem.WorkflowItems                 = item.RececaoFaturacaoWorkflow.ToList().ParseToViewModel();
                parsedItem.DataResolucao                 = !item.DataResolucao.HasValue ? "" : item.DataResolucao.Value.ToString("yyyy-MM-dd");
                parsedItem.AreaUltimaInteracao           = item.AreaUltimaInteracao;
                parsedItem.UserUltimaInteracao           = item.UserUltimaInteracao;
                parsedItem.ValorEncomendaActual          = item.ValorEncomendaActual;
                parsedItem.DescricaoStatus               = Convert.ToString((Enumerations.BillingReceptionStates)item.Estado);

                return(parsedItem);
            }
            return(null);
        }
        public static async Task <WsPrePurchaseDocs.Create_Result> CreateAsync(BillingReceptionModel purchDoc, string prePurchInvoiceNoSerie, NAVWSConfigurations WSConfigurations)
        {
            if (purchDoc == null)
            {
                throw new ArgumentNullException("purchDoc");
            }

            WsPrePurchaseDocs.WSPrePurchaseDocs itemToCreate = new WsPrePurchaseDocs.WSPrePurchaseDocs();
            itemToCreate.Document_Type              = (WsPrePurchaseDocs.Document_Type)purchDoc.TipoDocumento;
            itemToCreate.Document_TypeSpecified     = true;
            itemToCreate.RegionCode20               = purchDoc.CodRegiao;
            itemToCreate.FunctionAreaCode20         = purchDoc.CodAreaFuncional;
            itemToCreate.ResponsabilityCenterCode20 = purchDoc.CodCentroResponsabilidade;
            itemToCreate.Buy_from_Vendor_No         = purchDoc.CodFornecedor;
            itemToCreate.Rececao_Faturacao          = purchDoc.Id;
            itemToCreate.No_Series         = string.Empty;
            itemToCreate.Posting_No_Series = prePurchInvoiceNoSerie;
            if (purchDoc.Valor.HasValue)
            {
                itemToCreate.Valor_Factura          = purchDoc.Valor.Value;
                itemToCreate.Valor_FacturaSpecified = true;
            }
            if (purchDoc.TipoDocumento == Enumerations.BillingDocumentTypes.Fatura)
            {
                itemToCreate.Vendor_Invoice_No = purchDoc.NumDocFornecedor;
            }
            else
            {
                itemToCreate.Vendor_Cr_Memo_No = purchDoc.NumDocFornecedor;
            }

            WsPrePurchaseDocs.Create navCreate = new WsPrePurchaseDocs.Create(itemToCreate);

            //Configure NAV Client
            EndpointAddress ws_URL = new EndpointAddress(WSConfigurations.WS_PurchaseHeaderDocs_URL.Replace("Company", WSConfigurations.WS_User_Company));

            WsPrePurchaseDocs.WSPrePurchaseDocs_PortClient ws_Client = new WsPrePurchaseDocs.WSPrePurchaseDocs_PortClient(navWSBinding, ws_URL);
            ws_Client.ClientCredentials.Windows.AllowedImpersonationLevel = System.Security.Principal.TokenImpersonationLevel.Delegation;
            ws_Client.ClientCredentials.Windows.ClientCredential          = new NetworkCredential(WSConfigurations.WS_User_Login, WSConfigurations.WS_User_Password, WSConfigurations.WS_User_Domain);

            //try
            //{
            return(await ws_Client.CreateAsync(navCreate));

            //}
            //catch (Exception ex)
            //{
            //    throw;
            //}
        }
Пример #11
0
 public static RececaoFaturacao ParseToDB(this BillingReceptionModel item)
 {
     if (item != null)
     {
         var parsedItem = new RececaoFaturacao();
         parsedItem.Id                            = item.Id;
         parsedItem.IdAreaPendente                = (int)item.IdAreaPendente;
         parsedItem.AreaPendente                  = item.AreaPendente;
         parsedItem.AreaPendente2                 = item.AreaPendente2;
         parsedItem.CodAreaFuncional              = item.CodAreaFuncional;
         parsedItem.CodCentroResponsabilidade     = item.CodCentroResponsabilidade;
         parsedItem.CodFornecedor                 = item.CodFornecedor;
         parsedItem.CodLocalizacao                = string.IsNullOrEmpty(item.CodLocalizacao) ? item.CodLocalizacao : item.CodLocalizacao.Trim();
         parsedItem.CodRegiao                     = item.CodRegiao;
         parsedItem.CriadoPor                     = item.CriadoPor;
         parsedItem.DataCriacao                   = item.DataCriacao;
         parsedItem.DataDocFornecedor             = string.IsNullOrEmpty(item.DataDocFornecedor) ? (DateTime?)null : DateTime.Parse(item.DataDocFornecedor);
         parsedItem.DataModificacao               = item.DataModificacao;
         parsedItem.DataRececao                   = string.IsNullOrEmpty(item.DataRececao) ? (DateTime?)null : DateTime.Parse(item.DataRececao);
         parsedItem.DataUltimaInteracao           = string.IsNullOrEmpty(item.DataUltimaInteracao) ? (DateTime?)null : DateTime.Parse(item.DataUltimaInteracao);
         parsedItem.Destinatario                  = item.Destinatario;
         parsedItem.Estado                        = (int)item.Estado;
         parsedItem.Local                         = item.Local;
         parsedItem.ModificadoPor                 = item.ModificadoPor;
         parsedItem.NumAcordoFornecedor           = item.NumAcordoFornecedor;
         parsedItem.NumDocFornecedor              = item.NumDocFornecedor;
         parsedItem.NumEncomenda                  = item.NumEncomenda;
         parsedItem.NumEncomendaManual            = item.NumEncomendaManual;
         parsedItem.QuantidadeEncomenda           = item.QuantidadeEncomenda;
         parsedItem.QuantidadeRecebida            = item.QuantidadeRecebida;
         parsedItem.TipoDocumento                 = (int)item.TipoDocumento;
         parsedItem.Valor                         = item.Valor;
         parsedItem.ValorEncomendaOriginal        = item.ValorEncomendaOriginal;
         parsedItem.ValorRecebidoNaoContabilizado = item.ValorRecebidoNaoContabilizado;
         parsedItem.DocumentoCriadoEm             = item.DocumentoCriadoEm;
         parsedItem.DocumentoCriadoPor            = item.DocumentoCriadoPor;
         parsedItem.DataPassaPendente             = string.IsNullOrEmpty(item.DataPassaPendente) ? (DateTime?)null : DateTime.Parse(item.DataPassaPendente);
         parsedItem.Descricao                     = item.Descricao;
         parsedItem.DescricaoProblema             = item.DescricaoProblema;
         parsedItem.TipoProblema                  = item.TipoProblema;
         parsedItem.DataResolucao                 = string.IsNullOrEmpty(item.DataResolucao) ? (DateTime?)null : DateTime.Parse(item.DataResolucao);
         parsedItem.AreaUltimaInteracao           = item.AreaUltimaInteracao;
         parsedItem.UserUltimaInteracao           = item.UserUltimaInteracao;
         parsedItem.ValorEncomendaActual          = item.ValorEncomendaActual;
         return(parsedItem);
     }
     return(null);
 }
        public BillingReceptionModel Update(BillingReceptionModel item)
        {
            item.DataModificacao     = DateTime.Now;
            item.DataUltimaInteracao = DateTime.Now.ToString();

            item = repo.Update(item);
            try
            {
                repo.SaveChanges();
            }
            catch (Exception ex)
            {
                return(null);
            }
            return(item);
        }
        public BillingReceptionModel PostDocument(BillingReceptionModel item, string postedByUserName, string prePurchInvoiceNoSerie, NAVConfigurations _config, NAVWSConfigurations _configws)
        {
            if (item != null)
            {
                if (ValidateForPosting(ref item, _config))
                {
                    item.DocumentoCriadoEm  = DateTime.Now;
                    item.DocumentoCriadoPor = postedByUserName;
                    Task <WsPrePurchaseDocs.Create_Result> createPurchHeaderTask = NAVPurchaseHeaderService.CreateAsync(item, prePurchInvoiceNoSerie, _configws);
                    createPurchHeaderTask.Wait();
                    if (createPurchHeaderTask.IsCompletedSuccessfully)
                    {
                        //item.Id = item.Id.Remove(0, 2);
                        repo.Update(item);

                        try
                        {
                            repo.SaveChanges();

                            item.eReasonCode = 1;
                            item.eMessage    = "Documento criado com sucesso.";
                        }
                        catch
                        {
                            //TODO: Rever comportamento no caso de erro
                            item.eReasonCode = 2;
                            item.eMessage    = "Documento rececionado mas não foi possivel atualizar os dados da receção.";
                        }
                    }
                    //else
                    //{
                    //    item.Id = item.Id.Remove(0, 2);
                    //}
                }
                else
                {
                    item.eReasonCode = 2;
                }
            }
            else
            {
                item.eReasonCode = 2;
                item.eMessage    = "O registo não pode ser nulo";
            }
            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);
        }
 public string CreateNumeration(BillingReceptionModel item)
 {
     return("");
 }