created a very ugly report
This commit is contained in:
@@ -56,3 +56,4 @@ group :development, :test do
|
|||||||
gem 'spring'
|
gem 'spring'
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,9 @@
|
|||||||
class ReportsController < ApplicationController
|
class ReportsController < ApplicationController
|
||||||
|
|
||||||
def items_to_order
|
def items_to_order
|
||||||
@items = Item.items_to_order
|
@report = Item.items_to_order
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -9,19 +9,48 @@ class Item < ActiveRecord::Base
|
|||||||
|
|
||||||
validates_presence_of :name, :description, :list_price, :current_input_price, :tags, :unit_id, :code, :sub_category_id, :weight, :supplier_id
|
validates_presence_of :name, :description, :list_price, :current_input_price, :tags, :unit_id, :code, :sub_category_id, :weight, :supplier_id
|
||||||
|
|
||||||
|
|
||||||
# todo build a front end in backoffice (rails)
|
|
||||||
def self.items_to_order
|
def self.items_to_order
|
||||||
return Item.find_by_sql(%Q{
|
items_raw = Item.find_by_sql(%Q{
|
||||||
select s.name as supplier, i.name as item, sum(iic.count) amount, i.current_input_price
|
select s.id as supplier_id, i.code as code, i.name as name, sum(iic.count) amount, i.current_input_price
|
||||||
from carts c
|
from carts c
|
||||||
join item_in_carts iic on iic.cart_id = c.id
|
left join item_in_carts iic on iic.cart_id = c.id
|
||||||
join items i on i.id = iic.item_id
|
left join items i on i.id = iic.item_id
|
||||||
join suppliers s on i.supplier_id = s.id
|
left join suppliers s on i.supplier_id = s.id
|
||||||
where c.confirmed and not (c.packed or c.delivered)
|
where c.confirmed and not (c.packed or c.delivered)
|
||||||
group by s.name, i.name, i.current_input_price
|
group by s.id, i.name, i.code, i.current_input_price
|
||||||
order by s.name, amount desc;
|
order by s.name, amount desc;
|
||||||
})
|
})
|
||||||
|
|
||||||
|
items_sorted = {}
|
||||||
|
suppliers_sorted = {}
|
||||||
|
|
||||||
|
items_raw.each do |item|
|
||||||
|
items_sorted[item.supplier_id] ||= []
|
||||||
|
suppliers_sorted[item.supplier_id] ||= item.supplier
|
||||||
|
items_sorted[item.supplier_id] << item
|
||||||
|
end
|
||||||
|
|
||||||
|
report_items = []
|
||||||
|
|
||||||
|
complete_sum = 0
|
||||||
|
|
||||||
|
suppliers_sorted.each_pair do |key, value|
|
||||||
|
rep_sec = OpenStruct.new # report section
|
||||||
|
rep_sec.supplier = value
|
||||||
|
rep_sec.items = items_sorted[key]
|
||||||
|
rep_sec.sum_amount = rep_sec.items.reduce(0) do |sum, item|
|
||||||
|
sum + (item.current_input_price * item.amount)
|
||||||
|
end
|
||||||
|
complete_sum += rep_sec.sum_amount
|
||||||
|
|
||||||
|
report_items << rep_sec
|
||||||
|
end
|
||||||
|
|
||||||
|
full_report = OpenStruct.new
|
||||||
|
full_report.sections = report_items
|
||||||
|
full_report.full_sum = complete_sum
|
||||||
|
|
||||||
|
return full_report
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -7,6 +7,10 @@ class ItemInCart < ActiveRecord::Base
|
|||||||
validates :cart_id, presence: true
|
validates :cart_id, presence: true
|
||||||
|
|
||||||
def name
|
def name
|
||||||
item.name + " " + count.to_s + " " + price.to_s
|
if item
|
||||||
|
item.name + " " + count.to_s + " " + price.to_s
|
||||||
|
else
|
||||||
|
" no item "
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -0,0 +1,32 @@
|
|||||||
|
<style type="text/css">
|
||||||
|
.tg {border-collapse:collapse;border-spacing:0;}
|
||||||
|
.tg td{font-family:Arial, sans-serif;font-size:14px;padding:10px 5px;border-style:solid;border-width:1px;overflow:hidden;word-break:normal;}
|
||||||
|
.tg th{font-family:Arial, sans-serif;font-size:14px;font-weight:normal;padding:10px 5px;border-style:solid;border-width:1px;overflow:hidden;word-break:normal;}
|
||||||
|
</style>
|
||||||
|
<div><%= "report is nil" if @report.nil? %></div>
|
||||||
|
<table class="tg">
|
||||||
|
<tr>
|
||||||
|
<th class="tg-031e">Code</th>
|
||||||
|
<th class="tg-031e">Item name</th>
|
||||||
|
<th class="tg-031e">Amount</th>
|
||||||
|
<th class="tg-031e">Price</th>
|
||||||
|
<th class="tg-031e">Total</th>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<% unless @report.nil? %>
|
||||||
|
<% @report.sections.each do |section| %>
|
||||||
|
<tr><td><%= section.supplier.name %></td></tr>
|
||||||
|
<% section.items.each do |item| %>
|
||||||
|
<tr>
|
||||||
|
<td class="tg-031e"><%= item.code %></td>
|
||||||
|
<td class="tg-031e"><%= item.name %></td>
|
||||||
|
<td class="tg-031e"><%= item.amount %></td>
|
||||||
|
<td class="tg-031e"><%= item.current_input_price %></td>
|
||||||
|
<td class="tg-031e"><%= item.current_input_price * item.amount %></td>
|
||||||
|
</tr>
|
||||||
|
<% end %>
|
||||||
|
<tr><td>Sub-total: <%= section.sum_amount %></td></tr>
|
||||||
|
<% end %>
|
||||||
|
<tr><td><strong>Total: <%= @report.full_sum %></strong> </td></tr>
|
||||||
|
<% end %>
|
||||||
|
</table>
|
||||||
|
|||||||
86
back-office/config/dossier.yml
Normal file
86
back-office/config/dossier.yml
Normal file
@@ -0,0 +1,86 @@
|
|||||||
|
# PostgreSQL. Versions 8.2 and up are supported.
|
||||||
|
#
|
||||||
|
# Install the pg driver:
|
||||||
|
# gem install pg
|
||||||
|
# On OS X with Homebrew:
|
||||||
|
# gem install pg -- --with-pg-config=/usr/local/bin/pg_config
|
||||||
|
# On OS X with MacPorts:
|
||||||
|
# gem install pg -- --with-pg-config=/opt/local/lib/postgresql84/bin/pg_config
|
||||||
|
# On Windows:
|
||||||
|
# gem install pg
|
||||||
|
# Choose the win32 build.
|
||||||
|
# Install PostgreSQL and put its /bin directory on your path.
|
||||||
|
#
|
||||||
|
# Configure Using Gemfile
|
||||||
|
# gem 'pg'
|
||||||
|
#
|
||||||
|
default: &default
|
||||||
|
adapter: postgresql
|
||||||
|
encoding: unicode
|
||||||
|
# For details on connection pooling, see rails configuration guide
|
||||||
|
# http://guides.rubyonrails.org/configuring.html#database-pooling
|
||||||
|
pool: 5
|
||||||
|
|
||||||
|
development:
|
||||||
|
<<: *default
|
||||||
|
database: ribica
|
||||||
|
|
||||||
|
# The specified database role being used to connect to postgres.
|
||||||
|
# To create additional roles in postgres see `$ createuser --help`.
|
||||||
|
# When left blank, postgres will use the default role. This is
|
||||||
|
# the same name as the operating system user that initialized the database.
|
||||||
|
username: postgres
|
||||||
|
|
||||||
|
# The password associated with the postgres role (username).
|
||||||
|
password: testni_hamo2
|
||||||
|
|
||||||
|
# Connect on a TCP socket. Omitted by default since the client uses a
|
||||||
|
# domain socket that doesn't need configuration. Windows does not have
|
||||||
|
# domain sockets, so uncomment these lines.
|
||||||
|
host: localhost
|
||||||
|
|
||||||
|
# The TCP port the server listens on. Defaults to 5432.
|
||||||
|
# If your server runs on a different port number, change accordingly.
|
||||||
|
#port: 5432
|
||||||
|
|
||||||
|
# Schema search path. The server defaults to $user,public
|
||||||
|
#schema_search_path: myapp,sharedapp,public
|
||||||
|
|
||||||
|
# Minimum log levels, in increasing order:
|
||||||
|
# debug5, debug4, debug3, debug2, debug1,
|
||||||
|
# log, notice, warning, error, fatal, and panic
|
||||||
|
# Defaults to warning.
|
||||||
|
#min_messages: notice
|
||||||
|
|
||||||
|
# Warning: The database defined as "test" will be erased and
|
||||||
|
# re-generated from your development database when you run "rake".
|
||||||
|
# Do not set this db to the same as development or production.
|
||||||
|
test:
|
||||||
|
<<: *default
|
||||||
|
database: ribicabackoffice_test
|
||||||
|
|
||||||
|
# As with config/secrets.yml, you never want to store sensitive information,
|
||||||
|
# like your database password, in your source code. If your source code is
|
||||||
|
# ever seen by anyone, they now have access to your database.
|
||||||
|
#
|
||||||
|
# Instead, provide the password as a unix environment variable when you boot
|
||||||
|
# the app. Read http://guides.rubyonrails.org/configuring.html#configuring-a-database
|
||||||
|
# for a full rundown on how to provide these environment variables in a
|
||||||
|
# production deployment.
|
||||||
|
#
|
||||||
|
# On Heroku and other platform providers, you may have a full connection URL
|
||||||
|
# available as an environment variable. For example:
|
||||||
|
#
|
||||||
|
# DATABASE_URL="postgres://myuser:mypass@localhost/somedatabase"
|
||||||
|
#
|
||||||
|
# You can use this database configuration with:
|
||||||
|
#
|
||||||
|
# production:
|
||||||
|
# url: <%= ENV['DATABASE_URL'] %>
|
||||||
|
#
|
||||||
|
production:
|
||||||
|
<<: *default
|
||||||
|
database: ribica
|
||||||
|
username: postgres
|
||||||
|
password: testni_hamo2
|
||||||
|
host: localhost
|
||||||
@@ -18,6 +18,7 @@ Rails.application.routes.draw do
|
|||||||
resources :units do as_routes end
|
resources :units do as_routes end
|
||||||
resources :sub_categories do as_routes end
|
resources :sub_categories do as_routes end
|
||||||
resources :categories do as_routes end
|
resources :categories do as_routes end
|
||||||
|
get ':controller(/:action(/:id))'
|
||||||
# The priority is based upon order of creation: first created -> highest priority.
|
# The priority is based upon order of creation: first created -> highest priority.
|
||||||
# See how all your routes lay out with "rake routes".
|
# See how all your routes lay out with "rake routes".
|
||||||
|
|
||||||
|
|||||||
@@ -126,8 +126,8 @@ ActiveRecord::Schema.define(version: 20150404114006) do
|
|||||||
t.datetime "updated_at", null: false
|
t.datetime "updated_at", null: false
|
||||||
t.string "tags"
|
t.string "tags"
|
||||||
t.json "traits"
|
t.json "traits"
|
||||||
t.decimal "weight", precision: 5, scale: 3
|
|
||||||
t.integer "supplier_id"
|
t.integer "supplier_id"
|
||||||
|
t.decimal "weight", precision: 5, scale: 3
|
||||||
t.integer "delivery_time_estimation_id"
|
t.integer "delivery_time_estimation_id"
|
||||||
t.integer "brand_id"
|
t.integer "brand_id"
|
||||||
end
|
end
|
||||||
@@ -190,9 +190,11 @@ ActiveRecord::Schema.define(version: 20150404114006) do
|
|||||||
end
|
end
|
||||||
|
|
||||||
create_table "sub_categories", force: :cascade do |t|
|
create_table "sub_categories", force: :cascade do |t|
|
||||||
t.string "name"
|
t.string "name"
|
||||||
t.integer "category_id"
|
t.integer "category_id"
|
||||||
t.integer "order"
|
t.datetime "created_at", null: false
|
||||||
|
t.datetime "updated_at", null: false
|
||||||
|
t.integer "order"
|
||||||
end
|
end
|
||||||
|
|
||||||
create_table "suppliers", force: :cascade do |t|
|
create_table "suppliers", force: :cascade do |t|
|
||||||
|
|||||||
@@ -34,10 +34,22 @@ var CartPage = React.createClass({
|
|||||||
)
|
)
|
||||||
});
|
});
|
||||||
|
|
||||||
console.log("bla :" , this.state.items.length);
|
var deliveryDestination = (<span></span>);
|
||||||
|
|
||||||
|
if (this.state.destinationValid) {
|
||||||
|
deliveryDestination = (
|
||||||
|
<div>
|
||||||
|
Na adresu {this.state.deliveryDestination.name},
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
var cartTotal = (
|
var cartTotal = (
|
||||||
<div className="row cart-total">
|
<div className="row cart-total">
|
||||||
|
|
||||||
<CartTotal items={this.state.items} itemCounts={this.state.itemCounts} deliveryCosts={this.state.deliveryCosts}/>
|
<CartTotal items={this.state.items} itemCounts={this.state.itemCounts} deliveryCosts={this.state.deliveryCosts}/>
|
||||||
<div className="col-md-1 span1">
|
<div className="col-md-1 span1">
|
||||||
<button className="btn btn-warning" onClick={this._onOrderClick}>Izgleda OK</button>
|
<button className="btn btn-warning" onClick={this._onOrderClick}>Izgleda OK</button>
|
||||||
|
|||||||
@@ -213,7 +213,8 @@ var CartStore = _.extend({}, EventEmitter.prototype, {
|
|||||||
deliveryDestination: _deliveryDestination,
|
deliveryDestination: _deliveryDestination,
|
||||||
deliveryDestinationErrors: _deliveryDestinationErrors,
|
deliveryDestinationErrors: _deliveryDestinationErrors,
|
||||||
isDeliveryDestinationValid: isDeliveryDestinationValid(),
|
isDeliveryDestinationValid: isDeliveryDestinationValid(),
|
||||||
deliveryCosts: _deliveryCosts
|
deliveryCosts: _deliveryCosts,
|
||||||
|
destinationValid: isDeliveryDestinationValid()
|
||||||
};
|
};
|
||||||
return state;
|
return state;
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user