public List <LigneImportView> GetLigne(string path, int annee, int trimestre, int categorieNo)
        {
            List <LigneImportView> listImport = _serviceImport.GetAll(path).ToList();

            if (listImport.Any(x => x.Annee != annee))
            {
                throw new InvalidOperationException("Année invalide!");
            }
            if (listImport.Any(x => x.Trimestre != trimestre))
            {
                throw new InvalidOperationException("Trimestre invalide!");
            }

            //si la categorie egale a -1 =>l'utilisateur choisit d'importer toutes les categories
            //si non, l'utilisateur choisit d'importer une seule catégorie
            if (categorieNo != -1)
            {
                CategorieCnss categorie = _service.CnssService.GetAllCategories().Single(x => x.Id == categorieNo);
                foreach (LigneImportView ligneImportView in listImport)
                {
                    ligneImportView.TypeCnssStr = categorie.No.ToString();
                }
            }
            return(listImport);
        }
 public void Delete(CategorieCnss categorie)
 {
     using (var con = new SqlConnection(ConnectionString))
     {
         con.Execute(QueryDelete, new { No = categorie.Id });
     }
 }
        private int EmployeeCreate(
            string cin,
            string nom,
            string prenom,
            Civilite civilite,
            SituationFamille situationFamille,
            string numeroCnss,
            string cleCnss,
            string nomJeuneFille,
            string autresNom,
            string numeroInterne,
            CategorieCnss categorie)
        {
            var employee = new Employee
            {
                Civilite         = civilite,
                Nom              = nom,
                Prenom           = prenom,
                SituationFamille = situationFamille,
                CleCnss          = cleCnss,
                NumeroCnss       = numeroCnss,
                Cin              = cin,
                NomJeuneFille    = nomJeuneFille,
                SocieteNo        = DeclarationService.Societe.Id,
                AutresNom        = autresNom,
                CategorieNo      = categorie.Id,
                NumeroInterne    = numeroInterne
            };

            return(_employeeRepository.Create(employee));
        }
        public void CategorieCnssUpdate(int id,
                                        string intitule,
                                        string codeExploitation,
                                        decimal tauxPatronal,
                                        decimal tauxSalarial,
                                        decimal tauxAccident,
                                        TypeVariablePaie typeVariable,
                                        string codePaie)
        {
            // checked intitule
            if (string.IsNullOrEmpty(intitule))
            {
                throw new InvalidOperationException("Intitule catégorie invalide!");
            }
            CategorieCnss categorie = _categorieRepository.GetCategorie(id);

            if (categorie == null)
            {
                throw new InvalidOperationException("Catégorie n'est pas existe!");
            }

            categorie.Intitule         = intitule;
            categorie.CodeExploitation = codeExploitation;
            categorie.TauxPatronal     = tauxPatronal;
            categorie.TauxSalarial     = tauxSalarial;
            categorie.AccidentTravail  = tauxAccident;
            categorie.TypeVariablePaie = typeVariable;
            categorie.CodePaie         = codePaie;
            _categorieRepository.Update(categorie);
        }
예제 #5
0
        public static IEnumerable <LigneSqlView> GetLigneRubrique(Societe societe, CategorieCnss categorie, DateTime dateMin, DateTime dateMax, string etablissementNo)
        {
            var dateMinBrut1 = dateMin;
            var dateMaxBrut1 = dateMin.AddMonths(1).AddDays(-1);
            var dateMinBrut2 = dateMin.AddMonths(1);
            var dateMaxBrut2 = dateMinBrut2.AddMonths(1).AddDays(-1);
            var dateMinBrut3 = dateMinBrut2.AddMonths(1);
            var dateMaxBrut3 = dateMinBrut3.AddMonths(1).AddDays(-1);
            var query        = societe.CnssTypeMatricule == TypeMatriculCnss.Matricule ? EnteteSelectMatricule : EnteteSelectBadge;

            query = string.Format("{0} {1}", query, string.IsNullOrWhiteSpace(etablissementNo)? QueryGetByRubriqueEtabNull: QueryGetByRubrique);
            using (var con = new SqlConnection(societe.GetConnection()))
            {
                var result = con.Query <LigneSqlView>(query, new
                {
                    categorie.CodePaie,
                    dateMin,
                    dateMax,
                    etablissementNo,
                    dateMinBrut1,
                    dateMaxBrut1,
                    dateMinBrut2,
                    dateMaxBrut2,
                    dateMinBrut3,
                    dateMaxBrut3
                });

                return(result);
            }
        }
        // exporter les declarations
        public void ExportsCnss(int declarationNo, string path)
        {
            var declaration = _declarationCnssRepository.GetDeclaration(declarationNo);

            if (declaration == null)
            {
                throw new ArgumentNullException("declaration");
            }

            try
            {
                // charger les lignes + group by categorie
                var generatedDeclaration =
                    _ligneCnssRepository.GetLignesByDeclaration(declarationNo)
                    .GroupBy(x => x.CategorieNo);

                path += @"\" +
                        string.Format("TVS DecCNSS {0} {1:yyyyMMddhhmmss }", Societe.RaisonSocial, DateTime.Now);
                Directory.CreateDirectory(path);
                foreach (var ligneGenerated in generatedDeclaration)
                {
                    string pathDrectory = path;

                    CategorieCnss categorie = _categorieRepository.GetCategorie(ligneGenerated.Key);
                    string        dossier   = categorie.Intitule + " " + categorie.No + " " + Exercice.Annee + " T " +
                                              declaration.Trimestre;
                    pathDrectory += @"\" + dossier;
                    Directory.CreateDirectory(pathDrectory);

                    pathDrectory += @"\DS" + Societe.NumeroEmployeur.PadLeft(8, '0') +
                                    Societe.CleEmployeur.PadLeft(2, '0') +
                                    categorie.CodeExploitation.PadLeft(4, '0') + "." + declaration.Trimestre +
                                    Exercice.Annee + ".txt";

                    using (var sw = new StreamWriter(
                               new FileStream(pathDrectory, FileMode.Create), Encoding.ASCII))
                    {
                        var groupByPage = ligneGenerated.GroupBy(x => x.Page).OrderBy(x => x.Key);
                        foreach (var groupe in groupByPage)
                        {
                            foreach (LigneCnss t in groupe.OrderBy(x => x.Ligne))
                            {
                                sw.WriteLine(t.GetToString(Societe, declaration, Exercice));
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
 public CategorieView ToViewCategorie(CategorieCnss categorieCnss)
 {
     return(new CategorieView
     {
         TauxPatronal = categorieCnss.TauxPatronal,
         AccidentTravail = categorieCnss.AccidentTravail,
         TauxSalarial = categorieCnss.TauxSalarial,
         CodeExploitation = categorieCnss.CodeExploitation,
         Intitule = categorieCnss.Intitule,
         No = categorieCnss.No,
         Id = categorieCnss.Id
     });
 }
        public int EmployeeCreateOrUpdate(
            string cin,
            string nom,
            string prenom,
            Civilite civilite,
            SituationFamille situationFamille,
            string numeroCnss,
            string cleCnss,
            string nomJeuneFille,
            string autresNom,
            string numeroInterne,
            CategorieCnss categorie)
        {
            var employee = new Employee
            {
                Civilite         = civilite,
                Nom              = nom,
                Prenom           = prenom,
                SituationFamille = situationFamille,
                CleCnss          = cleCnss,
                NumeroCnss       = numeroCnss,
                Cin              = cin,
                NomJeuneFille    = nomJeuneFille,
                SocieteNo        = DeclarationService.Societe.Id,
                AutresNom        = autresNom,
                CategorieNo      = categorie.Id,
                NumeroInterne    = numeroInterne
            };
            // checked exist empployee , if not exist then create , else update

            var exist = _employeeRepository.Get(cin, DeclarationService.Societe.Id);

            if (exist == null)
            {
                return(_employeeRepository.Create(employee));
            }
            exist.Civilite         = civilite;
            exist.CleCnss          = cleCnss;
            exist.Nom              = nom;
            exist.Prenom           = prenom;
            exist.SituationFamille = situationFamille;
            exist.CleCnss          = cleCnss;
            exist.NumeroCnss       = numeroCnss;
            exist.Cin              = cin;
            exist.NomJeuneFille    = nomJeuneFille;
            exist.CategorieNo      = categorie.Id;
            _employeeRepository.Update(exist);
            return(exist.Id);
        }
 public CategorieView ToView(CategorieCnss categorie)
 {
     return(new CategorieView
     {
         CodeExploitation = categorie.CodeExploitation,
         Intitule = categorie.Intitule,
         Id = categorie.Id,
         TauxSalarial = categorie.TauxSalarial,
         TauxPatronal = categorie.TauxPatronal,
         AccidentTravail = categorie.AccidentTravail,
         No = categorie.No,
         CodePaie = categorie.CodePaie,
         TypeVariablePaie = categorie.TypeVariablePaie
     });
 }
 public void Update(CategorieCnss categorie)
 {
     using (var con = new SqlConnection(ConnectionString))
     {
         con.Execute(QueryUpdate, new
         {
             categorie.AccidentTravail,
             categorie.CodeExploitation,
             categorie.No,
             categorie.Intitule,
             categorie.TauxPatronal,
             categorie.TauxSalarial,
             categorie.Id,
             categorie.CodePaie,
             categorie.TypeVariablePaie
         });
     }
 }
 public int Create(CategorieCnss categorie)
 {
     using (var con = new SqlConnection(ConnectionString))
     {
         return(con.Query <int>(QueryInsert, new
         {
             categorie.AccidentTravail,
             categorie.CodeExploitation,
             categorie.No,
             categorie.Intitule,
             categorie.SocieteNo,
             categorie.TauxPatronal,
             categorie.TauxSalarial,
             categorie.CodePaie,
             categorie.TypeVariablePaie
         }).SingleOrDefault());
     }
 }
        public int CategorieCreate(int no,
                                   string intitule,
                                   string codeExploitation,
                                   decimal tauxPatronal,
                                   decimal tauxSalarial,
                                   decimal tauxAccident,
                                   TypeVariablePaie typeVariable,
                                   string codePaie)
        {
            var categorie = new CategorieCnss
            {
                Intitule         = intitule,
                SocieteNo        = DeclarationService.Societe.Id,
                No               = no,
                TauxPatronal     = tauxPatronal,
                TauxSalarial     = tauxSalarial,
                AccidentTravail  = tauxAccident,
                CodeExploitation = codeExploitation,
                TypeVariablePaie = typeVariable,
                CodePaie         = codePaie
            };

            return(_categorieRepository.Create(categorie));
        }
예제 #13
0
        public DeclarationDs(DeclarationService service, DeclarationCnss declaration)
            : this()
        {
            if (service == null)
            {
                throw new ArgumentNullException("service");
            }
            if (declaration == null)
            {
                throw new InvalidOperationException("declaration");
            }
            Societe societe = service.Societe;

            if (societe == null)
            {
                throw new InvalidOperationException("Erreur chargement societe");
            }
            List <CategorieCnss> categories = service.CnssService.GetAllCategories().ToList();

            foreach (CategorieCnss categorieCnss in categories)
            {
                tableTCategorie.AddTCategorieRow(categorieCnss.Id,
                                                 categorieCnss.Intitule,
                                                 categorieCnss.CodeExploitation,
                                                 categorieCnss.TauxPatronal,
                                                 categorieCnss.TauxSalarial,
                                                 categorieCnss.AccidentTravail);
            }
            var exercice = service.ExerciceGetAll().FirstOrDefault(x => x.Id == declaration.ExerciceId);

            if (exercice == null)
            {
                throw new ArgumentNullException("exercice");
            }
            var lignes = service.CnssService.GetLigneDeclarationCnss(declaration.Id);

            tableTSociete.AddTSocieteRow(societe.RaisonSocial,
                                         societe.Activite,
                                         societe.Adresse,
                                         societe.CodePostal,
                                         societe.Ville,
                                         societe.Pays,
                                         societe.NumeroEmployeur.PadLeft(8, '0'),
                                         $"{societe.MatriculFiscal} {societe.MatriculCle}/{societe.MatriculCodeTva}/{societe.MatriculCategorie}/{societe.MatriculEtablissement}",
                                         societe.CodeBureau,
                                         exercice.Annee,
                                         declaration.Trimestre,
                                         societe.CleEmployeur.PadLeft(2, '0'), societe.MatriculCle, societe.MatriculCategorie, societe.MatriculEtablissement, societe.MatriculCodeTva);
            foreach (LigneCnss ligne in lignes)
            {
                CategorieCnss cat = categories.Single(x => x.Id == ligne.CategorieNo);
                if (cat == null)
                {
                    throw new InvalidOperationException("Catégorie");
                }
                tableTDeclaration.AddTDeclarationRow(ligne.Id,
                                                     ligne.Page.Value,
                                                     ligne.Ligne.Value,
                                                     ligne.Brut1,
                                                     ligne.Brut2,
                                                     ligne.Brut3,
                                                     cat.Intitule,
                                                     ligne.CodeExploitation,
                                                     ligne.NumeroCnss,
                                                     ligne.CleCnss,
                                                     ligne.Cin,
                                                     ligne.Nom,
                                                     ligne.Prenom,
                                                     ligne.Civilite.ToString(),
                                                     ligne.AutresNom,
                                                     ligne.NomJeuneFille,
                                                     ligne.NumeroInterne,
                                                     cat.Id);
            }
        }
        // creation de ligne de déclaration
        public void LigneDeclarationCreate(int declarationNo,
                                           string employeeCin,
                                           decimal brutA,
                                           decimal brutB,
                                           decimal brutC)
        {
            if (Exercice.IsCloturer)
            {
                throw new InvalidOperationException("Exercice est cloturé");
            }

            //charger la declaration
            var declaration = _declarationCnssRepository.GetDeclaration(declarationNo);

            if (declaration == null)
            {
                throw new ApplicationException("Déclaration invalide!");
            }

            // tester si la daclaration est clôturer
            if (declaration.IsCloture)
            {
                throw new InvalidOperationException("Opération invalide [Déclaration est clôturé].");
            }

            //charger l'employee
            Employee employee = _employeeRepository.Get(employeeCin, Societe.Id);

            if (employee == null)
            {
                throw new ApplicationException("Employee n'existe pas!");
            }

            //charger categorie employee
            CategorieCnss categorie = _categorieRepository.GetCategorie(employee.CategorieNo);

            if (categorie == null)
            {
                throw new ApplicationException("Categorie employee invalide!");
            }

            IEnumerable <LigneCnss> exist = _ligneCnssRepository.GetAll(declarationNo, employee.Id,
                                                                        employee.NumeroInterne);

            if (exist != null)
            {
                throw new ApplicationException("Ligne déclaration déja existe!");
            }

            // vérifier les montants
            if (brutA < 0)
            {
                throw new InvalidOperationException(string.Format("Brut 1 invalid! Employee {0}", employee.Cin));
            }
            if (brutB < 0)
            {
                throw new InvalidOperationException(string.Format("Brut 2 invalid! Employee {0}", employee.Cin));
            }
            if (brutC < 0)
            {
                throw new InvalidOperationException(string.Format("Brut 3 invalid! Employee {0}", employee.Cin));
            }
            if (brutA == 0 && brutB == 0 && brutC == 0)
            {
                throw new ApplicationException("Opération invalide! [Montant égale O]");
            }
            var ligne = new LigneCnss
            {
                Ligne            = 0,
                Page             = 0,
                Brut1            = brutA,
                Brut2            = brutB,
                Brut3            = brutC,
                CategorieNo      = categorie.Id,
                DeclarationNo    = declarationNo,
                SocieteNo        = Societe.Id,
                EmployeeNo       = employee.Id,
                CleCnss          = employee.CleCnss,
                Prenom           = employee.Prenom,
                CodeExploitation = categorie.CodeExploitation,
                NumeroCnss       = employee.NumeroCnss,
                Cin           = employee.Cin,
                Nom           = employee.Nom,
                NomJeuneFille = employee.NomJeuneFille,
                Civilite      = employee.Civilite,
                NumeroInterne = employee.NumeroInterne,
                AutresNom     = employee.AutresNom,
            };

            _ligneCnssRepository.Create(ligne);
        }
        public void DeclarationValiderCnss(int declarationNo)
        {
            if (DeclarationService.Exercice.IsCloturer)
            {
                throw new InvalidOperationException("Exercice est cloturé");
            }
            // charger la declaration
            var declaration = _declarationCnssRepository.GetDeclaration(declarationNo);

            if (declaration == null)
            {
                throw new ApplicationException("Declaration invalide! ");
            }

            // tester si la declaration est cloture
            if (declaration.IsCloture)
            {
                throw new ApplicationException("Opération invalide! [Déclaration est cloturée!]");
            }
            // charger les lignes declaration
            List <LigneCnss> lignesCnss = _ligneCnssRepository.GetLignesByDeclaration(declaration.Id).ToList();

            if (lignesCnss.Count == 0)
            {
                throw new ApplicationException("Aucune ligne à déclarer!");
            }
            var groupeByCategories = lignesCnss.GroupBy(x => x.CategorieNo);

            try
            {
                var option = new TransactionOptions
                {
                    IsolationLevel = IsolationLevel.ReadCommitted,
                    Timeout        = TimeSpan.FromSeconds(15)
                };
                using (var scope = new TransactionScope(TransactionScopeOption.Required, option))
                {
                    // group by categorie
                    foreach (var groupeByCategory in groupeByCategories)
                    {
                        // load categorie
                        CategorieCnss categorie = _categorieRepository.GetCategorie(groupeByCategory.Key);
                        if (categorie == null)
                        {
                            throw new ApplicationException("Catégorie invalide!");
                        }

                        int ligne = 0;
                        int page  = 1;
                        List <LigneCnss> lignes =
                            groupeByCategory.OrderBy(x => Convert.ToInt32(x.NumeroCnss)).ToList();
                        if (lignes.Count > 11988)
                        {
                            throw new InvalidOperationException("Nombre des lignes déclarer est superieur à 11988.");
                        }
                        // generated ligne and page
                        foreach (LigneCnss ligneCnss in lignes)
                        {
                            ligne++;
                            ligneCnss.Ligne            = ligne;
                            ligneCnss.Page             = page;
                            ligneCnss.CodeExploitation = categorie.CodeExploitation;
                            if (ligne == 12)
                            {
                                ligne = 0;
                                page++;
                            }

                            _ligneCnssRepository.Update(ligneCnss);
                        }
                    }

                    _declarationCnssRepository.Cloturer(declarationNo, true);
                    scope.Complete();
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }