Skip to content

Commit

Permalink
Merge pull request #677 from digitalgreenorg/aggregator_payment_method
Browse files Browse the repository at this point in the history
Aggregator payment method
  • Loading branch information
Abhishek-lodha committed Mar 16, 2017
2 parents d615071 + 3c0ac38 commit 3ef9e8c
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 32 deletions.
29 changes: 15 additions & 14 deletions loop/utils/loop_etl/get_aggregator_share.py
Expand Up @@ -22,7 +22,6 @@ def compute_aggregator_share():
amount_sum = 0.0
user = LoopUser.objects.get(user_id=CT['user_created_id'])
ai_list_set = ai_queryset.filter(start_date__lte=CT['date'], aggregator=user.id).order_by('-start_date')

if ai_list_set and ai_list_set[0].model_type == MODEL_TYPES_DAILY_PAY:
# SEPARATE OUT ALL DAILY PAY CASES
exec (ai_list_set[0].incentive_model.calculation_method)
Expand Down Expand Up @@ -55,21 +54,23 @@ def compute_aggregator_share():
{'date': CT['date'], 'user_created__id': CT['user_created_id'], 'mandi__id': CT['mandi'], 'aggregator_incentive': amount_sum})

daily_pay_df = pd.DataFrame(daily_pay_list)
daily_pay_mandi_count = daily_pay_df.groupby(['date','user_created__id']).agg({'mandi__id':'count'}).reset_index()
daily_pay_mandi_count.rename(columns={"mandi__id":"mandi__count"}, inplace=True)
daily_pay_df = pd.merge(daily_pay_df, daily_pay_mandi_count, on=['date','user_created__id'], how='left')
daily_pay_df['aggregator_incentive'] = daily_pay_df['aggregator_incentive'] / daily_pay_df['mandi__count']

for index, row in daily_pay_df.iterrows():
outlier = aso_queryset.filter(date=row['date'], aggregator=row['aggregator_id'], mandi=row['mandi__id']).values('amount','comment')
if outlier.count():
daily_pay_df.loc[index,'aggregator_incentive'] = outlier[0]['amount']
try:
daily_pay_mandi_count = daily_pay_df.groupby(['date','user_created__id']).agg({'mandi__id':'count'}).reset_index()
daily_pay_mandi_count.rename(columns={"mandi__id":"mandi__count"}, inplace=True)
daily_pay_df = pd.merge(daily_pay_df, daily_pay_mandi_count, on=['date','user_created__id'], how='left')
daily_pay_df['aggregator_incentive'] = daily_pay_df['aggregator_incentive'] / daily_pay_df['mandi__count']

daily_pay_df.drop(['mandi__count','aggregator_id'], axis=1, inplace=True)
daily_pay_df = daily_pay_df.round({'aggregator_incentive':2})
for index, row in daily_pay_df.iterrows():
outlier = aso_queryset.filter(date=row['date'], aggregator=row['aggregator_id'], mandi=row['mandi__id']).values('amount','comment')
if outlier.count():
daily_pay_df.loc[index,'aggregator_incentive'] = outlier[0]['amount']

daily_pay = daily_pay_df.to_dict(orient='records')
daily_pay_df.drop(['mandi__count','aggregator_id'], axis=1, inplace=True)
daily_pay_df = daily_pay_df.round({'aggregator_incentive':2})
daily_pay = daily_pay_df.to_dict(orient='records')

aggregator_incentive_result.extend(daily_pay)
aggregator_incentive_result.extend(daily_pay)
except Exception:
pass

return aggregator_incentive_result
39 changes: 21 additions & 18 deletions loop/views.py
Expand Up @@ -243,24 +243,27 @@ def calculate_aggregator_incentive(start_date=None, end_date=None, mandi_list=No
result.append(
{'date': CT['date'], 'user_created__id': CT['user_created_id'], 'mandi__name' : CT['mandi__mandi_name_en'], 'mandi__id': CT['mandi'], 'amount': round(amount_sum,2), 'quantity__sum': round(CT['quantity__sum'],2), 'comment' : comment})

daily_pay_df = pd.DataFrame(daily_pay_list)
daily_pay_mandi_count = daily_pay_df.groupby(['date','user_created__id']).agg({'mandi__id':'count'}).reset_index()
daily_pay_mandi_count.rename(columns={"mandi__id":"mandi__count"}, inplace=True)
daily_pay_df = pd.merge(daily_pay_df, daily_pay_mandi_count, on=['date','user_created__id'], how='left')
daily_pay_df['amount'] = daily_pay_df['amount'] / daily_pay_df['mandi__count']

for index, row in daily_pay_df.iterrows():
outlier = aso_queryset.filter(date=row['date'], aggregator=row['aggregator_id'], mandi=row['mandi__id']).values('amount','comment')
if outlier.count():
daily_pay_df.loc[index,'amount'] = outlier[0]['amount']
daily_pay_df.loc[index,'comment'] = outlier[0]['comment']

daily_pay_df.drop(['mandi__count','aggregator_id'], axis=1, inplace=True)
daily_pay_df = daily_pay_df.round({'amount':2})

daily_pay = daily_pay_df.to_dict(orient='records')

result.extend(daily_pay)
try:
daily_pay_df = pd.DataFrame(daily_pay_list)
daily_pay_mandi_count = daily_pay_df.groupby(['date','user_created__id']).agg({'mandi__id':'count'}).reset_index()
daily_pay_mandi_count.rename(columns={"mandi__id":"mandi__count"}, inplace=True)
daily_pay_df = pd.merge(daily_pay_df, daily_pay_mandi_count, on=['date','user_created__id'], how='left')
daily_pay_df['amount'] = daily_pay_df['amount'] / daily_pay_df['mandi__count']

for index, row in daily_pay_df.iterrows():
outlier = aso_queryset.filter(date=row['date'], aggregator=row['aggregator_id'], mandi=row['mandi__id']).values('amount','comment')
if outlier.count():
daily_pay_df.loc[index,'amount'] = outlier[0]['amount']
daily_pay_df.loc[index,'comment'] = outlier[0]['comment']

daily_pay_df.drop(['mandi__count','aggregator_id'], axis=1, inplace=True)
daily_pay_df = daily_pay_df.round({'amount':2})

daily_pay = daily_pay_df.to_dict(orient='records')

result.extend(daily_pay)
except Exception:
pass
return result


Expand Down

0 comments on commit 3ef9e8c

Please sign in to comment.