Пример #1
0
        public async Task <IActionResult> ExportPlContasAsync(string EmpresaID, string Ano, string _path)
        {
            DadosEmpresaImportada dadosEmpresaView = dadosEmpresaViewModel.ReturnModelByEmpresaAno(int.Parse(EmpresaID), Int16.Parse(Ano));
            string db            = dadosEmpresaView.CodeEmpresa.ToString() + Ano.ToString() + dadosEmpresaView.CodeAplicacao.ToString();
            string _nomeFicheiro = DateTime.Now.ToString("yyyyMMdd_hhmmss") + "_" + dadosEmpresaView.CodeAplicacao.ToString() + Ano + "_CLAB_PlanodeContas.xlsx";

            ConConfigViewModel conConfigViewModel = conConfig.FindByEmpresaId(int.Parse(EmpresaID)).ToList()[0];
            clsCheckValidData  checkValidData     = new clsCheckValidData(conConfigViewModel.NomeServidor, conConfigViewModel.Utilizador, conConfigViewModel.Password, db);

            bool validDbAndServer = checkValidData.ValidDbAndServer();

            if (validDbAndServer != true)
            {
                ViewBag.Signal       = "notok";
                ViewBag.ErrorTitle   = "Base de dados ou servidor inexistente!";
                ViewBag.ErrorMessage = $"Por favour verifique a existencia da Base de dados: {dadosEmpresaView.CodeEmpresa + dadosEmpresaView.CodeAplicacao + dadosEmpresaView.AnoFi.ToString()} !";
                return(this.PartialView("~/Views/Error/GeneralError.cshtml"));
            }

            string    strSql = "SELECT CConta as 'Nº da Conta', CASE WHEN CContaMae = '' THEN 'R' WHEN CContaMae != '' AND EdeMov = 0 THEN 'I' WHEN EdeMov = 1 THEN 'L' ELSE '' END as 'Tp.', Descr as 'Nome da conta', CCIva as 'Conta IVA/Ref' FROM Conta ORDER BY CConta";
            DataTable dt     = checkValidData.ReturnDataTable(strSql);

            string _FullPath = _path + "\\" + _nomeFicheiro;

            await SavePlContasAsync(_path, _nomeFicheiro, dt);

            //   bool aa= SavePlContasAsync(_path, _nomeFicheiro, dt); ;
            if (!System.IO.File.Exists(_FullPath))
            {
                return(Json(new { success = false, msg = "O arquivo nao foi exportado com sucesso!" }));
            }
            return(Json(new { success = true, msg = "Arquivo exportado com sucesso!" }));
        }
Пример #2
0
        public async Task <IActionResult> ExportSaveCentroCustoAsyncAsync(string EmpresaID, string Ano, string _path)
        {
            DadosEmpresaImportada dadosEmpresaView = dadosEmpresaViewModel.ReturnModelByEmpresaAno(int.Parse(EmpresaID), Int16.Parse(Ano));
            string db            = dadosEmpresaView.CodeEmpresa.ToString() + Ano.ToString() + dadosEmpresaView.CodeAplicacao.ToString();
            string _nomeFicheiro = DateTime.Now.ToString("yyyyMMdd_hhmmss") + "_" + dadosEmpresaView.CodeAplicacao.ToString() + Ano + "_CLAB_CentrosCusto.xlsx";

            ConConfigViewModel conConfigViewModel = conConfig.FindByEmpresaId(int.Parse(EmpresaID)).ToList()[0];
            clsCheckValidData  checkValidData     = new clsCheckValidData(conConfigViewModel.NomeServidor, conConfigViewModel.Utilizador, conConfigViewModel.Password, db);

            bool validDbAndServer = checkValidData.ValidDbAndServer();

            if (validDbAndServer != true)
            {
                ViewBag.Signal       = "notok";
                ViewBag.ErrorTitle   = "Base de dados ou servidor inexistente!";
                ViewBag.ErrorMessage = $"Por favour verifique a existencia da Base de dados: {dadosEmpresaView.CodeEmpresa + dadosEmpresaView.CodeAplicacao + dadosEmpresaView.AnoFi.ToString()} !";
                return(this.PartialView("~/Views/Error/GeneralError.cshtml"));
            }

            string strSql = "SELECT CCeCu as 'Centro Custo', Descr as 'Descrição' FROM CenCu ORDER BY TCeCu, CCeCu";

            DataTable dt = checkValidData.ReturnDataTable(strSql);

            string _FullPath = _path + "\\" + _nomeFicheiro;

            await SaveCentroCustoAsync(_path, _nomeFicheiro, dt);

            if (!System.IO.File.Exists(_FullPath))
            {
                return(Json(new { success = false, msg = "O arquivo nao foi exportado com sucesso!" }));
            }
            return(Json(new { success = true, msg = "Arquivo exportado com sucesso!" }));
        }
Пример #3
0
        public bool ModelExist(DadosEmpresaImportada _model)
        {
            bool bResult = false;

            if (_model != null)
            {
                try
                {
                    var tt = context.DadosEmpresaImportada
                             .FirstOrDefault(x => x.EmpresaID == _model.EmpresaID && x.AnoIn == _model.AnoIn &&
                                             x.AnoFi == _model.AnoFi && x.CodeAplicacao == _model.CodeAplicacao && x.CodeEmpresa == _model.CodeEmpresa);

                    if (tt != null)
                    {
                        bResult = true;
                    }
                    else
                    {
                        bResult = false;
                    }
                }
                catch (DbUpdateException ex)
                {
                    logger.Log(LogLevel.Warning, ex.Message);
                    bResult = false;
                }
            }
            return(bResult);
        }
Пример #4
0
        public async Task <IActionResult> GetExampleAsync()
        {
            string remoteUri         = $"{env.WebRootPath}/Exemplos Excel/";
            string fileName          = "NIFempresaSage_Ano_MesNumero.xlsx";
            string excelFileFullPath = Path.Combine($"{remoteUri}", fileName).Replace("/", "\\");

            int    idEmpresaContab  = SessionHelper.GetObjectFromJson <int>(HttpContext.Session, "sessionIDEmpresaContab");
            string AnoEmpresaContab = SessionHelper.GetObjectFromJson <string>(HttpContext.Session, "sessionIDAnoEmpresaContab");

            IEnumerable <EmpresasViewModel> tmp_empVmodel         = empresaContext.GetModelByID(idEmpresaContab);
            GabContabilidadeRepository      gabContabilidade      = new GabContabilidadeRepository(appDbContext);
            DadosEmpresaImportada           dadosEmpresaImportada = gabContabilidade.GetEmpresaModel(idEmpresaContab, Int16.Parse(AnoEmpresaContab));

            var memory = new MemoryStream();

            using (var stream = new FileStream(excelFileFullPath, FileMode.Open))
            {
                await stream.CopyToAsync(memory);
            }
            memory.Position = 0;
            var    ext            = Path.GetExtension(excelFileFullPath).ToLowerInvariant();
            var    tExt           = GetMimeTypes()[ext];
            int    _year          = DateTime.Now.Year;
            int    _month         = DateTime.Now.Month;
            string outputFileName = $"{tmp_empVmodel.ToList()[0].NIF}_{dadosEmpresaImportada.CodeEmpresa}{dadosEmpresaImportada.CodeAplicacao}_{_year.ToString()}_{_month.ToString()}.xlsx";

            return(File(memory, GetMimeTypes()[ext], outputFileName));
        }
Пример #5
0
        public string SaveSessionAnoEmprContab(string AnoSelectionado)
        {
            SessionHelper.SetObjectAsJson(HttpContext.Session, "sessionIDAnoEmpresaContab", AnoSelectionado.ToString());

            int idEmpresaContab = SessionHelper.GetObjectFromJson <int>(HttpContext.Session, "sessionIDEmpresaContab");

            GabContabilidadeRepository gabContabilidade = new GabContabilidadeRepository(context);
            DadosEmpresaImportada      empVmodel        = gabContabilidade.GetEmpresaModel(idEmpresaContab, Int16.Parse(AnoSelectionado));

            SessionHelper.SetObjectAsJson(HttpContext.Session, "sessionCodeEmpresa", empVmodel.CodeEmpresa.ToString());

            return(JsonSerializer.Serialize(AnoSelectionado));
        }
Пример #6
0
        public async Task <bool> InsertEmpresa(EmpresasViewModel _model)
        {
            var bResult = false;

            try
            {
                context.EmpresasViewModel.Add(_model);
                int i = context.SaveChanges();
                bResult = true;
                if (bResult)
                {//insert dados da empresa auxiliares.
                    IEnumerable <AGesEmpresasUtilizadores> tmpAGes = aGesContext.AGesEmpresasUtilizadores.Where(x => x.NIF == _model.NIF);

                    var tt = tmpAGes
                             .Select(x => new { x.AnoFi, x.AnoIn, x.CodeApplicacao, x.CodeEmpresa })
                             .Distinct().ToList();

                    foreach (var item in tt)
                    {
                        DadosEmpresaImportada tmp = new DadosEmpresaImportada()
                        {
                            EmpresaID     = _model.EmpresaID,
                            AnoFi         = item.AnoFi,
                            AnoIn         = item.AnoIn,
                            CodeAplicacao = item.CodeApplicacao,
                            CodeEmpresa   = item.CodeEmpresa
                        };
                        bool dadosExist = dadosEmpresaView.ModelExist(tmp);
                        if (dadosExist != true)
                        {
                            var result = await dadosEmpresaView.Insert(tmp);// .DadosEmpresaImportada.Where(x => x.== _model.NIF);

                            if (result)
                            {
                                logger.Log(LogLevel.Information, "Dados Empresa inseridos com successo " + tmp.CodeEmpresa);
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                logger.Log(LogLevel.Warning, "Method: Insert Impresa| Class: SQL_IEmpresa | Erro: " + ex.Message);
            }
            return(bResult);
        }
Пример #7
0
        public async Task <bool> Insert(DadosEmpresaImportada model)
        {
            bool bResult = false;

            if (model != null)
            {
                try
                {
                    context.DadosEmpresaImportada.Add(model);
                    var result = await context.SaveChangesAsync();

                    bResult = true;
                }
                catch (DbUpdateException ex)
                {
                    logger.Log(LogLevel.Warning, ex.Message);
                    bResult = false;
                }
            }
            return(bResult);
        }
Пример #8
0
        public JsonResult FillDiarioLancamento()
        {
            int    idGabContab      = SessionHelper.GetObjectFromJson <int>(HttpContext.Session, "sessionIDGabContab");
            int    idEmpresaContab  = SessionHelper.GetObjectFromJson <int>(HttpContext.Session, "sessionIDEmpresaContab");
            string AnoEmpresaContab = SessionHelper.GetObjectFromJson <string>(HttpContext.Session, "sessionIDAnoEmpresaContab");

            IEnumerable <EmpresasViewModel> tmp_empVmodel = empresaContext.GetModelByID(idEmpresaContab);

            GabContabilidadeRepository gabContabilidade      = new GabContabilidadeRepository(appDbContext);
            DadosEmpresaImportada      dadosEmpresaImportada = gabContabilidade.GetEmpresaModel(idEmpresaContab, Int16.Parse(AnoEmpresaContab));

            string baseDados = dadosEmpresaImportada.CodeEmpresa + AnoEmpresaContab + dadosEmpresaImportada.CodeAplicacao;

            string connString = "server=.;database=" + baseDados + ";Trusted_Connection=true;MultipleActiveResultSets=true;";

            using var context = new CustomDbContext(connString);

            Sql_IDiarioLancamento iDiario = new Sql_IDiarioLancamento(context);

            List <SelectListItem> selectListItems = iDiario.GetDiarioLancemento();

            return(Json(new { success = true, list = selectListItems }));
        }
Пример #9
0
        public ActionResult Export()
        {
            int    EmpresaID;
            int    idGabContab      = SessionHelper.GetObjectFromJson <int>(HttpContext.Session, "sessionIDGabContab");
            int    idEmpresaContab  = SessionHelper.GetObjectFromJson <int>(HttpContext.Session, "sessionIDEmpresaContab");
            string AnoEmpresaContab = SessionHelper.GetObjectFromJson <string>(HttpContext.Session, "sessionIDAnoEmpresaContab");

            if (idGabContab == 0)
            {
                logger.LogError($"Gabinete de contabilidade não foi selecionado!");
                ViewBag.Signal       = "notok";
                ViewBag.ErrorTitle   = "Gabinete de Contabilidade !";
                ViewBag.ErrorMessage = "Um gabinete de contabilidade não foi selecionado!" +
                                       " Selecione uma empresa de contabilidade para prosseguir com a operação!";
                return(this.PartialView("~/Views/Error/GeneralError.cshtml"));
            }

            if (idEmpresaContab == 0)
            {
                logger.LogError($"Empresa não foi selecionada!");
                ViewBag.Signal       = "notok";
                ViewBag.ErrorTitle   = "Empresa não foi selecionada !";
                ViewBag.ErrorMessage = "A Empresa não foi selecionada!" +
                                       " Selecione uma empresa para prosseguir com a operação!";
                return(this.PartialView("~/Views/Error/GeneralError.cshtml"));
            }
            EmpresaID = idEmpresaContab;

            if (AnoEmpresaContab == "" || AnoEmpresaContab == null)
            {
                logger.LogError($"Ano fiscal não foi selecionado!");
                ViewBag.Signal       = "notok";
                ViewBag.ErrorTitle   = "Ano fiscal não foi selecionado!";
                ViewBag.ErrorMessage = "Ano fiscal não foi selecionado!" +
                                       " Selecione ano fiscal da empresa para prosseguir com a operação!";
                return(this.PartialView("~/Views/Error/GeneralError.cshtml"));
            }
            string _path = "";

            IEnumerable <EmpresasViewModel> tmp_empVmodel = empresaContext.GetModelByID(EmpresaID);

            GabContabilidadeRepository gabContabilidade      = new GabContabilidadeRepository(appDbContext);
            DadosEmpresaImportada      dadosEmpresaImportada = gabContabilidade.GetEmpresaModel(idEmpresaContab, Int16.Parse(AnoEmpresaContab));

            if (tmp_empVmodel.ToList().Count == 1)
            {
                if (_path == "" || _path == null)
                {
                    _path = "C:\\Sage Data\\Sage Accountants\\";
                }

                EmpresasViewModel empresaViewModels = tmp_empVmodel.ToList()[0];

                _path += (_path.EndsWith("\\") ? "" : "\\") + dadosEmpresaImportada.CodeEmpresa + AnoEmpresaContab + dadosEmpresaImportada.CodeAplicacao + "\\Sync\\toCLAB";

                if (!Directory.Exists(_path))
                {
                    Directory.CreateDirectory(_path);
                }

                var claimsIdentity = (ClaimsIdentity)this.User.Identity;
                var claim          = claimsIdentity.FindFirst(System.Security.Claims.ClaimTypes.NameIdentifier);
                var userId         = claim.Value;

                string nomeEmpresa = empresaViewModels.Nome;
                ViewBag.NomeEmpresa = nomeEmpresa;
                CLabViewModel tmp = new CLabViewModel
                {
                    Ano            = Int16.Parse(AnoEmpresaContab),
                    EmpresaSageId  = EmpresaID,
                    DataLancamento = DateTime.Now,
                    UserID         = userId,
                    OutputFilePAth = _path //"C:\\Sage Data\\Sage Accountants\\" + ACtb + 2020 + ACtb + "\\Sync\\toCLAB\\OutputSageFile\\";
                };
                //tmp.OutputFilePAth = "C:\\Sage Data\\Sage Accountants\\" + ACtb + 2020 + ACtb + "\\Sync\\toCLAB\\OutputSageFile\\"  ;
                //C:\Sage Data\Sage Accountants\ACtb2020ACtb\Sync\toCLAB

                return(PartialView("~/Views/CLab/Export.cshtml", tmp));
            }
            return(View());
        }
Пример #10
0
        public IActionResult Export(CLabViewModel model)
        {
            if (model.InputFilePathStr == null)
            {
                return(Json(new  { success = false, message = "Ficheiro .asc nao foi carregado ainda!" }));
            }

            EncryptionHelper encryptionHelper = new EncryptionHelper();
            string           ASCFilePath      = encryptionHelper.Decrypt(model.InputFilePathStr);

            int    idGabContab      = SessionHelper.GetObjectFromJson <int>(HttpContext.Session, "sessionIDGabContab");
            int    idEmpresaContab  = SessionHelper.GetObjectFromJson <int>(HttpContext.Session, "sessionIDEmpresaContab");
            string AnoEmpresaContab = SessionHelper.GetObjectFromJson <string>(HttpContext.Session, "sessionIDAnoEmpresaContab");

            //string ASCFilePath = $"{env.WebRootPath}/SageData/InputSageFiles/{model.InputFilePath.FileName}".Replace("/", "\\");

            ASCFilePath = ASCFilePath.Replace("/", "\\");

            if (!System.IO.File.Exists(ASCFilePath))
            {
                return(Json(new { success = false, message = "Ficheiro .asc nao foi encontrado!" }));
            }

            StreamReader streamReader = new StreamReader(ASCFilePath, Encoding.GetEncoding("iso-8859-1"));

            streamReader.DiscardBufferedData();
            streamReader.BaseStream.Seek(0, System.IO.SeekOrigin.Begin);

            string[] ASCpathArray = ASCFilePath.Split('\\');
            string   fileName     = ASCpathArray[ASCpathArray.Length - 1];

            string[] fileNameArray    = fileName.Split('.');
            string   fileNameNoExt    = fileNameArray[0];
            int      index            = fileNameNoExt.IndexOf(" (");
            string   fileNameNoExtRep = index >= 0 ? fileNameNoExt.Remove(index) : fileNameNoExt;

            string[] fileNameNoExtArray = fileNameNoExtRep.Split('_');
            string   NIF   = fileNameNoExtArray[0];
            string   Year  = fileNameNoExtArray[fileNameNoExtArray.Length - 2];
            string   Month = fileNameNoExtArray[fileNameNoExtArray.Length - 1];

            EmpresasViewModel     empresaViewModel      = appDbContext.EmpresasViewModel.FirstOrDefault(x => x.EmpresaID == model.EmpresaSageId);
            DadosEmpresaImportada dadosEmpresaImportada = appDbContext.DadosEmpresaImportada.FirstOrDefault(x => x.EmpresaID == model.EmpresaSageId);

            if (empresaViewModel.NIF != NIF)
            {
                return(Json(new { success = false, message = "Você está tentando importar um arquivo .asc que pertence a outra empresa, verifique o NIF!" }));
            }

            if (AnoEmpresaContab != Year)
            {
                return(Json(new { success = false, message = "Ano fiscal do arquivo .asc e diferente do selecionado. Verifique o ano selecionado!" }));
            }

            Empr empr = aGesContext.Emprs.FirstOrDefault(x => x.Ncontrib == NIF && x.Cemp == dadosEmpresaImportada.CodeEmpresa);

            DadosEmpresaImportada dadosEmpresaView = dadosEmpresaViewModel.ReturnModelByEmpresaAno(model.EmpresaSageId, Int16.Parse(Year));
            string db = dadosEmpresaView.CodeEmpresa.ToString() + Year.ToString() + dadosEmpresaView.CodeAplicacao.ToString();

            ConConfigViewModel conConfigViewModel = conConfig.FindByEmpresaId(model.EmpresaSageId).ToList()[0];

            model.strInputFilePath = ASCFilePath;
            ConverterASCtoXML conv =
                new ConverterASCtoXML(streamReader, model, Month, db, dadosEmpresaView, conConfigViewModel, empresaViewModel, empr);


            List <ErrorLine> Errors = new List <ErrorLine>();

            conv.ConvertFile(model.OutputFilePAth);

            Errors = conv.Errors;

            if (Errors.Count > 0)
            {
                return(Json(new { success = true, message = "Arquivo parcialmente exportado com sucesso! Verifique os erros!", errors = JsonSerializer.Serialize(Errors) }));
            }

            return(Json(new { success = true, message = "Ficheiro convertido com sucesso!" }));
        }
Пример #11
0
        public IActionResult Index(string _EmpSage, string _Ano)
        {
            //PlanoContasViewModelPath planoContasView
            int    idGabContab      = SessionHelper.GetObjectFromJson <int>(HttpContext.Session, "sessionIDGabContab");
            int    idEmpresaContab  = SessionHelper.GetObjectFromJson <int>(HttpContext.Session, "sessionIDEmpresaContab");
            string AnoEmpresaContab = SessionHelper.GetObjectFromJson <string>(HttpContext.Session, "sessionIDAnoEmpresaContab");

            if (idGabContab == 0)
            {
                logger.LogError($"Gabinete de contabilidade não foi selecionado!");
                ViewBag.Signal       = "notok";
                ViewBag.ErrorTitle   = "Gabinete de Contabilidade !";
                ViewBag.ErrorMessage = "Um gabinete de contabilidade não foi selecionado!" +
                                       " Selecione uma empresa de contabilidade para prosseguir com a operação!";
                return(this.PartialView("~/Views/Error/GeneralError.cshtml"));
            }

            if (idEmpresaContab == 0)
            {
                logger.LogError($"Empresa não foi selecionada!");
                ViewBag.Signal       = "notok";
                ViewBag.ErrorTitle   = "Empresa não foi selecionada !";
                ViewBag.ErrorMessage = "A Empresa não foi selecionada!" +
                                       " Selecione uma empresa para prosseguir com a operação!";
                return(this.PartialView("~/Views/Error/GeneralError.cshtml"));
            }

            if (AnoEmpresaContab == "" || AnoEmpresaContab == null)
            {
                logger.LogError($"Ano fiscal não foi selecionado!");
                ViewBag.Signal       = "notok";
                ViewBag.ErrorTitle   = "Ano fiscal não foi selecionado!";
                ViewBag.ErrorMessage = "Ano fiscal não foi selecionado!" +
                                       " Selecione ano fiscal da empresa para prosseguir com a operação!";
                return(this.PartialView("~/Views/Error/GeneralError.cshtml"));
            }

            List <ConConfigViewModel> conConfigViewModel = conConfig.FindByEmpresaId(idEmpresaContab).ToList();

            if (conConfigViewModel.Count == 0)
            {
                GeneralErrorViewModel generalErrorViewModel = new GeneralErrorViewModel
                {
                    Signal        = "notok",
                    ErrorTitle    = "Conexão nao configurada!",
                    ErrorMessage  = "A empresa não tem uma conexão configurada!",
                    StringButton  = "Configurar conexão",
                    UrlToRedirect = "/ConConfig/IndexJson/",
                    optionalData  = idEmpresaContab.ToString()
                };
                return(this.PartialView("~/Views/Error/GeneralErrorModel.cshtml", generalErrorViewModel));

                //ViewBag.Signal = "notok";
                //ViewBag.ErrorTitle = "Conexão nao configurada!";
                //ViewBag.ErrorMessage = "A empresa não tem uma conexão configurada!";
                //return this.PartialView("~/Views/Error/GeneralError.cshtml");
            }

            DadosEmpresaImportada empViewModel = dadosEmpresaViewModel.ReturnModelByEmpresaAno(idEmpresaContab, Int16.Parse(AnoEmpresaContab));

            string _servidorSQL  = conConfigViewModel[0].NomeServidor;
            string _instanciaSQL = conConfigViewModel[0].InstanciaSQL;

            string _path = "";

            /*
             *         AGesLocEn  _AGesLocEn = empresaAGes.GetAGesLocEn();
             *        string _path = _AGesLocEn.GesSharedDir + _servidorSQL + "\\" + _instanciaSQL;
             *
             */

            if (_path == "" || _path == null)
            {
                _path = "C:\\Sage Data\\Sage Accountants\\";
            }

            _path += (_path.EndsWith("\\") ? "" : "\\") + empViewModel.CodeEmpresa + _Ano + empViewModel.CodeAplicacao + "\\Sync\\toCLAB";

            if (!Directory.Exists(_path))
            {
                Directory.CreateDirectory(_path);
            }

            PathViewModel model = new PathViewModel
            {
                Path      = _path,
                EmpresaID = idEmpresaContab,
                Ano       = Int16.Parse(AnoEmpresaContab)
            };

            return(this.PartialView("~/Views/ExportDocs/Index.cshtml", model));
        }
Пример #12
0
        public IActionResult Index()
        {
            idGabContab      = SessionHelper.GetObjectFromJson <int>(HttpContext.Session, "sessionIDGabContab");
            idEmpresaContab  = SessionHelper.GetObjectFromJson <int>(HttpContext.Session, "sessionIDEmpresaContab");
            AnoEmpresaContab = SessionHelper.GetObjectFromJson <string>(HttpContext.Session, "sessionIDAnoEmpresaContab");

            int EmpresaID;

            if (idGabContab == 0)
            {
                logger.LogError($"Gabinete de contabilidade não foi selecionado!");
                ViewBag.Signal       = "notok";
                ViewBag.ErrorTitle   = "Gabinete de Contabilidade !";
                ViewBag.ErrorMessage = "Um gabinete de contabilidade não foi selecionado!" +
                                       " Selecione uma empresa de contabilidade para prosseguir com a operação!";
                return(this.PartialView("~/Views/Error/GeneralError.cshtml"));
            }
            if (idEmpresaContab == 0)
            {
                logger.LogError($"Empresa não foi selecionada!");
                ViewBag.Signal       = "notok";
                ViewBag.ErrorTitle   = "Empresa não foi selecionada !";
                ViewBag.ErrorMessage = "A Empresa não foi selecionada!" +
                                       " Selecione uma empresa para prosseguir com a operação!";
                return(this.PartialView("~/Views/Error/GeneralError.cshtml"));
            }


            if (AnoEmpresaContab == "" || AnoEmpresaContab == null)
            {
                logger.LogError($"Ano fiscal não foi selecionado!");
                ViewBag.Signal       = "notok";
                ViewBag.ErrorTitle   = "Ano fiscal não foi selecionado!";
                ViewBag.ErrorMessage = "Ano fiscal não foi selecionado!" +
                                       " Selecione ano fiscal da empresa para prosseguir com a operação!";
                return(this.PartialView("~/Views/Error/GeneralError.cshtml"));
            }

            EmpresaID = idEmpresaContab;

            IEnumerable <EmpresasViewModel> tmp_empVmodel         = empresaContext.GetModelByID(idEmpresaContab);
            GabContabilidadeRepository      gabContabilidade      = new GabContabilidadeRepository(appDbContext);
            DadosEmpresaImportada           dadosEmpresaImportada = gabContabilidade.GetEmpresaModel(idEmpresaContab, Int16.Parse(AnoEmpresaContab));

            string baseDados = dadosEmpresaImportada.CodeEmpresa + AnoEmpresaContab + dadosEmpresaImportada.CodeAplicacao;

            string connString = "server=.;database=" + baseDados + ";Trusted_Connection=true;MultipleActiveResultSets=true;";

            if (AnoEmpresaContab == "" || AnoEmpresaContab == null)
            {
                logger.LogError($"Ano fiscal não foi selecionado!");
                ViewBag.Signal       = "notok";
                ViewBag.ErrorTitle   = "Ano fiscal não foi selecionado!";
                ViewBag.ErrorMessage = "Ano fiscal não foi selecionado!" +
                                       " Selecione ano fiscal da empresa para prosseguir com a operação!";
                return(this.PartialView("~/Views/Error/GeneralError.cshtml"));
            }
            ExcelLabViewModel tmp = new ExcelLabViewModel();

            tmp.CodEmpresa       = dadosEmpresaImportada.CodeEmpresa;
            tmp.DataLancamento   = DateTime.Now;
            tmp.DiarioLancamento = GetDiariosLancamento(connString);
            tmp.AnoLancamento    = Int16.Parse(AnoEmpresaContab);
            tmp.MesLancamento    = toDoClassLibrary.MonthEnum.Janeiro;
            tmp.TipoLancamento   = GetTipoLancamento(connString);
            tmp.TipoDocumento    = GetTipoDocumento(connString);
            tmp.LancamentoUnico  = false;
            tmp.InputFilePath    = "";
            tmp.OutputFilePath   = "C:\\Sage Data\\Sage Accountants\\" + dadosEmpresaImportada.CodeEmpresa + AnoEmpresaContab + dadosEmpresaImportada.CodeAplicacao;

            return(PartialView("~/Views/ExcelLab/Index.cshtml", tmp));
        }
Пример #13
0
        public JsonResult ConvertFile(ExcelLabViewModel model)
        {
            if (model.DiarioLancamentoInt == "0")
            {
                return(Json(new { success = false, message = "Escolha um diário de lançamento!" }));
            }

            if (model.TipoLancamentoInt == "0")
            {
                return(Json(new { success = false, message = "Escolha o tipo de lançamento!" }));
            }

            if (model.TipoDocumentoInt == "0")
            {
                return(Json(new { success = false, message = "Escolha o tipo de documento!" }));
            }
            if (model.InputFilePath == null)
            {
                return(Json(new { success = false, message = "Escolha um ficheiro *.xlsx para importar" }));
            }

            int    idGabContab      = SessionHelper.GetObjectFromJson <int>(HttpContext.Session, "sessionIDGabContab");
            int    idEmpresaContab  = SessionHelper.GetObjectFromJson <int>(HttpContext.Session, "sessionIDEmpresaContab");
            string AnoEmpresaContab = SessionHelper.GetObjectFromJson <string>(HttpContext.Session, "sessionIDAnoEmpresaContab");

            IEnumerable <EmpresasViewModel> tmp_empVmodel         = empresaContext.GetModelByID(idEmpresaContab);
            GabContabilidadeRepository      gabContabilidade      = new GabContabilidadeRepository(appDbContext);
            DadosEmpresaImportada           dadosEmpresaImportada = gabContabilidade.GetEmpresaModel(idEmpresaContab, Int16.Parse(AnoEmpresaContab));

            string baseDados = dadosEmpresaImportada.CodeEmpresa + AnoEmpresaContab + dadosEmpresaImportada.CodeAplicacao;

            string connString = "server=.;database=" + baseDados + ";Trusted_Connection=true;MultipleActiveResultSets=true;";

            using var context = new CustomDbContext(connString);

            string importedExcelFilePath = encryptionHelper.Decrypt(model.InputFilePath);

            model.InputFilePath = importedExcelFilePath;

            //FileUpload1.SaveAs(ExcelFilePath);

            string XMLFilePath = model.OutputFilePath;

            //string LocalCon = Session["LocalConnection"].ToString();

            string CodEmpSage = dadosEmpresaImportada.CodeEmpresa;

            //string EmpSageCon = Session["EmpSageConnection"].ToString();

            string CodDiario = model.DiarioLancamentoInt; //this.ddrDiarioLanc.SelectedValue;
            string TipoLanc  = model.TipoLancamentoInt;   //this.ddrTipoLanc.SelectedValue;
            string TipoDoc   = model.TipoDocumentoInt;    //this.ddrTipoDoc.SelectedValue;
            bool   LancUnico = model.LancamentoUnico;

            string[] ExcelPathArray = importedExcelFilePath.Split('\\');
            string   fileName       = ExcelPathArray[ExcelPathArray.Length - 1];

            string[] fileNameArray    = fileName.Split('.');
            string   fileNameNoExt    = fileNameArray[0];
            int      index            = fileNameNoExt.IndexOf(" (");
            string   fileNameNoExtRep = index >= 0 ? fileNameNoExt.Remove(index) : fileNameNoExt;

            string[] fileNameNoExtArray = fileNameNoExtRep.Split('_');
            string   NIF  = fileNameNoExtArray[0];
            string   Year = fileNameNoExtArray[1];

            //using (SqlConnection con = new SqlConnection(Session["LocalConnection"].ToString()))
            //{
            //    con.Open();

            //    string selectEmpresaSage_query = "select NContrib from Emprs where CEmp = '" + Session["EmpSage"].ToString() + "'";
            //    SqlCommand selectEmpresaSage = new SqlCommand(selectEmpresaSage_query, con);
            //    string NifEmpSage = selectEmpresaSage.ExecuteScalar().ToString();

            if (NIF != tmp_empVmodel.ToList()[0].NIF)
            {
                return(Json(new { success = false, message = "Contribuinte nao coincide, verifique o contribuinte a importar!" }));
            }
            if (Year != AnoEmpresaContab)
            {
                return(Json(new { success = false, message = "O Ano seleccionado nao coresponde com o Ano do ficheiro a importar!" }));
            }


            string DataLanc = model.DataLancamento.ToString("yyyy-MM-dd");//Convert.ToDateTime(this.txtDataLanc.Text).ToString("yyyy-MM-dd");

            ConConfigViewModel conConfigViewModel = conConfig.FindByEmpresaId(idEmpresaContab).ToList()[0];
            EmpresasViewModel  empresaViewModel   = appDbContext.EmpresasViewModel.FirstOrDefault(x => x.EmpresaID == idEmpresaContab);
            Empr empr = aGesContext.Emprs.FirstOrDefault(x => x.Ncontrib == NIF && x.Cemp == dadosEmpresaImportada.CodeEmpresa);

            var conv = new ConvertExcelToXML(model, baseDados, dadosEmpresaImportada, conConfigViewModel, empresaViewModel, empr);

            List <ErrorLine> Errors = new List <ErrorLine>();

            conv.ConvertFile();
            Errors = conv.errors;

            if (Errors.Count > 0)
            {
                return(Json(new { success = true, message = "Arquivo parcialmente exportado com sucesso! Verifique os erros!", errors = JsonSerializer.Serialize(Errors) }));
            }

            return(Json(new { success = true, message = "Ficheiro convertido com sucesso!" }));

            //    var memory = new MemoryStream();
            //using (var stream = new FileStream(importedExcelFilePath, FileMode.Open))
            //{
            //    await stream.CopyToAsync(memory);
            //}
            //memory.Position = 0;
            //var ext = Path.GetExtension(importedExcelFilePath).ToLowerInvariant();
            //var tExt = GetMimeTypes()[ext];
            //int _year = DateTime.Now.Year;
            //int _month = DateTime.Now.Month;
            //string outputFileName = $"{tmp_empVmodel.ToList()[0].NIF}_{dadosEmpresaImportada.CodeEmpresa}{dadosEmpresaImportada.CodeAplicacao}_{_year.ToString()}_{_month.ToString()}.xlsx";
        }
Пример #14
0
 public Task <bool> Update(DadosEmpresaImportada model)
 {
     throw new NotImplementedException();
 }