CRUD Update for Promotion

This commit is contained in:
Phyo
2017-08-30 18:22:22 +06:30
parent 15e37f9ee2
commit bf9f0cdbe7
4 changed files with 119 additions and 8 deletions

View File

@@ -76,6 +76,17 @@ class Settings::PromotionsController < ApplicationController
end
end
def find_item_instance
item = MenuItem.find_by_item_code(params[:item_code])
if item.nil?
product = Product.where("item_code = ?",params[:item_code]).pluck(:name,:item_code)
render json: product
else
menu_instance = MenuItemInstance.where("menu_item_id = ?",item.id).pluck(:item_instance_name,:item_instance_code)
render json: menu_instance
end
end
private
# Use callbacks to share common setup or constraints between actions.
def set_promotion

View File

@@ -19,6 +19,7 @@ class MenuItem < ApplicationRecord
scope :simple_menu_item, -> { where(type: 'SimpleMenuItem') }
scope :set_menu_item, -> { where(type: 'SetMenuItem') }
scope :active, -> { where(is_available: true) }
# Item Image Uploader
mount_uploader :image_path, MenuItemImageUploader

View File

@@ -49,32 +49,79 @@
</div>
</div>
<div class="row">
<div class="col-md-6"><%= f.input :original_product,collection: MenuItem.order("name desc").pluck(:name,:item_code),input_html: { selected: 2 } %></div>
<% arr = MenuItem.active.order("name desc").pluck(:name,:item_code) %>
<% Product.order("name desc").pluck(:name,:item_code).each do |p| %>
<% arr.push(p) %>
<% end %>
<div class="col-md-3">
<label class="control-label"><abbr title="required">*</abbr> Item</label>
<select class="form-control item_code_place">
<% if !@promotion.original_product.nil? %>
<% menuiteminstance = MenuItemInstance.find_by_item_instance_code(@promotion.original_product) %>
<% if menuiteminstance.nil?%>
<% code = @promotion.original_product %>
<% else %>
<% code = menuiteminstance.menu_item.item_code %>
<% end %>
<% end %>
<% arr.each do |a| %>
<% if a[1] == code %>
<option value="<%= a[1]%>" selected><%= a[0] %></option>
<% else %>
<option value="<%= a[1]%>"><%= a[0] %></option>
<% end %>
<% end %>
</select>
</div>
<% sample = [] %>
<% if !@promotion.original_product.nil? %>
<% if !MenuItemInstance.find_by_item_instance_code(@promotion.original_product).nil? %>
<% sample = MenuItemInstance.where("item_instance_code=?",@promotion.original_product).pluck(:item_instance_name,:item_instance_code)%>
<% else %>
<% sample = Product.where("item_code=?",@promotion.original_product).pluck(:name,:item_code)%>
<% end %>
<% end %>
<div class="col-md-3"><%= f.input :original_product,collection: sample %></div>
<!-- <div class="col-md-6"><%= f.input :original_product,collection: MenuItemInstance.order("item_instance_name desc").pluck(:item_instance_name,:item_instance_code),input_html: { selected: 2 } %></div> -->
<div class="col-md-6"><%= f.input :min_qty %></div>
</div>
<br>
<div class="" style="border: 1px solid #cccccc;padding:1%">
<div class="row">
<div class="col-md-2" style="text-align:center">Item Code</div>
<div class="col-md-4" style="text-align:center">Item Code</div>
<div class="col-md-2" style="text-align:center">Min Qty</div>
<div class="col-md-2" style="text-align:center">Net off</div>
<div class="col-md-2" style="text-align:center">Net Price</div>
<div class="col-md-2" style="text-align:center">Percentage</div>
<div class="col-md-2" style="text-align:center"></div>
<div class="col-md-1" style="text-align:center">Percentage</div>
<div class="col-md-1" style="text-align:center"></div>
</div>
<div class="row"></div >
<%= f.fields_for :promotion_products do |pro| %>
<div class="row">
<div class="col-md-2"><%= pro.input :item_code, label: false,collection: MenuItem.order("name desc").pluck(:name,:item_code)%></div>
<% arr = MenuItem.active.order("name desc").pluck(:name,:item_code) %>
<% Product.order("name desc").pluck(:name,:item_code).each do |p| %>
<% arr.push(p) %>
<% end %>
<div class="col-md-2" style="text-align:left">
<select class="form-control item_code_place1">
<% arr.each do |a| %>
<option value="<%= a[1 ]%>"><%= a[0] %></option>
<% end %>
</select>
</div>
<% sample = [] %>
<div class="col-md-2" style="text-align:left"><%= pro.input :item_code, :class => 'promoproduct', collection: sample,input_html: { selected: 2 }, label: false %></div>
<div class="col-md-2"><%= pro.input :min_qty , label: false%></div>
<div class="col-md-2"><%= pro.input :net_off , label: false %></div>
<div class="col-md-2"><%= pro.input :net_price , label: false %></div>
<div class="col-md-2"><%= pro.input :percentage , label: false %></div>
<div class="col-md-2" style="text-align:right"><%= pro.link_to_remove "X" %></div>
<div class="col-md-1"><%= pro.input :percentage , label: false %></div>
<div class="col-md-1" style="text-align:right"><%= pro.link_to_remove "X" %></div>
</div>
<% end %>
<div class="row">
<div class="col-md-12" style="text-align:right;"><%= f.link_to_add "Add Product", :promotion_products, :class => 'btn btn-primary' %></div>
<div class="col-md-12" style="text-align:right;"><%= f.link_to_add "Add Product", :promotion_products, :class => 'btn btn-primary addProduct' %></div>
</div>
</div>
</div>
@@ -103,5 +150,56 @@ $(document).ready(function(){
datepicker:false,
format:'H:m'
});
$("#promotion_original_product").select2();
$(".item_code_place").select2();
$(".item_code_place").on('change', function(event) {
var ajax_url = "<%= settings_find_item_instance_path %>";
var item_code = this.value;
$.ajax({
type: "GET",
url: ajax_url,
data: 'item_code=' + item_code,
success: function (result) {
$("#promotion_original_product").empty();
var itemlist;
for (var i = 0; i < result.length; i++) {
itemlist += "<option value ="+result[i][1]+">"+result[i][0]+"</option>"
}
$("#promotion_original_product").append(itemlist);
$("#promotion_original_product").select2();
}
});
});
$(".promotion_promotion_products_item_code select").select2();
$(".item_code_place1").select2();
callforpromoproduct();
$(".addProduct").on('click', function(event) {
setTimeout(function(){
$(".promotion_promotion_products_item_code select").select2();
callforpromoproduct();
}, 0);
});
function callforpromoproduct(){
$(".item_code_place1").select2();
$(".item_code_place1").on('change', function(event) {
id = $(this).parent().next().find("select").attr("id");
var ajax_url = "<%= settings_find_item_instance_path %>";
var item_code = this.value;
$.ajax({
type: "GET",
url: ajax_url,
data: 'item_code=' + item_code,
success: function (result) {
$("#"+id).empty();
var itemlist;
for (var i = 0; i < result.length; i++) {
itemlist += "<option value ="+result[i][1]+">"+result[i][0]+"</option>"
}
$("#"+id).append(itemlist);
$("#"+id).select2();
}
});
});
}
});
</script>

View File

@@ -292,6 +292,7 @@ Rails.application.routes.draw do
resources :promotions do
resources :promotion_products
end
get '/find_item_instance' => 'promotions#find_item_instance', as:'find_item_instance'
# commission
resources :commissions