예제 #1
0
    def get(self, request, *args, **kwargs):
        user = request.user
        business = user.profile.business
        page_type = request.GET.get(u'pageType')

        start_date = request.GET.get(u'startDate')
        end_date = request.GET.get(u'endDate')

        if page_type == 'tradeBook':
            if end_date and start_date:
                start_date = dateutil.parser.parse(
                    str(start_date).replace('"', ''))
                end_date = dateutil.parser.parse(
                    str(end_date).replace('"', ''))
                all_transaction = Transaction.get_trades_in_date_range(
                    business, start_date, end_date)
            else:
                all_transaction = Transaction.objects
            all_transaction = Transaction.get_status(all_transaction)
        elif page_type == 'expectedArrival':
            all_transaction = Transaction.get_expected_arrival(business)
        elif page_type == 'tradeDispute':
            all_transaction = Transaction.get_business_all_disputed_trades(
                business)
        elif page_type == 'arrivedList':
            all_transaction = Transaction.get_arrived_at_port_not_completed(
                business)
        elif page_type == 'expiredShipment':
            all_transaction = Transaction.get_not_shipped_not_washout_not_completed(
                business)
        elif page_type == 'next30DaysExpiration':
            all_transaction = Transaction.get_expiration_next_30_days(business)

        all_transaction, column_header = self.get_transaction_list(
            all_transaction, page_type, user)

        return Response(
            {
                'success': True,
                'columnHeader': column_header,
                'transactions': all_transaction
            },
            status=status.HTTP_200_OK)
예제 #2
0
    def get_trade_dashboard_data(self, user):
        business = user.profile.business

        ## Get Get Graph Data

        today = dt.now()
        one_year = today - rd(years=1)
        six_month = today - rd(months=6)
        last_month = today - rd(months=1)
        last_week = today - rd(days=1)

        date_limits = [one_year, six_month, last_month, last_week]

        #New Trades
        new_trades = map(
            lambda end_date: Transaction.get_trades_in_date_range(
                business, end_date, today).count(), date_limits)
        #Completed Trades
        complete_trades = map(
            lambda end_date: Transaction.
            get_all_business_completed_trades_in_date_range(
                business, end_date, today).count(), date_limits)

        #Washout Trades
        washout_trades = map(
            lambda end_date: Transaction.get_all_washout_trades_in_date_range(
                business, end_date, today).count(), date_limits)

        #Arrived Not Completed Trades

        arrived_trades = map(
            lambda end_date: Transaction.
            get_arrived_at_port_not_completed_in_date_range(
                business, end_date, today).count(), date_limits)

        #Buyer Contract
        buyer_contract_trades = map(
            lambda end_date:
            Transaction.get_buyer_contract_trades_in_date_range(
                business, end_date, today).count(), date_limits)

        ## Count of trades

        #Total Count
        business_trades = Transaction.objects.filter(
            created_by__profile__business=business)
        total_trades = business_trades.count()
        total_completed_trades = Transaction.get_all_business_completed_trades(
            business)
        total_completed_trades = total_completed_trades.count()

        #contract count
        self_contract_count = Transaction.get_self_contract_trades(
            business).count()
        own_contract_count = total_trades - self_contract_count

        #Washout Count
        washout_count = Transaction.get_business_all_washout(business).count()
        washout_at_x_count = Transaction.objects.filter(created_by__profile__business=business) \
            .filter(washout__total_difference=0.00).count()

        #commissionCount

        fixed_count = Transaction.objects.filter(commission__commission_type__name='Fixed') \
            .filter(created_by__profile__business=user.profile.business).count()
        percentage_count = Transaction.objects.filter(commission__commission_type__name= 'Percentage') \
            .filter(created_by__profile__business=user.profile.business).count()

        # Trades Arrived At Port But Not Complete
        arrived_at_port_not_completed = Transaction.get_arrived_at_port_not_completed(
            business)
        arrived_at_port_not_completed_count = arrived_at_port_not_completed.count(
        )

        # Trades Shipped Expected Arrival
        expected_arrival = Transaction.get_expected_arrival(business)
        expected_arrival_count = expected_arrival.count()

        #Trades Not Shipped
        not_shipped = Transaction.get_not_shipped_not_washout_not_completed(
            business)
        not_shipped_count = not_shipped.count()

        #Trade Dispute Count
        disputed_trades = Transaction.get_business_all_disputed_trades(
            business)
        disputed_trades_count = disputed_trades.count()

        #Secondary Trades
        secondary_trades_count = SecondaryTrades.objects.count()
        partial_keys = ['A', 'B', 'C', 'D']
        partial_shipment = Transaction.objects.filter(
            reduce(lambda x, y: x | y,
                   [Q(file_id__icontains=key) for key in partial_keys]))
        partial_shipment_count = partial_shipment.count()

        return {
            'multiBar': {
                'newTrades': new_trades,
                'completeTrades': complete_trades,
                'washoutTrades': washout_trades,
                'arrivedTrades': arrived_trades,
                'buyerContractTrades': buyer_contract_trades
            },
            'tradesCount': {
                'total':
                total_trades,
                'completed':
                total_completed_trades,
                'percentageCompleted':
                (float(total_completed_trades) / float(total_trades)) * 100
            },
            'commissionCount': {
                'fixedCount':
                fixed_count,
                'percentageCount':
                percentage_count,
                'percentagePercentageCommission':
                (float(percentage_count) / float(total_trades)) * 100
            },
            'contractCount': {
                'selfContractCount':
                self_contract_count,
                'ownContractCount':
                own_contract_count,
                'percentageOwnContractCount':
                (float(own_contract_count) / float(total_trades)) * 100
            },
            'washoutCount': {
                'washoutCount':
                washout_count,
                'washoutAtXCount':
                washout_at_x_count,
                'washoutPercentage':
                (float(washout_count) / float(total_trades)) * 100
            },
            'subTrades': {
                'secondaryTradeCount':
                secondary_trades_count,
                'partialShipmentCount':
                partial_shipment_count,
                'secondaryTradePercentage':
                (float(secondary_trades_count) / float(total_trades)) * 100
            },
            'tradeDisputeCount': disputed_trades_count,
            'arrivedNotCompletedCount': arrived_at_port_not_completed_count,
            'expectedArrivalCount': expected_arrival_count,
            'notShippedCount': not_shipped_count
        }