from apps.fim.models import FeeSet, Fee, PriceSet from apps.mtm.models import Mgroup, Material import datetime def get_cost_unit(mgroup: Mgroup, fee: Fee, year: int = 0, month: int = 0): """ 获取某工段某费用的月成本, 默认本月 """ now = datetime.datetime.now() if year and month: params = {'mgroup': mgroup, 'fee': fee, 'year': year, 'month': month} else: params = {'mgroup': mgroup, 'fee': fee, 'year': now.year, 'month': now.month} qs = FeeSet.objects.filter(**params) if qs.exists(): feeset = qs.first() return feeset.cost_unit else: feeset_last = FeeSet.objects.filter(mgroup=mgroup, fee=fee).order_by('year', 'month').last() if feeset_last: params.update({'cost_unit': feeset_last.cost_unit}) else: params.update({'cost_unit': 0}) feeset = FeeSet.objects.create(**params) return feeset.cost_unit def get_price_unit(material: Material, year: int = 0, month: int = 0): """ 获取某物料的月成本, 默认本月 """ now = datetime.datetime.now() if year and month: params = {'material': material, 'year': year, 'month': month} else: params = {'material': material, 'year': now.year, 'month': now.month} qs = PriceSet.objects.filter(**params) if qs.exists(): ps = qs.first() return ps.price_unit else: ps_last = PriceSet.objects.filter(material=material).order_by('year', 'month').last() if ps_last: params.update({'price_unit': ps_last.price_unit}) else: params.update({'price_unit': 0}) ps = PriceSet.objects.create(**params) return ps.price_unit