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