module Comee module Core class SalesOrdersController < ApplicationController include Common before_action :set_service, only: %i[submit confirm cancel] def index super do Comee::Core::SalesOrder.includes(:customer_order, :fulfillment_center, :sales_order_items).all end end def filter @sales_order = Comee::Core::SalesOrder.ransack(params[:q]).result render json: {success: true, data: serialize(@sales_order)} end def submit order = @service.submit(params[:id]) render json: {success: true, data: serialize(order)} rescue StandardError => e render json: {success: false, error: e.message} end def confirm order = @service.confirm(params[:id]) render json: {success: true, data: serialize(order)} rescue StandardError => e render json: {success: false, error: e.message} end def cancel order = @service.cancel(params[:id]) render json: {success: true, data: serialize(order)} rescue StandardError => e render json: {success: false, error: e.message} end def create_back_order service = SalesOrderService.new result = service.create_back_orders(back_order_params[:payload]) if result[:success] render json: {success: true} else render json: {success: false, error: result[:error]} end end private def model_params params.require(:payload).permit(:order_number, :customer_order_id, :payment_penalty, :status, :fulfillment_center_id, :total_price, :amount_paid, :pallete_note, :handover_date, :remark, files: []) end def back_order_params params.permit(payload: [:supplier_id, :order_number, :order_date, :delivery_date, :delivery_address, :invoice_address, back_order_items: %i[product_id requested_quantity requested_price supplier_quantity delivery_date]]) end def set_service @service = SalesOrderService.new end end end end