diff --git a/common/urls.py b/common/urls.py index bf4c095..aedb2b6 100644 --- a/common/urls.py +++ b/common/urls.py @@ -45,6 +45,7 @@ urlpatterns = [ name='export-qualif-ede'), path('imputations/export/', views.imputations_export, name='imputations_export'), + path('export_sap/', views.export_sap, name='export_sap'), path('print/update_form/', views.print_update_form, name='print_update_form'), path('general_export/', views.general_export, name='general-export'), path('ortra_export/', views.ortra_export, name='ortra-export'), diff --git a/stages/tests.py b/stages/tests.py index f94980b..6867924 100644 --- a/stages/tests.py +++ b/stages/tests.py @@ -107,6 +107,10 @@ class StagesTest(TestCase): response = self.client.get(reverse('export-qualif-ede')) self.assertEqual(response.status_code, 200) + def test_export_sap(self): + response = self.client.get(reverse('export_sap')) + self.assertEqual(response.status_code, 200) + def test_student_change_view(self): klass_ede = Klass.objects.create( name="2EDEps", diff --git a/stages/views.py b/stages/views.py index 06fd180..e6697e5 100644 --- a/stages/views.py +++ b/stages/views.py @@ -890,6 +890,62 @@ def imputations_export(request): return export.get_http_response('Imputations_export') +def export_sap(request): + EXPORT_SAP_HEADERS = [ + 'PERNR', 'PERNOM', 'DEGDA', 'ENDDA', 'ZNOM', 'ZUND', + 'ZACT', 'ZBRA', 'ZOTP', 'ZCCO', 'ZORD', 'ZTAUX', + ] + MAPPING_OTP = { + 'ASA': 'CIFO01.03.02.03.01.02 - ASA EE', + 'ASE': 'CIFO01.03.02.04.01.02 - CFC ASE EE', + 'ASSC': 'CIFO01.03.02.04.02.02 - CFC ASSC EE', + 'EDEpe': 'CIFO01.03.02.07.01.01 - EDE prat. prof. PT', + 'EDEps': 'CIFO01.03.02.07.02.01 - EDE stages PT', + 'EDS': 'CIFO01.03.02.07.03.02 - EDS EE', + 'CAS_FPP': 'CIFO01.03.02.01.03 - Mandats divers (CAS FPP)', + 'MP' : 'Matu. Santé + Travail social', + 'Direction': 'Direction', + } + + export = OpenXMLExport('Imputations') + export.write_line(EXPORT_SAP_HEADERS, bold=True) # Headers + start_date = '20.08.2018' + end_date = '19.08.2019' + indice = 'charge globale' + type_act = 'Ens. prof.' + branche = 'Ens. prof.' + centre_cout = '' + stat = '' + + for teacher in Teacher.objects.filter(archived=False): + activities, imputations = teacher.calc_imputations() + for key in imputations: + if imputations[key] > 0: + values = [ + teacher.ext_id, teacher.full_name, start_date, end_date, imputations[key], indice, type_act, + branche, MAPPING_OTP[key], centre_cout, stat, + round(imputations[key] / settings.GLOBAL_CHARGE_PERCENT, 2), + ] + export.write_line(values) + + # Previous report + values = [ + teacher.ext_id, teacher.full_name, start_date, end_date, teacher.previous_report, indice, type_act, + branche, 'Report précédent', centre_cout, stat, + round(teacher.previous_report / settings.GLOBAL_CHARGE_PERCENT, 2), + ] + export.write_line(values) + + # Next report + values = [ + teacher.ext_id, teacher.full_name, start_date, end_date, teacher.next_report, indice, type_act, + branche, 'Report suivant', centre_cout, stat, + round(teacher.next_report / settings.GLOBAL_CHARGE_PERCENT, 2), + ] + export.write_line(values) + return export.get_http_response('Export_SAP') + + def print_update_form(request): """ PDF form to update personal data diff --git a/templates/admin/index.html b/templates/admin/index.html index 1666be9..52f669f 100644 --- a/templates/admin/index.html +++ b/templates/admin/index.html @@ -75,6 +75,7 @@
  • Exporter les données de stages (récentes)
  • Exporter les données de stages (toutes)
  • Exporter les données comptables
  • +
  • Exporter les données SAP
  • Imprimer les formulaires de MAJ
  • Exportation générale des élèves
  • Exportation qualif. EDE