Directory / plugin

PotoSales Order Entry for WooCommerce

v0.4.3 · by dj41888

Upload a customer's purchase order, review the extracted lines against your catalogue and create a pending WooCommerce order in one step.

View on WordPress.org

About this plugin

B2B stores often receive purchase orders as PDF files or photos and retype every line into WooCommerce. PotoSales Order Entry reads the purchase order for you and prepares a draft order for your staff to check.

  • Upload a PDF, JPG or PNG purchase order from the WooCommerce admin.
  • The service extracts buyer, addresses, PO number, dates, items, quantities, units and prices.
  • Lines are matched to your own WooCommerce products. Confirmed matches are remembered for each customer.
  • Problems are collected in one list: missing amounts, unknown products and totals that do not add up.
  • Review each line’s quantity, unit price and line amount. An entered line amount takes precedence; otherwise the amount is calculated from quantity and unit price. Amount differences remain visible for staff to review.
  • Confirmed product amounts are copied into the order without automatically adding or extracting tax. Store tax settings do not change these amounts. Staff can make any further adjustments in the created WooCommerce order.
  • Staff edit the draft next to the original document and then create the order. The order is created as pending and is never marked paid.
  • Duplicate uploads and duplicate buyer PO numbers are detected before an order is created twice.
  • The admin interface is available in English and Simplified Chinese and follows the site language by default.

Nothing is created automatically. Every order requires an explicit action by a user with permission to create orders. WooCommerce remains the authoritative store for your customers, products, prices and orders. Uploaded documents, limited product candidates and task feedback are sent to the service as described below.

Free trial

Clicking Get started in the welcome dialog on an eligible website starts a free trial: currently 20 processed purchase orders within 14 days, up to 5 uploads per day. The current allowance and terms are shown before activation. Each website has its own allowance. A document is charged only after a successful extraction. Failed or rejected documents release their credit. The trial does not turn into a paid subscription.

Requirements

  • MySQL or MariaDB with InnoDB tables. SQLite (including WordPress Playground) is not supported. On an unsupported database the plugin activates without running its features and shows a requirement notice on the Plugins screen; it does not create its tables or connect to the service.
  • WooCommerce 9.0 or later (HPOS and the legacy order storage are both supported).
  • The site must be reachable from the internet over HTTPS. The service verifies the site before it activates the trial, so local or private test sites cannot be activated.
  • PHP extensions: sodium and OpenSSL.
  • Simple products and specific product variations. Staff confirm the order currency and amounts; the plugin does not convert currencies or apply an exchange rate.

External services

This plugin needs the PotoSales order-entry service to read purchase orders. The service is operated by PotoSales. On a fresh, unconnected installation, no service requests are made until an authorized user opens the plugin page. After an administrator accepts the terms and activates the connection, background tasks can send status, heartbeat and queued feedback requests even when the page is closed.

  • Trial terms (when the plugin page is opened before activation): the plugin loads the current trial terms and allowance. No store data is sent, and the request does not include the site address.
  • Trial activation (when an administrator clicks Get started): the site URL, a verification callback URL on this site, random installation and request IDs, a temporary verification secret, the accepted terms version and the WordPress user ID of the administrator who accepted. The service calls the verification URL to confirm site ownership.
  • Document upload (when a user uploads a purchase order): the uploaded file, its hash, size and extension, and installation/import/request identifiers. The file may contain customer names, contact details and addresses. The service stores it encrypted and uses Alibaba Cloud Model Studio (International deployment scope) to extract its contents. Model Studio stores data in Singapore; model inference may run in other locations outside mainland China.
  • Product comparison (when a user asks for product suggestions): the selected purchase order line and a limited list of candidate products (product and variation IDs, name, SKU and variation attributes), processed by the service and its AI provider.
  • Status, version and credits (on the plugin page and in connected background tasks): site and task identifiers; the plugin version (sent with every request so the service can ask for an update when a version is no longer supported) and the WooCommerce version; requests for task status, current plans and remaining credits.
  • Review feedback (after an order is created or an import is discarded): event and task identifiers, the outcome, names of changed fields, event time and the WooCommerce order ID. If employee attribution was enabled on an existing installation, a WordPress user reference may also be added to uploads and feedback. New installations leave this disabled. The plugin does not upload the store’s full customer or employee database.
  • Support and continued-access requests (when explicitly submitted): request identifiers and the support message reviewed and submitted by the user. No payment card details are collected by this plugin.
  • Online purchase (only when an administrator clicks Subscribe, Switch to this plan or Buy top-up): the plugin asks the PotoSales service to register the purchase for this website, with the selected plan and the payment email entered by the administrator. The payment window is then loaded from Freemius (https://checkout.freemius.com), which receives the plan, the payment email and the payment details entered in that window. After the payment, the plugin receives the Freemius license ID and sends it to the PotoSales service, which confirms it with Freemius and adds the credits to this website as soon as Freemius shows the payment. While the payment is being confirmed, the page asks the PotoSales service again every few seconds for up to one minute. Cancelling a renewal sends a cancellation request to the PotoSales service, which cancels the subscription at Freemius. Freemius terms: https://freemius.com/terms/ Freemius privacy policy: https://freemius.com/privacy/
  • Document management (when requested): the document identifier for deletion or retrieval of a stored original; cancel/resume requests include the corresponding intake identifier.

Service address: https://api.potosales.com

  • Trial terms: https://potosales.com/terms
  • Privacy notice: https://potosales.com/privacy
  • Support: https://potosales.com/support

Alibaba Cloud processes documents on behalf of PotoSales: https://www.alibabacloud.com/help/en/legal/latest/alibaba-cloud-international-website-privacy-policy

Source code

The admin interface in assets/app.js is built from the readable source files in the admin folder with esbuild. The WordPress.org package includes package.json and package-lock.json. From the plugin folder, use Node.js 22 with npm, run npm ci to install the locked build dependencies, then npm run build to regenerate assets/app.js. These tools are only needed to rebuild the interface, not to use the plugin. The payment window uses the Freemius Checkout library (@freemius/checkout, MIT licence, source: https://github.com/Freemius/freemius-checkout-js), which is bundled into assets/app.js by the same build and loads no remote script. The CSS files in assets are readable source files.

Plugin tags