From 94debfdde9f1ce8ac9b54578088ba92cab058b98 Mon Sep 17 00:00:00 2001 From: phyusin Date: Tue, 16 Oct 2018 14:35:54 +0630 Subject: [PATCH 1/2] change json format and void api --- .../api/authenticate_controller.rb | 2 +- app/controllers/api/bill_controller.rb | 2 +- app/controllers/api/shifts_controller.rb | 2 +- app/controllers/api/void_controller.rb | 42 +++++++++++++++++++ config/routes.rb | 1 + 5 files changed, 46 insertions(+), 3 deletions(-) create mode 100644 app/controllers/api/void_controller.rb diff --git a/app/controllers/api/authenticate_controller.rb b/app/controllers/api/authenticate_controller.rb index 394c0a74..dc14e478 100755 --- a/app/controllers/api/authenticate_controller.rb +++ b/app/controllers/api/authenticate_controller.rb @@ -30,7 +30,7 @@ class Api::AuthenticateController < Api::ApiController render json: JSON.generate({:status => true, :session_token => @employee.token_session, :name => @employee.name, :role => @employee.role}) else terminals = CashierTerminal.available.is_active - render json: JSON.generate({:status => true, :session_token => @employee.token_session, :name => @employee.name, :role => @employee.role, :error_message => "No current shift open for this employee!", :terminals => terminals.to_json}) + render json: JSON.generate({:status => true, :session_token => @employee.token_session, :name => @employee.name, :role => @employee.role, :error_message => "No current shift open for this employee!", :terminals => ActiveSupport::JSON.encode(terminals)}) end else render json: JSON.generate({:status => false, :error_message => "This employee is not active!"}) diff --git a/app/controllers/api/bill_controller.rb b/app/controllers/api/bill_controller.rb index d42e1da4..aa152aac 100755 --- a/app/controllers/api/bill_controller.rb +++ b/app/controllers/api/bill_controller.rb @@ -178,7 +178,7 @@ class Api::BillController < Api::ApiController end end # Promotion.promo_activate(@sale) - render json: JSON.generate({:status => true, :sale_id => @sale_id, :sale_data => @sale_data.to_json}) + render json: JSON.generate({:status => true, :sale_id => @sale_id, :sale_data => ActiveSupport::JSON.encode(@sale_data)}) else render json: JSON.generate({:status => false, :error_message => "No Current Open Shift!"}) end diff --git a/app/controllers/api/shifts_controller.rb b/app/controllers/api/shifts_controller.rb index 754d2375..d1cdd0ad 100644 --- a/app/controllers/api/shifts_controller.rb +++ b/app/controllers/api/shifts_controller.rb @@ -17,7 +17,7 @@ class Api::ShiftsController < Api::ApiController @shift_sale = ShiftSale.new if @shift_sale.create(opening_balance,cashier_terminal_param, current_login_employee) - render json: JSON.generate({:status => true, :message => "Cashier Terminal successfully signin.", :shift => @shift_sale.to_json}) + render json: JSON.generate({:status => true, :message => "Cashier Terminal successfully signin.", :shift => ActiveSupport::JSON.encode(@shift_sale)}) else render json: JSON.generate({:status => false, :error_message => "Some error occurred!"}) end diff --git a/app/controllers/api/void_controller.rb b/app/controllers/api/void_controller.rb new file mode 100644 index 00000000..f8e71c68 --- /dev/null +++ b/app/controllers/api/void_controller.rb @@ -0,0 +1,42 @@ +class Api::VoidController < Api::ApiController + # skip_before_action :authenticate + def overall_void + sale_id = params[:sale_id] + order_source = "emenu" #tax profile source + 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 + + # 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,current_login_employee.name, current_login_employee.name,nil,"SALEVOID" ) + render json: JSON.generate({:status => true, :message => "Void successfully."}) + else + render json: JSON.generate({:status => false, :error_message => "There is no sale for '#{params[:sale_id]}'!"}) + end + end +end + diff --git a/config/routes.rb b/config/routes.rb index 3e6edf5e..dd9660c8 100755 --- a/config/routes.rb +++ b/config/routes.rb @@ -100,6 +100,7 @@ scope "(:locale)", locale: /en|mm/ do post "shifts/close" => "shifts#update" post "request_bill" => "bill#request_bill" post "paymal_payment" => "payments#paymal_payment" + get ":sale_id/void" => "void#overall_void" end #--------- Cashier ------------# From b8f96a1f87ded14e58040363bf10b2e48cf3ad23 Mon Sep 17 00:00:00 2001 From: phyusin Date: Tue, 16 Oct 2018 15:40:50 +0630 Subject: [PATCH 2/2] change json format --- .../api/authenticate_controller.rb | 23 +++++++++---- app/controllers/api/bill_controller.rb | 18 ++++++---- app/controllers/api/shifts_controller.rb | 8 +++-- .../authenticate/create_cashier.json.jbuilder | 15 ++++++++ app/views/api/bill/request_bill.json.jbuilder | 26 ++++++++++++++ app/views/api/shifts/create.json.jbuilder | 34 +++++++++++++++++++ 6 files changed, 108 insertions(+), 16 deletions(-) create mode 100644 app/views/api/authenticate/create_cashier.json.jbuilder create mode 100644 app/views/api/bill/request_bill.json.jbuilder create mode 100644 app/views/api/shifts/create.json.jbuilder diff --git a/app/controllers/api/authenticate_controller.rb b/app/controllers/api/authenticate_controller.rb index dc14e478..410d4bd0 100755 --- a/app/controllers/api/authenticate_controller.rb +++ b/app/controllers/api/authenticate_controller.rb @@ -20,26 +20,35 @@ class Api::AuthenticateController < Api::ApiController def create_cashier emp_id = params[:emp_id] password = params[:password] - + @terminals = [] if emp_id && password @employee = Employee.login(emp_id, password) if @employee && @employee.role == "cashier" if @employee.is_active shift = ShiftSale.current_open_shift(@employee.id) if !shift.nil? - render json: JSON.generate({:status => true, :session_token => @employee.token_session, :name => @employee.name, :role => @employee.role}) + @status = true + # render json: JSON.generate({:status => true, :session_token => @employee.token_session, :name => @employee.name, :role => @employee.role}) else - terminals = CashierTerminal.available.is_active - render json: JSON.generate({:status => true, :session_token => @employee.token_session, :name => @employee.name, :role => @employee.role, :error_message => "No current shift open for this employee!", :terminals => ActiveSupport::JSON.encode(terminals)}) + @status = true + @terminals = CashierTerminal.available.is_active + @error_message = "No current shift open for this employee!" + # render json: JSON.generate({:status => true, :session_token => @employee.token_session, :name => @employee.name, :role => @employee.role, :error_message => "No current shift open for this employee!", :terminals => terminals.to_json}) end else - render json: JSON.generate({:status => false, :error_message => "This employee is not active!"}) + @status = false + @error_message = "This employee is not active!" + # render json: JSON.generate({:status => false, :error_message => "This employee is not active!"}) end else - render json: JSON.generate({:status => false, :error_message => "Bad Emp_ID or Password."}) + @status = false + @error_message = "Bad Emp_ID or Password!" + # render json: JSON.generate({:status => false, :error_message => "Bad Emp_ID or Password."}) end else - render json: JSON.generate({:status => false, :error_message => "Input Parameters missing."}) + @status = false + @error_message = "Input Parameters missing!" + # render json: JSON.generate({:status => false, :error_message => "Input Parameters missing."}) end end diff --git a/app/controllers/api/bill_controller.rb b/app/controllers/api/bill_controller.rb index aa152aac..52706482 100755 --- a/app/controllers/api/bill_controller.rb +++ b/app/controllers/api/bill_controller.rb @@ -124,9 +124,6 @@ class Api::BillController < Api::ApiController end def request_bill - puts "order items" - puts params[:order_items] - if params[:order_items] is_extra_time = false extra_time = '' @@ -178,15 +175,22 @@ class Api::BillController < Api::ApiController end end # Promotion.promo_activate(@sale) - render json: JSON.generate({:status => true, :sale_id => @sale_id, :sale_data => ActiveSupport::JSON.encode(@sale_data)}) + @status = true + # render json: JSON.generate({:status => true, :sale_id => @sale_id, :sale_data => @sale_data.to_json }) else - render json: JSON.generate({:status => false, :error_message => "No Current Open Shift!"}) + @status = false + @error_message = "No Current Open Shift!" + # render json: JSON.generate({:status => false, :error_message => "No Current Open Shift!"}) end else - render json: JSON.generate({:status => false, :error_message => "Create order failed, some error occurred!"}) + @status = false + @error_message = "Create order failed, some error occurred!" + # render json: JSON.generate({:status => false, :error_message => "Create order failed, some error occurred!"}) end else - render json: JSON.generate({:status => false, :error_message => "Parameters missing!"}) + @status = false + @error_message = "Parameters missing!" + # render json: JSON.generate({:status => false, :error_message => "Parameters missing!"}) end end diff --git a/app/controllers/api/shifts_controller.rb b/app/controllers/api/shifts_controller.rb index d1cdd0ad..d8de4e50 100644 --- a/app/controllers/api/shifts_controller.rb +++ b/app/controllers/api/shifts_controller.rb @@ -17,9 +17,13 @@ class Api::ShiftsController < Api::ApiController @shift_sale = ShiftSale.new if @shift_sale.create(opening_balance,cashier_terminal_param, current_login_employee) - render json: JSON.generate({:status => true, :message => "Cashier Terminal successfully signin.", :shift => ActiveSupport::JSON.encode(@shift_sale)}) + @status = true + @message = "Cashier Terminal successfully signin." + # render json: JSON.generate({:status => true, :message => "Cashier Terminal successfully signin.", :shift => ActiveSupport::JSON.encode(@shift_sale)}) else - render json: JSON.generate({:status => false, :error_message => "Some error occurred!"}) + @status = false + @error_message = "Some error occurred!" + # render json: JSON.generate({:status => false, :error_message => "Some error occurred!"}) end end end diff --git a/app/views/api/authenticate/create_cashier.json.jbuilder b/app/views/api/authenticate/create_cashier.json.jbuilder new file mode 100644 index 00000000..be85fb81 --- /dev/null +++ b/app/views/api/authenticate/create_cashier.json.jbuilder @@ -0,0 +1,15 @@ +if @status == true + json.status :true + json.session_token @employee.token_session + json.name @employee.token_session + json.role @employee.role + if @error_message + json.error_message @error_message + json.terminals do + json.array! @terminals, :id, :name, :is_active, :is_currently_login + end + end +else + json.status :false + json.error_message @error_message +end \ No newline at end of file diff --git a/app/views/api/bill/request_bill.json.jbuilder b/app/views/api/bill/request_bill.json.jbuilder new file mode 100644 index 00000000..33d55350 --- /dev/null +++ b/app/views/api/bill/request_bill.json.jbuilder @@ -0,0 +1,26 @@ +if @status == true + #show invoice number and stuff + json.status @status + json.sale_id @sale_id + sale = Sale.find(@sale_id) + + json.sale_items sale.sale_items do |sale_item| + json.sale_item_id sale_item.sale_item_id + json.sale_id sale_item.sale_id + json.product_code sale_item.product_code + json.item_instance_code sale_item.item_instance_code + json.product_name sale_item.product_name + json.product_alt_name sale_item.product_alt_name + json.account_id sale_item.account_id + json.status sale_item.status + json.remark sale_item.remark + json.qty sale_item.qty + json.unit_price sale_item.unit_price + json.taxable_price sale_item.taxable_price + json.price sale_item.price + json.is_taxable sale_item.is_taxable + end +else + json.status @status + json.error_message @error_message +end diff --git a/app/views/api/shifts/create.json.jbuilder b/app/views/api/shifts/create.json.jbuilder new file mode 100644 index 00000000..88c5d5ce --- /dev/null +++ b/app/views/api/shifts/create.json.jbuilder @@ -0,0 +1,34 @@ +if @status == true + json.status true + json.message @message + + # json.shift_sale @shift_sale do |shift| + # json.id shift.id + # json.cashier_terminal_id shift.cashier_terminal_id + # json.shift_started_at shift.shift_started_at.strftime("%Y-%m-%d %H:%m:%s") + # json.shift_closed_at shift.shift_closed_at.strftime("%Y-%m-%d %H:%m:%s") + # json.employee_id shift.employee_id + # json.opening_balance shift.opening_balance + # json.closing_balance shift.closing_balance + # json.total_revenue shift.total_revenue + # json.total_discounts shift.total_discounts + # json.total_taxes shift.total_taxes + # json.grand_total shift.grand_total + # json.nett_sales shift.nett_sales + # json.cash_sales shift.cash_sales + # json.credit_sales shift.credit_sales + # json.other_sales shift.other_sales + # json.commercial_taxes shift.commercial_taxes + # json.cash_in shift.cash_in + # json.cash_out shift.cash_out + # json.dining_count shift.dining_count + # json.takeaway_count shift.takeaway_count + # json.member_count shift.member_count + # json.total_rounding shift.total_rounding + # json.total_receipt shift.total_receipt + # json.total_void shift.total_void + # end +else + json.status false + json.error_message @error_message +end \ No newline at end of file