diff --git a/app/assets/javascripts/OQS.js b/app/assets/javascripts/OQS.js index ec3db11f..2bbf07bb 100755 --- a/app/assets/javascripts/OQS.js +++ b/app/assets/javascripts/OQS.js @@ -31,30 +31,75 @@ $(document).on('turbolinks:load', function() { $(".oqs_append").addClass('hide') }); + $(".tables").on("click", function(){ + + var table_id = $(this).val(); + $('#table_id').val(table_id); + oqs_id = $("#oqs_id").val(); + if (table_id){ + var table = table_id + }else{ + var table = null + } + + if (oqs_id > 0) { + $(".oqs_click").removeClass('oqs_active'); + $(".queue_station").removeClass('queue_station_box'); + $("#completed").addClass('hide'); + $(".oqs_append").removeClass('hide'); + $("#oqs_active").addClass('oqs_active'); + $(".queue_station").addClass('queue_station_box'); + // oqs_id = $(this).find(".oqs-id").text(); + $("#oqs_active").attr('data-id',oqs_id); + var url = 'oqs/get_items/'+oqs_id; + + show_details(url,table); + }else{ + $("#completed").removeClass('hide') + $(".oqs_append").addClass('hide') + } + }); + $(".oqs_click").on("click", function(){ - $(".oqs_click").removeClass('oqs_active'); - $(".queue_station").removeClass('queue_station_box'); - $("#completed").addClass('hide'); - $(".oqs_append").removeClass('hide'); - $(this).addClass('oqs_active'); - $(".queue_station").addClass('queue_station_box'); - oqs_id = $(this).find(".oqs-id").text(); - console.log(oqs_id); - var url = 'oqs/get_items/'+oqs_id; - - show_details(url); + oqs_id = $(this).val(); + var table_id = $('#table_id').val(); + if (table_id){ + var table = table_id + }else{ + var table = null + } + + if (oqs_id > 0) { + $(".oqs_click").removeClass('oqs_active'); + $(".queue_station").removeClass('queue_station_box'); + $("#completed").addClass('hide'); + $(".oqs_append").removeClass('hide'); + $("#oqs_active").addClass('oqs_active'); + $(".queue_station").addClass('queue_station_box'); + // oqs_id = $(this).find(".oqs-id").text(); + $("#oqs_active").attr('data-id',oqs_id); + var url = 'oqs/get_items/'+oqs_id; + + show_details(url,table); + }else{ + $("#completed").removeClass('hide') + $(".oqs_append").addClass('hide') + } + }); //End Click - function show_details(url){ + function show_details(url,table_id){ var oqs_append = $('.oqs_append'); oqs_append.empty(); var filter = $('.filter').text(); + + console.log(table_id) //Start Ajax $.ajax({ type: "GET", url: url, - data: {'filter':filter}, + data: {'filter':filter,'table_id':table_id}, dataType: "json", success: function(data) { for(var field in data) { @@ -67,7 +112,8 @@ $(document).on('turbolinks:load', function() { } var date = new Date(data[field]["created_at"]); - var show_date = date.getDate() + "-" + (date.getMonth()+1) + "-" + date.getFullYear() + ' ' + date.getHours()+ ':' + date.getMinutes(); + // var show_date = date.getDate() + "-" + (date.getMonth()+1) + "-" + date.getFullYear() + ' ' + date.getHours()+ ':' + date.getMinutes(); + var show_date =date.getHours()+ ':' + date.getMinutes() +' '+(date.getHours() >= 12 ? 'PM' : 'AM'); var set_menu_items = data[field]["set_menu_items"]; var set_instance_items = ""; if(set_menu_items!=null){ @@ -100,7 +146,7 @@ $(document).on('turbolinks:load', function() { +set_instance_items +'

' - +'

'+ options +'

' + +'

'+ options +'

' +'' +'Order at - ' diff --git a/app/assets/javascripts/addorder.js b/app/assets/javascripts/addorder.js index 69ac19d4..9cc2f774 100755 --- a/app/assets/javascripts/addorder.js +++ b/app/assets/javascripts/addorder.js @@ -760,7 +760,6 @@ $(function() { $("#oqs_loading_wrapper").show(); type = window.location.href.indexOf("quick_service"); - if (type != -1) { type = 'quick_service' var table_type = $('#table_type').text(); diff --git a/app/assets/javascripts/channels/order_queue_station.js b/app/assets/javascripts/channels/order_queue_station.js index d2b502d4..c8b59231 100755 --- a/app/assets/javascripts/channels/order_queue_station.js +++ b/app/assets/javascripts/channels/order_queue_station.js @@ -5,8 +5,7 @@ App.order_queue_station = App.cable.subscriptions.create('OrderQueueStationChann disconnected: function() {}, - received: function(data) { - // console.log(data.order); + received: function(data) { var oqs_id = $('.oqs_active').attr('data-id'); items = data.order; for(var field in items) { diff --git a/app/controllers/oqs/home_controller.rb b/app/controllers/oqs/home_controller.rb index 58b2910b..19d4c17f 100755 --- a/app/controllers/oqs/home_controller.rb +++ b/app/controllers/oqs/home_controller.rb @@ -7,7 +7,8 @@ class Oqs::HomeController < BaseOqsController # @queue_items_details = queue_items_query(false) # Query for OQS with delivery status true - + @tables = DiningFacility.all.active.order('status desc') + @rooms = Room.all.active.order('status desc') @filter = params[:filter] @@ -113,7 +114,11 @@ class Oqs::HomeController < BaseOqsController def get_items_by_oqs oqs_id = params[:id] filter = params[:filter] - items = queue_items_query(false,oqs_id,filter) + table_id = params[:table_id] + puts params + puts table_id + puts "sssssssssssss" + items = queue_items_query(false,oqs_id,filter,table_id) if !items.empty? items.each do |item| if !item.set_menu_items.nil? @@ -151,13 +156,20 @@ class Oqs::HomeController < BaseOqsController # Query for OQS with delivery status - def queue_items_query(status,oqs_id=nil,filter) + def queue_items_query(status,oqs_id=nil,filter,table_id) if oqs_id == nil oqs = '' else oqs = "and assigned_order_items.order_queue_station_id = '#{oqs_id}' " end + if table_id.to_i>0 + table = "and df.id = '#{table_id}' " + + else + table = '' + end + query = AssignedOrderItem.select("assigned_order_items.assigned_order_item_id, oqs.id as station_id, oqs.station_name, oqs.is_active, oqpz.zone_id, @@ -173,7 +185,7 @@ class Oqs::HomeController < BaseOqsController left join booking_orders as bo on bo.order_id = assigned_order_items.order_id left join bookings as bk on bk.booking_id = bo.booking_id left join dining_facilities as df on df.id = bk.dining_facility_id") - .where("assigned_order_items.delivery_status = #{status} AND assigned_order_items.created_at >= '#{Time.now.beginning_of_day.utc}' #{oqs} ") + .where("assigned_order_items.delivery_status = #{status} AND assigned_order_items.created_at >= '#{Time.now.beginning_of_day.utc}' #{oqs} #{table}") query = query.where("df.name LIKE ? OR odt.order_id LIKE ? OR odt.item_name LIKE ? OR cus.name = '#{filter}'","%#{filter}%","%#{filter}%","%#{filter}%",) .order("assigned_order_items.assigned_order_item_id desc") .group("odt.order_items_id") diff --git a/app/models/order.rb b/app/models/order.rb index 15ce56c3..739de71a 100755 --- a/app/models/order.rb +++ b/app/models/order.rb @@ -286,23 +286,51 @@ class Order < ApplicationRecord #Process order items and send to order queue def process_order_queue #Send to background job for processing - - cup_status = `#{"sudo service cups status"}` + order = Order.find(self.id) + cup_status = `#{"sudo service cups status"}` print_status = check_cup_status(cup_status) - + sidekiq = Lookup.find_by_lookup_type("sidekiq") + if print_status - OrderQueueProcessorJob.perform_later(self.id, self.table_id) + if !sidekiq.nil? + OrderQueueProcessorJob.perform_later(self.id, self.table_id) + else + if order + oqs = OrderQueueStation.new + oqs.process_order(order, self.table_id) + end + assign_order = AssignedOrderItem.assigned_order_item_by_job(self.id) + ActionCable.server.broadcast "order_queue_station_channel",order: assign_order + end else cup_start = `#{"sudo service cups start"}` cup_status = `#{"sudo service cups status"}` print_status = check_cup_status(cup_status) if print_status - OrderQueueProcessorJob.perform_later(self.id, self.table_id) + if !sidekiq.nil? + OrderQueueProcessorJob.perform_later(self.id, self.table_id) + else + if order + oqs = OrderQueueStation.new + oqs.process_order(order, self.table_id) + end + assign_order = AssignedOrderItem.assigned_order_item_by_job(self.id) + ActionCable.server.broadcast "order_queue_station_channel",order: assign_order + end else msg = ' Print Error ! Please contact to service' ActionCable.server.broadcast "call_waiter_channel",table: msg,time:'print_error' - OrderQueueProcessorJob.perform_later(self.id, self.table_id) + if !sidekiq.nil? + OrderQueueProcessorJob.perform_later(self.id, self.table_id) + else + if order + oqs = OrderQueueStation.new + oqs.process_order(order, self.table_id) + end + assign_order = AssignedOrderItem.assigned_order_item_by_job(self.id) + ActionCable.server.broadcast "order_queue_station_channel",order: assign_order + end end end @@ -310,8 +338,18 @@ class Order < ApplicationRecord #Process order items and send to order queue def self.pay_process_order_queue(id,table_id) - #Send to background job for processing - OrderQueueProcessorJob.perform_later(id, table_id) + sidekiq = Lookup.find_by_lookup_type("sidekiq") + if !sidekiq.nil? + OrderQueueProcessorJob.perform_later(id, table_id) + else + order = Order.find(id) + if order + oqs = OrderQueueStation.new + oqs.process_order(order, table_id) + end + assign_order = AssignedOrderItem.assigned_order_item_by_job(id) + ActionCable.server.broadcast "order_queue_station_channel",order: assign_order + end end def check_cup_status(status) diff --git a/app/models/receipt.rb b/app/models/receipt.rb new file mode 100644 index 00000000..40ad3176 --- /dev/null +++ b/app/models/receipt.rb @@ -0,0 +1,2 @@ +class Receipt < ApplicationRecord +end diff --git a/app/models/receipt_detail.rb b/app/models/receipt_detail.rb new file mode 100644 index 00000000..c96e3d4e --- /dev/null +++ b/app/models/receipt_detail.rb @@ -0,0 +1,2 @@ +class ReceiptDetail < ApplicationRecord +end diff --git a/app/models/sale.rb b/app/models/sale.rb index 54c60eb3..b652d883 100755 --- a/app/models/sale.rb +++ b/app/models/sale.rb @@ -2011,6 +2011,44 @@ end .group("bookings.booking_id") end + def self.all_receipts + query = Sale.select("sales.*, sale_payments.created_at as receipt_close_time, + case when (sale_audits.action='SALEPAYMENT') then sale_audits.remark else 0 end as remark, + case when (sale_taxes.tax_name='Service Charges') then sale_taxes.tax_payable_amount else 0 end as service_charges, + SUM(case when (sale_payments.payment_method='mpu') then sale_payments.payment_amount else 0 end) as mpu_amount, + SUM(case when (sale_payments.payment_method='master') then sale_payments.payment_amount else 0 end) as master_amount, + SUM(case when (sale_payments.payment_method='visa') then sale_payments.payment_amount else 0 end) as visa_amount, + SUM(case when (sale_payments.payment_method='jcb') then sale_payments.payment_amount else 0 end) as jcb_amount, + SUM(case when (sale_payments.payment_method='unionpay') then sale_payments.payment_amount else 0 end) as unionpay_amount, + SUM(case when (sale_payments.payment_method='creditnote') then sale_payments.payment_amount else 0 end) as credit_amount, + SUM(case when (sale_payments.payment_method='foc') then sale_payments.payment_amount else 0 end) as foc_amount, + SUM(case when (sale_items.status='foc') then sale_items.price else 0 end) as item_foc, + SUM(case when (sale_items.status='Discount') then sale_items.price else 0 end) as item_discount, + SUM(sale_items.qty) as qty, + sales.cashier_name as cashier_name, + surveys.child as child, + surveys.adult as adult") + .joins("join sale_payments on sale_payments.sale_id = sales.sale_id") + .joins("join sale_taxes on sale_taxes.sale_id = sales.sale_id") + .joins("join sale_items on sale_items.sale_id = sales.sale_id") + .joins("join sale_audits on sale_audits.sale_id = sales.sale_id") + .joins("left join surveys on surveys.receipt_no = sales.receipt_no") + + query = query.where("sale_status != 'new' && sale_payments.payment_amount > 0") + .group("sale_id") + return query +end + +def self.all_receipt_details + query = SaleItem.select("sale_items.*, sale_payments.created_at as receipt_close_time, + sales.requested_at as requested_at, sales.receipt_no as receipt_no,sales.sale_id as s_id") + .joins("join sale_payments on sale_payments.sale_id = sale_items.sale_id") + .joins("join sales on sales.sale_id = sale_items.sale_id") + .group("sale_items.sale_item_id") + query = query.where("qty > 0 and sales.sale_status !='new'") + return query +end + private def generate_custom_id diff --git a/app/views/oqs/home/index.html.erb b/app/views/oqs/home/index.html.erb old mode 100755 new mode 100644 index 33ee74b7..585f9968 --- a/app/views/oqs/home/index.html.erb +++ b/app/views/oqs/home/index.html.erb @@ -1,137 +1,115 @@ -
-
+
+
- <%= form_tag oqs_root_path, :method => :get do %>
- - + +
-
- +
+ +
- +
- <% end %>
- - - - - - -
- - + + +
+
+
-
+
<% @queue_completed_item.each do |qid| %>
-
- <%if qid.type.present?%> - <%= qid.type %>-<%= qid.zone %> - <%else%> - - <%end%> - - - <%= qid.order_id %> -
-

- - <%= qid.item_name %> - [x - - <%= qid.qty %> - ] - <% if !qid.set_menu_items.nil? %> - <% qid.set_menu_items.each do |item_instance|%> -
- <%= item_instance %> - - <% end %> - <% end %> -

- -

<%= qid.options == "[]"? "" : qid.options %>

+
+ <%if qid.type.present?%> + <%= qid.type %>-<%= qid.zone %> + <%else%> + + <%end%> - - Order at - - - <%= qid.created_at.utc.getlocal.strftime("%d-%m-%Y %I:%M %p") %> -
- Order By - - <%= qid.item_order_by %> - + + <%= qid.order_id %> +
+

+ + <%= qid.item_name %> + [x + + <%= qid.qty %> + ] + <% if !qid.set_menu_items.nil? %> + <% qid.set_menu_items.each do |item_instance|%> +
+ <%= item_instance %> + + <% end %> + <% end %> +

+ +

<%= qid.options == "[]"? "" : qid.options %>

+ + + Order at - + + <%= qid.created_at.utc.getlocal.strftime("%d-%m-%Y %I:%M %p") %> +
+ Order By - + <%= qid.item_order_by %> + +
- - +
-
- <% - end - %> +
+ <% end %>
-
+
- - -
-
+
+
+
-
+ - - - + --> + +
- + -->
+
reply Back <% if ENV["SERVER_MODE"] != "cloud" %> +
+ +
+ <% end %> + + + + + + + +
+ + +
+
+ <% + @queue_completed_item.each do |qid| + %> +
+
+
+ <%if qid.type.present?%> + <%= qid.type %>-<%= qid.zone %> + <%else%> + + <%end%> + + + <%= qid.order_id %> +
+

+ + <%= qid.item_name %> + [x + + <%= qid.qty %> + ] + <% if !qid.set_menu_items.nil? %> + <% qid.set_menu_items.each do |item_instance|%> +
+ <%= item_instance %> + + <% end %> + <% end %> +

+ +

<%= qid.options == "[]"? "" : qid.options %>

+ + + Order at - + + <%= qid.created_at.utc.getlocal.strftime("%d-%m-%Y %I:%M %p") %> +
+ Order By - + <%= qid.item_order_by %> + +
+
+ + + + +
+
+ <% + end + %> +
+
+ + + + +
+
+ +
+ + + +
+
+
+
ORDER DETAILS
+
+
+
+ + + + + + + + + + + + + + + + + + + +
Order ByOrder At
+
+
+ + + + + + + + + + +
ItemsQTY
+
+
+
+
+ + +
+ + reply Back + <% if ENV["SERVER_MODE"] != "cloud" %> + + <%end%> +
+ + + diff --git a/db/migrate/20180306044939_create_receipts.rb b/db/migrate/20180306044939_create_receipts.rb new file mode 100644 index 00000000..22f3b0fa --- /dev/null +++ b/db/migrate/20180306044939_create_receipts.rb @@ -0,0 +1,42 @@ +class CreateReceipts < ActiveRecord::Migration[5.1] + def change + create_table :receipts do |t| + t.string :client_code, :limit => 16, :null => false + t.string :client_name, :null => false + t.string :shop_code, :limit => 16, :null => false + t.string :shop_name, :null => false + t.integer :receipt_no, :limit => 8, :null => false + t.datetime :transaction_time, :null => false + t.datetime :receipt_open_time, :null => false + t.datetime :receipt_close_time, :null => false + t.decimal :gross_sales, :null => false, :default => 0 + t.decimal :discount_amount, :null => false, :default => 0 + t.decimal :sales, :null => false, :default => 0 + t.decimal :tax_amount, :null => false, :default => 0 + t.decimal :service_charges, :null => false, :default => 0 + t.decimal :net_sales, :null => false, :default => 0 + t.decimal :credit_card_sales, :null => false, :default => 0 + t.decimal :voucher_sales, :null => false, :default => 0 + t.decimal :foc_amount, :null => false, :default => 0 + t.decimal :staff_meal_amount, :null => false, :default => 0 + t.decimal :rounding_amount, :null => false, :default => 0 + t.decimal :raw_wastage_amount, :null => false, :default => 0 + t.decimal :semi_wastage_amount, :null => false, :default => 0 + t.decimal :wastage_amount, :null => false, :default => 0 + t.decimal :spoilage_amount, :null => false, :default => 0 + t.decimal :sampling_amount, :null => false, :default => 0 + t.integer :qty, :null => false, :default => 0 + t.integer :no_of_pax, :null => false, :default => 0 + t.integer :no_of_adult, :null => false, :default => 0 + t.integer :no_of_child, :null => false, :default => 0 + t.string :terminal_id, :null => false + t.string :employee_code, :limit => 4, :null => false + t.string :employee_name, :null => false + t.boolean :is_valid, :null => false, :default => false + t.boolean :overing, :null => false, :default => false + t.boolean :cancle, :null => false, :default => false + t.text :remarks + t.timestamps + end + end +end diff --git a/db/migrate/20180306045018_create_receipt_details.rb b/db/migrate/20180306045018_create_receipt_details.rb new file mode 100644 index 00000000..5fd38160 --- /dev/null +++ b/db/migrate/20180306045018_create_receipt_details.rb @@ -0,0 +1,43 @@ +class CreateReceiptDetails < ActiveRecord::Migration[5.1] + def change + create_table :receipt_details do |t| + t.string :client_code, :null => false + t.string :client_name, :null => false + t.string :shop_code, :null => false + t.string :shop_name, :null => false + t.string :receipt_no, :null => false + t.datetime :receipt_date, :null => false + t.datetime :transaction_date, :null => false + t.integer :item_sequence, :null => false + t.string :category_code, :null => false + t.string :category_name, :null => false + t.string :sub_category_code, :null => false + t.string :sub_category_name, :null => false + t.string :report_group_code, :null => false + t.string :report_group_name, :null => false + t.string :item_code, :null => false + t.string :item_name, :null => false + t.integer :qty, :null => false, :default => 0 + t.string :transaction_type, :null => false + t.decimal :gross_sales, :null => false, :default => 0 + t.string :discount_code, :null => false + t.decimal :discount_amount, :null => false, :default => 0 + t.decimal :sales, :null => false, :default => 0 + t.decimal :tax_amount, :null => false, :default => 0 + t.decimal :service_charges, :null => false, :default => 0 + t.decimal :net_sales, :null => false, :default => 0 + t.boolean :is_foc, :null => false, :default => false + t.boolean :is_set_item, :null => false, :default => false + t.boolean :is_staff_meal, :null => false, :default => false + t.boolean :is_raw_wastage, :null => false, :default => false + t.boolean :is_semi_wastage, :null => false, :default => false + t.boolean :is_wastage, :null => false, :default => false + t.boolean :is_spoilage, :null => false, :default => false + t.boolean :is_sampling, :null => false, :default => false + t.boolean :tax_able, :null => false, :default => false + t.boolean :is_void, :null => false, :default => false + t.text :remarks + t.timestamps + end + end +end \ No newline at end of file diff --git a/db/sym_master.sql b/db/sym_master.sql index 89abaf5b..3677fc2f 100755 --- a/db/sym_master.sql +++ b/db/sym_master.sql @@ -88,6 +88,10 @@ delete from sym_node; insert into sym_node_group_link (source_node_group_id, target_node_group_id, data_event_action) values ('cloud', 'sx', 'P'); # Create Trigger for Setting Channel + + insert into sym_trigger + (trigger_id,source_table_name,channel_id,last_update_time,create_time) + values('seed_generators','seed_generators','setting',current_timestamp,current_timestamp); insert into sym_trigger (trigger_id,source_table_name,channel_id,last_update_time,create_time) @@ -119,11 +123,11 @@ delete from sym_node; insert into sym_trigger (trigger_id,source_table_name,channel_id,last_update_time,create_time) - values('tax_profiles','customers','setting',current_timestamp,current_timestamp); + values('tax_profiles','tax_profiles','setting',current_timestamp,current_timestamp); insert into sym_trigger (trigger_id,source_table_name,channel_id,last_update_time,create_time) - values('display_images','customers','setting',current_timestamp,current_timestamp); + values('display_images','display_images','setting',current_timestamp,current_timestamp); # Create Trigger for Dining Channel @@ -339,6 +343,11 @@ delete from sym_node; # Add triggers for tables with router # Setting Channel # From cloud to Master + + insert into sym_trigger_router + (trigger_id,router_id,initial_load_order,last_update_time,create_time) + values('seed_generators','cloud_2_sx', 100, current_timestamp, current_timestamp); + insert into sym_trigger_router (trigger_id,router_id,initial_load_order,last_update_time,create_time) values('lookups','cloud_2_sx', 100, current_timestamp, current_timestamp); @@ -376,6 +385,11 @@ delete from sym_node; values('display_images','cloud_2_sx', 100, current_timestamp, current_timestamp); # Setting Channel # From Master to cloud + + insert into sym_trigger_router + (trigger_id,router_id,initial_load_order,last_update_time,create_time) + values('seed_generators','sx_2_cloud', 100, current_timestamp, current_timestamp); + insert into sym_trigger_router (trigger_id,router_id,initial_load_order,last_update_time,create_time) values('lookups','sx_2_cloud', 100, current_timestamp, current_timestamp); diff --git a/lib/tasks/receipt.rake b/lib/tasks/receipt.rake new file mode 100644 index 00000000..fa24f481 --- /dev/null +++ b/lib/tasks/receipt.rake @@ -0,0 +1,238 @@ +namespace :consolidate do + desc "Receipt" + task :receipt => :environment do + Receipt.delete_all + sales = Sale.all_receipts + + shop = Shop.find(1) + sales.each do |sale| + receipt = Receipt.new + receipt.client_code = shop.id + receipt.client_name = shop.id + receipt.shop_code = shop.id + receipt.shop_name = shop.id + receipt.receipt_no = sale.receipt_no + receipt.transaction_time = sale.requested_at #requet-at + receipt.receipt_open_time = sale.requested_at #before disco/after tax /after/ser_char + receipt.receipt_close_time = sale.receipt_close_time + receipt.gross_sales = sale.total_amount + sale.total_tax #before disco/after tax /after/ser_char + receipt.discount_amount = sale.total_discount + sale.item_discount + receipt.sales = sale.grand_total #after disco/after tax /after/ser_char /no roundingadn + receipt.tax_amount = sale.total_tax + receipt.service_charges = sale.service_charges + receipt.net_sales = sale.total_amount + sale.total_discount #after disco/before tax / no rounding + receipt.credit_card_sales = sale.mpu_amount + sale.master_amount + sale.visa_amount + sale.jcb_amount + sale.unionpay_amount + sale.credit_amount # + receipt.voucher_sales = 0 + receipt.foc_amount = sale.foc_amount + sale.item_foc + receipt.staff_meal_amount = 0 + receipt.rounding_amount = sale.rounding_adjustment + receipt.raw_wastage_amount = 0 + receipt.semi_wastage_amount = 0 + receipt.wastage_amount = 0 + receipt.spoilage_amount = 0 + receipt.sampling_amount = 0 + receipt.qty = sale.qty + receipt.no_of_pax = 0 + receipt.no_of_adult = (sale.adult) ? sale.adult : 0 + receipt.no_of_child = (sale.child) ? sale.child : 0 + receipt.terminal_id = ShiftSale.find(sale.shift_sale_id).cashier_terminal_id + receipt.employee_code = Employee.find(sale.cashier_id).emp_id + receipt.employee_name = sale.cashier_name + receipt.is_valid = (sale.payment_status=="void") ? false : true #void is false + receipt.overing =false + receipt.cancle = (sale.payment_status=="void") ? false : true # void is cancel + receipt.remarks = sale.remark + receipt.save + end + end + + desc "Receipt Detail" + task :receipt_detail => :environment do + ReceiptDetail.delete_all + sales = Sale.all_receipt_details + + shop = Shop.find(1) + + sale_id = '' + count = 0 + @total_qty = 0 + @total_gross_sales = 0 + @total_sales = 0 + @total_net_sales = 0 +@z =1 + @item_sequence = 1 + sale_count = sales.to_a.count + sales.each do |sale| + + if sale.qty > 0 + + if sale.item_instance_code !=nil + menu_category = MenuCategory.find(MenuItem.find_by_item_code(sale.product_code).menu_category_id) + name = menu_category.name + code = menu_category.code + menu_item = MenuItem.find_by_item_code(sale.product_code) + menu_name = menu_item.name + menu_code = menu_item.item_code + menu_type = menu_item.type + end + if sale.product_code == "Other Charges" && sale.status == "Other Charges" + code = sale.product_code + name = sale.product_code + menu_name = sale.product_code + menu_code = sale.product_code + menu_type = sale.product_code + end + + @receipt_no = sale.receipt_no + @requested_at = sale.requested_at + + if sale_id == sale.sale_id || count == 0 || @z ==0 + @total_qty += sale.qty + @total_gross_sales += sale.price + @total_sales += sale.price + @total_net_sales += sale.taxable_price + end + + if sale_id != sale.sale_id && count !=0 + + receipt = ReceiptDetail.new + receipt.client_code = shop.id + receipt.client_name = shop.id + receipt.shop_code = shop.id + receipt.shop_name = shop.id + receipt.receipt_no = @receipt_no + receipt.receipt_date = @requested_at #requet-at + receipt.transaction_date = @requested_at #before disco/after tax /after/ser_char + receipt.item_sequence = @item_sequence + receipt.category_code = '' + receipt.category_name = '' + receipt.sub_category_code = 0 + receipt.sub_category_name = 0 + receipt.report_group_code = 0 + receipt.report_group_name = 0 + receipt.item_code = '' + receipt.item_name = '' + receipt.qty = @total_qty + receipt.transaction_type = "Tender" + receipt.gross_sales = @total_gross_sales + receipt.discount_code = '' + receipt.discount_amount = 0 + receipt.sales = @total_sales + receipt.tax_amount = 0 + receipt.service_charges = 0 + receipt.net_sales = @total_net_sales + receipt.is_set_item = false + receipt.is_foc = false + receipt.is_staff_meal = false + receipt.is_raw_wastage = false + receipt.is_semi_wastage = false + receipt.is_wastage = false + receipt.is_spoilage = false + receipt.is_sampling = false + receipt.tax_able = false + receipt.is_void = false + receipt.remarks = "" + receipt.save + @type = "Tender" + @item_sequence = 1 + @total_qty = 0 + @total_gross_sales = 0 + @total_sales = 0 + @total_net_sales = 0 + @z = 0 + end + + + discount_amount = (sale.status=="Discount") ? sale.price : 0 + receipt = ReceiptDetail.new + receipt.client_code = shop.id + receipt.client_name = shop.id + receipt.shop_code = shop.id + receipt.shop_name = shop.id + receipt.receipt_no = sale.receipt_no + receipt.receipt_date = sale.requested_at #requet-at + receipt.transaction_date = sale.requested_at #before disco/after tax /after/ser_char + receipt.item_sequence = @item_sequence + receipt.category_code = name + receipt.category_name = code + receipt.sub_category_code = 0 + receipt.sub_category_name = 0 + receipt.report_group_code = 0 + receipt.report_group_name = 0 + receipt.item_code = menu_name + receipt.item_name = menu_code + receipt.qty = sale.qty + receipt.transaction_type = (sale.status==nil) ? "Sales" : sale.status + receipt.gross_sales = sale.price + receipt.discount_code = sale.sale_item_id + receipt.discount_amount = discount_amount + receipt.sales = sale.price + receipt.tax_amount = 0 + receipt.service_charges = 0 + receipt.net_sales = sale.taxable_price + receipt.is_set_item = (menu_type=="SetMenuItem")? true : false + receipt.is_foc = (sale.status=="foc") ? true : false + receipt.is_staff_meal = false + receipt.is_raw_wastage = false + receipt.is_semi_wastage = false + receipt.is_wastage = false + receipt.is_spoilage = false + receipt.is_sampling = false + receipt.tax_able = sale.is_taxable + receipt.is_void = (sale.status=="void")? true : false + receipt.remarks = sale.remark + receipt.save + + end + + @z += 1 + + + count += 1 + @item_sequence += 1 + sale_id = sale.sale_id + end + + if count == sale_count + receipt = ReceiptDetail.new + receipt.client_code = shop.id + receipt.client_name = shop.id + receipt.shop_code = shop.id + receipt.shop_name = shop.id + receipt.receipt_no = @receipt_no + receipt.receipt_date = @requested_at #requet-at + receipt.transaction_date = @requested_at #before disco/after tax /after/ser_char + receipt.item_sequence = @item_sequence + receipt.category_code = '' + receipt.category_name = '' + receipt.sub_category_code = 0 + receipt.sub_category_name = 0 + receipt.report_group_code = 0 + receipt.report_group_name = 0 + receipt.item_code = '' + receipt.item_name = '' + receipt.qty = @total_qty + receipt.transaction_type = "Tender" + receipt.gross_sales = @total_gross_sales + receipt.discount_code = '' + receipt.discount_amount = 0 + receipt.sales = @total_sales + receipt.tax_amount = 0 + receipt.service_charges = 0 + receipt.net_sales = @total_net_sales + receipt.is_set_item = false + receipt.is_foc = false + receipt.is_staff_meal = false + receipt.is_raw_wastage = false + receipt.is_semi_wastage = false + receipt.is_wastage = false + receipt.is_spoilage = false + receipt.is_sampling = false + receipt.tax_able = false + receipt.is_void = false + receipt.remarks = "" + receipt.save + end + end + +end \ No newline at end of file diff --git a/spec/models/receipt_detail_spec.rb b/spec/models/receipt_detail_spec.rb new file mode 100644 index 00000000..017ee888 --- /dev/null +++ b/spec/models/receipt_detail_spec.rb @@ -0,0 +1,5 @@ +require 'rails_helper' + +RSpec.describe ReceiptDetail, type: :model do + pending "add some examples to (or delete) #{__FILE__}" +end diff --git a/spec/models/receipt_spec.rb b/spec/models/receipt_spec.rb new file mode 100644 index 00000000..3b140805 --- /dev/null +++ b/spec/models/receipt_spec.rb @@ -0,0 +1,5 @@ +require 'rails_helper' + +RSpec.describe Receipt, type: :model do + pending "add some examples to (or delete) #{__FILE__}" +end