diff --git a/app/controllers/transactions/sales_controller.rb b/app/controllers/transactions/sales_controller.rb index be370371..2a823888 100755 --- a/app/controllers/transactions/sales_controller.rb +++ b/app/controllers/transactions/sales_controller.rb @@ -236,6 +236,155 @@ class Transactions::SalesController < ApplicationController redirect_to root_path end end + + def overall_void + 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) + + if sale.discount_type == "member_discount" + sale.update_attributes(total_discount: 0) + sale.compute_by_sale_items(sale_id, sale.sale_items,0,order_source) + end + + # update count for shift sale + if(sale.sale_status == "completed") + if sale.shift_sale_id != nil + shift = ShiftSale.find(sale.shift_sale_id) + shift.calculate(sale_id, "void") + end + else + # void before sale payment complete + if sale.shift_sale_id != nil + shift = ShiftSale.find(sale.shift_sale_id) + shift.total_void = shift.total_void + sale.grand_total + shift.save + end + end + + sale.rounding_adjustment = 0.0 + sale.payment_status = 'void' + sale.sale_status = 'void' + sale.save + + # No Need + # bookings = sale.bookings + # bookings.each do |booking| + # orders = booking.orders + # orders.each do |order| + # # order.status = 'void' + # end + # end + + if sale.bookings[0].dining_facility_id.to_i > 0 + table_avaliable = true + table_count = 0 + table = sale.bookings[0].dining_facility + table.bookings.each do |booking| + if booking.booking_status != 'moved' + if booking.sale_id + if booking.sale.sale_status != 'completed' && booking.sale.sale_status != 'void' && booking.sale.sale_status != 'spoile' && booking.sale.sale_status != 'waste' + table_avaliable = false + table_count += 1 + else + table_avaliable = true + end + else + table_avaliable = false + table_count += 1 + end + end + end + + if table_avaliable && table_count == 0 + table.status = 'available' + table.save + end + else + table = nil + end + + # FOr Sale Audit + action_by = current_user.name + if access_code != "null" && current_user.role == "cashier" + action_by = Employee.find_by_emp_id(access_code).name + end + + # 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" ) + + # For Print + + member_info = nil + rebate_amount = nil + current_balance = nil + + # For Cashier by Zone + bookings = Booking.where("sale_id='#{sale_id}'") + if bookings.count > 1 + # for Multiple Booking + if bookings[0].dining_facility_id.to_i>0 + table = DiningFacility.find(bookings[0].dining_facility_id) + end + end + + if bookings[0].dining_facility_id.to_i > 0 + cashier_zone = CashierTerminalByZone.find_by_zone_id(table.zone_id) + cashier_terminal = CashierTerminal.find(cashier_zone.cashier_terminal_id) + else + shift = ShiftSale.find(sale.shift_sale_id) + cashier_terminal = CashierTerminal.find(shift.cashier_terminal_id) + end + + + # if ENV["SERVER_MODE"] != "cloud" #no print in cloud server + unique_code = "ReceiptBillPdf" + customer= Customer.find(sale.customer_id) + + #shop detail + shop_details = Shop.find(1) + # get member information + rebate = MembershipSetting.find_by_rebate(1) + if customer.membership_id != nil && rebate + member_info = Customer.get_member_account(customer) + rebate_amount = Customer.get_membership_transactions(customer,sale.receipt_no) + # current_balance = SaleAudit.paymal_search(sale_id) + current_balance = 0 + end + + # get printer info + print_settings=PrintSetting.find_by_unique_code(unique_code) + # Calculate Food and Beverage Total + item_price_by_accounts = SaleItem.calculate_price_by_accounts(sale.sale_items) + discount_price_by_accounts = SaleItem.get_discount_price_by_accounts(sale.sale_items) + + printer = Printer::ReceiptPrinter.new(print_settings) + filename, sale_receipt_no, printer_name = printer.print_receipt_bill(print_settings,cashier_terminal,sale.sale_items,sale,customer.name, item_price_by_accounts, discount_price_by_accounts, member_info,rebate_amount,shop_details, "VOID",current_balance,nil) + result = { + :filepath => filename, + :printer_model => print_settings.brand_name, + :printer_url => print_settings.api_settings + } + + # Mobile Print + render :json => result.to_json + # end + + #end print + + # update complete order items in oqs + SaleOrder.where("sale_id = '#{ sale_id }'").find_each do |sodr| + AssignedOrderItem.where("order_id = '#{ sodr.order_id }'").find_each do |aoi| + aoi.delivery_status = 1 + aoi.save + end + end + end + end + private # Use callbacks to share common setup or constraints between actions. diff --git a/app/views/transactions/sales/show.html.erb b/app/views/transactions/sales/show.html.erb index 049ca8c9..fd98e214 100755 --- a/app/views/transactions/sales/show.html.erb +++ b/app/views/transactions/sales/show.html.erb @@ -1,4 +1,3 @@ -
| <%= t("views.right_panel.detail.receipt_date") %> | -<%= t("views.right_panel.detail.receipt_no") %> | -<%= t :cashier %> | -<%= t("views.right_panel.detail.sales_status") %> | -<%= t("views.right_panel.detail.receipt_generated_at") %> | -|
|---|---|---|---|---|---|
| <%= @sale.receipt_date.strftime("%d-%M-%Y") %> | -<%= @sale.receipt_no %> | -<%= @sale.cashier_name rescue '-' %> | -<%= @sale.sale_status %> | -<%= @sale.requested_at.strftime("%m-%d-%Y %H:%M %p") %> | -|
| <%= t :sale %> <%= t("views.right_panel.detail.item_txt") %> <%= t("views.right_panel.detail.name_txt2") %> | -<%= t("views.right_panel.detail.qty") %> | -<%= t("views.right_panel.detail.unit_price") %> | -<%= t("views.right_panel.detail.total_price") %> | -<%= t("views.right_panel.detail.created_at") %> | -<%= t("views.right_panel.detail.remark") %> | -
| <%=s.product_name rescue ' '%> | -<%=s.qty rescue ' '%> | -<%= number_with_precision(s.unit_price, :precision => 2, :delimiter => ',') rescue ' '%> | -<%= number_with_precision(s.price, :precision => 2, :delimiter => ',') rescue ' '%> | -<%=l s.created_at.utc.getlocal , :format => :short rescue ' ' %> | -<%=s.remark rescue ' '%> | -
| - | <%= t("views.right_panel.detail.total") %> | -<%= number_with_precision(@sale.total_amount, :precision => 2, :delimiter => ',') rescue ' '%> | -|||
| - | <%= t("views.right_panel.detail.discount") %> | -<%= number_with_precision(@sale.total_discount, :precision => 2, :delimiter => ',') rescue ' '%> | -|||
| - | <%= r.tax_name %> | -<%= number_with_precision(r.tax_payable_amount, :precision => 2, :delimiter => ',') rescue ' '%> | -|||
| - | <%= t("views.right_panel.detail.grand_total") %> | -<%= number_with_precision(@sale.grand_total, :precision => 2, :delimiter => ',') rescue ' '%> | -|||
| - | <%= t("views.right_panel.detail.total_pay_amount") %> | -<%= number_with_precision(@sale.amount_received, :precision => 2, :delimiter => ',') rescue ' '%> | -|||
| - | <%= r.payment_method.capitalize rescue ' '%> Payment | -<%= number_with_precision(r.payment_amount, :precision => 2, :delimiter => ',') rescue ' '%> - | -|||
| - | <%= t("views.right_panel.detail.change") %> | -<%= number_with_precision(@sale.amount_changed, :precision => 2, :delimiter => ',') rescue ' '%> | -|||
| <%= t("views.right_panel.detail.order_id") %> | -<%= t("views.right_panel.header.menu_item") %> | -<%= t("views.right_panel.detail.qty") %> | -<%= t("views.right_panel.detail.unit_price") %> | -<%= t("views.right_panel.detail.option") %> | -<%= t("views.right_panel.detail.status") %> | -<%= t("views.right_panel.detail.waiter") %> | -<%= t("views.right_panel.detail.created_at") %> | -
|---|---|---|---|---|---|---|---|
| <%= link_to order_item.order_id, transactions_order_path(order_item.order_id) %><%= %> | -<%= order_item.item_name %> | -<%= order_item.qty %> | -<%= order_item.price %> | -<%= order_item.options %> | -<%= order_item.order_item_status %> | -<%= order_item.item_order_by %> | -<%= order_item.created_at.strftime("%d-%m-%y %I:%M %p") %> | -
| <%= t("views.right_panel.detail.card_no") %> | -<%= t("views.right_panel.detail.name") %> | -<%= t("views.right_panel.detail.company") %> | -<%= t("views.right_panel.detail.contact_no") %> | -<%= t("views.right_panel.detail.email") %> | -<%= t("views.right_panel.detail.nrc_passport_no") %> | -<%= t("views.right_panel.detail.address") %> | -<%= t("views.right_panel.detail.dob") %> | -
|---|---|---|---|---|---|---|---|
| <%= @customer.card_no rescue '-'%> | -<%= @customer.name %> | -<%= @customer.company rescue '-' %> | -<%= @customer.contact_no %> | -<%= @customer.email %> | -<%= @customer.nrc_no %> | -<%= @customer.address%> | -<%= @customer.date_of_birth %> | -
| <%= t("views.right_panel.detail.membership_transactions") %> | -|||||||
| <%= t("views.right_panel.detail.date") %> | -<%= t("views.right_panel.detail.redeem") %> | -<%= t("views.right_panel.detail.rebate") %> | -<%= t("views.right_panel.detail.balance") %> | -<%= t("views.right_panel.detail.from_account") %> | -<%= t("views.right_panel.detail.status") %> | -<%= t("views.right_panel.detail.receipt_no") %> | -- |
| <%= transaction["date"]%> | -<%= transaction["redeem"]%> | -<%= transaction["rebate"] %> | -<%= transaction["balance"] %> | -<%= transaction["account_status"] %> | -<%= transaction["status"] %> | -<%= transaction["receipt_no"] %> | -- |
| <%= t("views.right_panel.detail.action") %> | -<%= t("views.right_panel.detail.action_at") %> | -<%= t("views.right_panel.detail.approved_at") %> | -<%= t("views.right_panel.detail.remark") %> | -
|---|---|---|---|
| <%= audit.action%> | -<%= audit.action_at.strftime("%m-%d-%Y %H:%M %p")%> | -<%= audit.approved_by%> | -<%= audit.remark%> | - -
| <%= t("views.right_panel.detail.receipt_date") %> | +<%= t("views.right_panel.detail.receipt_no") %> | +<%= t :cashier %> | +<%= t("views.right_panel.detail.sales_status") %> | +<%= t("views.right_panel.detail.receipt_generated_at") %> | + <% if @sale["sale_status"] == "completed" %> ++ + | + <% end %> +
|---|---|---|---|---|---|
| <%= @sale.receipt_date.strftime("%d-%M-%Y") %> | +<%= @sale.receipt_no %> | +<%= @sale.cashier_name rescue '-' %> | +<%= @sale.sale_status %> | +<%= @sale.requested_at.strftime("%m-%d-%Y %H:%M %p") %> | +|
| <%= t :sale %> <%= t("views.right_panel.detail.item_txt") %> <%= t("views.right_panel.detail.name_txt2") %> | +<%= t("views.right_panel.detail.qty") %> | +<%= t("views.right_panel.detail.unit_price") %> | +<%= t("views.right_panel.detail.total_price") %> | +<%= t("views.right_panel.detail.created_at") %> | +<%= t("views.right_panel.detail.remark") %> | +
| <%=s.product_name rescue ' '%> | +<%=s.qty rescue ' '%> | +<%= number_with_precision(s.unit_price, :precision => 2, :delimiter => ',') rescue ' '%> | +<%= number_with_precision(s.price, :precision => 2, :delimiter => ',') rescue ' '%> | +<%=l s.created_at.utc.getlocal , :format => :short rescue ' ' %> | +<%=s.remark rescue ' '%> | +
| + | <%= t("views.right_panel.detail.total") %> | +<%= number_with_precision(@sale.total_amount, :precision => 2, :delimiter => ',') rescue ' '%> | +|||
| + | <%= t("views.right_panel.detail.discount") %> | +<%= number_with_precision(@sale.total_discount, :precision => 2, :delimiter => ',') rescue ' '%> | +|||
| + | <%= r.tax_name %> | +<%= number_with_precision(r.tax_payable_amount, :precision => 2, :delimiter => ',') rescue ' '%> | +|||
| + | <%= t("views.right_panel.detail.grand_total") %> | +<%= number_with_precision(@sale.grand_total, :precision => 2, :delimiter => ',') rescue ' '%> | +|||
| + | <%= t("views.right_panel.detail.total_pay_amount") %> | +<%= number_with_precision(@sale.amount_received, :precision => 2, :delimiter => ',') rescue ' '%> | +|||
| + | <%= r.payment_method.capitalize rescue ' '%> Payment | +<%= number_with_precision(r.payment_amount, :precision => 2, :delimiter => ',') rescue ' '%> | +|||
| + | <%= t("views.right_panel.detail.change") %> | +<%= number_with_precision(@sale.amount_changed, :precision => 2, :delimiter => ',') rescue ' '%> | +|||
| <%= t("views.right_panel.detail.order_id") %> | +<%= t("views.right_panel.header.menu_item") %> | +<%= t("views.right_panel.detail.qty") %> | +<%= t("views.right_panel.detail.unit_price") %> | +<%= t("views.right_panel.detail.option") %> | +<%= t("views.right_panel.detail.status") %> | +<%= t("views.right_panel.detail.waiter") %> | +<%= t("views.right_panel.detail.created_at") %> | +
|---|---|---|---|---|---|---|---|
| <%= link_to order_item.order_id, transactions_order_path(order_item.order_id) %><%= %> | +<%= order_item.item_name %> | +<%= order_item.qty %> | +<%= order_item.price %> | +<%= order_item.options %> | +<%= order_item.order_item_status %> | +<%= order_item.item_order_by %> | +<%= order_item.created_at.strftime("%d-%m-%y %I:%M %p") %> | +
| <%= t("views.right_panel.detail.card_no") %> | +<%= t("views.right_panel.detail.name") %> | +<%= t("views.right_panel.detail.company") %> | +<%= t("views.right_panel.detail.contact_no") %> | +<%= t("views.right_panel.detail.email") %> | +<%= t("views.right_panel.detail.nrc_passport_no") %> | +<%= t("views.right_panel.detail.address") %> | +<%= t("views.right_panel.detail.dob") %> | +
|---|---|---|---|---|---|---|---|
| <%= @customer.card_no rescue '-'%> | +<%= @customer.name %> | +<%= @customer.company rescue '-' %> | +<%= @customer.contact_no %> | +<%= @customer.email %> | +<%= @customer.nrc_no %> | +<%= @customer.address%> | +<%= @customer.date_of_birth %> | +
| <%= t("views.right_panel.detail.membership_transactions") %> | +|||||||
| <%= t("views.right_panel.detail.date") %> | +<%= t("views.right_panel.detail.redeem") %> | +<%= t("views.right_panel.detail.rebate") %> | +<%= t("views.right_panel.detail.balance") %> | +<%= t("views.right_panel.detail.from_account") %> | +<%= t("views.right_panel.detail.status") %> | +<%= t("views.right_panel.detail.receipt_no") %> | ++ |
| <%= transaction["date"]%> | +<%= transaction["redeem"]%> | +<%= transaction["rebate"] %> | +<%= transaction["balance"] %> | +<%= transaction["account_status"] %> | +<%= transaction["status"] %> | +<%= transaction["receipt_no"] %> | ++ |
| <%= t("views.right_panel.detail.action") %> | +<%= t("views.right_panel.detail.action_at") %> | +<%= t("views.right_panel.detail.approved_at") %> | +<%= t("views.right_panel.detail.remark") %> | +
|---|---|---|---|
| <%= audit.action%> | +<%= audit.action_at.strftime("%m-%d-%Y %H:%M %p")%> | +<%= audit.approved_by%> | +<%= audit.remark%> | +