# Install this plugin
    npm install @pinelab/vendure-plugin-order-export
    
    

Vendure Order Export Plugin

This plugin allows administrators to export orders to a file. The default exports orders and their totals to a csv file. You can implement your own strategy to determine what and how data is exported.

Getting started

  1. Add the server and admin UI extensions in your vendure-config.ts
import { OrderExportPlugin } from '@pinelab/vendure-plugin-order-export';

// Server plugin
plugins: [
  OrderExportPlugin.init({
    // Optionally add your own strategies here
    exportStrategies: [],
  }),
   AdminUiPlugin.init({
      port: 3002,
      route: 'admin',
      app: compileUiExtensions({
         outputPath: path.join(__dirname, '__admin-ui'),
         extensions: [OrderExportPlugin.ui],
      }),
   }),
   ...
];
  1. Make sure your user has the permission ExportOrders
  2. After starting your server, you should be able to see the Export orders in the menu on the left side, under ' sales.'
  3. Select a date range, select an export strategy and click export!

Custom export strategies

You can easily implement your own export strategy and pass it to the plugin:

import { ExportStrategy } from '@pinelab/vendure-plugin-order-export';
import { promises as fs } from 'fs';
import { createObjectCsvWriter } from 'csv-writer';

export class MyCustomExport implements ExportStrategy {
  // Name as shown in the admin UI
  readonly name = 'my-custom-export';
  // Content-type of your export file
  readonly contentType = 'text/csv';
  // File extension of your export file
  readonly fileExtension = 'csv';

  async createExportFile({
    ctx,
    startDate,
    endDate,
    orderService,
  }: ExportInput): Promise<string> {
    const orders = await orderService.findAll(
      ctx,
      {
        filter: {
          orderPlacedAt: {
            between: {
              start: startDate,
              end: endDate,
            },
          },
        },
      },
      ['lines.productVariant']
    );
    // Do your magic with the order data here
    const filePath = '/tmp/your-temp-file.csv';
    const csvWriter = createObjectCsvWriter({ path: filePath });
    await csvWriter.writeRecords({ data: 'your custom data' });
    return filePath;
  }
}

Don't forget to add the strategy to your plugin:

plugins: [
  OrderExportPlugin.init({
    exportStrategies: [new MyCustomExport()],
  }),
];