'This method check what to do with the given procurement in order to complete its needs.
It returns False if no solution is found, otherwise it stores the matching rule (if any) and
returns True.
:rtype: boolean'

@api.multi
def _assign(self):

    if self.rule_id:
        return True
    elif (self.product_id.type not in ('service', 'digital')):
        rule = self._find_suitable_rule()
        if rule:
            self.write({'rule_id': rule.id})
            return True
    return False
