Exemplo n.º 1
0
    def _generate_cdr_part(self, part, model, cdr_info):
        # Take and increment the correlation number using
        # the mongoDB atomic access in order to avoid race
        # problems
        # Create connection for raw database access
        connection = MongoClient()
        db = connection[settings.DATABASES['default']['NAME']]

        corr_number = db.wstore_rss.find_and_modify(
            query={'_id': ObjectId(cdr_info['rss'].pk)},
            update={'$inc': {'correlation_number': 1}}
        )['correlation_number']

        # Set the description
        currency = get_curency_code(part['currency'])

        return {
            'provider': cdr_info['provider'],
            'service': cdr_info['service_name'],
            'defined_model': model,
            'correlation': str(corr_number),
            'purchase': self._purchase.pk,
            'offering': cdr_info['offering'],
            'product_class': 'SaaS',
            'description': cdr_info['description'],
            'cost_currency': currency,
            'cost_value': str(part['value']),
            'tax_currency': '1',
            'tax_value': '0.0',
            'source': '1',
            'operator': '1',
            'country': cdr_info['country_code'],
            'time_stamp': cdr_info['time_stamp'],
            'customer': cdr_info['customer'],
        }
Exemplo n.º 2
0
    def _generate_cdr_part(self, part, model, cdr_info):
        # Create connection for raw database access
        db = get_database_connection()

        # Take and increment the correlation number using
        # the mongoDB atomic access in order to avoid race
        # problems
        currency = self._price_model['general_currency']

        if cdr_info['rss'].api_version == 1:
            # Version 1 uses a global correlation number
            corr_number = db.wstore_rss.find_and_modify(
                query={'_id': ObjectId(cdr_info['rss'].pk)},
                update={'$inc': {
                    'correlation_number': 1
                }})['correlation_number']

            currency = get_curency_code(self._price_model['general_currency'])

        else:
            # Version 2 uses a correlation number per provider
            corr_number = db.wstore_organization.find_and_modify(
                query={'_id': ObjectId(self._purchase.owner_organization.pk)},
                update={'$inc': {
                    'correlation_number': 1
                }})['correlation_number']

        return {
            'provider': cdr_info['provider'],
            'service': cdr_info['service_name'],
            'defined_model': model,
            'correlation': str(corr_number),
            'purchase': self._purchase.ref,
            'offering': cdr_info['offering'],
            'product_class': cdr_info['product_class'],
            'description': cdr_info['description'],
            'cost_currency': currency,
            'cost_value': str(part['value']),
            'tax_currency': currency,
            'tax_value': '0.0',
            'source': '1',
            'operator': '1',
            'country': cdr_info['country_code'],
            'time_stamp': cdr_info['time_stamp'],
            'customer': cdr_info['customer'],
            'event': self._purchase.contract.revenue_class
        }
Exemplo n.º 3
0
    def _generate_cdr_part(self, part, model, cdr_info):
        # Create connection for raw database access
        db = get_database_connection()

        # Take and increment the correlation number using
        # the mongoDB atomic access in order to avoid race
        # problems
        currency = self._price_model['general_currency']

        if cdr_info['rss'].api_version == 1:
            # Version 1 uses a global correlation number
            corr_number = db.wstore_rss.find_and_modify(
                query={'_id': ObjectId(cdr_info['rss'].pk)},
                update={'$inc': {'correlation_number': 1}}
            )['correlation_number']

            currency = get_curency_code(self._price_model['general_currency'])

        else:
            # Version 2 uses a correlation number per provider
            corr_number = db.wstore_organization.find_and_modify(
                query={'_id': ObjectId(self._purchase.owner_organization.pk)},
                update={'$inc': {'correlation_number': 1}}
            )['correlation_number']

        return {
            'provider': cdr_info['provider'],
            'service': cdr_info['service_name'],
            'defined_model': model,
            'correlation': str(corr_number),
            'purchase': self._purchase.ref,
            'offering': cdr_info['offering'],
            'product_class': cdr_info['product_class'],
            'description': cdr_info['description'],
            'cost_currency': currency,
            'cost_value': str(part['value']),
            'tax_currency': currency,
            'tax_value': '0.0',
            'source': '1',
            'operator': '1',
            'country': cdr_info['country_code'],
            'time_stamp': cdr_info['time_stamp'],
            'customer': cdr_info['customer'],
            'event': self._purchase.contract.revenue_class
        }