55 lines
1.6 KiB
Ruby
55 lines
1.6 KiB
Ruby
class Api::BillController < Api::ApiController
|
|
|
|
#Create invoice based on booking
|
|
#Output and invoice
|
|
def create
|
|
@status = false
|
|
@error_message = "Order ID or Booking ID is require to request for a bill."
|
|
|
|
#create Bill by Booking ID
|
|
if (params[:booking_id])
|
|
booking = Booking.find(params[:booking_id])
|
|
|
|
if booking
|
|
if booking.sale_id.nil?
|
|
@sale = Sale.new
|
|
@status, @sale_id = @sale.generate_invoice_from_booking(params[:booking_id], current_login_employee, get_cashier)
|
|
else
|
|
@status = true
|
|
@sale_id = booking.sale_id
|
|
end
|
|
end
|
|
|
|
elsif (params[:order_id])
|
|
@sale = Sale.new
|
|
@status, @sale_id = @sale.generate_invoice_from_order(params[:order_id], current_login_employee, get_cashier)
|
|
end
|
|
|
|
@sale_data = Sale.find_by_sale_id(@sale_id)
|
|
@sale_items = SaleItem.where("sale_id=?",@sale_id)
|
|
|
|
unique_code = "ReceiptBillPdf"
|
|
#shop detail
|
|
shop_details = Shop.find(1)
|
|
|
|
customer= Customer.find(@sale_data.customer_id)
|
|
# get member information
|
|
member_info = Customer.get_member_account(customer)
|
|
|
|
# get printer info
|
|
print_settings=PrintSetting.find_by_unique_code(unique_code)
|
|
|
|
# Calculate Price by accounts
|
|
item_price_by_accounts = SaleItem.calculate_price_by_accounts(@sale_items)
|
|
|
|
printer = Printer::ReceiptPrinter.new(print_settings)
|
|
printer.print_receipt_bill(print_settings,@sale_items,@sale_data,customer.name, item_price_by_accounts, member_info, shop_details)
|
|
end
|
|
|
|
|
|
private
|
|
def bill_params
|
|
params.permit(:booking_id, :order_id)
|
|
end
|
|
end
|