Exemple #1
0
def update_stock_state(sender, instance, *args, **kwargs):
    from casexml.apps.stock.consumption import compute_consumption
    try:
        state = StockState.objects.get(
            section_id=instance.section_id,
            case_id=instance.case_id,
            product_id=instance.product_id,
        )
    except StockState.DoesNotExist:
        state = StockState(
            section_id=instance.section_id,
            case_id=instance.case_id,
            product_id=instance.product_id,
        )

    state.last_modified_date = instance.report.date
    state.stock_on_hand = instance.stock_on_hand

    domain = Domain.get_by_name(
        CommCareCase.get(instance.case_id).domain
    )

    if domain and domain.commtrack_settings:
        consumption_calc = domain.commtrack_settings.get_consumption_config()
    else:
        consumption_calc = None

    state.daily_consumption = compute_consumption(
        instance.case_id,
        instance.product_id,
        instance.report.date,
        'stock',
        consumption_calc
    )
    state.save()
    def testDefaultValue(self):
        self._stock_report(25, 5)
        self._stock_report(10, 0)

        self.assertEqual(None, compute_consumption(self.case_id, self.product_id,
                                                   now, configuration=ConsumptionConfiguration(min_periods=4)))
        _ten = lambda case_id, product_id: 10
        self.assertAlmostEqual(10., compute_consumption_or_default(
            self.case_id,
            self.product_id,
            now,
            configuration=ConsumptionConfiguration(
                min_periods=4,
                default_monthly_consumption_function=_ten
            )
        ))
    def testDefaultValue(self):
        self._stock_report(25, 5)
        self._stock_report(10, 0)

        self.assertEqual(
            None,
            compute_consumption(
                self.case_id,
                self.product_id,
                now,
                configuration=ConsumptionConfiguration(min_periods=4)))
        _ten = lambda case_id, product_id: 10
        self.assertAlmostEqual(
            10.,
            compute_consumption_or_default(
                self.case_id,
                self.product_id,
                now,
                configuration=ConsumptionConfiguration(
                    min_periods=4, default_monthly_consumption_function=_ten)))