Sha256: 55cb5f41797f5417d3544d94144fbf8761f2a802414a3cafa8f70ae1c8e3571e
Contents?: true
Size: 1.57 KB
Versions: 3
Compression:
Stored size: 1.57 KB
Contents
module Comee module Core class ProductLookupService ORGANIZATION = "ORG".freeze ## # This method returns a translated code for a given +code+. The +code+ can be # for a supplier or a client. The source of the +code+ is described using the +from+ # parameter. The +from+ parameter is a has which specifies the id of the source # supplier/client as `itemable_id`, and the data type of the source as itemable_type. # We specify the id and type because the ProductLookup model has a polymorphic relationship # with supplier and client. # # The +to+ parameter uses a similar format to specify the target supplier/client we want to # conduct the lookup for. def lookup_product(code, from, to) error = "The 'from' parameter cannot be assigned any string other than '#{ORGANIZATION}'." raise(StandardError, error) if from.instance_of?(String) && from != ORGANIZATION error = "The 'to' parameter cannot be assigned any string other than '#{ORGANIZATION}'." raise(StandardError, error) if to.instance_of?(String) && to != ORGANIZATION if from == ORGANIZATION query = ProductLookup.joins(:product).find_by(product: {code:}, **to) return query.code end if to == ORGANIZATION product = ProductLookup.find_by(code: code, **from).product return product.code end product = ProductLookup.find_by(code: code, **from).product query = ProductLookup.find_by(product: product, **to) query.code end end end end
Version data entries
3 entries across 3 versions & 1 rubygems