class Origami::PaymentsController < BaseOrigamiController

  authorize_resource :class => false
  def index
  end

  def first_bill
    sale_id = params[:sale_id] # sale_id
    sale_data = Sale.find_by_sale_id(sale_id)
    sale_items = SaleItem.where("sale_id=?",sale_id)

    # Print for First Bill to Customer

    unique_code = "ReceiptBillPdf"
     #shop detail
    shop_details = Shop.find(1)
    # customer= Customer.where('customer_id=' +.customer_id)
    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)

    # find order id by sale id
    # sale_order = SaleOrder.find_by_sale_id(@sale_data.sale_id)

    # Calculate price_by_accounts
    item_price_by_accounts = SaleItem.calculate_price_by_accounts(sale_items)
    discount_price_by_accounts = SaleItem.get_discount_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, discount_price_by_accounts, member_info, shop_details, "Frt")    
  end

  def create
    cash = params[:cash]
    sale_id = params[:sale_id]
    if(Sale.exists?(sale_id))
      saleObj = Sale.find(sale_id)
      sale_payment = SalePayment.new
      sale_payment.process_payment(saleObj, @user, cash, "cash")

      # new_total  = Sale.get_rounding_adjustment(saleObj.grand_total)
      # rounding_adj = saleObj.grand_total - new_total

      # saleObj.update_attributes(grand_total: new_total,rounding_adjustment:rounding_adj)

      rebate_amount = nil

      unique_code = "ReceiptBillPdf"
      customer= Customer.find(saleObj.customer_id)
      rebate_amount  = Customer.get_membership_transactions(customer)
       #shop detail
      shop_details = Shop.find(1)
      # get member information
      member_info = Customer.get_member_account(customer)

      # 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(saleObj.sale_items)
      discount_price_by_accounts = SaleItem.get_discount_price_by_accounts(saleObj.sale_items)

      printer = Printer::ReceiptPrinter.new(print_settings)
      printer.print_receipt_bill(print_settings,saleObj.sale_items,saleObj,customer.name, item_price_by_accounts, discount_price_by_accounts, member_info,rebate_amount,shop_details, "Paid")
    end
  end

  def show
    sale_id = params[:sale_id]
    if Sale.exists?(sale_id)
      @cash = 0.0
      @other = 0.0
      @ppamount = 0.0
      @visacount= 0.0
      @jcbcount= 0.0
      @mastercount = 0.0
      @credit = 0.0
      @sale_data = Sale.find_by_sale_id(sale_id)

      #get customer amount
      @customer = Customer.find(@sale_data.customer_id)

      # get member information
      response = Customer.get_member_account(@customer)

      @balance = 0.00
      @accountable_type = ''
      if response["status"]==true
         response["data"].each do |res|
          if res["accountable_type"] == "RebateAccount" || res["accountable_type"] == "RebatebonusAccount"
             @balance += res["balance"]
            #  @accountable_type = res["accountable_type"]
             @accountable_type = "Rebate Balance"
          end
        end
      end

      #end customer amount

        @sale_data.sale_payments.each do |spay|
         if spay.payment_method == "cash"
           @cash = spay.payment_amount
         end
         if spay.payment_method == "mpu"
           @other += spay.payment_amount
         elsif spay.payment_method == "paypar"
           @ppamount += spay.payment_amount
         elsif spay.payment_method == "visa"
           @visacount += spay.payment_amount
         elsif spay.payment_method == "jcb"
           @jcbcount += spay.payment_amount
         elsif spay.payment_method == "master"
           @mastercount += spay.payment_amount
         elsif spay.payment_method == "creditnote"
           @credit += spay.payment_amount
         end
      end
    end
  end

  def reprint

    sale_id = params[:sale_id]

      saleObj = Sale.find(sale_id)

      unique_code = "ReceiptBillPdf"
      customer= Customer.find(saleObj.customer_id)

      #shop detail
      shop_details = Shop.find(1)
      # get member information
      member_info = Customer.get_member_account(customer)
      rebate_amount  = Customer.get_membership_transactions(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(saleObj.sale_items)
      discount_price_by_accounts = SaleItem.get_discount_price_by_accounts(saleObj.sale_items)

      printer = Printer::ReceiptPrinter.new(print_settings)
      printer.print_receipt_bill(print_settings,saleObj.sale_items,saleObj,customer.name, item_price_by_accounts, discount_price_by_accounts, member_info,rebate_amount,shop_details, "Re-print")
  end

  def rounding_adj

      saleObj      = Sale.find(params[:sale_id])
      new_total    = Sale.get_rounding_adjustment(saleObj.grand_total)
      rounding_adj = new_total-saleObj.grand_total

      saleObj.update_attributes(grand_total: new_total,old_grand_total: saleObj.grand_total,rounding_adjustment:rounding_adj)

  end
end
