From ffd3f5f158e076078200da55bf8ed442f54d4f84 Mon Sep 17 00:00:00 2001 From: phyusin Date: Thu, 3 May 2018 17:53:07 +0630 Subject: [PATCH 1/5] check exception in check_user --- app/controllers/base_origami_controller.rb | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/app/controllers/base_origami_controller.rb b/app/controllers/base_origami_controller.rb index 66cc2880..3cb1eacc 100755 --- a/app/controllers/base_origami_controller.rb +++ b/app/controllers/base_origami_controller.rb @@ -5,7 +5,6 @@ class BaseOrigamiController < ActionController::Base before_action :check_user #before_action :check_installation - protect_from_forgery with: :exception helper_method :shop_detail, :current_token @@ -23,6 +22,10 @@ class BaseOrigamiController < ActionController::Base }.to_json end else + if ENV["SERVER_MODE"] != 'cloud' + protect_from_forgery with: :exception + end + if current_user.nil? redirect_to root_path end From 69eeede474e01e9b76cabe79c0d0b0d6867ec43a Mon Sep 17 00:00:00 2001 From: Aung Myo Date: Thu, 3 May 2018 18:08:27 +0630 Subject: [PATCH 2/5] update access code --- app/assets/javascripts/origami.js | 40 +++ app/assets/stylesheets/origami.scss | 13 + app/controllers/origami/home_controller.rb | 12 + .../origami/payments_controller.rb | 3 +- .../origami/sale_edit_controller.rb | 16 +- app/controllers/origami/void_controller.rb | 4 +- .../origami/waste_spoile_controller.rb | 6 +- app/models/ability.rb | 12 + app/views/origami/addorders/detail.html.erb | 36 +- app/views/origami/home/show.html.erb | 88 +++-- app/views/origami/payments/show.html.erb | 316 +++++++++++------- app/views/origami/sale_edit/edit.html.erb | 8 +- config/routes.rb | 5 + 13 files changed, 388 insertions(+), 171 deletions(-) diff --git a/app/assets/javascripts/origami.js b/app/assets/javascripts/origami.js index ca021430..a2d78063 100755 --- a/app/assets/javascripts/origami.js +++ b/app/assets/javascripts/origami.js @@ -192,6 +192,41 @@ $(document).on('turbolinks:load', function() { return false; }); + + $(document).on('click', '.access_modal', function(event){ + type = $(this).data("type"); + $(".ok").attr("data-action",type) + $('#AccessCodeModal').modal('show'); + }); + + $(document).on('click', '.access_number', function(event){ + if(event.handled !== true) { + var original_value = $('#access_code').val(); + var input_type = $(this).attr("data-type"); + + switch (input_type) { + case 'num': + var input_value = $(this).attr("data-value"); + if (original_value){ + $('#access_code').val(original_value + input_value); + }else{ + $('#access_code').val(original_value + input_value); + } + break; + case 'ok': + var type = $(this).attr("data-action"); + code = $('#access_code').val(); + check_emp_access_code(code,type) + break; + case 'clr': + $('#access_code').val(""); + break; + } + event.handled = true; + } else { + return false; + } + }); }); /* start check first bill or not funs: */ @@ -423,3 +458,8 @@ function showHideNavbar(webview,page){ } } } + +function createAccessCode(code) { + localStorage.setItem("access_code",code); +} + diff --git a/app/assets/stylesheets/origami.scss b/app/assets/stylesheets/origami.scss index 1de250a3..212c5288 100755 --- a/app/assets/stylesheets/origami.scss +++ b/app/assets/stylesheets/origami.scss @@ -93,6 +93,19 @@ select.form-control { // cursor:pointer; } +.access_number{ + width: 33%; + height:58px; + line-height:58px; + text-align:center; + background:#54A5AF; + // float:left; + // margin:2px; + font-size:20px; + color:white; + // cursor:pointer; +} + .del_cashier_number{ opacity:0.6, } diff --git a/app/controllers/origami/home_controller.rb b/app/controllers/origami/home_controller.rb index 745d6f33..ed857104 100755 --- a/app/controllers/origami/home_controller.rb +++ b/app/controllers/origami/home_controller.rb @@ -129,6 +129,18 @@ class Origami::HomeController < BaseOrigamiController end end +def check_emp_access_code + pin_code = params[:code] + employee = Employee.find_by_emp_id(pin_code) + if employee && employee.role == "manager" + result = {:status=> true, :message=>"Success" } + else + result = {:status=> false, :message=>"Invalid Access Code" } + end + render :json => result.to_json + +end + private def set_dining diff --git a/app/controllers/origami/payments_controller.rb b/app/controllers/origami/payments_controller.rb index 3baed9f3..3c5219af 100755 --- a/app/controllers/origami/payments_controller.rb +++ b/app/controllers/origami/payments_controller.rb @@ -446,8 +446,7 @@ class Origami::PaymentsController < BaseOrigamiController end saleObj.update_attributes(grand_total: 0, rounding_adjustment: 0, amount_received: 0, amount_changed: 0) - puts "FOC" - puts saleObj.to_json + sale_payment = SalePayment.new sale_payment.process_payment(saleObj, current_user.name, cash, "foc" ,remark) # For Cashier by Zone diff --git a/app/controllers/origami/sale_edit_controller.rb b/app/controllers/origami/sale_edit_controller.rb index 1743f881..1c5b5430 100755 --- a/app/controllers/origami/sale_edit_controller.rb +++ b/app/controllers/origami/sale_edit_controller.rb @@ -17,6 +17,7 @@ class Origami::SaleEditController < BaseOrigamiController def item_void saleitemId = params[:sale_item_id] remark = params[:remark] + access_code = params[:access_code] saleitemObj = SaleItem.find(saleitemId) saleitemObj.status = 'void' saleitemObj.remark = remark @@ -48,8 +49,9 @@ class Origami::SaleEditController < BaseOrigamiController end end action_by = current_user.id + approved_by = Employee.find_by_emp_id(access_code) remark = "Void Sale Item ID #{saleitemObj.sale_item_id} | Receipt No #{saleObj.receipt_no} | Item Name ->#{saleitemObj.product_name}-Product Code ->#{saleitemObj.product_code}-Instance Code ->#{saleitemObj.item_instance_code}" - sale_audit = SaleAudit.record_audit_for_edit(saleitemObj.sale_id,saleObj.cashier_id, action_by,remark,"SALEITEMVOID" ) + sale_audit = SaleAudit.record_audit_for_edit(saleitemObj.sale_id,saleObj.cashier_id, approved_by.name,remark,"SALEITEMVOID" ) saleObj.compute_by_sale_items(saleObj.sale_id, saleObj.sale_items, saleObj.total_discount) ProductCommission.create_product_commission(@newsaleitem, saleitemObj) @@ -58,6 +60,7 @@ class Origami::SaleEditController < BaseOrigamiController def item_foc saleitemId = params[:sale_item_id] remark = params[:remark] + access_code = params[:access_code] saleitemObj = SaleItem.find(saleitemId) saleitemObj.status = 'foc' saleitemObj.remark = remark @@ -80,8 +83,9 @@ class Origami::SaleEditController < BaseOrigamiController order = Order.find(order_id) action_by = current_user.id + approved_by = Employee.find_by_emp_id(access_code) remark = "FOC Sale Item ID #{saleitemObj.sale_item_id} | Receipt No #{saleObj.receipt_no} | Item Name ->#{saleitemObj.product_name}-Product Code ->#{saleitemObj.product_code}-Instance Code ->#{saleitemObj.item_instance_code}Receipt No #{saleObj.receipt_no}" - sale_audit = SaleAudit.record_audit_for_edit(saleitemObj.sale_id,saleObj.cashier_id, action_by,remark,"SALEITEMFOC" ) + sale_audit = SaleAudit.record_audit_for_edit(saleitemObj.sale_id,saleObj.cashier_id, approved_by.name,remark,"SALEITEMFOC" ) saleObj.compute_by_sale_items(saleObj.sale_id, saleObj.sale_items, saleObj.total_discount,order.source) ProductCommission.create_product_commission(@newsaleitem, saleitemObj) @@ -111,6 +115,7 @@ class Origami::SaleEditController < BaseOrigamiController saleitemId = params[:sale_item_id] update_qty = params[:update_qty] update_price = params[:update_price] + access_code = params[:access_code] saleitemObj = SaleItem.find(saleitemId) sale = Sale.find(saleitemObj.sale_id) @@ -120,8 +125,9 @@ class Origami::SaleEditController < BaseOrigamiController saleitemObj.taxable_price = update_qty.to_f * update_price.to_f action_by = current_user.id + approved_by = Employee.find_by_emp_id(access_code) remark = "Update Qty #{update_qty} Price [#{saleitemObj.price}]| Receipt No #{sale.receipt_no} | Item Name ->#{saleitemObj.product_name}-Product Code ->#{saleitemObj.product_code}-Instance Code ->#{saleitemObj.item_instance_code}" - sale_audit = SaleAudit.record_audit_for_edit(saleitemObj.sale_id,sale.cashier_id, action_by,remark,"SALEITEMEDIT" ) + sale_audit = SaleAudit.record_audit_for_edit(saleitemObj.sale_id,sale.cashier_id, approved_by.name,remark,"SALEITEMEDIT" ) # saleitemObj.remark = 'edit' unless saleitemObj.product_name.include? 'updated' @@ -152,6 +158,7 @@ class Origami::SaleEditController < BaseOrigamiController # make cancel void item def item_void_cancel saleitemId = params[:sale_item_id] + access_code = params[:access_code] saleitemObj = SaleItem.find(saleitemId) both = SaleItem.where('product_code=?', saleitemObj.product_code) both.each do |item| @@ -169,8 +176,9 @@ class Origami::SaleEditController < BaseOrigamiController order = Order.find(order_id) action_by = current_user.id + approved_by = Employee.find_by_emp_id(access_code) remark = "Cancle Void Sale Item ID #{saleitemObj.sale_item_id} | Item Name ->#{saleitemObj.product_name}-Product Code ->#{saleitemObj.product_code}-Instance Code ->#{saleitemObj.item_instance_code}|Receipt No #{saleObj.receipt_no}" - sale_audit = SaleAudit.record_audit_for_edit(saleitemObj.sale_id,saleObj.cashier_id, action_by,remark,"ITEMCANCELVOID" ) + sale_audit = SaleAudit.record_audit_for_edit(saleitemObj.sale_id,saleObj.cashier_id, approved_by.name,remark,"ITEMCANCELVOID" ) saleObj.compute_by_sale_items(saleObj.sale_id, saleObj.sale_items, saleObj.total_discount, order.source) ProductCommission.remove_product_commission(saleitemObj) diff --git a/app/controllers/origami/void_controller.rb b/app/controllers/origami/void_controller.rb index 83dce707..d601b0c0 100755 --- a/app/controllers/origami/void_controller.rb +++ b/app/controllers/origami/void_controller.rb @@ -5,6 +5,7 @@ class Origami::VoidController < BaseOrigamiController sale_id = params[:sale_id] remark = params[:remark] order_source = params[:type] #tax profile source + access_code = params[:access_code] if Sale.exists?(sale_id) sale = Sale.find_by_sale_id(sale_id) @@ -71,8 +72,9 @@ class Origami::VoidController < BaseOrigamiController # FOr Sale Audit action_by = current_user.name + approved_by = Employee.find_by_emp_id(access_code) # remark = "Void Sale ID #{sale_id} | Receipt No #{sale.receipt_no} | Receipt No #{sale.receipt_no} | Table ->#{table.name}" - sale_audit = SaleAudit.record_audit_for_edit(sale_id,sale.cashier_id, action_by,remark,"SALEVOID" ) + sale_audit = SaleAudit.record_audit_for_edit(sale_id,sale.cashier_id, approved_by.name,remark,"SALEVOID" ) # For Print diff --git a/app/controllers/origami/waste_spoile_controller.rb b/app/controllers/origami/waste_spoile_controller.rb index 2b2d9c33..de7df434 100755 --- a/app/controllers/origami/waste_spoile_controller.rb +++ b/app/controllers/origami/waste_spoile_controller.rb @@ -3,7 +3,8 @@ class Origami::WasteSpoileController < BaseOrigamiController sale_id = params[:sale_id] remark = params[:remark] - order_source = params[:type] #tax profile source + order_source = params[:type] + access_code = params[:access_code] #tax profile source if Sale.exists?(sale_id) sale = Sale.find_by_sale_id(sale_id) SaleTax.where("sale_id='#{sale_id}'").find_each do |existing_tax| @@ -54,8 +55,9 @@ class Origami::WasteSpoileController < BaseOrigamiController # FOr Sale Audit action_by = current_user.name + approved_by = Employee.find_by_emp_id(access_code) # remark = "Void Sale ID #{sale_id} | Receipt No #{sale.receipt_no} | Receipt No #{sale.receipt_no} | Table ->#{table.name}" - sale_audit = SaleAudit.record_audit_for_edit(sale_id,sale.cashier_id, action_by,remark,remark ) + sale_audit = SaleAudit.record_audit_for_edit(sale_id,sale.cashier_id, approved_by.name,remark,remark ) # For Print diff --git a/app/models/ability.rb b/app/models/ability.rb index 5eab518f..497e9322 100755 --- a/app/models/ability.rb +++ b/app/models/ability.rb @@ -126,6 +126,7 @@ class Ability # can :overall_void, :void can :index, :home can :show, :home + can :check_emp_access_code, :home can :read, Order can :update, Order can :manage, Booking @@ -151,6 +152,7 @@ class Ability can :create, :payment can :reprint, :payment can :rounding_adj, :payment + can :foc, :payment can :print, :payment can :move_dining, :movetable @@ -183,6 +185,16 @@ class Ability can :print, :print can :print_order_summary, :print + + can :edit, :sale_edit + can :item_void, :sale_edit + can :item_void_cancel, :sale_edit + can :cancel_all_void, :sale_edit + can :apply_void, :sale_edit + can :item_foc, :sale_edit + can :item_edit, :sale_edit + + can :overall_void, :void elsif user.role == "account" diff --git a/app/views/origami/addorders/detail.html.erb b/app/views/origami/addorders/detail.html.erb index d434eb48..7e8cbb2c 100755 --- a/app/views/origami/addorders/detail.html.erb +++ b/app/views/origami/addorders/detail.html.erb @@ -297,24 +297,24 @@ -
-
1
-
2
-
3
-
4
-
-
-
5
-
6
-
7
-
8
-
-
-
9
-
0
-
00
-
Clr
-
+
+
1
+
2
+
3
+
4
+
+
+
5
+
6
+
7
+
8
+
+
+
9
+
0
+
00
+
Clr
+
- - @@ -957,6 +968,7 @@ }); $('#void').on('click', function () { + var access_code = localStorage.getItem("access_code"); if ($(this).attr('active')=== "true") { swal({ title: "Alert", @@ -975,7 +987,7 @@ $.ajax({ type: 'POST', url: ajax_url, - data: "remark="+ remark + "&sale_id=" + sale_id, + data: "remark="+ remark + "&sale_id=" + sale_id+ "&access_code=" + access_code, success: function (result) { // For Server Print - from jade if ($("#server_mode").val() == "cloud") { @@ -1052,6 +1064,12 @@ return attribute_arr; } + $(document).on('click', '.access_modal', function(event){ + type = $(this).data("type"); + $(".ok").attr("data-action",type) + $('#AccessCodeModal').modal('show'); + }); + function waste_and_spoilage(remark) { swal({ title: "Alert", @@ -1081,4 +1099,34 @@ } }); } + + function check_emp_access_code(access_code,type) { + var url = "/origami/check_emp_access_code/" + access_code ; + $.ajax({ + type: 'POST', + url: url, + data: {}, + success: function (result) { + console.log(result); + if (result.status == true) { + createAccessCode(code); + if (type == "edit") { + var dining_id = "<%= @dining.id %>"; + var sale_id = "<%= @obj_sale.sale_id rescue "" %>"; + window.location.href = '/origami/table/' + dining_id + "/sale/" + sale_id + "/"+cashier_type +"/edit"; + }else if(type == "void"){ + $('#AccessCodeModal').modal('hide'); + $('#voidModal').modal('show'); + + // overall_void(); + }else if(type == "waste_and_spoilage"){ + + } + }else{ + swal("Opps",result.message,"warning") + } + } + }); + } + diff --git a/app/views/origami/payments/show.html.erb b/app/views/origami/payments/show.html.erb index d1a9eef4..41f02b5d 100755 --- a/app/views/origami/payments/show.html.erb +++ b/app/views/origami/payments/show.html.erb @@ -350,16 +350,20 @@ reply Back - - - <% if @cashier_type=="quick_service" %> + --> + FOC + Void + Waste + Spoile +<% if @cashier_type=="quick_service" %>
- <% if current_login_employee.role != "waiter" %> - - -
- -
-
- -
- - - @@ -957,6 +968,7 @@ }); $('#void').on('click', function () { + var access_code = localStorage.getItem("access_code"); if ($(this).attr('active')=== "true") { swal({ title: "Alert", @@ -975,7 +987,7 @@ $.ajax({ type: 'POST', url: ajax_url, - data: "remark="+ remark + "&sale_id=" + sale_id, + data: "remark="+ remark + "&sale_id=" + sale_id+ "&access_code=" + access_code, success: function (result) { // For Server Print - from jade if ($("#server_mode").val() == "cloud") { @@ -1052,6 +1064,12 @@ return attribute_arr; } + $(document).on('click', '.access_modal', function(event){ + type = $(this).data("type"); + $(".ok").attr("data-action",type) + $('#AccessCodeModal').modal('show'); + }); + function waste_and_spoilage(remark) { swal({ title: "Alert", @@ -1081,4 +1099,34 @@ } }); } + + function check_emp_access_code(access_code,type) { + var url = "/origami/check_emp_access_code/" + access_code ; + $.ajax({ + type: 'POST', + url: url, + data: {}, + success: function (result) { + console.log(result); + if (result.status == true) { + createAccessCode(code); + if (type == "edit") { + var dining_id = "<%= @dining.id %>"; + var sale_id = "<%= @obj_sale.sale_id rescue "" %>"; + window.location.href = '/origami/table/' + dining_id + "/sale/" + sale_id + "/"+cashier_type +"/edit"; + }else if(type == "void"){ + $('#AccessCodeModal').modal('hide'); + $('#voidModal').modal('show'); + + // overall_void(); + }else if(type == "waste_and_spoilage"){ + + } + }else{ + swal("Opps",result.message,"warning") + } + } + }); + } + diff --git a/app/views/origami/moveroom/move_dining.html.erb b/app/views/origami/moveroom/move_dining.html.erb index b46834ca..240d3b20 100755 --- a/app/views/origami/moveroom/move_dining.html.erb +++ b/app/views/origami/moveroom/move_dining.html.erb @@ -166,6 +166,10 @@ \ No newline at end of file +
+
+
\ No newline at end of file diff --git a/app/views/origami/payments/show.html.erb b/app/views/origami/payments/show.html.erb index d1a9eef4..41f02b5d 100755 --- a/app/views/origami/payments/show.html.erb +++ b/app/views/origami/payments/show.html.erb @@ -350,16 +350,20 @@ reply Back - - - <% if @cashier_type=="quick_service" %> + --> + FOC + Void + Waste + Spoile +<% if @cashier_type=="quick_service" %>
- + + <% if current_user.role != "waiter" %> + + <% end %> + + + + diff --git a/app/views/origami/pending_order/index.html.erb b/app/views/origami/pending_order/index.html.erb index 447612d1..02b4d07c 100644 --- a/app/views/origami/pending_order/index.html.erb +++ b/app/views/origami/pending_order/index.html.erb @@ -2,31 +2,50 @@
-
-
- PENDING ORDER -
-
+ + +
-
- <% @sale.each do |sale| %> -
-
- <%= sale.receipt_no %>Billed -
-
- <% end %> - <% @order.each do |order| %> -
-
- <%= order.booking_id %>new -
+
+
+
+ <% @completed.each do |sale| %> +
+
+ <%= sale.receipt_no %>Billed +
+
+ <% end %> +
+
+ +
+
+ <% @sale.each do |sale| %> +
+
+ <%= sale.receipt_no %>Billed
- <% end %> -
+
+ <% end %> + <% @order.each do |order| %> +
+
+ <%= order.booking_id %>new +
+
+ <% end %> +
+
+
-
-
@@ -46,6 +65,10 @@ var sale_id = $(this).attr("data-id"); window.location.href = '/origami/quick_service/pending_order/' + sale_id; }) + $(".completed").on('click',function(){ + var sale_id = $(this).attr("data-id"); + window.location.href = '/origami/quick_service/completed_sale/' + sale_id; + }) $('#pay').on('click', function () { var sale_id = $('#sale_id').val(); window.location.href = '/origami/sale/' + sale_id + "/quick_service/payment"; diff --git a/app/views/origami/pending_order/show.html.erb b/app/views/origami/pending_order/show.html.erb index 0cc6f949..48cad44e 100644 --- a/app/views/origami/pending_order/show.html.erb +++ b/app/views/origami/pending_order/show.html.erb @@ -1,154 +1,171 @@
-
- -
-
-
- PENDING ORDER -
-
-
-
- <% @sales.each do |sale| %> -
-
- <%= sale.receipt_no %>Billed -
+
+ +
+ +
+
+
+
+ <% @completed.each do |sale| %> +
+
+ <%= sale.receipt_no %>Billed +
+
+ <% end %>
- <% end %> - <% @orders.each do |order| %> -
-
- <%= order.booking_id %>new -
+
+ +
+
+ <% @sales.each do |sale| %> +
+
+ <%= sale.receipt_no %>Billed +
+
+ <% end %> + <% @orders.each do |order| %> +
+
+ <%= order.booking_id %>new +
+
+ <% end %>
- <% end %> -
+
+
-
-
- + - -
-
-
-
INVOICE DETAILS | Table <%= @dining.name rescue "" %>
-
-
-
- - <% if @status == 'sale' %> -
-   Receipt No: - <%= @sale.receipt_no rescue '' %> -
- <% else%> - -
-   Order No: - <%= @bookings.booking_orders[0].order_id rescue '' %> -
- <% end%> - - - <% if @status == 'sale' %> -
- Date: <%= @sale.created_at.strftime("%d/%m/%Y - %I:%M %p") rescue '-'%>   -
- <% else%> -
- Date: <%= @order.created_at.strftime("%I:%M %p") rescue '-'%>   -
- <% end%> + +
+
+
+
INVOICE DETAILS | Table <%= @dining.name rescue "" %>
-
-
- <% if @status == 'sale' %> -   Customer : <%= @sale.customer.name rescue "-" %> - <% else%> -   Customer : <%= @order.customer.name rescue "-" %> - <% end%> -
- -
-
-
- - - - - - - - - - <% if @status == 'sale' %> - <% sub_total = 0 - @sale.sale_items.each do |sale_item| - sub_total = sub_total + sale_item.price %> - - - - - - - <% end%> - <% else%> - <% sub_total = 0 - total = 0 - @order_items.each do |order_item| - total = order_item.qty * order_item.price - sub_total = sub_total + total %> - - - - - - - <% end%> - <% end%> - - -
ItemsQTYPrice
<%= sale_item.product_name %><%= sale_item.qty %><%= sale_item.price %>
<%= order_item.item_name %><%= order_item.qty %><%= total %>
-
-
- +
+
+ <% if @status == 'sale' %> +   Customer : <%= @sale.customer.name rescue "-" %> + <% else%> +   Customer : <%= @order.customer.name rescue "-" %> + <% end%> +
+ +
+
+
+ + + + + + + + + + <% if @status == 'sale' %> + <% sub_total = 0 + @sale.sale_items.each do |sale_item| + sub_total = sub_total + sale_item.price %> + + + + + + + <% end%> + <% else%> + <% sub_total = 0 + total = 0 + @order_items.each do |order_item| + total = order_item.qty * order_item.price + sub_total = sub_total + total %> + + + + + + + <% end%> + <% end%> + + +
ItemsQTYPrice
<%= sale_item.product_name %><%= sale_item.qty %><%= sale_item.price %>
<%= order_item.item_name %><%= order_item.qty %><%= total %>
+
+
+
-
-
+
@@ -182,6 +199,10 @@ $(document).ready(function(){ var sale_id = $(this).attr("data-id"); window.location.href = '/origami/quick_service/pending_order/' + sale_id; }) + $(".completed").on('click',function(){ + var sale_id = $(this).attr("data-id"); + window.location.href = '/origami/quick_service/completed_sale/' + sale_id; + }) $('#pay').on('click', function () { var sale_id = $('#sale_id').val(); window.location.href = '/origami/sale/' + sale_id + "/quick_service/payment"; diff --git a/app/views/origami/sale_edit/edit.html.erb b/app/views/origami/sale_edit/edit.html.erb index 3079d76c..6b38ad3c 100755 --- a/app/views/origami/sale_edit/edit.html.erb +++ b/app/views/origami/sale_edit/edit.html.erb @@ -187,6 +187,7 @@