def update_monthly_report(): time = datetime.datetime.now() for user in User.objects.all(): if user.user_type in [c.USER_TYPE_DRIVER, c.USER_TYPE_ESCORT]: if not m.JobReport.objects.filter(driver=user, month=month.Month(time.year, time.month)).exists(): m.JobReport.objects.create(driver=user, month=month.Month(time.year, time.month)) elif user.user_type == c.USER_TYPE_CUSTOMER: if not m.OrderReport.objects.filter( customer=user.customer_profile, month=month.Month(time.year, time.month) ).exists(): m.OrderReport.objects.create(customer=user.customer_profile, month=month.Month(time.year, time.month))
def fiches_frais(request): usr = Visiteur.objects.get(id=request.user.id) dateMinimum = month.Month(datetime.datetime.now().year - 1, 1) ficheFrais = FicheFrais\ .objects\ .filter(visiteur=usr)\ .order_by('-mois')\ .extra(where=['mois>=%s'], params=[str(dateMinimum)]) context = { 'fiches': ficheFrais } return render(request, 'ficheFraisSelect.html', context)
def handle(self, *args, **options): the_month = month.Month(options['year'], options['month']) for budget in Budget.objects.all(): budget.create_monthly_budget(the_month)
def calculate_job_report(context): job = get_object_or_404(m.Job, id=context['job']) # vehicle = get_object_or_404(Vehicle, id=context['vehicle']) driver = get_object_or_404(User, id=context['driver']) # escort = get_object_or_404(User, id=context['escort']) if not job.order.jobs.filter( progress__gt=c.JOB_PROGRESS_COMPLETE ).exists(): job.order.status = c.ORDER_STATUS_COMPLETE job.order.save() order_year = job.order.created.year order_month = job.order.created.month try: order_report = m.OrderReport.objects.get( customer=job.order.customer, month=month.Month(order_year, order_month) ) order_report.orders += 1 order_report.weight += job.order.total_weight order_report.save() except m.OrderReport.DoesNotExist: m.OrderReport.objects.create( customer=job.order.customer, month=month.Month(order_year, order_month), orders=1, weights=job.order.total_weight ) # # unbind vehicle, driver, escort # if not m.VehicleUserBind.binds_by_admin.filter( # vehicle=vehicle, # driver=driver, # escort=escort # ).exists(): # try: # vehicle_bind = m.VehicleUserBind.objects.get( # vehicle=vehicle, # driver=driver, # escort=escort, # bind_method=c.VEHICLE_USER_BIND_METHOD_BY_JOB # ) # vehicle_bind.delete() # except m.VehicleUserBind.DoesNotExist: # pass # update job report job_year = job.finished_on.year job_month = job.finished_on.month try: job_report = m.JobReport.objects.get( driver=driver, month=month.Month(job_year, job_month) ) job_report.total_mileage = \ job_report.total_mileage + job.total_mileage job_report.empty_mileage = \ job_report.empty_mileage + job.empty_mileage job_report.heavy_mileage = \ job_report.heavy_mileage + job.heavy_mileage job_report.highway_mileage = \ job_report.highway_mileage + job.highway_mileage job_report.normalway_mileage = \ job_report.normalway_mileage + job.normalway_mileage job_report.save() except m.JobReport.DoesNotExist: job_report = m.JobReport.objects.create( driver=driver, month=month.Month(job_year, job_month), total_mileage=job.total_mileage, empty_mileage=job.empty_mileage, heavy_mileage=job.heavy_mileage, highway_mileage=job.highway_mileage, normalway_mileage=job.normalway_mileage )
def get_initial(self): initial = super(FicheFraisCreate, self).get_initial() now = datetime.datetime.now() initial['mois'] = month.Month(now.year, now.month) return initial
def current_month(): a = datetime.utcnow() return month.Month(a.year, a.month)
def handle(self, *args, **options): # Création du visiteur date_embauche = date(1999, 12, 31) visiteur, vcreated = Visiteur.objects.get_or_create( first_name='Jacques', last_name='Dupont', date_embauche=date_embauche, ) # Création des fiches de frais # On fixe la date à partir de laquelle on créé # les fiches à janvier de l'année précédente now = datetime.now() date_debut_fiches = datetime.strptime(str(now.year - 1) + '01', '%Y%m') # Une fiche par mois for i in range(1, 13 + now.month): # Mois if i < 13: mois_annee = date_debut_fiches.year mois_mois = i mois = month.Month(mois_annee, mois_mois) else: mois_annee = date_debut_fiches.year + 1 mois_mois = i - 12 mois = month.Month(mois_annee, mois_mois) # Etat if i == 12 + now.month: etat = FicheFrais.Etat.ENCOURS elif i == 11 + now.month: etat = FicheFrais.Etat.CLOTUREE elif i == 10 + now.month: etat = FicheFrais.Etat.VALIDEE else: etat = FicheFrais.Etat.REMBOURSEE fiche, fcreated = FicheFrais.objects.get_or_create( visiteur=visiteur, etat=etat, mois=mois, ) if fcreated: # Ligne de frais forfaitisés quantite = random.randint(0, 999) ligne_km = LigneFraisForfait.objects.get( fiche=fiche, frais_forfait=LigneFraisForfait.FraisForfait.FRAISKM, ) ligne_km.quantite = quantite ligne_km.save() quantite = random.randint(0, 20) ligne_etape = LigneFraisForfait.objects.get( fiche=fiche, frais_forfait=LigneFraisForfait.FraisForfait.ETAPE, ) ligne_etape.quantite = quantite ligne_etape.save() quantite = random.randint(0, 20) ligne_restau = LigneFraisForfait.objects.get( fiche=fiche, frais_forfait=LigneFraisForfait.FraisForfait.RESTAU, ) ligne_restau.quantite = quantite ligne_restau.save() quantite = random.randint(0, 20) ligne_hotel = LigneFraisForfait.objects.get( fiche=fiche, frais_forfait=LigneFraisForfait.FraisForfait.NUITHOTEL) ligne_hotel.quantite = quantite ligne_hotel.save() # Lignes de frais hors forfait frais = [ ('Location véhicule', random.randint(70, 450)), ('Repas avec praticien', random.randint(33, 50)), ('Achat de matériel de papèterie', random.randint(10, 50)), ('Location salle conférence', random.randint(140, 700)), ('Taxi', random.randint(20, 70)), ('Frais vestimentaire / représentation', random.randint(30, 450)), ('Traiteur, alimentation, boisson', random.randint(35, 450)), ('Voyage SNCF', random.randint(30, 150)), ('Rémunération intervenant / spécialiste', random.randint(250, 1200)), ] # On génère entre 3 et 5 lignes de frais hors forfait par mois for j in range(1, random.randint(3, 6)): if mois_mois == 2 and calendar.isleap(mois_annee): jour = random.randint(1, 28) else: if mois in [1, 3, 5, 7, 8, 10, 12]: jour = random.randint(1, 31) else: jour = random.randint(1, 30) ligne_hf = random.randint(1, len(frais)) - 1 LigneFraisHorsForfait.objects.create( fiche=fiche, libelle=frais[ligne_hf][0], date=date(mois_annee, mois_mois, jour), montant=frais[ligne_hf][1]) self.stdout.write( self.style.SUCCESS( 'Données créées avec succès.\n' f'Connectez-vous au site avec le compte du visiteur {visiteur.first_name} {visiteur.last_name}.\n' f'\tIdentifiant : {visiteur.username}\n' f'\tMot de passe : {visiteur.date_embauche:%d%m%Y}'))