merge dae pour cout global
authorOlivier Larchevêque <olivier.larcheveque@auf.org>
Fri, 8 Apr 2011 14:20:20 +0000 (10:20 -0400)
committerOlivier Larchevêque <olivier.larcheveque@auf.org>
Fri, 8 Apr 2011 14:20:20 +0000 (10:20 -0400)
1  2 
project/dae/migrations/0016_auto__del_groupetyperemuneration__del_typeremuneration__del_field_remu.py
project/dae/models.py
project/dae/templates/dae/embauche.html
project/dae/views.py

index 0000000,0000000..e83a146
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,438 @@@
++# encoding: utf-8
++import datetime
++from south.db import db
++from south.v2 import SchemaMigration
++from django.db import models
++
++class Migration(SchemaMigration):
++    
++    def forwards(self, orm):
++        
++        # Deleting model 'GroupeTypeRemuneration'
++        db.delete_table('dae_groupetyperemuneration')
++
++        # Deleting model 'TypeRemuneration'
++        db.delete_table('dae_typeremuneration')
++
++        # Deleting field 'Remuneration.desactivation'
++        db.delete_column('dae_remuneration', 'desactivation')
++
++        # Deleting field 'Remuneration.annulation'
++        db.delete_column('dae_remuneration', 'annulation')
++
++        # Deleting field 'Remuneration.user_desactivation'
++        db.delete_column('dae_remuneration', 'user_desactivation')
++
++        # Deleting field 'Remuneration.date_desactivation'
++        db.delete_column('dae_remuneration', 'date_desactivation')
++
++        # Deleting field 'Remuneration.pourcentage'
++        db.delete_column('dae_remuneration', 'pourcentage')
++
++        # Deleting field 'Remuneration.date_effective'
++        db.delete_column('dae_remuneration', 'date_effective')
++
++        # Deleting field 'Remuneration.date_annulation'
++        db.delete_column('dae_remuneration', 'date_annulation')
++
++        # Deleting field 'Remuneration.user_annulation'
++        db.delete_column('dae_remuneration', 'user_annulation')
++
++        # Adding field 'Remuneration.precision'
++        db.add_column('dae_remuneration', 'precision', self.gf('django.db.models.fields.CharField')(max_length=255, null=True, blank=True), keep_default=False)
++
++        # Changing field 'Remuneration.montant'
++        db.alter_column('dae_remuneration', 'montant', self.gf('django.db.models.fields.DecimalField')(null=True, max_digits=12, decimal_places=2))
++
++        # Changing field 'Remuneration.type'
++        db.alter_column('dae_remuneration', 'type', self.gf('django.db.models.fields.related.ForeignKey')(db_column='type', to=orm['rh_v1.TypeRemuneration']))
++
++        # Changing field 'Remuneration.id'
++        db.alter_column('dae_remuneration', 'id', self.gf('django.db.models.fields.AutoField')(primary_key=True))
++    
++    
++    def backwards(self, orm):
++        
++        # Adding model 'GroupeTypeRemuneration'
++        db.create_table('dae_groupetyperemuneration', (
++            ('nom', self.gf('django.db.models.fields.CharField')(max_length=255)),
++            ('ordre', self.gf('django.db.models.fields.IntegerField')()),
++            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
++        ))
++        db.send_create_signal('dae', ['GroupeTypeRemuneration'])
++
++        # Adding model 'TypeRemuneration'
++        db.create_table('dae_typeremuneration', (
++            ('groupe', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['dae.GroupeTypeRemuneration'])),
++            ('ordre', self.gf('django.db.models.fields.IntegerField')()),
++            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
++        ))
++        db.send_create_signal('dae', ['TypeRemuneration'])
++
++        # Adding field 'Remuneration.desactivation'
++        db.add_column('dae_remuneration', 'desactivation', self.gf('django.db.models.fields.BooleanField')(default=False, blank=True), keep_default=False)
++
++        # Adding field 'Remuneration.annulation'
++        db.add_column('dae_remuneration', 'annulation', self.gf('django.db.models.fields.BooleanField')(default=False, blank=True), keep_default=False)
++
++        # Adding field 'Remuneration.user_desactivation'
++        db.add_column('dae_remuneration', 'user_desactivation', self.gf('django.db.models.fields.IntegerField')(null=True, blank=True), keep_default=False)
++
++        # Adding field 'Remuneration.date_desactivation'
++        db.add_column('dae_remuneration', 'date_desactivation', self.gf('django.db.models.fields.DateField')(null=True, blank=True), keep_default=False)
++
++        # Adding field 'Remuneration.pourcentage'
++        db.add_column('dae_remuneration', 'pourcentage', self.gf('django.db.models.fields.IntegerField')(null=True, blank=True), keep_default=False)
++
++        # Adding field 'Remuneration.date_effective'
++        db.add_column('dae_remuneration', 'date_effective', self.gf('django.db.models.fields.DateField')(null=True, blank=True), keep_default=False)
++
++        # Adding field 'Remuneration.date_annulation'
++        db.add_column('dae_remuneration', 'date_annulation', self.gf('django.db.models.fields.DateField')(null=True, blank=True), keep_default=False)
++
++        # Adding field 'Remuneration.user_annulation'
++        db.add_column('dae_remuneration', 'user_annulation', self.gf('django.db.models.fields.IntegerField')(null=True, blank=True), keep_default=False)
++
++        # Deleting field 'Remuneration.precision'
++        db.delete_column('dae_remuneration', 'precision')
++
++        # Changing field 'Remuneration.montant'
++        db.alter_column('dae_remuneration', 'montant', self.gf('django.db.models.fields.DecimalField')(max_digits=12, decimal_places=2))
++
++        # Changing field 'Remuneration.type'
++        db.alter_column('dae_remuneration', 'type', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['dae.TypeRemuneration'], db_column='type'))
++
++        # Changing field 'Remuneration.id'
++        db.alter_column('dae_remuneration', 'id', self.gf('django.db.models.fields.IntegerField')(primary_key=True))
++    
++    
++    models = {
++        'dae.documentemploye': {
++            'Meta': {'object_name': 'DocumentEmploye'},
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
++        },
++        'dae.documentposte': {
++            'Meta': {'object_name': 'DocumentPoste'},
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
++        },
++        'dae.dossier': {
++            'Meta': {'object_name': 'Dossier'},
++            'classement': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'to': "orm['rh_v1.Classement']"}),
++            'classement_anterieur': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['rh_v1.Classement']"}),
++            'classement_titulaire_anterieur': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['rh_v1.Classement']"}),
++            'compte_compta': ('django.db.models.fields.CharField', [], {'max_length': '10'}),
++            'compte_courriel': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
++            'contrat_date_debut': ('django.db.models.fields.DateField', [], {}),
++            'contrat_date_fin': ('django.db.models.fields.DateField', [], {}),
++            'devise': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'to': "orm['rh_v1.Devise']"}),
++            'employe': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'to': "orm['dae.Employe']"}),
++            'employe_anterieur': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['rh_v1.Employe']"}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'organisme_bstg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'to': "orm['rh_v1.OrganismeBstg']"}),
++            'poste': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'to': "orm['dae.Poste']"}),
++            'regime_travail': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
++            'regime_travail_nb_heure_semaine': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
++            'remplacement': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
++            'salaire': ('django.db.models.fields.DecimalField', [], {'default': 'None', 'null': 'True', 'max_digits': '12', 'decimal_places': '2'}),
++            'salaire_anterieur': ('django.db.models.fields.DecimalField', [], {'default': 'None', 'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
++            'salaire_titulaire_anterieur': ('django.db.models.fields.DecimalField', [], {'default': 'None', 'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
++            'statut': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'to': "orm['rh_v1.Statut']"}),
++            'statut_anterieur': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['rh_v1.Statut']"}),
++            'statut_residence': ('django.db.models.fields.CharField', [], {'max_length': '10'}),
++            'statut_titulaire_anterieur': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['rh_v1.Statut']"}),
++            'type_contrat': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'to': "orm['rh_v1.TypeContrat']"})
++        },
++        'dae.employe': {
++            'Meta': {'object_name': 'Employe'},
++            'genre': ('django.db.models.fields.CharField', [], {'max_length': '1', 'null': 'True', 'blank': 'True'}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'id_rh': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'null': 'True', 'to': "orm['rh_v1.Employe']"}),
++            'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
++            'prenom': ('django.db.models.fields.CharField', [], {'max_length': '255'})
++        },
++        'dae.justificationemploye': {
++            'Meta': {'object_name': 'JustificationEmploye'},
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
++        },
++        'dae.justificationposte': {
++            'Meta': {'object_name': 'JustificationPoste'},
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
++        },
++        'dae.poste': {
++            'Meta': {'object_name': 'Poste'},
++            'actif': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
++            'appel': ('django.db.models.fields.CharField', [], {'default': "'interne'", 'max_length': '10'}),
++            'autre_max': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'}),
++            'autre_min': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'}),
++            'classement_max': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'to': "orm['rh_v1.Classement']"}),
++            'classement_min': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'to': "orm['rh_v1.Classement']"}),
++            'coefficient_max': ('django.db.models.fields.FloatField', [], {'null': 'True'}),
++            'coefficient_min': ('django.db.models.fields.FloatField', [], {'null': 'True'}),
++            'comp_autre_max': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
++            'comp_autre_min': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
++            'comp_fonctionpub_max': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
++            'comp_fonctionpub_min': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
++            'comp_locale_max': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
++            'comp_locale_min': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
++            'comp_ong_max': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
++            'comp_ong_min': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
++            'comp_universite_max': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
++            'comp_universite_min': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
++            'date_creation': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
++            'date_debut': ('django.db.models.fields.DateField', [], {}),
++            'date_fin': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'date_modification': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
++            'devise_comparaison': ('django.db.models.fields.related.ForeignKey', [], {'default': '5', 'related_name': "'+'", 'to': "orm['rh_v1.Devise']"}),
++            'devise_max': ('django.db.models.fields.related.ForeignKey', [], {'default': '5', 'related_name': "'+'", 'to': "orm['rh_v1.Devise']"}),
++            'devise_min': ('django.db.models.fields.related.ForeignKey', [], {'default': '5', 'related_name': "'+'", 'to': "orm['rh_v1.Devise']"}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'id_rh': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'null': 'True', 'to': "orm['rh_v1.Poste']"}),
++            'implantation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['datamaster_modeles.Implantation']"}),
++            'indemn_max': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'}),
++            'indemn_min': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'}),
++            'mise_a_disposition': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
++            'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
++            'regime_travail': ('django.db.models.fields.DecimalField', [], {'default': '100', 'max_digits': '12', 'decimal_places': '2'}),
++            'regime_travail_nb_heure_semaine': ('django.db.models.fields.DecimalField', [], {'default': '40', 'max_digits': '12', 'decimal_places': '2'}),
++            'responsable': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'to': "orm['rh_v1.Poste']"}),
++            'salaire_max': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'}),
++            'salaire_min': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'}),
++            'service': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'to': "orm['rh_v1.Service']"}),
++            'statut_residence': ('django.db.models.fields.CharField', [], {'default': "'MAD'", 'max_length': '10'}),
++            'type_poste': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'null': 'True', 'to': "orm['rh_v1.TypePoste']"}),
++            'valeur_point_max': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['rh_v1.ValeurPoint']"}),
++            'valeur_point_min': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['rh_v1.ValeurPoint']"})
++        },
++        'dae.postefinancement': {
++            'Meta': {'object_name': 'PosteFinancement'},
++            'commentaire': ('django.db.models.fields.TextField', [], {}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'montant': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
++            'poste': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'financements'", 'to': "orm['dae.Poste']"}),
++            'pourcentage': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
++            'type': ('django.db.models.fields.CharField', [], {'max_length': '1'})
++        },
++        'dae.remuneration': {
++            'Meta': {'object_name': 'Remuneration'},
++            'date_creation': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
++            'devise': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'to_field': "'code'", 'db_column': "'devise'", 'to': "orm['rh_v1.Devise']"}),
++            'dossier': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['dae.Dossier']", 'db_column': "'dossier'"}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'montant': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2'}),
++            'precision': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
++            'type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'db_column': "'type'", 'to': "orm['rh_v1.TypeRemuneration']"}),
++            'user_creation': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
++        },
++        'dae.validation': {
++            'Meta': {'object_name': 'Validation'},
++            'date': ('django.db.models.fields.DateField', [], {}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
++        },
++        'dae.validationemploye': {
++            'Meta': {'object_name': 'ValidationEmploye'},
++            'employe': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['dae.Employe']"}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
++        },
++        'dae.validationposte': {
++            'Meta': {'object_name': 'ValidationPoste'},
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'poste': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['dae.Poste']"})
++        },
++        'datamaster_modeles.bureau': {
++            'Meta': {'object_name': 'Bureau', 'db_table': "u'ref_bureau'"},
++            'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
++            'code': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
++            'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
++            'implantation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['datamaster_modeles.Implantation']", 'db_column': "'implantation'"}),
++            'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
++            'nom_court': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
++            'nom_long': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
++            'region': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['datamaster_modeles.Region']", 'db_column': "'region'"})
++        },
++        'datamaster_modeles.implantation': {
++            'Meta': {'object_name': 'Implantation', 'db_table': "u'ref_implantation'"},
++            'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
++            'adresse_physique_bureau': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
++            'adresse_physique_code_postal': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
++            'adresse_physique_code_postal_avant_ville': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
++            'adresse_physique_no': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
++            'adresse_physique_pays': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'impl_adresse_physique'", 'to_field': "'code'", 'db_column': "'adresse_physique_pays'", 'to': "orm['datamaster_modeles.Pays']"}),
++            'adresse_physique_precision': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
++            'adresse_physique_precision_avant': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
++            'adresse_physique_region': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
++            'adresse_physique_rue': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
++            'adresse_physique_ville': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
++            'adresse_postale_boite_postale': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
++            'adresse_postale_bureau': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
++            'adresse_postale_code_postal': ('django.db.models.fields.CharField', [], {'max_length': '20', 'null': 'True', 'blank': 'True'}),
++            'adresse_postale_code_postal_avant_ville': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
++            'adresse_postale_no': ('django.db.models.fields.CharField', [], {'max_length': '30', 'null': 'True', 'blank': 'True'}),
++            'adresse_postale_pays': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'impl_adresse_postale'", 'to_field': "'code'", 'db_column': "'adresse_postale_pays'", 'to': "orm['datamaster_modeles.Pays']"}),
++            'adresse_postale_precision': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
++            'adresse_postale_precision_avant': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
++            'adresse_postale_region': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
++            'adresse_postale_rue': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
++            'adresse_postale_ville': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
++            'bureau_rattachement': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['datamaster_modeles.Implantation']", 'db_column': "'bureau_rattachement'"}),
++            'code': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
++            'code_meteo': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
++            'commentaire': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
++            'courriel': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
++            'courriel_interne': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
++            'date_extension': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'date_fermeture': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'date_inauguration': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'date_ouverture': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'fax': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
++            'fax_interne': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
++            'fuseau_horaire': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
++            'hebergement_convention': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
++            'hebergement_convention_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'hebergement_etablissement': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
++            'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
++            'modif_date': ('django.db.models.fields.DateField', [], {}),
++            'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
++            'nom_court': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
++            'nom_long': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
++            'region': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['datamaster_modeles.Region']", 'db_column': "'region'"}),
++            'remarque': ('django.db.models.fields.TextField', [], {}),
++            'responsable_implantation': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
++            'statut': ('django.db.models.fields.IntegerField', [], {}),
++            'telephone': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
++            'telephone_interne': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
++            'type': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
++            'url': ('django.db.models.fields.URLField', [], {'max_length': '255', 'blank': 'True'})
++        },
++        'datamaster_modeles.pays': {
++            'Meta': {'object_name': 'Pays', 'db_table': "u'ref_pays'"},
++            'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
++            'code': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '2'}),
++            'code_bureau': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['datamaster_modeles.Bureau']", 'to_field': "'code'", 'db_column': "'code_bureau'"}),
++            'code_iso3': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '3', 'blank': 'True'}),
++            'developpement': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
++            'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
++            'monnaie': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
++            'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
++            'nord_sud': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
++            'region': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['datamaster_modeles.Region']", 'db_column': "'region'"})
++        },
++        'datamaster_modeles.region': {
++            'Meta': {'object_name': 'Region', 'db_table': "u'ref_region'"},
++            'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
++            'code': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
++            'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
++            'implantation_bureau': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'gere_region'", 'db_column': "'implantation_bureau'", 'to': "orm['datamaster_modeles.Implantation']"}),
++            'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'})
++        },
++        'rh_v1.classement': {
++            'Meta': {'object_name': 'Classement'},
++            'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
++            'coefficient': ('django.db.models.fields.FloatField', [], {}),
++            'commentaire': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
++            'date_modification': ('django.db.models.fields.DateField', [], {'auto_now': 'True', 'blank': 'True'}),
++            'degre': ('django.db.models.fields.IntegerField', [], {}),
++            'echelon': ('django.db.models.fields.IntegerField', [], {}),
++            'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
++            'type': ('django.db.models.fields.CharField', [], {'max_length': '10'})
++        },
++        'rh_v1.devise': {
++            'Meta': {'object_name': 'Devise'},
++            'code': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '10'}),
++            'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
++            'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'})
++        },
++        'rh_v1.employe': {
++            'Meta': {'object_name': 'Employe'},
++            'adresse': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
++            'code_postal': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
++            'commentaire': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
++            'date_creation': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
++            'date_entree': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'date_maj': ('django.db.models.fields.DateField', [], {'auto_now': 'True', 'blank': 'True'}),
++            'date_naissance': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'genre': ('django.db.models.fields.CharField', [], {'max_length': '1', 'null': 'True', 'blank': 'True'}),
++            'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
++            'nationalite': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'nationalite'", 'to_field': "'code'", 'db_column': "'nationalite'", 'to': "orm['datamaster_modeles.Pays']"}),
++            'no_rue': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
++            'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
++            'pays': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'pays'", 'db_column': "'pays'", 'to_field': "'code'", 'to': "orm['datamaster_modeles.Pays']", 'blank': 'True', 'null': 'True'}),
++            'prenom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
++            'province': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
++            'situation_famille': ('django.db.models.fields.CharField', [], {'max_length': '1', 'null': 'True', 'blank': 'True'}),
++            'tel_cellulaire': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
++            'tel_domicile': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
++            'ville': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'})
++        },
++        'rh_v1.familleemploi': {
++            'Meta': {'object_name': 'FamilleEmploi'},
++            'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
++            'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
++            'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'})
++        },
++        'rh_v1.organismebstg': {
++            'Meta': {'object_name': 'OrganismeBstg'},
++            'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
++            'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
++            'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
++            'type': ('django.db.models.fields.CharField', [], {'max_length': '10'})
++        },
++        'rh_v1.poste': {
++            'Meta': {'object_name': 'Poste'},
++            'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
++            'date_modification': ('django.db.models.fields.DateField', [], {'auto_now': 'True', 'blank': 'True'}),
++            'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
++            'implantation': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'db_column': "'implantation'", 'to': "orm['datamaster_modeles.Implantation']"}),
++            'proportion': ('django.db.models.fields.CharField', [], {'max_length': '10'}),
++            'type_poste': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['rh_v1.TypePoste']", 'db_column': "'type_poste'"})
++        },
++        'rh_v1.service': {
++            'Meta': {'object_name': 'Service'},
++            'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
++            'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
++            'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'})
++        },
++        'rh_v1.statut': {
++            'Meta': {'object_name': 'Statut'},
++            'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
++            'code': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '25'}),
++            'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
++            'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
++            'type_contrat_categorie': ('django.db.models.fields.CharField', [], {'max_length': '10'})
++        },
++        'rh_v1.typecontrat': {
++            'Meta': {'object_name': 'TypeContrat'},
++            'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
++            'categorie': ('django.db.models.fields.CharField', [], {'max_length': '10'}),
++            'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
++            'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
++            'nom_long': ('django.db.models.fields.CharField', [], {'max_length': '255'})
++        },
++        'rh_v1.typeposte': {
++            'Meta': {'object_name': 'TypePoste'},
++            'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
++            'date_modification': ('django.db.models.fields.DateField', [], {'auto_now': 'True', 'blank': 'True'}),
++            'description': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
++            'famille_emploi': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['rh_v1.FamilleEmploi']", 'db_column': "'famille_emploi'"}),
++            'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
++            'is_responsable': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
++            'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
++            'nom_feminin': ('django.db.models.fields.CharField', [], {'max_length': '255'})
++        },
++        'rh_v1.typeremuneration': {
++            'Meta': {'object_name': 'TypeRemuneration'},
++            'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
++            'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
++            'nature_remuneration': ('django.db.models.fields.CharField', [], {'max_length': '30'}),
++            'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
++            'type_paiement': ('django.db.models.fields.CharField', [], {'max_length': '30'})
++        },
++        'rh_v1.valeurpoint': {
++            'Meta': {'object_name': 'ValeurPoint'},
++            'annee': ('django.db.models.fields.IntegerField', [], {}),
++            'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
++            'implantation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['datamaster_modeles.Implantation']", 'db_column': "'implantation'"}),
++            'valeur': ('django.db.models.fields.FloatField', [], {})
++        }
++    }
++    
++    complete_apps = ['dae']
Simple merge
                  .load(dossierUrl, activateDossierDropDowns);
          }
          activateEmployeDropDown();
-     </script>
-     
-     {% with forms.dossier as form %}
+       </script>
+       {% with forms.dossier as form %}
          {% include "dae/embauche-dossier.html" %}
-     {% endwith %}
+       {% endwith %}
 -    
 +
-     <fieldset>
-     <h2>Pièces jointes</h2>
-     <p class="info">CV, lettre de motivation...</p>
-     {% include "dae/pieces.html" %}
-     </fieldset>
-     
-     <h2 class="section">SECTION 3 - COÛT GLOBAL</h2>
-     
-     <h2 class="section">SECTION 4 - JUSTIFICATION DE LA DEMANDE (OBLIGATOIRE)</h2>
-     
-     <input type="submit" name="save" value="Sauvegarder" />
- {% endif %}
- </form>
++      <fieldset>
++          <h2>Pièces jointes</h2>
++          <p class="info">CV, lettre de motivation...</p>
++          {% include "dae/pieces.html" %}
++      </fieldset>
++      
+       <script type="text/javascript">
+         function activateDossierDropDowns() {
+             $('#id_classement, #id_devise').change(loadSalaire);
+         }
+         function loadSalaire() {
+             $.getJSON('{% url salaire %}/' + $('#implantation').val() + '/' +
+                       $('#id_devise').val() + '/' + $('#id_classement').val(),
+               function(data) {
+                 console.log(data);
+                 $('#id_salaire').val(data.salaire_devise);
+               });
+         }
+         activateDossierDropDowns();
+       </script>
+       <h2 class="section">SECTION 3 - COÛT GLOBAL</h2>
+       <fieldset>
+         {% if new %}
+           <p>
+             Vous devez enregister ce dossier avant de pouvoir détailler le
+             coût global.
+           </p>
+         {% else %}
+           <table cellspacing="0" id="global-cost">
+             {% include 'dae/embauche-remun.html' %}
+           </table>
+           <select id="type-remun" name="type-remun">
+             <option value="">(Ajouter une ligne)</option>
+             {% for tr in type_remun %}
+               <option value="{{ tr.id }}">{{ tr.nom }}</option>
+             {% endfor %}
+           </select>
+         {% endif %}
+       </fieldset>
+       <h2 class="section">SECTION 4 - JUSTIFICATION DE LA DEMANDE (OBLIGATOIRE)</h2>
+       <input type="submit" name="save" value="Sauvegarder" />
+     </form>
+     <script type="text/javascript">
+         $('#type-remun').change(function() {
+             if ($(this).val() != '') {
+                 $('#global-cost').html('<tr><td>Chargement...</td></tr>')
+                                  .load('{% url add_remun %}/' +
+                                        $('#dossier').val() + '/' +
+                                        $(this).val(), function() {
+                     $('#type-remun').val('');
+                 });
+             }
+         });
+     </script>
+   {% endif %}
  {% endblock %}
  
@@@ -163,7 -171,31 +173,32 @@@ def embauche(request, key=None, dossier
  
                  if dossier_form.is_valid():
                      dossier = dossier_form.save()
 +                    piecesForm.save()
+                     if not dossier.remuneration_set.all():
+                         # Pré-peuplement des entrées de la section "coût
+                         # global", à l'exclusion de "Indemnité de fonction"
+                         for type in type_remun.all():
+                             dae.Remuneration(dossier=dossier, type=type,
+                                              devise=dossier.devise).save()
+                     else:
+                         # Sauvegarde du coût global
+                         cg_lines = defaultdict(dict)
+                         for k, v in request.POST.items():
+                             if k.startswith('cg-'):
+                                 prefix, field_name, cg_id = k.split('-')
+                                 cg_lines[int(cg_id)][unicode(field_name)] = v
+                         for r in dossier.remuneration_set.all():
+                             print 'trying %r' % r
+                             if r.id in cg_lines:
+                                 if cg_lines[r.id]['montant'] == '':
+                                    r.delete()
+                                 else:
+                                     for k, v in cg_lines[r.id].items():
+                                         setattr(r, k, v)
+                                         r.save()
                      return redirect('embauche', key='dae-%s' % poste.id,
                                      dossier=dossier.id)
              else: