Example #1
0
        public void ValidaAberturaOcorrenciaASTEC()
        {
            if (Ocorrencia.Produto == null)
            {
                throw new ArgumentException("Produto não foi encontrado para Número de Série ou Código informado.");
            }

            if (!Ocorrencia.Produto.PermiteOS)
            {
                throw new ArgumentException(string.Format("Produto {0} - {1} não permite a abertura de Ocorrência ", Ocorrencia.Produto.Codigo, Ocorrencia.Produto.Nome));
            }

            bool permiteAcesso = RepositoryService.Produto.AcessoProdutoParaAssistenciaTecnica(Ocorrencia.Autorizada, Ocorrencia.Produto);

            if (!permiteAcesso)
            {
                throw new ArgumentException(String.Format("Posto de serviço não autorizado a abrir ocorrência para o produto {0} - {1} ", Ocorrencia.Produto.Codigo, Ocorrencia.Produto.Nome));
            }

            if (Ocorrencia.NotaFiscalFatura == null || !Ocorrencia.NotaFiscalFatura.DataEmissao.HasValue)
            {
                throw new ArgumentException("Nenhuma ocorrência foi localizada.");
            }

            if (!Ocorrencia.GarantiaPorContratoEstaVigente())
            {
                if (Ocorrencia.Produto.GarantiaEmDias > 0)
                {
                    if (Ocorrencia.NotaFiscalFatura.DataEmissao.Value.AddMonths(Ocorrencia.Produto.GarantiaEmDias) <= Ocorrencia.DataOrigem)
                    {
                        throw new ArgumentException("Produto fora de garantia.");
                    }
                }
                else
                {
                    if (Ocorrencia.NotaFiscalFatura.DataEmissao.Value.AddMonths(Convert.ToInt32(SDKore.Configuration.ConfigurationManager.GetSettingValue("GarantiaDeProdutoEmMesesSemConfiguracaoNoERP"))) <= DateTime.Now)
                    {
                        throw new ArgumentException("Produto fora de garantia.");
                    }
                }
            }
        }