diff --git a/app/controllers/origami/sale_edit_controller.rb b/app/controllers/origami/sale_edit_controller.rb index 61c8b00f..314d46c8 100755 --- a/app/controllers/origami/sale_edit_controller.rb +++ b/app/controllers/origami/sale_edit_controller.rb @@ -19,7 +19,7 @@ class Origami::SaleEditController < BaseOrigamiController @newsaleitem.qty = saleitemObj.qty * -1 @newsaleitem.price = saleitemObj.price * -1 @newsaleitem.is_taxable = 1 - @newsaleitem.product_name = saleitemObj.product_name + ' - void' + @newsaleitem.product_name = saleitemObj.product_name + ' (VOID)' @newsaleitem.save # re-calc tax @@ -39,7 +39,7 @@ class Origami::SaleEditController < BaseOrigamiController @newsaleitem.qty = saleitemObj.qty * -1 @newsaleitem.price = saleitemObj.price * -1 @newsaleitem.is_taxable = 1 - @newsaleitem.product_name = saleitemObj.product_name + ' foc' + @newsaleitem.product_name = saleitemObj.product_name + ' (FOC)' @newsaleitem.save # re-calc tax @@ -81,7 +81,7 @@ class Origami::SaleEditController < BaseOrigamiController # saleitemObj.remark = 'edit' unless saleitemObj.product_name.include? 'updated' - saleitemObj.product_name = saleitemObj.product_name + ' - updated' + saleitemObj.product_name = saleitemObj.product_name + ' (UPDATED)' end saleitemObj.save diff --git a/app/models/ability.rb b/app/models/ability.rb index 38376d24..768e8c4b 100755 --- a/app/models/ability.rb +++ b/app/models/ability.rb @@ -55,8 +55,7 @@ class Ability can :create, :payment can :reprint, :payment can :rounding_adj, :payment - can :foc, :payment - + can :foc, :payment can :move_dining, :movetable can :moving, :movetable @@ -68,6 +67,8 @@ class Ability can :item_void_cancel, :sale_edit can :cancel_all_void, :sale_edit can :apply_void, :sale_edit + can :item_foc, :sale_edit + can :item_edit, :sale_edit can :overall_void, :void @@ -118,10 +119,12 @@ class Ability can :edit, :sale_edit can :item_void, :sale_edit + can :item_foc, :sale_edit can :item_edit, :sale_edit can :item_void_cancel, :sale_edit can :cancel_all_void, :sale_edit can :apply_void, :sale_edit + can :overall_void, :void can :first_bill, :payment diff --git a/app/models/dining_charge.rb b/app/models/dining_charge.rb index ae1b8f46..46b0f3ee 100755 --- a/app/models/dining_charge.rb +++ b/app/models/dining_charge.rb @@ -14,12 +14,12 @@ class DiningCharge < ApplicationRecord else charge_type = dining_charges_obj.charge_type if charge_type == 'hr' - price = DiningCharge.charges(dining_charges_obj, dining_minutes, 'hr') + block_count, price = DiningCharge.charges(dining_charges_obj, dining_minutes, 'hr') elsif charge_type == 'day' - price = charges(dining_charges_obj, dining_minutes, 'day') + block_count, price = charges(dining_charges_obj, dining_minutes, 'day') end end - return price + return block_count, price else puts "<<<<<<<< NO" end @@ -28,26 +28,28 @@ class DiningCharge < ApplicationRecord def self.charges(chargesObj, dining_minutes, type) solid_price = 0 - block = DiningCharge.convert_to_minutes(chargesObj.charge_block.utc.localtime.strftime('%H:%M')) + charge_block = DiningCharge.convert_to_minutes(chargesObj.charge_block.utc.localtime.strftime('%H:%M')) - result = dining_minutes / block + result = dining_minutes / charge_block if result.to_i < 1 - return chargesObj.unit_price - elsif result.to_i >= 1 + return result.to_i,chargesObj.unit_price + elsif result.to_i >= 1 solid_price = result * chargesObj.unit_price - remain_value = dining_minutes % block + + remain_value = dining_minutes % charge_block rounding_block = DiningCharge.convert_to_minutes(chargesObj.time_rounding_block.utc.localtime.strftime('%H:%M')) roundingblock = remain_value / rounding_block if roundingblock.to_i < 1 - return DiningCharge.check_rounding(chargesObj, solid_price) + return result.to_i, DiningCharge.check_rounding(chargesObj, solid_price) else solid_price += roundingblock * chargesObj.time_rounding_block_price - remain_rounding = dining_minutes % block - if remain_rounding.to_i < 1 - return DiningCharge.check_rounding(chargesObj, solid_price) - else - return solid_price - end + return result.to_i, DiningCharge.check_rounding(chargesObj, solid_price) + # remain_rounding = dining_minutes % charge_block + # if remain_rounding.to_i < 1 + # return DiningCharge.check_rounding(chargesObj, solid_price) + # else + # return solid_price + # end end end end diff --git a/app/models/promotion.rb b/app/models/promotion.rb index d17a39b0..bc1516cc 100755 --- a/app/models/promotion.rb +++ b/app/models/promotion.rb @@ -217,6 +217,9 @@ class Promotion < ApplicationRecord update_existing_item(foc_qty, item, sale_id, "promotion discount", price) else foc_qty = find_second_item_qty(sale_id, promo_product.item_code) + # give total qty is 1 + foc_qty = (foc_qty - foc_qty) + 1 + item = OrderItem.find_by_item_instance_code(promo_product.item_code) # total = item.price * foc_qty total = item.price diff --git a/app/models/sale.rb b/app/models/sale.rb index 37e284cb..21fee04b 100755 --- a/app/models/sale.rb +++ b/app/models/sale.rb @@ -46,6 +46,14 @@ class Sale < ApplicationRecord order = booking.booking_orders.take.order link_order_sale(order.id) + # dining charges + charges = DiningCharge.where('dining_facility_id=?',booking.dining_facility_id).take + if !charges.nil? + block_count, diningprice = DiningCharge.amount_calculate(charges, booking.checkin_at, booking.checkout_at) + dining_time = booking.checkin_at.strftime('%H:%M %p').to_s + " - " + booking.checkout_at.strftime('%H:%M %p').to_s + create_saleitem_diningcharges(charges, block_count, diningprice, booking.dining_facility.name, dining_time) + end + return status, sale_id end end @@ -108,15 +116,7 @@ class Sale < ApplicationRecord booking.sale_id = self.id booking.checkout_at = Time.now.utc.getlocal booking.checkout_by = requested_by.name - booking.save - - # dining charges - charges = DiningCharge.where('dining_facility_id=?',booking.dining_facility_id).take - if !charges.nil? - diningprice = DiningCharge.amount_calculate(charges, booking.checkin_at, booking.checkout_at) - dining_time = booking.checkin_at.strftime('%H:%M %p').to_s + " - " + booking.checkout_at.strftime('%H:%M %p').to_s - create_saleitem_diningcharges(charges, diningprice, booking.dining_facility.name, dining_time) - end + booking.save InventoryJob.perform_now(self.id) @@ -174,13 +174,13 @@ class Sale < ApplicationRecord self.sale_items << sale_item end - def create_saleitem_diningcharges(chargeObj, diningprice, dining_name, dining_time) + def create_saleitem_diningcharges(chargeObj, block_count, diningprice, dining_name, dining_time) sale_item = SaleItem.new sale_item.product_code = chargeObj.item_code sale_item.product_name = dining_name.to_s + " ( " + dining_time.to_s + " )" sale_item.account_id = 0 sale_item.product_alt_name = "-" - sale_item.qty = 1 + sale_item.qty = block_count sale_item.unit_price = chargeObj.unit_price sale_item.taxable_price = diningprice sale_item.is_taxable = chargeObj.taxable