import { gql } from "@apollo/client";

export const INSERT_NEW_PARTS_ORDERS = gql`
  mutation INSERT_NEW_PARTS_ORDERS($po: [parts_orders_insert_input!]!) {
    insert_parts_orders(objects: $po) {
      returning {
        id
        order_number
      }
    }
  }
`;

export const QUERY_PARTS_ORDER_OEC = gql`
  query QUERY_PARTS_ORDER_OEC($id: uuid!) {
    parts_orders_by_pk(id: $id) {
      parts_order_lines {
        jobline {
          tran_code
          act_price
          db_ref
          db_price
          db_hrs
          glass_flag
          id
          lbr_amt
          lbr_hrs_j
          lbr_inc
          lbr_op
          lbr_op_j
          lbr_tax
          lbr_typ_j
          line_desc
          line_ind
          line_no
          line_ref
          location
          misc_amt
          misc_sublt
          misc_tax
          mod_lb_hrs
          mod_lbr_ty
          oem_partno
          op_code_desc
          paint_stg
          paint_tone
          part_qty
          part_type
          price_inc
          price_j
          prt_dsmk_m
          prt_dsmk_p
          tax_part
          unq_seq
          alt_co_id
          alt_overrd
          alt_part_i
          alt_partm
          alt_partno
          bett_amt
          bett_pctg
          bett_tax
          bett_type
          cert_part
          est_seq
        }
        act_price
        id
        db_price
        line_desc
        quantity
        part_type
      }
      job {
        bodyshop {
          shopname
          bill_tax_rates
        }
        ro_number
        clm_no
        cieca_stl
        cieca_ttl
        cieca_pfl
        asgn_no
        asgn_date
        state_tax_rate
        area_of_damage
        asgn_no
        asgn_type
        ciecaid
        clm_addr1
        clm_city
        clm_addr2
        clm_ct_fn
        clm_ct_ln
        clm_ct_ph
        clm_ct_phx
        clm_ctry
        clm_ea
        clm_fax
        clm_faxx
        clm_ofc_id
        clm_ofc_nm
        clm_ph1
        clm_ph1x
        clm_ph2
        clm_ph2x
        clm_st
        clm_title
        clm_total
        clm_zip
        ded_amt
        est_addr1
        est_addr2
        est_city
        est_co_nm
        est_ct_fn
        est_ctry
        est_ct_ln
        est_ea
        est_ph1
        est_st
        est_zip
        g_bett_amt
        id
        ins_addr1
        ins_city
        ins_addr2
        ins_co_id
        ins_co_nm
        ins_ct_fn
        ins_ct_ln
        ins_ct_ph
        ins_ct_phx
        ins_ctry
        ins_ea
        ins_fax
        ins_faxx
        ins_memo
        ins_ph1
        ins_ph1x
        ins_ph2
        ins_ph2x
        ins_st
        ins_title
        ins_zip
        insd_addr1
        insd_addr2
        insd_city
        insd_co_nm
        insd_ctry
        insd_ea
        insd_fax
        insd_faxx
        insd_fn
        insd_ln
        insd_ph1
        insd_ph1x
        insd_ph2
        insd_ph2x
        insd_st
        insd_title
        insd_zip
        job_totals
        loss_cat
        loss_date
        loss_desc
        loss_of_use
        loss_type
        materials
        ownr_addr1
        ownr_addr2
        ownr_city
        ownr_co_nm
        ownr_ctry
        ownr_ea
        ownr_fax
        ownr_faxx
        ownr_ph1
        ownr_ph1_ty
        ownr_fn
        ownr_ln
        ownr_ph1x
        ownr_ph2
        ownr_ph2_ty
        ownr_ph2x
        ownr_st
        ownr_title
        ownr_zip
        parts_tax_rates
        pay_amt
        pay_date
        pay_type
        pay_chknm
        payee_nms
        plate_no
        plate_st
        po_number
        policy_no
        tax_lbr_rt
        tax_levies_rt
        tax_paint_mat_rt
        tax_predis
        tax_prethr
        tax_pstthr
        tax_registration_number
        tax_str_rt
        tax_shop_mat_rt
        tax_sub_rt
        tax_thramt
        tax_tow_rt
        theft_ind
        tlos_ind
        towin
        v_color
        v_make_desc
        v_model_desc
        v_model_yr
        v_vin
        vehicle {
          id
          v_bstyle
          v_type
          v_trimcode
          v_tone
          v_stage
          v_prod_dt
          v_options
          v_paint_codes
          v_model_yr
          v_model_desc
          v_mldgcode
          v_makecode
          v_make_desc
          v_engine
          v_cond
          v_color
          trim_color
          shopid
          plate_no
          plate_st
          db_v_code
          v_vin
        }
        agt_zip
        agt_st
        agt_ph2x
        agt_ph2
        agt_ph1x
        agt_ph1
        agt_lic_no
        agt_faxx
        agt_fax
        agt_ea
        agt_ctry
        agt_ct_phx
        agt_ct_ph
        agt_ct_ln
        agt_ct_fn
        agt_co_nm
        agt_co_id
        agt_city
        agt_addr1
        agt_addr2
        adj_g_disc
        rate_matd
        rate_mash
        rate_mapa
        rate_mahw
        rate_macs
        rate_mabl
        rate_ma3s
        rate_ma2t
        rate_ma2s
        rate_lau
        rate_las
        rate_lar
        rate_lam
        rate_lag
        rate_laf
        rate_lae
        rate_lad
        rate_lab
        rate_laa
        rate_la4
        rate_la3
        rate_la2
        rate_la1
      }
    }
  }
`;

export const DELETE_PARTS_ORDER = gql`
  mutation DELETE_PARTS_ORDER($partsOrderId: uuid!) {
    delete_parts_orders_by_pk(id: $partsOrderId) {
      id
    }
  }
`;

export const DELETE_PARTS_ORDER_LINE = gql`
  mutation DELETE_PARTS_ORDER_LINE($partsOrderLineId: uuid!) {
    delete_parts_order_lines_by_pk(id: $partsOrderLineId) {
      id
    }
  }
`;

export const MUTATION_UPDATE_PO_CM_REECEIVED = gql`
  mutation MUTATION_UPDATE_PO_CM_REECEIVED($partsLineId: uuid!, $partsOrder: parts_order_lines_set_input) {
    update_parts_order_lines(where: { id: { _eq: $partsLineId } }, _set: $partsOrder) {
      returning {
        id
        cm_received
      }
    }
  }
`;
export const MUTATION_UPDATE_BO_ETA = gql`
  mutation MUTATION_UPDATE_BO_ETA($partsLineId: uuid!, $partsOrder: parts_order_lines_set_input) {
    update_parts_order_lines(where: { id: { _eq: $partsLineId } }, _set: $partsOrder) {
      returning {
        status
        backordered_eta
        id
      }
    }
  }
`;

export const MUTATION_BACKORDER_PART_LINE = gql`
  mutation MUTATION_BACKORDER_PART_LINE(
    $jobLineId: uuid!
    $partsLineId: uuid!
    $status: String!
    $partsOrder: parts_order_lines_set_input
  ) {
    update_parts_order_lines(where: { id: { _eq: $partsLineId } }, _set: $partsOrder) {
      returning {
        status
        backordered_on
        backordered_eta
        id
      }
    }
    update_joblines(where: { id: { _eq: $jobLineId } }, _set: { status: $status }) {
      returning {
        status
        id
      }
    }
  }
`;

export const QUERY_UNRECEIVED_LINES = gql`
  query QUERY_UNRECEIVED_LINES($jobId: uuid!, $vendorId: uuid!) {
    parts_order_lines(
      where: {
        parts_order: { jobid: { _eq: $jobId }, vendorid: { _eq: $vendorId }, return: { _eq: true } }
        _or: [{ cm_received: { _neq: true } }, { cm_received: { _is_null: true } }]
      }
    ) {
      cm_received
      id
      line_desc
      quantity
      act_price
      cost
      oem_partno
    }
  }
`;

export const MUTATION_MARK_RETURN_RECEIVED = gql`
  mutation MUTATION_MARK_RETURN_RECEIVED($partsLineIds: [uuid!]!) {
    update_parts_order_lines(where: { id: { _in: $partsLineIds } }, _set: { cm_received: true }) {
      returning {
        id
        cm_received
      }
    }
  }
`;
