class Colppy::Product
Constants
- ATTRIBUTES_MAPPER
- DATA_KEYS_SETTERS
- PROTECTED_DATA_KEYS
Attributes
code[R]
id[R]
name[R]
Public Class Methods
all(client, company)
click to toggle source
# File lib/colppy/resources/product.rb, line 26 def all(client, company) list(client, company) end
list(client, company, parameters = {})
click to toggle source
# File lib/colppy/resources/product.rb, line 30 def list(client, company, parameters = {}) call_parameters = base_params.merge(parameters) response = client.call( :product, :list, extended_parameters(client, company, call_parameters) ) if response[:success] results = response[:data].map do |params| new(params.merge(client: client, company: company)) end parse_list_response(results, response[:total].to_i, call_parameters) else response end end
new(client: nil, company: nil, **params)
click to toggle source
Calls superclass method
Colppy::Resource::new
# File lib/colppy/resources/product.rb, line 68 def initialize(client: nil, company: nil, **params) @client = client if client && client.is_a?(Colppy::Client) @company = company if company && company.is_a?(Colppy::Company) @id = params.delete(:idItem) || params.delete(:id) @name = params.delete(:descripcion) || params.delete(:name) @code = params.delete(:codigo) || params.delete(:code) super(params) end
Private Class Methods
base_params()
click to toggle source
# File lib/colppy/resources/product.rb, line 56 def base_params { filter:[], order: [{ field: "codigo", dir: "asc" }] } end
extended_parameters(client, company, parameters)
click to toggle source
# File lib/colppy/resources/product.rb, line 49 def extended_parameters(client, company, parameters) [ client.session_params, company.params, parameters ].inject(&:merge) end
Public Instance Methods
code=(value)
click to toggle source
# File lib/colppy/resources/product.rb, line 99 def code=(value) @code = value end
exist?()
click to toggle source
# File lib/colppy/resources/product.rb, line 91 def exist? !new? end
name=(value)
click to toggle source
# File lib/colppy/resources/product.rb, line 95 def name=(value) @name = value end
new?()
click to toggle source
# File lib/colppy/resources/product.rb, line 87 def new? @id.nil? || @id.empty? end
sales_account()
click to toggle source
# File lib/colppy/resources/product.rb, line 123 def sales_account check_mandatory_account!(:sales_account) end
save()
click to toggle source
# File lib/colppy/resources/product.rb, line 103 def save ensure_client_valid! && ensure_company_valid! response = @client.call( :product, operation, save_parameters ) if response[:success] response_data = response[:data] case operation when :create @id = response_data[:idItem] end self else false end end
Private Instance Methods
attr_inspect()
click to toggle source
# File lib/colppy/resources/product.rb, line 129 def attr_inspect [:id, :code, :name] end
check_mandatory_account!(account)
click to toggle source
# File lib/colppy/resources/product.rb, line 163 def check_mandatory_account!(account) if account_name_or_id = @data[account] real_account_name = @company.account_name(account_name_or_id) if real_account_name real_account_name else account_name_or_id end else raise DataError.new("The :#{account} is required for the product. You should specify one via product.#{account} = '', or product[:#{account}] = '', or when you initialize it. You should check the available and valid accounts in Colppy") end end
operation()
click to toggle source
# File lib/colppy/resources/product.rb, line 133 def operation new? ? :create : :update end
params()
click to toggle source
# File lib/colppy/resources/product.rb, line 144 def params { idItem: @id || "", idEmpresa: @company.id, codigo: @code || "", descripcion: @name || "", detalle: @data[:detail] || "", precioVenta: @data[:sell_price] || "0", ultimoPrecioCompra: @data[:last_purchase_price] || "", ctaInventario: check_mandatory_account!(:inventory_account), ctaCostoVentas: check_mandatory_account!(:sales_costs_account), ctaIngresoVentas: check_mandatory_account!(:sales_account), iva: @data[:tax] || "21", tipoItem: @data[:item_type] || "P", unidadMedida: @data[:measure_unit] || "u", minimo: @data[:minimum_stock] || "0" } end
save_parameters()
click to toggle source
# File lib/colppy/resources/product.rb, line 137 def save_parameters [ @client.session_params, params ].inject(&:merge) end