Пример #1
0
    def test_no_entry(self):
        # remove our entry for our second payment
        self.report.farmer_payments.filter(
            farmer_payment=self.fp_second_payment).delete()
        self.report.cash_uses.filter(cash_use=self.cu_second_payment).delete()

        self.production = ProductionBox(self.report)
        self.sales = SalesBox(self.report, self.usd)
        self.expenses = ExpenseBox(self.report, self.production, self.sales,
                                   self.usd)
        self.cash = CashBox(self.report, self.production, self.sales,
                            self.expenses, self.usd)

        exchange = self.season.exchange_rate
        farmer = FarmerBox(self.report, self.production, self.sales,
                           self.expenses, self.cash, self.usd)

        rows = farmer.get_rows()
        self.assertEquals(6, len(rows))

        self.assertEquals("Advance Payment", rows[0].label)
        self.assertEquals('ALL', rows[0].row_for)
        self.assertDecimalEquals("8128839.00",
                                 rows[0].value.as_local(exchange))
        self.assertFalse(rows[0].is_total)

        self.assertEquals("Dividend", rows[1].label)
        self.assertEquals('MEM', rows[1].row_for)
        self.assertDecimalEquals("1510388", rows[1].value.as_local(exchange))
        self.assertFalse(rows[1].is_total)

        self.assertEquals("Second Payment", rows[2].label)
        self.assertEquals('MEM', rows[2].row_for)
        self.assertIsNone(rows[2].value)
        self.assertFalse(rows[2].is_total)

        self.assertEquals("Second Payment", rows[3].label)
        self.assertEquals('NON', rows[3].row_for)
        self.assertIsNone(rows[3].value)
        self.assertFalse(rows[3].is_total)

        self.assertEquals("Total Farmer Payment", rows[4].label)
        self.assertEquals('MEM', rows[4].row_for)
        self.assertDecimalEquals("9639227", rows[4].value.as_local(exchange))
        self.assertTrue(rows[4].is_total)

        self.assertEquals("Total Farmer Payment", rows[5].label)
        self.assertEquals('NON', rows[5].row_for)
        self.assertDecimalEquals("8128839", rows[5].value.as_local(exchange))
        self.assertTrue(rows[5].is_total)

        self.assertDecimalEquals("32", farmer.farmer_percentage)
        self.assertDecimalEquals("43", farmer.member_price_share)
        self.assertDecimalEquals("36", farmer.non_member_price_share)
Пример #2
0
    def test_cash_box(self):
        self.production = ProductionBox(self.report)
        self.sales = SalesBox(self.report, self.usd)
        self.expenses = ExpenseBox(self.report, self.production, self.sales,
                                   self.usd)

        self.report.miscellaneous_sources = Decimal("1")
        self.report.save()

        cash = CashBox(self.report, self.production, self.sales, self.expenses,
                       self.usd)

        ex = self.rwanda_2010.exchange_rate

        sources = cash.get_sources()
        self.assertEquals(3, len(sources))

        self.assertEquals("Cash Due from CSP", sources[0].name)
        self.assertDecimalEquals("8241.35", sources[0].total.as_usd(ex))

        self.assertEquals("Unused Working Capital with Cooperative",
                          sources[1].name)
        self.assertDecimalEquals("29.23", sources[1].total.as_usd(ex))

        self.assertEquals("Miscellaneous Sources", sources[2].name)
        self.assertDecimalEquals("0", sources[2].total.as_usd(ex))

        uses = cash.get_uses()
        self.assertEquals(3, len(uses))

        self.assertEquals("Dividend", uses[0].name)
        self.assertDecimalEquals("2612", uses[0].total.as_usd(ex))

        self.assertEquals("Second Payment", uses[1].name)
        self.assertDecimalEquals("3000", uses[1].total.as_usd(ex))

        self.assertEquals("Retained Profit", uses[2].name)
        self.assertDecimalEquals("2658.59", uses[2].total.as_usd(ex))
Пример #3
0
    def test_cash_box(self):
        self.production = ProductionBox(self.report)
        self.sales = SalesBox(self.report, self.usd)
        self.expenses = ExpenseBox(self.report, self.production, self.sales,
                                   self.usd)

        self.report.cash_sources.filter(
            cash_source=self.cs_misc_sources).delete()
        self.report.cash_sources.create(cash_source=self.cs_misc_sources,
                                        value=Decimal("1"),
                                        created_by=self.admin,
                                        modified_by=self.admin)

        cash = CashBox(self.report, self.production, self.sales, self.expenses,
                       self.usd)

        ex = self.ethiopia_2009.exchange_rate

        sources = cash.get_sources()
        self.assertEquals(3, len(sources))

        self.assertEquals("Cash Due from CSP", sources[0].name)
        self.assertDecimalEquals("3487.44", sources[0].total.as_usd(ex))

        self.assertEquals("Unused Working Capital with Cooperative",
                          sources[1].name)
        self.assertDecimalEquals("79.25", sources[1].total.as_usd(ex))

        self.assertEquals("Miscellaneous Sources", sources[2].name)
        self.assertDecimalEquals("0.06", sources[2].total.as_usd(ex))

        uses = cash.get_uses()
        self.assertEquals(1, len(uses))
        self.assertEquals("Dividend", uses[0].name)
        self.assertDecimalEquals("2952.00", uses[0].total.as_usd(ex))

        self.assertDecimalEquals("614.69", cash.retained_profit.as_usd(ex))
Пример #4
0
    def test_farmer_box(self):
        self.production = ProductionBox(self.report)
        self.sales = SalesBox(self.report, self.usd)
        self.expenses = ExpenseBox(self.report, self.production, self.sales,
                                   self.usd)
        self.cash = CashBox(self.report, self.production, self.sales,
                            self.expenses, self.usd)

        exchange = self.season.exchange_rate
        farmer = FarmerBox(self.report, self.production, self.sales,
                           self.expenses, self.cash, self.usd)

        rows = farmer.get_rows()
        self.assertEquals(6, len(rows))

        self.assertEquals("Advance Payment", rows[0].label)
        self.assertEquals('ALL', rows[0].row_for)
        self.assertDecimalEquals("8128839.00",
                                 rows[0].value.as_local(exchange))
        self.assertFalse(rows[0].is_total)

        self.assertEquals("Dividend", rows[1].label)
        self.assertEquals('MEM', rows[1].row_for)
        self.assertDecimalEquals("1510388", rows[1].value.as_local(exchange))
        self.assertFalse(rows[1].is_total)

        self.assertEquals("Second Payment", rows[2].label)
        self.assertEquals('MEM', rows[2].row_for)
        self.assertDecimalEquals("2059620", rows[2].value.as_local(exchange))
        self.assertFalse(rows[2].is_total)

        self.assertEquals("Second Payment", rows[3].label)
        self.assertEquals('NON', rows[3].row_for)
        self.assertDecimalEquals("2059620", rows[3].value.as_local(exchange))
        self.assertFalse(rows[3].is_total)

        self.assertEquals("Total Farmer Payment", rows[4].label)
        self.assertEquals('MEM', rows[4].row_for)
        self.assertDecimalEquals("11698847", rows[4].value.as_local(exchange))
        self.assertTrue(rows[4].is_total)

        self.assertEquals("Total Farmer Payment", rows[5].label)
        self.assertEquals('NON', rows[5].row_for)
        self.assertDecimalEquals("10188459", rows[5].value.as_local(exchange))
        self.assertTrue(rows[5].is_total)

        self.assertDecimalEquals("68", farmer.farmer_percentage)
        self.assertDecimalEquals("52", farmer.member_price_share)
        self.assertDecimalEquals("45", farmer.non_member_price_share)
Пример #5
0
    def test_negative_profit(self):
        # remove our first three sales
        for sale in self.report.sales.all()[:3]:
            sale.delete()

        self.production = ProductionBox(self.report)
        self.sales = SalesBox(self.report, self.usd)
        self.expenses = ExpenseBox(self.report, self.production, self.sales,
                                   self.usd)

        self.report.miscellaneous_sources = Decimal("1")
        self.report.save()

        cash = CashBox(self.report, self.production, self.sales, self.expenses,
                       self.usd)

        ex = self.rwanda_2010.exchange_rate
        self.assertDecimalEquals("0", cash.retained_profit.as_usd(ex))
Пример #6
0
    def test_farmer_box(self):
        self.production = ProductionBox(self.report)
        self.sales = SalesBox(self.report, self.usd)
        self.expenses = ExpenseBox(self.report, self.production, self.sales,
                                   self.usd)
        self.cash = CashBox(self.report, self.production, self.sales,
                            self.expenses, self.usd)

        exchange = self.season.exchange_rate
        farmer = FarmerBox(self.report, self.production, self.sales,
                           self.expenses, self.cash, self.usd)

        ex = self.report.season.exchange_rate

        rows = farmer.get_rows()
        self.assertEquals(4, len(rows))

        self.assertEquals("Advance Payment", rows[0].label)
        self.assertEquals('ALL', rows[0].row_for)
        self.assertDecimalEquals("15635.95", rows[0].value.as_usd(ex))
        self.assertFalse(rows[0].is_total)

        self.assertEquals("Dividend", rows[1].label)
        self.assertEquals('MEM', rows[1].row_for)
        self.assertDecimalEquals("2449.35", rows[1].value.as_usd(ex))
        self.assertFalse(rows[1].is_total)

        self.assertEquals("Total Farmer Payment", rows[2].label)
        self.assertEquals('MEM', rows[2].row_for)
        self.assertDecimalEquals("18085.29", rows[2].value.as_usd(ex))
        self.assertTrue(rows[2].is_total)

        self.assertEquals("Total Farmer Payment", rows[3].label)
        self.assertEquals('NON', rows[3].row_for)
        self.assertDecimalEquals("15635.95", rows[3].value.as_usd(ex))
        self.assertTrue(rows[3].is_total)

        self.assertDecimalEquals("36.13", farmer.farmer_price.as_local(ex))

        self.assertDecimalEquals("83", farmer.farmer_percentage)

        self.assertDecimalEquals("57", farmer.member_price_share)
        self.assertDecimalEquals("49", farmer.non_member_price_share)
Пример #7
0
    def test_all_cashuse(self):
        div_payment = self.season.farmer_payments.get(
            farmer_payment=self.fp_dividend)
        div_payment.applies_to = 'ALL'
        div_payment.save()

        self.report.farmer_payments.filter(
            farmer_payment=self.fp_dividend).delete()
        self.report.farmer_payments.create(farmer_payment=self.fp_dividend,
                                           all_per_kilo=Decimal("22.25"),
                                           created_by=self.admin,
                                           modified_by=self.admin)

        self.report.cash_uses.filter(cash_use=self.cu_dividend).delete()
        self.report.cash_uses.create(cash_use=self.cu_dividend,
                                     value=Decimal("1528020"),
                                     created_by=self.admin,
                                     modified_by=self.admin)

        self.production = ProductionBox(self.report)
        self.sales = SalesBox(self.report, self.usd)
        self.expenses = ExpenseBox(self.report, self.production, self.sales,
                                   self.usd)
        self.cash = CashBox(self.report, self.production, self.sales,
                            self.expenses, self.usd)

        farmer = FarmerBox(self.report, self.production, self.sales,
                           self.expenses, self.cash, self.usd)

        rows = farmer.get_rows()
        self.assertEquals(6, len(rows))

        exchange = self.season.exchange_rate

        self.assertEquals("Advance Payment", rows[0].label)
        self.assertEquals('ALL', rows[0].row_for)
        self.assertDecimalEquals("8128839.00",
                                 rows[0].value.as_local(exchange))
        self.assertFalse(rows[0].is_total)

        self.assertEquals("Dividend", rows[1].label)
        self.assertEquals('ALL', rows[1].row_for)
        self.assertDecimalEquals("1527551.50",
                                 rows[1].value.as_local(exchange))
        self.assertFalse(rows[1].is_total)

        self.assertEquals("Second Payment", rows[2].label)
        self.assertEquals('MEM', rows[2].row_for)
        self.assertDecimalEquals("2059620", rows[2].value.as_local(exchange))
        self.assertFalse(rows[2].is_total)

        self.assertEquals("Second Payment", rows[3].label)
        self.assertEquals('NON', rows[3].row_for)
        self.assertDecimalEquals("2059620", rows[3].value.as_local(exchange))
        self.assertFalse(rows[3].is_total)

        self.assertEquals("Total Farmer Payment", rows[4].label)
        self.assertEquals('MEM', rows[4].row_for)
        self.assertDecimalEquals("11716010.50",
                                 rows[4].value.as_local(exchange))
        self.assertTrue(rows[4].is_total)

        self.assertEquals("Total Farmer Payment", rows[5].label)
        self.assertEquals('NON', rows[5].row_for)
        self.assertDecimalEquals("11716010.50",
                                 rows[5].value.as_local(exchange))
        self.assertTrue(rows[5].is_total)

        self.assertDecimalEquals("68", farmer.farmer_percentage)
        self.assertDecimalEquals("52", farmer.member_price_share)
        self.assertDecimalEquals("52", farmer.non_member_price_share)
Пример #8
0
    def test_no_members(self):
        div_payment = self.season.farmer_payments.get(
            farmer_payment=self.fp_dividend)
        div_payment.applies_to = 'ALL'
        div_payment.save()

        exchange = self.season.exchange_rate

        # this will also remove the season entries
        self.fp_second_payment.delete()
        self.cu_second_payment.delete()

        self.report.farmer_payments.filter(
            farmer_payment=self.fp_dividend).delete()
        self.report.farmer_payments.create(farmer_payment=self.fp_dividend,
                                           all_per_kilo=Decimal("22.25"),
                                           created_by=self.admin,
                                           modified_by=self.admin)

        self.report.cash_uses.filter(cash_use=self.cu_dividend).delete()
        self.report.cash_uses.create(cash_use=self.cu_dividend,
                                     value=Decimal("1528020"),
                                     created_by=self.admin,
                                     modified_by=self.admin)

        # make our season have no members
        self.rwanda_2010.has_members = False
        self.rwanda_2010.save()

        self.production = ProductionBox(self.report)
        self.sales = SalesBox(self.report, self.usd)
        self.expenses = ExpenseBox(self.report, self.production, self.sales,
                                   self.usd)
        self.cash = CashBox(self.report, self.production, self.sales,
                            self.expenses, self.usd)

        farmer = FarmerBox(self.report, self.production, self.sales,
                           self.expenses, self.cash, self.usd)

        rows = farmer.get_rows()
        self.assertEquals(3, len(rows))

        self.assertEquals("Advance Payment", rows[0].label)
        self.assertEquals('ALL', rows[0].row_for)
        self.assertDecimalEquals("8128839.00",
                                 rows[0].value.as_local(exchange))
        self.assertFalse(rows[0].is_total)

        self.assertEquals("Dividend", rows[1].label)
        self.assertEquals('ALL', rows[1].row_for)
        self.assertDecimalEquals("1527551.50",
                                 rows[1].value.as_local(exchange))
        self.assertFalse(rows[1].is_total)

        self.assertEquals("Total Farmer Payment", rows[2].label)
        self.assertEquals('ALL', rows[2].row_for)
        self.assertDecimalEquals("9656390.50",
                                 rows[2].value.as_local(exchange))
        self.assertTrue(rows[2].is_total)

        self.assertDecimalEquals("32", farmer.farmer_percentage)
        self.assertIsNone(farmer.member_price_share)
        self.assertIsNone(farmer.non_member_price_share)