sync data record

This commit is contained in:
Zoey
2019-06-12 18:03:31 +06:30
parent ddc65d7b35
commit e1bb948a3d
11 changed files with 178 additions and 48 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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")

View File

@@ -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

View File

@@ -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")

View File

@@ -0,0 +1,2 @@
json.status = true
json.message = 'Data successfully Sync'

View File

@@ -56,6 +56,7 @@
<th><%= t("views.right_panel.detail.grand_total") %> +<br/>
<%= t("views.right_panel.detail.rnd_adj_sh") %>
</th>
<th><%= "actions" %></th>
</tr>
</thead>
<tbody>
@@ -130,42 +131,48 @@
<td><%= number_with_precision(0, precision: precision.to_i ,delimiter: delimiter) %></td>
<%end%> -->
<% if !result.sale_taxes.empty? %>
<% num = 1
if tax_flag && tax_count > 0 %>
<% while num <= tax_count %>
<td>
<%= number_with_precision(0, precision: precision.to_i ,delimiter: delimiter) %>
</td>
<% num += 1
end %>
<% end %>
<% result.sale_taxes.each do |tax| %>
<td>
<%= number_with_precision(tax.tax_payable_amount, precision: precision.to_i ,delimiter: delimiter) rescue '-' %>
</td>
<%end%>
<% num = 1
if tax_flag==false && tax_count > 0 %>
<% while num <= tax_count %>
<td>
<%= number_with_precision(0, precision: precision.to_i ,delimiter: delimiter) %>
</td>
<% num += 1
end %>
<% end %>
<% else %>
<% @tax_profiles.each do |tax| %>
<td><%= number_with_precision(0, precision: precision.to_i ,delimiter: delimiter) rescue '-' %></td>
<% end %>
<% num = 1
if tax_flag && tax_count > 0 %>
<% while num <= tax_count %>
<td>
<%= number_with_precision(0, precision: precision.to_i ,delimiter: delimiter) %>
</td>
<% num += 1
end %>
<% end %>
<% result.sale_taxes.each do |tax| %>
<td>
<%= number_with_precision(tax.tax_payable_amount, precision: precision.to_i ,delimiter: delimiter) rescue '-' %>
</td>
<%end%>
<% if result.old_grand_total.nil? %>
<td><%= number_with_precision(result.grand_total, precision: precision.to_i ,delimiter: delimiter) rescue '-' %></td>
<%else%>
<td><%= number_with_precision(result.old_grand_total, precision: precision.to_i ,delimiter: delimiter) rescue '-' %></td>
<%end%>
<% num = 1
if tax_flag==false && tax_count > 0 %>
<% while num <= tax_count %>
<td>
<%= number_with_precision(0, precision: precision.to_i ,delimiter: delimiter) %>
</td>
<% num += 1
end %>
<% end %>
<% else %>
<% @tax_profiles.each do |tax| %>
<td><%= number_with_precision(0, precision: precision.to_i ,delimiter: delimiter) rescue '-' %></td>
<% end %>
<%end%>
<% if result.old_grand_total.nil? %>
<td><%= number_with_precision(result.grand_total, precision: precision.to_i ,delimiter: delimiter) rescue '-' %></td>
<%else%>
<td><%= number_with_precision(result.old_grand_total, precision: precision.to_i ,delimiter: delimiter) rescue '-' %></td>
<%end%>
<td><%= result.rounding_adjustment.to_f rescue '-' %></td>
<td><%= number_with_precision(result.grand_total, precision: precision.to_i ,delimiter: delimiter) %></td>
<td>
<!-- ############### Need to Check SyncStatus ############# -->
<%= link_to "Sync", reports_sync_data_path(:sale_id => result.sale_id), class:"btn btn-info wave-effects" %>
<!-- ###################################################### -->
</td>
</tr>
<% end %>
<tr style="border-top:4px double #666;">
@@ -218,6 +225,7 @@
<td><b><%= rounding_adj.to_f rescue '-' %></b></td>
<td><b><%= number_with_precision(grand_total.to_f, precision: precision.to_i ,delimiter: delimiter) rescue '-' %></b></td>
<td></td>
</tr>
<tr>
<td colspan="3">&nbsp;</td>
@@ -232,6 +240,8 @@
<td><%= t("views.right_panel.detail.grand_total") %> +<br/>
<%= t("views.right_panel.detail.rnd_adj_sh") %>
</td>
<td>
</td>
</tr>
<%end%>
</tbody>

View File

@@ -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

View File

@@ -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!

View File

@@ -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 ---------------------------

BIN
dump.rdb

Binary file not shown.