Image 1 of 1

Order Export

Product information

By Pinelab

Export orders in your own customizable format

npm install @pinelab/vendure-plugin-order-export
Support by
Support languages
en
nl
Integration type
Partner
Category
Admin tools
Compatible with
^2.0.0
Latest version
1.2.0
Last published
Jun 25, 2024
Downloads in past month
544

Vendure Order Export Plugin

Official documentation here

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()],
  }),
];
Vendure
Get started

Create your first commerce experience with Vendure in less than 2 minutes

Vendure is a registered trademark. Our trademark policy ensures that our brand and products are protected. Feel free to reach out if you have any questions about our trademarks.

Newsletter

Get the latest product news and announcements delivered directly to your inbox.

© Copyright 2022 - 2024, Vendure GmbH. All rights reserved.