diff --git a/app/controllers/api/sync_controller.rb b/app/controllers/api/sync_controller.rb new file mode 100644 index 00000000..3d5e971c --- /dev/null +++ b/app/controllers/api/sync_controller.rb @@ -0,0 +1,10 @@ +class Api::SyncController < Api::ApiController + + def sync_data + # Here comes to save the sync records. + Order.sync_order_records(params[:orders]) + OrderItem.sync_order_item_records(params[:order_items]) + + return true + end +end \ No newline at end of file diff --git a/app/controllers/reports/receipt_no_controller.rb b/app/controllers/reports/receipt_no_controller.rb index d966a00f..f7c34594 100755 --- a/app/controllers/reports/receipt_no_controller.rb +++ b/app/controllers/reports/receipt_no_controller.rb @@ -69,5 +69,48 @@ authorize_resource :class => false format.json { render json: out } end end + + def sync_data + @orders, @order_items = Booking.get_sync_data(params[:sale_id]) + + # Here comes to call the sync api + url = "http://192.168.1.187:3000/api/sync_records" + + begin + @result = HTTParty.post(url.to_str, + :body => { :orders => @orders, + :order_items => @order_items + }.to_json, + :headers => { + 'Content-Type' => 'application/json', + 'Authorization' => 'bearer 88fa8a47ba8b52a43cbc' + }, :timeout => 10, + :verify_ssl => OpenSSL::SSL::VERIFY_NONE, + :verify => false ) + + rescue HTTParty::Error + response = { status: false, message: "Can't open membership server "} + rescue Net::OpenTimeout + response = { status: false, message: "Can't open membership server "} + rescue OpenURI::HTTPError + puts "Fire in here" + response = { status: false, message: "Can't open membership server "} + rescue SocketError + response = { status: false, message: "Can't open server "} + rescue Errno::EHOSTDOWN + response = { status: false, message: "Can't open server "} + rescue Errno::ECONNREFUSED, Timeout::Error, Errno::EINVAL, Errno::ECONNRESET, EOFError, Net::HTTPBadResponse, Net::HTTPHeaderSyntaxError, Net::ProtocolError + response = { status: false, message: "Can't open membership server"} + end + + puts url + puts response + puts '########################' + puts @result + + respond_to do |format| + format.html { redirect_to '/en/reports/receipt_no/', notice: 'Sync Record Completed.'} + end + end end \ No newline at end of file diff --git a/app/models/booking.rb b/app/models/booking.rb index 46c098b7..f2a9af36 100755 --- a/app/models/booking.rb +++ b/app/models/booking.rb @@ -60,6 +60,20 @@ class Booking < ApplicationRecord .order("sale_id DESC") end + def self.get_sync_data(sale_id) + @orders = Order.select('orders.*') + .joins('left join booking_orders on booking_orders.order_id = orders.order_id') + .joins('left join bookings on bookings.booking_id = booking_orders.booking_id') + .where('bookings.sale_id=?', sale_id) + + @order_items = OrderItem.select('order_items.*') + .joins('left join booking_orders on booking_orders.order_id = order_items.order_id') + .joins('left join bookings on bookings.booking_id = booking_orders.booking_id') + .where('bookings.sale_id=?', sale_id) + + return @orders, @order_items + end + private def generate_custom_id self.booking_id = SeedGenerator.generate_id(self.class.name, "BKI") diff --git a/app/models/order.rb b/app/models/order.rb index af5887e6..e8743187 100755 --- a/app/models/order.rb +++ b/app/models/order.rb @@ -560,4 +560,25 @@ class Order < ApplicationRecord self.date = Time.now.utc end + def self.sync_order_records(orders) + if !orders.nil? + orders.each do |o| + unless Order.exists?(o.order_id) + order = Order.new() + order.order_id = o.order_id + order.date = o.date + order.source = o.source + order.order_type = o.order_type + order.customer_id = o.customer_id + order.item_count = o.item_count + order.quantity_count = o.quantity_count + order.status = o.status + order.waiters = o.waiters + order.guest_info = o.guest_info + order.save + end + end + end + end + end diff --git a/app/models/order_item.rb b/app/models/order_item.rb index 87d60e63..6468d2f1 100755 --- a/app/models/order_item.rb +++ b/app/models/order_item.rb @@ -65,6 +65,33 @@ class OrderItem < ApplicationRecord return order_details end + def self.sync_order_item_records(order_items) + if !order_items.nil? + order_items.each do |item| + unless OrderItem.exists?(item.order_items_id) + order_item = OrderItem.new() + order_item.order_items_id = item.order_items_id + order_item.order_id = item.order_id + order_item.order_item_status = item.order_item_status + order_item.item_order_by = item.item_order_by + order_item.item_code = item.item_code + order_item.item_instance_code = item.item_instance_code + order_item.item_name = item.item_name + order_item.alt_name = item.alt_name + order_item.account_id = item.account_id + order_item.qty = item.qty + order_item.price = item.price + order_item.remark = item.remark + order_item.options = item.options + order_item.set_menu_items = item.set_menu_items + order_item.taxable = item.taxable + order_item.completed_by = item.completed_by + order_item.save + end + end + end + end + private def generate_custom_id self.order_items_id = SeedGenerator.generate_id(self.class.name, "ODI") diff --git a/app/views/api/sync/sync_data.json.jbuilder b/app/views/api/sync/sync_data.json.jbuilder new file mode 100644 index 00000000..736432ed --- /dev/null +++ b/app/views/api/sync/sync_data.json.jbuilder @@ -0,0 +1,2 @@ +json.status = true +json.message = 'Data successfully Sync' \ No newline at end of file diff --git a/app/views/reports/receipt_no/index.html.erb b/app/views/reports/receipt_no/index.html.erb index 6ce18cb3..5bfdeba8 100755 --- a/app/views/reports/receipt_no/index.html.erb +++ b/app/views/reports/receipt_no/index.html.erb @@ -56,6 +56,7 @@ <%= t("views.right_panel.detail.grand_total") %> +
<%= t("views.right_panel.detail.rnd_adj_sh") %> + <%= "actions" %> @@ -130,42 +131,48 @@ <%= number_with_precision(0, precision: precision.to_i ,delimiter: delimiter) %> <%end%> --> <% if !result.sale_taxes.empty? %> - <% num = 1 - if tax_flag && tax_count > 0 %> - <% while num <= tax_count %> - - <%= number_with_precision(0, precision: precision.to_i ,delimiter: delimiter) %> - - <% num += 1 - end %> - <% end %> - <% result.sale_taxes.each do |tax| %> - - <%= number_with_precision(tax.tax_payable_amount, precision: precision.to_i ,delimiter: delimiter) rescue '-' %> - - <%end%> - <% num = 1 - if tax_flag==false && tax_count > 0 %> - <% while num <= tax_count %> - - <%= number_with_precision(0, precision: precision.to_i ,delimiter: delimiter) %> - - <% num += 1 - end %> - <% end %> - <% else %> - <% @tax_profiles.each do |tax| %> - <%= number_with_precision(0, precision: precision.to_i ,delimiter: delimiter) rescue '-' %> - <% end %> + <% num = 1 + if tax_flag && tax_count > 0 %> + <% while num <= tax_count %> + + <%= number_with_precision(0, precision: precision.to_i ,delimiter: delimiter) %> + + <% num += 1 + end %> + <% end %> + <% result.sale_taxes.each do |tax| %> + + <%= number_with_precision(tax.tax_payable_amount, precision: precision.to_i ,delimiter: delimiter) rescue '-' %> + <%end%> - <% if result.old_grand_total.nil? %> - <%= number_with_precision(result.grand_total, precision: precision.to_i ,delimiter: delimiter) rescue '-' %> - <%else%> - <%= number_with_precision(result.old_grand_total, precision: precision.to_i ,delimiter: delimiter) rescue '-' %> - <%end%> + <% num = 1 + if tax_flag==false && tax_count > 0 %> + <% while num <= tax_count %> + + <%= number_with_precision(0, precision: precision.to_i ,delimiter: delimiter) %> + + <% num += 1 + end %> + <% end %> + <% else %> + <% @tax_profiles.each do |tax| %> + <%= number_with_precision(0, precision: precision.to_i ,delimiter: delimiter) rescue '-' %> + <% end %> + <%end%> + + <% if result.old_grand_total.nil? %> + <%= number_with_precision(result.grand_total, precision: precision.to_i ,delimiter: delimiter) rescue '-' %> + <%else%> + <%= number_with_precision(result.old_grand_total, precision: precision.to_i ,delimiter: delimiter) rescue '-' %> + <%end%> <%= result.rounding_adjustment.to_f rescue '-' %> <%= number_with_precision(result.grand_total, precision: precision.to_i ,delimiter: delimiter) %> + + + <%= link_to "Sync", reports_sync_data_path(:sale_id => result.sale_id), class:"btn btn-info wave-effects" %> + + <% end %> @@ -218,6 +225,7 @@ <%= rounding_adj.to_f rescue '-' %> <%= number_with_precision(grand_total.to_f, precision: precision.to_i ,delimiter: delimiter) rescue '-' %> +   @@ -232,6 +240,8 @@ <%= t("views.right_panel.detail.grand_total") %> +
<%= t("views.right_panel.detail.rnd_adj_sh") %> + + <%end%> diff --git a/config/initializers/action_controller.rb b/config/initializers/action_controller.rb index 85f38ec5..205c330a 100644 --- a/config/initializers/action_controller.rb +++ b/config/initializers/action_controller.rb @@ -21,11 +21,11 @@ class ActionController::Base end else # check for license file - # if check_license - # current_license(ENV["SX_PROVISION_URL"]) - # else - # redirect_to activate_path - # end + if check_license + current_license(ENV["SX_PROVISION_URL"]) + else + redirect_to activate_path + end end end diff --git a/config/puma.rb b/config/puma.rb index 99c23b5a..c42b69ae 100755 --- a/config/puma.rb +++ b/config/puma.rb @@ -1,11 +1,11 @@ -# application_path="#{File.expand_path("../..", __FILE__)}" -# directory application_path -# #environment ENV.fetch("RAILS_ENV") { "production" } -# environment "production" -# pidfile "#{application_path}/tmp/puma/pid" -# state_path "#{application_path}/tmp/puma/state" -# stdout_redirect "#{application_path}/log/puma.stdout.log", "#{application_path}/log/puma.stderr.log" -# port ENV.fetch("PORT") { 62158 } -# workers 2 -# preload_app! +application_path="#{File.expand_path("../..", __FILE__)}" +directory application_path +#environment ENV.fetch("RAILS_ENV") { "production" } +environment "production" +pidfile "#{application_path}/tmp/puma/pid" +state_path "#{application_path}/tmp/puma/state" +stdout_redirect "#{application_path}/log/puma.stdout.log", "#{application_path}/log/puma.stderr.log" +port ENV.fetch("PORT") { 62158 } +workers 2 +preload_app! diff --git a/config/routes.rb b/config/routes.rb index 57f0f51c..d896260f 100755 --- a/config/routes.rb +++ b/config/routes.rb @@ -102,6 +102,9 @@ scope "(:locale)", locale: /en|mm/ do post "request_bill" => "bill#request_bill" post "paymal_payment" => "payments#paymal_payment" get ":sale_id/void" => "void#overall_void" + + #API for sync cloud + post 'sync_data' => 'sync#sync_data' end #--------- Cashier ------------# @@ -526,7 +529,7 @@ scope "(:locale)", locale: /en|mm/ do get "induty/get_shift_by_date", to: "induty#show", as: "get_shift_by_induty" get "shiftsale_print/:id" , to: "shiftsale#print_close_receipt", as: "get_shift_id" post "print_sale_items", to: "saleitem#print_sale_items", as: "print_sale_items" - + get "sync_data", to:'receipt_no#sync_data', as:'sync_data' end # ----------- Inventory --------------------------- diff --git a/dump.rdb b/dump.rdb index fd3991ae..878ed105 100644 Binary files a/dump.rdb and b/dump.rdb differ