Nav apraksta

sale.py 4.3KB

    # -*- coding: utf-8 -*- import logging from django.db.models import Sum from django_six import CompatibilityBaseCommand, close_old_connections from TimeConvert import TimeConvert as tc from integral.models import SaleclerkSubmitLogInfo from mch.models import BrandInfo, DistributorInfo, ModelInfo, SaleclerkInfo from sales.models import (SalesResponsibilityInfo, SalesResponsibilityInfoModelsSaleStatisticInfo, SuperSalesResponsibilityInfoModelsSaleStatisticInfo) logger = logging.getLogger('console') class Command(CompatibilityBaseCommand): def handle(self, *args, **options): logger.info('Sales is dealing') close_old_connections() # year = tc.local_string(format='%Y') month = tc.local_string(format='%Y%m') day = tc.local_string(format='%Y%m%d') # lastyear = tc.local_string(tc.several_time_ago(years=1), format='%Y') lastmonth = tc.local_string(tc.several_time_ago(months=1), format='%Y%m') lastday = tc.local_string(tc.several_time_ago(days=1), format='%Y%m%d') brands = BrandInfo.objects.filter(status=True) for b in brands: SalesResponsibilityInfoModelsSaleStatisticInfo.objects.filter(brand_id=b.brand_id, ymd=day).delete() SuperSalesResponsibilityInfoModelsSaleStatisticInfo.objects.filter(brand_id=b.brand_id, ymd=day).delete() distributors = DistributorInfo.objects.filter(brand_id=b.brand_id, status=True) models = ModelInfo.objects.filter(brand_id=b.brand_id, status=True) for m in models: logs = SaleclerkSubmitLogInfo.objects.filter(model_pk=m.pk, dupload=False, test_sn=False, ym__gte=lastmonth, status=True) for d in distributors: yesterday_num = 0 current_month = 0 last_month = 0 if logs.count() != 0: saleclerks = SaleclerkInfo.objects.filter(brand_id=b.brand_id, distributor_id=d.distributor_id, status=True) for saleclerk in saleclerks: log = logs.filter(clerk_id=saleclerk.clerk_id) yesterday_num += log.filter(ymd=lastday).count() current_month += log.filter(ym=month).count() last_month += log.filter(ym=lastmonth).count() if m.is_important or (yesterday_num or current_month or last_month): sale, _ = SalesResponsibilityInfoModelsSaleStatisticInfo.objects.get_or_create( brand_id=b.brand_id, sr_id=d.sr_id, distributor_id=d.distributor_id, model_name=m.model_uni_name, ymd=day, ) sale.distributor_name = d.distributor_name sale.model_id = m.model_id sale.is_important = m.is_important sale.yesterday_num += yesterday_num sale.current_month += current_month sale.last_month += last_month sale.save() srs = SalesResponsibilityInfo.objects.filter(brand_id=b.brand_id, status=True) for s in srs: if s.is_super: continue sums = SalesResponsibilityInfoModelsSaleStatisticInfo.objects.filter( sr_id=s.sr_id, ymd=day, status=True ).aggregate( Sum('yesterday_num'), Sum('current_month'), Sum('last_month'), ) yesterday_num = sums.get('yesterday_num__sum', 0) or 0 current_month = sums.get('current_month__sum', 0) or 0 last_month = sums.get('last_month__sum', 0) or 0 SuperSalesResponsibilityInfoModelsSaleStatisticInfo.objects.create( brand_id=b.brand_id, sr_id=s.sr_id, sr_name=s.name, sr_avatar=s.avatar, ymd=day, yesterday_num=yesterday_num, current_month=current_month, last_month=last_month, ) close_old_connections()