def get_next_change_list(): """入退場リスト :return: """ first_day = common.get_first_day_current_month() last_day = common.get_last_day_by_month(first_day) next_first_day = common.get_first_day_by_month(common.add_months(first_day, 1)) next_last_day = common.get_last_day_by_month(next_first_day) members = models.Member.objects.public_filter(Q(projectmember__end_date__gte=first_day, projectmember__end_date__lte=last_day, projectmember__is_deleted=False, projectmember__status=2) | Q(projectmember__start_date__gte=next_first_day, projectmember__start_date__lte=next_last_day, projectmember__is_deleted=False, projectmember__status=2)).distinct() return members.filter(section__is_on_sales=True)
def generate_order_data(company, subcontractor, user, ym): """註文書を生成するために使うデータを生成する。 :param company 発注元会社 :param subcontractor 発注先 :param user ログインしているユーザ :param ym 対象年月 :return エクセルのバイナリー """ data = {'DETAIL': {}} # 発行年月日 date = datetime.date.today() data['DETAIL']['PUBLISH_DATE'] = u"%s年%02d月%02d日" % (date.year, date.month, date.day) # 下請け会社名 data['DETAIL']['SUBCONTRACTOR_NAME'] = subcontractor.name # 委託業務責任者(乙) data['DETAIL']['SUBCONTRACTOR_MASTER'] = subcontractor.president # 作成者 salesperson = get_user_profile(user) data['DETAIL']['AUTHOR_FIRST_NAME'] = salesperson.first_name if salesperson else '' # 会社名 data['DETAIL']['COMPANY_NAME'] = company.name # 本社郵便番号 data['DETAIL']['POST_CODE'] = common.get_full_postcode(company.post_code) # 本社電話番号 data['DETAIL']['TEL'] = company.tel # 代表取締役 member = company.get_master() data['DETAIL']['MASTER'] = u"%s %s" % (member.first_name, member.last_name) if member else "" # 本社住所 data['DETAIL']['ADDRESS1'] = company.address1 data['DETAIL']['ADDRESS2'] = company.address2 # 作業期間 if not ym: first_day = common.get_first_day_current_month() else: first_day = common.get_first_day_from_ym(ym) last_day = common.get_last_day_by_month(first_day) data['DETAIL']['START_DATE'] = u"%s年%02d月%02d日" % (first_day.year, first_day.month, first_day.day) data['DETAIL']['END_DATE'] = u"%s年%02d月%02d日" % (last_day.year, last_day.month, last_day.day) members = [] # 全ての協力社員の注文情報を取得する。 for member in subcontractor.get_members_by_month(first_day): bp_member_info = member.get_bp_member_info(first_day) members.append({'ITEM_NAME': member.__unicode__(), # 協力社員名前 'ITEM_COST': humanize.intcomma(member.cost), # 月額基本料金 'ITEM_MIN_HOUR': humanize.intcomma(bp_member_info.min_hours), # 基準時間(最小値) 'ITEM_MAX_HOUR': humanize.intcomma(bp_member_info.max_hours), # 基準時間(最大値) 'ITEM_PLUS_PER_HOUR': humanize.intcomma(bp_member_info.plus_per_hour), # 超過単価 'ITEM_MINUS_PER_HOUR': humanize.intcomma(bp_member_info.minus_per_hour), # 不足単価 }) data['MEMBERS'] = members # 注文情報を追加する try: order = models.SubcontractorOrder.objects.get(subcontractor=subcontractor, year=str(first_day.year), month="%02d" % (first_day.month,)) data['DETAIL']['ORDER_NO'] = order.order_no order.updated_user = user except ObjectDoesNotExist: data['DETAIL']['ORDER_NO'] = get_order_no(user) order = models.SubcontractorOrder(subcontractor=subcontractor, order_no=data['DETAIL']['ORDER_NO'], year=str(first_day.year), month="%02d" % (first_day.month,)) order.created_user = user order.save() return data