def METHOD_NAME(self, case_stub, case_ledgers, section_timestamp_map):
    case_id = case_stub.case_id
    for section_id, consumption_section_id in self.stock_settings.section_to_consumption_types.items():
        if section_id in case_ledgers or self.stock_settings.force_consumption_case_filter(case_stub):
            consumption_entries = []
            current_section_sate = case_ledgers.get(section_id, {})
            if self.stock_settings.default_product_list:
                for product_id in self.stock_settings.default_product_list:
                    state = current_section_sate.get(product_id, None)
                    if not state:
                        try:
                            state = LedgerAccessors(self.domain_name).get_ledger_value(
                                case_id, section_id, product_id
                            )
                        except LedgerValueNotFound:
                            pass
                    consumption_entries.append(
                        self._consumption_entry(case_id, product_id, state)
                    )
            else:
                for product_id in sorted(current_section_sate.keys()):
                    state = current_section_sate[product_id]
                    consumption_entries.append(
                        self._consumption_entry(case_id, product_id, state)
                    )
            consumption_entries = [e for e in consumption_entries if e is not None]
            if consumption_entries:
                yield self.elem_maker.balance(
                    *consumption_entries,
                    **{
                        'entity-id': case_id,
                        'date': section_timestamp_map[section_id],
                        'section-id': consumption_section_id,
                    }
                )