function idwc_insert_order($order_id, $old_status, $new_status)
{
    // we need to run this on status update, edit, and delete
    // this used EDD payment_id as txn_id rather than gateway txn_id
    $items = idwc_order_items($order_id);
    $id_orders = array();
    foreach ($items as $item) {
        $qty = $item['qty'];
        for ($i = 1; $i <= $qty; $i++) {
            $vars = idwc_payment_vars($item, $new_status, $order_id, $i);
            $txn_id = $vars['transaction_id'];
            $existing_txn = ID_Order::get_order_by_txn($txn_id);
            if (empty($existing_txn)) {
                $rc = new ReflectionClass('ID_Order');
                $order = $rc->newInstanceArgs($vars);
                $pay_id = $order->insert_order();
                $id_orders[] = $pay_id;
            } else {
                if ($existing_txn->transaction_id !== $new_status) {
                    $vars['id'] = $existing_txn->id;
                    $rc = new ReflectionClass('ID_Order');
                    $order = $rc->newInstanceArgs($vars);
                    $update = $order->update_order();
                }
            }
        }
        update_post_meta($order_id, '_wc_order_pairing', $id_orders);
    }
}