From a05fc5956ec9889a3fe0d3a569092d22aebf034b Mon Sep 17 00:00:00 2001 From: Rodrigo Souto Date: Mon, 29 Aug 2011 18:29:48 -0300 Subject: [PATCH] [purchase-order] Basics of shopping-cart order register --- plugins/shopping_cart/db/migrate/20110825173657_create_purchase_order.rb | 15 +++++++++++++++ plugins/shopping_cart/lib/ext/enterprise.rb | 5 +++++ plugins/shopping_cart/lib/ext/person.rb | 5 +++++ plugins/shopping_cart/lib/shopping_cart_plugin.rb | 3 +++ plugins/shopping_cart/lib/shopping_cart_plugin/purchase_order.rb | 37 +++++++++++++++++++++++++++++++++++++ 5 files changed, 65 insertions(+), 0 deletions(-) create mode 100644 plugins/shopping_cart/db/migrate/20110825173657_create_purchase_order.rb create mode 100644 plugins/shopping_cart/lib/ext/enterprise.rb create mode 100644 plugins/shopping_cart/lib/ext/person.rb create mode 100644 plugins/shopping_cart/lib/shopping_cart_plugin/purchase_order.rb diff --git a/plugins/shopping_cart/db/migrate/20110825173657_create_purchase_order.rb b/plugins/shopping_cart/db/migrate/20110825173657_create_purchase_order.rb new file mode 100644 index 0000000..a3cc0d3 --- /dev/null +++ b/plugins/shopping_cart/db/migrate/20110825173657_create_purchase_order.rb @@ -0,0 +1,15 @@ +class CreatePurchaseOrder < ActiveRecord::Migration + def self.up + create_table :shopping_cart_plugin_purchase_orders do |t| + t.references :customer + t.references :seller + t.text :data + t.integer :status + t.timestamps + end + end + + def self.down + drop_table :shopping_cart_plugin_purchase_order + end +end diff --git a/plugins/shopping_cart/lib/ext/enterprise.rb b/plugins/shopping_cart/lib/ext/enterprise.rb new file mode 100644 index 0000000..139a9a5 --- /dev/null +++ b/plugins/shopping_cart/lib/ext/enterprise.rb @@ -0,0 +1,5 @@ +require_dependency 'enterprise' + +class Enterprise + has_many :orders, :class_name => "ShoppingCartPlugin::PurchaseOrder", :foreign_key => 'seller_id' +end diff --git a/plugins/shopping_cart/lib/ext/person.rb b/plugins/shopping_cart/lib/ext/person.rb new file mode 100644 index 0000000..e01e85b --- /dev/null +++ b/plugins/shopping_cart/lib/ext/person.rb @@ -0,0 +1,5 @@ +require_dependency 'person' + +class Person + has_many :purchases, :class_name => "ShoppingCartPlugin::PurchaseOrder", :foreign_key => 'customer_id' +end diff --git a/plugins/shopping_cart/lib/shopping_cart_plugin.rb b/plugins/shopping_cart/lib/shopping_cart_plugin.rb index 4ee7f7e..e084e9b 100644 --- a/plugins/shopping_cart/lib/shopping_cart_plugin.rb +++ b/plugins/shopping_cart/lib/shopping_cart_plugin.rb @@ -1,3 +1,6 @@ +require_dependency 'ext/enterprise' +require_dependency 'ext/person' + class ShoppingCartPlugin < Noosfero::Plugin def self.plugin_name diff --git a/plugins/shopping_cart/lib/shopping_cart_plugin/purchase_order.rb b/plugins/shopping_cart/lib/shopping_cart_plugin/purchase_order.rb new file mode 100644 index 0000000..7e16fa9 --- /dev/null +++ b/plugins/shopping_cart/lib/shopping_cart_plugin/purchase_order.rb @@ -0,0 +1,37 @@ +class ShoppingCartPlugin::PurchaseOrder < Noosfero::Plugin::ActiveRecord + + belongs_to :customer, :class_name => "Profile" + belongs_to :seller, :class_name => "Profile" + + validates_presence_of :status, :seller + + acts_as_having_settings :field => :data + + settings_items :products_list, :type => Array, :default => {} + settings_items :customer_name, :type => String + settings_items :customer_email, :type => String + settings_items :customer_contact_phone, :type => String + settings_items :customer_address, :type => String + settings_items :customer_city, :type => String + settings_items :customer_zip_code, :type => String + + before_create do |order| + order.created_at = Time.now.utc + order.updated_at = Time.now.utc + end + + before_update do |order| + order.updated_at = Time.now.utc + end + + module Status + OPENED = 0 + CANCELED = 1 + CONFIRMED = 2 + SHIPPED = 3 + + def self.name + [_('Opened'), _('Canceled'), _('Confirmed'), _('Shipped')] + end + end +end -- libgit2 0.21.2