Welcome to Pepperi

  • Getting Started

    The basics you need to know when first setting up Pepperi with your own data

  • Free online training

    Register for a live webinar (or 2!) to learn about system setup and configuration, with live q&a

  • Webinars & videos

    Watch recorded training webinars and product videos

  • Ideas

    Browse and vote for suggestions and post your own ideas on our community forum.

  • Announcements & release notes

    Stay up to date with new releases and features.

Ways to sell

 

 In Pepperi Web Admin V9.2 we are releasing new Packages and special offers capabilities, compatible with the new Order Center. The feature is a limited availability right now, and will gradually become generally available. If you would like to have this feature activated, please contact us. Additional features are also part of this release. Read all the details below.

All New Packages and Special Offers (limited release)

Additional features 

  • Turn quotes into orders, or orders into invoices using the new Duplication action
  • Workflow designer enhancement – “Reset Layout”
  • Display Webhook response

All New Packages and Special Offers (limited release)

  • User selects which bonus items to receive with a discount as part of a package/box
  • Predefined packages with free bonus items picked by user

Packages2.jpg

Additional features

Duplicate Action

The Duplicate Action will duplicate a Transaction or Activity automatically as part of the Workflow. The newly created Transaction/Activity may be opened for viewing/editing, or just saved.

The duplication will create a Transaction/Activity of the type that you indicate, and duplicate the values of fields that you select.

For example, a Transaction of type Quote may be duplicated to a Sales Order when it changes from Submitted to Approved status in the Workflow.

When adding the Duplicate action, select the Transaction Type and indicate which fields to duplicate the values for, for example, "Unit Price After Discount" , in order to maintain any special pricing in the new Transaction.

 

Duplicate_Action.png

Reset Layout

Have a complicated Workflow? Hit "Reset Layout" and it will organize the flow chart nicely for you.

ResetLayout.PNG

Display Webhook response

If you are using Webhook Branch actions in your Workflow, and you would like the ability to display the result message to the user, use the Webhook Result Notification action. Add this action as the last action in your workflow, so that if the user does not tap "Close" on the result notification window it will not stop the remaining action in the Workflow from being executed.

 

Add the Webhook Result Notification action to the Workflow, and select the URL which Webhook Branch action's message should be displayed from the menu.

WebhookResult.PNG

 

* Configuration of the new features listed here is available via the Pepperi Web Admin only. The features will be available to users on Pepperi for iOS in an upcoming app version.

 

Workflows carry out your business rules when the activity changes between statuses you define. You can configure the Workflows to carry out many types of actions triggered by the status changes of a Transaction, Activity or even an Account. 

Workflow Designer allows you to define flexible Workflows for Transactions, Activities and even Workflows for when Accounts are created.

Workflow2NEW.png

Actions can be triggered for any combination of status changes (not only the three previously supported - Submitted, Revised, Awaiting approval).

Use the Workflow Designer to set different actions for Orders changing back and forth between statuses. Each of the status changes can trigger multiple actions.

This provides you with unlimited flexibility in defining exactly what happens at every point in your business process.

Actions include:

  • Alerts
  • Notifications
  • Webhooks (web services)
  • Conditional alerts
  • Branch to another step in the workflow
  • More... (full list of Workflow actions are detailed below)

You can view a live demonstration of use cases on this in depth webinar on the new Workflows here: Pepperi Product Education Webinar - New Workflows

Workflows for Accounts

We are also introducing Workflows for Accounts. You can now trigger actions such as notification, credit validation, Email, alerts, and more when a new Account (customer) is created by a user on the mobile device.

For example, trigger an address verification form to pop up when a user creates a new Account that verifies address fields such as City, State, Street against a predefined list.

A detailed lists of the actions available for Accounts is in the table below.

New visual representation

The Workflow Designer has an easy-to-follow visual flowchart representation. Workflows are still located in the same place in the Workflows tab of the Transaction, Account or Activity.

Workflow2NEW.png

 

Each status change defined in the Workflow may have one or more Actions associated with it.

To Add a step, click "+Step" and give the Step a name. The step name will be used as the text on the "Submit" or "Done" button on the Transaction, Activity or Account creation form.

In the example below the name "Validate order" will appear instead of the text "Submit" on the shopping cart.

The actions defined in this step will be executed when the Transaction changes status from In creation to Submitted.

Building a workflow like the one shown in the diagram above requires you to add steps and actions for each of the required status changes, and then the diagram above will be automatically generated.

Actions are divided into "Actions and Branches" and "Post Actions"

The list of all actions shown here is explained in detail in the table below.

WorkflowSteps.PNG

 

Action and Post Actions

Actions are triggered by Status changes in the Workflow of the Activity/Transaction/Account.

 

Actions (click for details)  
Alerts and Notifications  
  • Alert
This action displays an alert message in a dialog box with the option to Cancel or Continue. Cancel - dismisses the dialog and returns the user to what she was working on. Continue - continues to the next action or step in the workflow.
  • Alert on Condition
This action displays an alert message in a dialog box on the condition that the selected rule is evaluated to the indicated value (true/false). Cancel - dismisses the dialog and returns the user to what she was working on. Continue - continues to the next action or step in the workflow.
  • Notification
This action displays a notification message in a dialog box. The user clicks OK and the workflow continues to the next action or step.
  • Stop condition
The Workflow will be stopped on the condition that the selected rule is evaluated to the indicated value (true/false). A message will be displayed to the user, allowing them to go back and modify the order/activity accordingly.
   Validate History

At the beginning of a Workflow check if there is an open Activity \ Transaction of the same type and for the same Account. If so, either ask the user if they want to continue it, and direct them to the list or force them to be directed to it, in which case it will be opened.

This action is available for the New to InCreation status transition only. This action is not available for Account Workflows (Activities and Transactions only).

Webhooks  
  • Webhook
This action executes a Webhook and continues the Workflow
  • Webhook Stop Condition
The Workflow will be stopped on the condition that the Webhook (web service) is evaluated to false. A message will be displayed to the user, allowing them to go back and modify the order/activity accordingly.
  • Webhook Branch
This action executes a Webhook and branches the workflow to another step based on the status selected in case of failure.
Custom Form Open WEB customized form with any HTML code that you enter.
Branch Condition This action evaluates a Boolean rule and branches the workflow to another step based on the status selected in case of failure. Select from a list of Boolean rules created in Custom Fields. Select the status in case the rule fails to evaluate.
Open Form  This action allows you to select a form that will be opened for the user to fill in. If the form does not contain fields marked as mandatory it will not be opened. Selecting \'Force always open\' will open the form even if does not contain mandatory fields.
Force Sync  This action forces the mobile app to sync. Use this action if you want the user to sync before beginning an activity to make sure they have the latest updates. For example, to make sure they have the latest item inventory before submitting an order.
Split Order This action splits the order among multiple locations (ie chains) and creates a separate Transaction for each location. Select the Transaction Type for the newly created orders.
Payment Initiates an electronic payment via the provider configured in Pepperi. If the payment fails, you can choose an alternate status for the Transaction.
Capture Geolocation Captures the Latitude and Longitude coordinates of the device (to custom fields of type Decimal value). You can capture the location not only upon submission, but during any other status change. An accuracy radius is captured as well (Decimal value). 
Capture Date & Time Captures the Date & Time and saves it in a custom field. This is actually a timestamp you can initiate at any point in the Transaction or Activity that allows you to capture when a specific event such as a change in status, payment, sync, or alert occurred. You can then display it on any form or report.
Post Actions  
Send email Send configurable email notification with attachment
Export File to FTP This action will post a file in the format selected with the order/activity data to the Pepperi secure FTP server. This file can then be imported to any ERP/CRM or other system.
Distribute Activity This action duplicates the Activity for multiple Accounts. Select the type for the newly created Activities.
Navigate to  After the Actions in this step are completed, the user will be redirected to the page they were on previously, an Activity List of your choice, or stay on the same page. Select from the options in the menu. The default is one screen back.
Update your stock on hand of the items in the Transaction by deducting the quantity from your current stock. And/or update the store's stock count of this item by adding the ordered quantity immediately upon submission. For details on this field (AccountInStockQuantity) see: Account inventory

 

Account Dashboard Configuration

You can fully configure the Account Dashboard - including the Header, Menu, Toolbar, Recent Activities, Upper and Lower Dashboard.

 

Header

The Header tab allows you to select up to 4 fields to be shown in the Account Dashboard Header. Learn more...

Recent Activities

Recent Activities bare displayed in a bar across the top of the Account Dashboard. Select an Activity List that contains the types and statuses of Activities for display across the bar. To learn more about how to create Activity Lists: Sales Activity Lists

Activities Toolbar and Activities Menu

Select the Activities you wish to appear in the Toolbar VS. those that will appear in the Menu. The Toolbar is limited to 7 items. The Menu has no limit.

Learn more. . .

 

Dashboard

Add any charts, graphs and tables queried from your database systems to the Account Dashboard. 

You will need to create them as "Widgets" in Pepperi and then position them as tabs on the upper and lower account dashboards.

To learn how to upload data for widgets: Account Dashboard Customization using your own data

For example: upload data about Sales by Brand, Commissions, Product Lines, Order Types.

Managing Buyers for self-ordering

You can invite your customers to the Pepperi Storefront (Web and Mobile) for B2B self-service ordering from the Account List using the multi-selection option.

Please note that only Pepperi Admin users can invite buyers.

(For details on using the Account List View see: Accounts List View)

Select the Account(s) you wish to connect and from the Action menu -> Connect as Buyer (available for Admins only)

A list of contacts for any Accounts you selected will appear and Select the ones you wish to connect as Buyers.

(You must have contacts defined for Accounts in order to connect them as buyers. You can add them manually per each Account or see this article for more detailed information: How to Upload Contacts for Accounts in Bulk).

 

Click Connect as Buyer and you can then customize the welcome message and subject that is sent to invite the buyers to Pepperi for self-ordering.

You can customize the message using an HTML template to include any branding and text. For detailed instructions see: Customize Email Template

Their username and password will be added to the end of the message.

To deactivate multiple buyers (which removes their access for self-ordering) select Deactivate Buyer from the menu. Buyers may be reactivated at a later time.

 

As part of Pepperi’s integration platform, we provide a plugin that allows you to integrate data from any back office system that has an HTTP-based API (RESTful API, SOAP API etc.)

The API could either be a Cloud API or On-Premise one transferring data into Pepperi and from Pepperi into your system.

The plugin allows you to configure the transfer of data back and forth using a graphical interface which makes the plugin accessible and simple to use. 

 

Who can use the HTTP Plugin?

Why is it called HTTP plugin?

How does the HTTP Plugin work?

Understanding Pepperi’s integration platform

Batch data uploads from your back-office to Pepperi

Add a new “To Pepperi” Dataflow Task -

Authentication

How to check the error log

Formatting the data returned from your system

Schedule your task

Checking the Status of Tasks

General Settings

Data manipulation options

Real-time data updates from Pepperi to your back-office

Add a new “From Pepperi” Dataflow Task -

Authentication

Posting data

Steps to generate your HTTP transaction request

Formatting the data returned from your system 

Last step – connect your Dataflow task to the transaction’s Webhook

Who can use the HTTP Plugin?

If you are using an ERP, accounting system or any back office system that Pepperi does not have a pre-built plugin for (see a list of our plugins here: Pepperi Integrations Directory) you can use the HTTP Plugin to sync your data to Pepperi.

If your back end system exposes an API or you if you have your own home grown web services, then you can sync Pepperi with your system using Pepperi's graphical configuration tool - code free!

Why is it called HTTP plugin?

Pepperi's plugin enables you to sync with any system that "speaks" HTTP - doesn't matter if its REST/XML/JSON/SOAP or any other HTTP Request/Response type.

How does the HTTP Plugin work?

Pepperi's plugin allows you to submit HTTP GET/POST requests for querying data- item and customer data, or any other relevant sales data from your system into Pepperi and to submit (usually POST) Transactions/Activities from Pepperi to your system.

The configuration of the requests is done via a graphical user interface provided by Pepperi and accessed directly from the Pepperi Web Admin settings.

You may also configure more advanced settings to handle the data that is received from your system or sent to your system in a more sophisticated way, for example filter out certain items or customers that you do not want to import to Pepperi.

Each of the data-pulling tasks from your system to Pepperi is scheduled to run automatically at intervals that you define, while the data from Pepperi to your system is submitted in real time and the response is presented to the sales rep in the field (using WebHooks).

This guide will instruct you on how to set up the importing, exporting and scheduling of data. 

Understanding Pepperi’s integration platform

 This diagram desribes the relations between the different components of Peppri’s integration platform.

Integration of data from Pepperi to your back-office system is done via Webhooks triggered from Pepperi back-office to Pepperi’s internal endpoint of a “Dataflow task” configured by you, and ends up in an immediate response returned to the mobile app or web app and in a transaction log that you can view and track.

Integration of data from your back-office system to Pepperi is done via batch uploads of data triggered by Pepperi’s integration platform Shceduled Jobs that executes 1 or many “Dataflow tasks” configured by you, and ends up in a batch upload to Pepperi and in an execution log that you can view and track.


Batch data uploads from your back-office to Pepperi

To configure the HTTP Plugin to import your items to Pepperi you need to create a task to GET the data and to authenticate with your system.

In the Pepperi Web Admin go to Settings -> ERP Integration -> Plugin Settings

This is the dashboard to your plugin – here you can see if your connection is set well, when and what was the status of the scheduler last run as well as to trigger the data pulling jobs manually.

Click on the Advanced Settings link to take you to the HTTP Plugin advanced settings – where you actually maintain and configure the HTTP requests for the first time.

You will be brought to the Plugin Advanced Settings interface. This is the graphical interface in which you set up, schedule and configure all the tasks associated with importing and exporting data from and to your system.

The home page of the advanced settings is the “General Settings” page – where all the settings related to all the tasks are configured - such as connection settings or connection timeout – these are explained later.

Your first step would be to add a dataflow task that would bring data from your system to Pepperi -

 

Add a new “To Pepperi” Dataflow Task

Go to the Dataflow Tasks -> Manage Tasks -> To Pepperi menu option

Click on "Add New Task" 

Task Name:  description of the task – e.g.:  export products from my-system

Application: select “Generic HTTP Connector”

Source Object: select “Generic Connector HTTP Exporter”

Target Object: select the target object in Pepperi. e.g.: if you want the products from your system to be uploaded to Pepperi’s item list select “Pepperi Export Item”.

In case you just want to test before uploading anything select the option “Store file for later use”.

 

 

Once you save the task – you can use the top menu bar to navigate to the new task and start configuring it.

Go to Dataflow Tasks -> To Pepperi -> <Your_Task_Name> (in this example "Export Items")

 

Each tab across the Task settings allows you to configure various elements of the data being imported.

Authentication

The first step should be to configure the authentication of the connection between Pepperi and your back office system.

Go to the HTTP tab to configure the authentication:

Authentication Type: select your Authentication type: Basic, OAuth 1.0 or OAuth2.0

You can choose between Basic, None (any other custom authentication), OAuth 1.0 or OAuth 2.0.

In case you selected OAuth 1.0 or OAuth 2.0- you need to click on "Get Token" and enter the information required to authenticate with your system.

Please note that OAuth authentication only needs to be done once for all tasks - both from Pepperi and to Pepperi.

 

Here is the screen you will be presented with, including some example values for authentication:

Click on Generate Token.

The next step would be to configure your HTTP request method

Method:  GET/POST (usually for REST API request use "GET", for SOAP request use POST)

 

The next step is to configure the URL for the data-pulling request call you will make to your system, retrieve the data in the format your system outputs it, and then configure Pepperi to read the response by indicating a "lines element" for parsing the data.

Enter the URL:

This is the HTTP Endpoint of your system's API.

Click "RUN >>" on the top right of the task.

The task will run and retrieve the data in the format that it is returned from your system. 

How to check the error log

If the data is not retrieved because of an error – you will see a complete log of the request-response within the same window you run the request in.

Formatting the data returned from your system

The data will be in JSON or XML format, and needs to be converted to table style object – records/lines.

Example of your JSON data:

[

{
"ID": "18526387-601a-410a-acd4-4e7e5681f1e6",
"SKU": "1000002",
"Name": "Bj Nose Pins 120ct",
"Category": "Body Jewelry And Rings",
"Brand": null,
"Type": "Stock",
"CostingMethod": "FIFO",
"DropShipMode": "No Drop Ship",
"DefaultLocation": "Main Warehouse",
"Length": 0,
"Width": 0,
"Height": 0,
"Weight": 0,
"UOM": "Item",
"Barcode": "763684283434",
"MinimumBeforeReorder": 4,
"ReorderQuantity": 20,
"PriceTier1": 49,
"PriceTier2": 0,
"PriceTier3": 0,
"PriceTier4": 0,
"PriceTier5": 0,
"PriceTier6": 0,
"PriceTier7": 0,
"PriceTier8": 0,
"PriceTier9": 0,
"PriceTier10": 0,
"PriceTiers": {
"Rep Price 1": 49,
"Rep Price 2": 0,
"Cash & Carry ": 0,
"Amazon": 0,
"Ebay": 0,
"Contractor Pricing": 0,
"Tier 7": 0,
"Tier 8": 0,
"Tier 9": 0,
"Tier 10": 0
},

{

 "ID": "18529887-601a-410a-acd4-4e7e5681f1e6",
"SKU": "1000002",
"Name": "Second items Pins 120ct",
"Category": "Body Jewelry And Rings",
"Brand": null,
"Type": "Stock",
"CostingMethod": "FIFO",
"DropShipMode": "No Drop Ship",
"DefaultLocation": "Main Warehouse",
"Length": 0,
"Width": 0,
"Height": 0,
"Weight": 0,
"UOM": "Item",
"Barcode": "763684283434",
"MinimumBeforeReorder": 4,
"ReorderQuantity": 20,
"PriceTier1": 49,
"PriceTier2": 0,
"PriceTier3": 0,
"PriceTier4": 0,
"PriceTier5": 0,
"PriceTier6": 0,
"PriceTier7": 0,
"PriceTier8": 0,
"PriceTier9": 0,
"PriceTier10": 0,
"PriceTiers": {
"Rep Price 1": 49,
"Rep Price 2": 0,
"Cash & Carry ": 0,
"Amazon": 0,
"Ebay": 0,
"Contractor Pricing": 0,
"Tier 7": 0,
"Tier 8": 0,
"Tier 9": 0,
"Tier 10": 0

}

]

 

This data needs to be parsed into a tabular format of lines/records

Go to the task’s “settings” tab and Configure the row element to instruct Pepperi how to parse the data. 

For example, in this case since the JSON returns an array the correct configuration is simply “row”: (if the response contains xml the row element would be the element that represents the row, for example: item)

 

Pagination

Most of the API requests require paging

In this case you need to use the following syntax in the URL: {#page_num#}  to represent a page number that starts from 1 and ends when there is no more data to fetch.

For example: https://my-system/wp-json/wc/v1/products?per_page=100&page={#page_num#} 

 

Schedule your task

The next step is to schedule the export of your system’s data to Pepperi.

Go to the Schedule Jobs Tab

In case you already ran the task once you will see a job with the task name “Test: <task name>”

Click Add new record or edit to enter the required values:

Application:  HTTP Connector

Job Description: give the job a descriptive name – please note that a job may contain several tasks.

Scheduling: Select the frequency of number of Hours / Minutes, the starting hour and ending hour, and the week days the Job will be triggered in.

 

 

The task will now run automatically at the scheduled intervals and your item/other data will be updated in Pepperi. When users sync the app on their mobile devices they will see the updated data.

Checking the Status of Tasks

You can check the status of any of the tasks in the Schedule Jobs tab at any time, and see the last/next run time and status. 

Example of Scheduled Jobs statuses:

 

 

 

You will also see the plugin settings dashboard in your Pepperi Web Admin under Settings -> ERP Integration -> Plugin Settings:


 

General Settings

Some settings should be saved generally for all the Dataflow tasks. Below are the most commonly used ones – all of them are described in the “description” field of each Settings line:

  1. Webapi -  0 = use ftp to upload the data to Pepperi, 1= use Pepperi’s API (currently only items and accounts are supported in API – so that ftp is a better choice)
  2. user- FTP user (as provided by Pepperi's FTP configuration)
  3. pass - FTP password 

4. http_request_timeout_seconds - timeout for all HTTP requests

5. on_trn_error_send_email - 1 = send email to inform of transaction error

6. smtp_to - list of recipient comma separated 

7. smtp_subject - email subject

Data manipulation options 

The other task’s tabs enable you manipulate the data to achieve the desired tabular data you wish to map to Pepperi fields.

Mappings

Mappings tab enables you to:

Map generated CSV columns to Pepperi fields (please note that alternatively you can upload the file as is and use the mapping option from the Pepperi Web Admin settings (see: Import your Items to Pepperi)

  1. Change the generated CSV columns to different column names
  2. Add “expressions” that would create new calculated columns that you can map to Pepperi. For example, to calculate a tax value, the unit price is multiplied by a tax rate of a specific region.

        Expressions syntax can be found here Expressions Syntax for Generic Plugin

 

Source:

For the HTTP Plugin use “Expression” to refer to any source column (original column) or any expression – fixed fields and custom fields are not used.

Target:

For the HTTP Plugin use “Fixed Fields” dropdown box to map to Pepperi’s fields and “Column Name” to refer to the new generated column name in case you want to change it. 

Settings

Settings tab enables you to add certain “per task” configuration settings.

There are many available settings – they are explained below.

Each settings field is described in the “Description” column.

To “turn on” each tab you need to assign a value of “1” to the appropriate Settings Field.

For example: to turn on the Join tab, you need to add new record with Field Name = join Field Value = 1

The reason for it is to enable you to turn off and on tabs and test your task with/without it.

 

List of settings fields relevant for HTTP data pulling:

  1. http_row_element - the element that represents row (in case of JSON array it would be “row”)

the HTTP plugin accepts either XML or JSON content as response – converts JSON to XML if required – then generates a flat CSV file will all the elements below the row element so that if the row element has sub_row below it will generate a column with the name: row_sub_row

  1. webapi -  1 = use Pepperi’s API to upload the CSV generated from HTTP request,  0 = use Pepperi’s FTP instead (recommended)
  2. prefix – the CSV’s file name prefix (file name conventions are listed here: Upload data to Pepperi via FTP using csv files )
  3. http_request_timeout_seconds - http request timeout in seconds
  4. loop_over_table - you can type here a task name and the http request will run in a loop over all the records generated by that task, for example if your API enables you to fetch 1 invoice details per request and you want to generate a CSV will all the invoices details– you would first create a task to fetch all the invoices headers and then loop over that task and fetch all its details.
  5. from_now_add - add X days to currents days. e.g.:  60 or -60. (useful when you want to fetch invoices from 60 days ago), you can refer to the generated date in the URL and in the Header as following: {#from_now_add#}  (see full list of Pepperi’s http request syntax- below)
  6. http_date_format - the date format generated from by
  7. donotsend - setting this to 1 will prevent uploading the file to Pepperi (for test scenarios)
  8. remove_duplicates - you can implement a “distinct” using this setting by removing the duplicated row, for example: “ItemId, PriveLevelId “will remove all lines that has the same ItemId and PriceLevelId.
  9. page_num_start - http pagination starting point (default is 1) this is impacting {#page_num#}  (see full list of Pepperi’s http request syntax- below)
  10. http_export_add_parents - since http_row_element generates CSV from that specified element and below – you can add specific parent elements (comma separated) you would like to add to each row (for example if a parent contains ID that you need to attach to all the lines) the path to the parent element is relative to the row element and is specified in XPATH. (e.g.: if ID is 2 levels above the row ../ID)
  11. http_export_skip_childs - specify elements you would like to “skip” and NOT generate from the JSON/XML to the CSV file (comma separated)
  12. create_categories - setting “1” will generate Main Categories in Pepperi if you also set the mapping to “Main Category” in the mappings tab.
  13. create_filters - setting “1” will generate Filters in Pepperi if you also set the mapping to “Main Category” and to “Property(Filter)” in the mappings tab (filters are created per each category)
  14. http_sleep_miliseconds – specify milliseconds sleep between each request (for paging and looping over table)
  15. key_val_table_id – generates Pepperi’s user defined table CSV input from a standard CSV file generated by the task, this settings fields defines the hard coded MapDataExternalID
  16. key_val_main_key_col – generates Pepperi’s user defined table CSV input from a standard CSV file generated by the task, this settings fields defines the original CSV column content that will be the MainKey
  17. key_val_secondary_key_col – generates Pepperi’s user defined table CSV input from a standard CSV file generated by the task, this settings fields defines the original CSV column content that will be the SecondaryKey
  18. key_val_hidden_col – generates Pepperi’s user defined table CSV input from a standard CSV file generated by the task, this settings fields defines the original CSV column content that will be the Hidden
  19. key_val_separator – generates Pepperi’s user defined table CSV input from a standard CSV file generated by the task, this settings fields defines the separator that will separate between each column – since all columns are generated as 1 array – default is ~

 

 Format

  

Format tab enables you to change column’s format, so that for example a number would appear with 1 decimal point instead of 4

Column Name – The column name you want to format

Number Format- Number formats -  for example: 0.0 (1 decimal point)

Date Format – Date formats: for example, dd/MM/yyyy  (29/12/2016)

Upper/Lower Case– define upper or lower case:   optional values: “up”/” low”

 

Full documentation of the format options could be found here: Format Syntax for Generic Plugin 

Join

 

 

Join tab enables you to join unlimited number of CSV files generated from your various tasks in SQL-style syntax.

Task Name –   the task name. e.g.:  Item Export

Columns –  the columns you want to pick from the joined task.

 * represents all columns, for specific columns:   ItemName, ItemPrice (if there is a space the syntax is [Item Name])

Join Condition -   define the where condition that links between the tasks. 

The syntax is <added task column> = <existing task column> e.g.:  if my task returns a CSV file with column ID and I am adding a joined task that has ItemID in it – the syntax would be: ItemID = ID

If there are multiple columns linked they are comma separated. e.g.:  ItemID = ID , CategoryID = CatID

If the condition is text based the syntax is:  ItemID = ‘me item id’

For further advanced conditions see Advanced Where below.

Fixed Widths –  Not relevant for HTTP plugin (made for text files with fixed columns widths)

Advanced Condition – A full SQL based condition. e.g.: If your join condition has OR inside you should be using it as following:  ItemID =  ID OR ItemID = ‘1234’

 Pivot

 

 

Pivot tab enables you to link between unlimited number of CSV files generated from your various tasks in SQL-style syntax – but instead of multiplying the rows – to generate dynamically columns out of the linked task.

 

Task Name –   the task name. e.g.:  Item Export

SQL Query –  not in use for the HTTP Plugin (made for SQL plugin and desktop plugin)

Pivot Column -   the original column you want to generate multiple columns from.   e.g.: [Price Level Name] will generate many column names per each Price Level Name

Pivot Value–  the original column you want to take the values for the generated columns – either aggregate or top 1 value.   e.g.:  Price – will set the price as value per each price level.

Functions – aggregate function or top 1 value.  Top represents top 1 value, and other available functions are: sum, count, max, min.   you can have more than 1 function separated by comma. in this case multiple columns will be generated per each function.

Pivot Condition–  define the where condition that links between the tasks. 

The syntax is <added task column> = <existing task column> e.g.:  if my task returns a CSV file with column ID and I am adding a joined task that has ItemID in it – the syntax would be: ItemID = ID

If there are multiple columns linked they are comma separated. e.g.:  ItemID = ID , CategoryID = CatID

If the condition is text based the syntax is:  ItemID = ‘me item id’

Dynamic Mapping–  In case you use the plugin settings “Mapping” tab to map your fields to Pepperi’s fields – this option allows you to dynamically map generated pivot columns to Pepperi field.

For example - you can use it to make all your sales reps to the accounts sales rep field, so that you will dynamically assign multiple sales reps to single account.

 Replace

 

 

Replace tab enables you to replace characters within each data column you select.

Column –   the column name to replace that contains the character. e.g.:  ItemPrice

Find –  character to look for. It could be either an ASCII numeric value or text e.g.:  44 (ASCII value for comma) or just “,” (don’t add quotation mark just the comma)

Replace -   the character you wish to replace. e.g.:  if you want to replace comma with space you should enter 32 (ASCII value for space)

Split

 

Split tab enables you to split 1 column to multiple columns based on splitting character. For example, you can use the character “:” to generate multiple product category if the product description is in the following format:  Men : Clothes : Shirts

Column –   the column name that contains the splitting character. e.g.:  ItemDescription

Splitting Character –  character used to split and generate columns. It could be either an ASCII numeric value or text e.g.:  44 (ASCII value for comma) or just “,” (don’t add quotation mark just the comma)

Generated Columns Prefix -   generated columns prefix – for example: MainCategory prefix will generate columns: MainCategory1, MainCategory2 etc.

Union

  

Union tab enables you to merge multiple CSV files created by other tasks to 1 CSV file.

Task/File Name –   the task name to merge.

Real-time data updates from Pepperi to your back-office

 

Add a new “From Pepperi” Dataflow Task -

Go to the Dataflow Tasks -> Manage Tasks -> From Pepperi menu option

Click on "Add New Task" 

Task Name:  description of the task – e.g.:  Create Sales Order

Application: select “Generic HTTP Connector”

Source Object: select “Pepperi Transaction – Header”

Target Object: select “Generic Connector HTTP Importer”

 

Once you save the task – you can use the top menu bar to navigate to the new task and start configuring it.

Go to Dataflow Tasks -> From Pepperi -> <Your_Task_Name> (in this example "Create Sales Order")

Authentication

See above – OAuth authentication is only done once for all tasks – both from and to Pepperi.

Posting data

The next step would be to configure your HTTP request method

Method:  POST/PUT (usually for creating new transaction you use POST)

 

The next step is to configure the URL, Header and Body of the posted request to your system.

Enter the URL:

This is the HTTP Endpoint of your system's API.

Type in the HTTP Headers if there are any:

Enter the request’s Body:

 

 

Steps to generate your HTTP transaction request

  1. Download a sample of a Transaction XML from Pepperi’s Web Admin by following these instructions: Downloading configuration files
  2. Copy a sample of hard-coded request body (usually you have one in your system’s API documentation) and Paste it into the Body text area.
  3. Run the transaction test as explained below
  4. Replace the hard coded values with Pepperi’s fields place holders as explained below

Click "RUN >>" on the top right of the task.

This will pop up a transaction tester window that will enable you type in Pepperi’s transaction XML  >>  submit the transaction >> see the results on the left pane as it will be seen on the mobile app , and on the right pane – the complete log of the HTTP request and response. 

Please note that its recommended to change WrntyID of the transaction XML you are using for the test per each test request – since once a WrntyID was once successfully created – it will not enable you submitting it again to prevent duplications and therefore you will get the last successful response instead of the one you just submitted.

  

Pepperi’s HTTP request syntax 

You can use the following syntax anywhere in your URL, header or BODY.

  1. Place-holders from the transaction XML are represented as following: $#<field_name>#$

You can also type in an expression instead $#<expression>#$

Expression documentation is here: Expressions Syntax for Generic Plugin

  1. Place-holders from the settings (general or per task) are represented as following: !%field_name>%!
  2. When you create a transaction request usually that involves with generating array or some other repeated structure of transaction lines – to achieve that you use the syntax word: @@lines at the beginning of the lines part and in the end of it. For JSON requests that is usually a comma separator between the lines, if it is some other character you can define in in the settings field name: append_between_each_line

 

Formatting the data returned from your system 

By default, if your system returns one of the following HTTP Status Codes then the transaction is approved and returns to the mobile app in submitted status.

  1. 200 (OK)
  2. 201 (Created)
  3. 202 (Accepted) 

You can change this behavior by setting the task settings field:  use_http_status to “0” and define the expected “ok” actual value in the settings: result_status_ok

Pepperi’s mobile app enables you to display and integrate back 3 more fields at the time of the transaction: 

ExternalID – your system’s ID of the created transaction, and

HTML Message – a message you return in case of a business logic error that will enable the user correct the data input and submit the transaction again for approval.

Deep Link to your system’s transaction – a link you can click on and navigate straight into your system’s transaction, to view or even edit it.

Parsing these 3 fields from your system’s response Body – you can refer to the sequence number of the element returned – either XML or JSON, for example if your system’s transaction ID is returned third you can refer to it in the number 2 (since it starts from 0)

The ExternalID could be parsed from your response Body using the task’s setting field:  response_id_col

The HTML Message could be parsed from your response Body using the task’s setting field:  response_message_col

The Deep Link to your system’s transaction could be parsed from your response Body using a combination of 2 tasks setting fields:  response_internal_id_col and response_external_link

That is because many times the ExternalID is not the internal id of the transaction in your system - You would then type in the deep link URL combined with the internal id of the newly created transaction as following:  <your transaction url/ {#internal_id#} >

 

Last step – connect your Dataflow task to the transaction’s Webhook 

Copy the URL from the “Online Add On Url” and Paste it into Pepperi’s Online Add On, then add the Online Add-on to the desired transaction in the Transaction’s Workflows tab. For instructions on accessing the Workflows tab see: Sales Transaction Types - Actions, Workflows, ePayment and Settings

 

 

 

There are multiple data types you can load to Pepperi using CSV files. 

Data such as Items, Accounts, Accounts-Users, Accounts-Catalogs, Account-Types, Activities, Transactions and more may all be loaded using CSV files with headers.

Header names must exactly match the mapped field names listed in the Pepperi back office

This article will explain where to view the names and how to add/edit mapped names if they don't exist by default (not all fields are listed for mapping by default). It's very simple to add mapped names following these instructions, and it will ensure successful upload of your data over time.

Editing or Adding Mapped names 

You will first need to look at the list of available fields for the object you wish to load.

Let's take Items as an example. In the Pepperi Web Admin go to Settings -> Items -> Fields 

This area shows all the fields available for this type of object - in this example Items Fields.

The Mapped name is the name that must appear as the header of the column of your CSV file. For example, to load the Item Name, the column header should be "Description", as is shown in the mapped name below.

As you can see, by default not all fields have a mapped name assigned. In order to upload data to these fields, edit them and add a mapped name to be used in your CSV file.

Activating fields

Note that not all the fields are active by default. If you need to load data to a field that is not marked as active (it has only a green plus sign in the Actions column) then you need to activate it first by clicking on the plus sign, and then follow the instructions below to give it a mapped name.

 

Click on the edit icon for the field and type a mapped name. The mapped name can be any name you choose, it may also be identical to the Field name or the API name. This will not present any problem.

If you are automatically exporting files from your ERP to Pepperi, consult with your ERP administrator to choose a mapped name. The fields may have headers that are already coming from the ERP field names, and this may require you to use those same header names. 

Once you save the mapped name, the data loaded for that field will be mapped to it.

Creating mapped names ensures smooth upload of your data via CSV files.

Where are the fields for other object types listed?

For other objects, such as Accounts and Catalogs, the fields are listed in the Settings -> Accounts and Settings -> Catalogs areas. 

For Transaction Types and Activities, the fields are listed in the "Fields" tab of each individual Activity Type.

For example, Settings -> Sales Activities -> Transaction Types, then edit the Transaction Type you wish to map the fields for and go to the Fields tab to see the full list of fields.

 

 

Main Category is a mandatory field in Pepperi. Since Quickbooks doesn't force a category field, we automatically create a 'General' main category, so items will upload without interference.

If you wish to replace the main category with your own category field, follow these steps:

  • First create a custom field in Quickbooks – populate that with your brands. (Please consult Quickbooks help on assistance in custom field creation)
  • Open up the scheduler (clock icon in your task bar), highlight the ‘items’ line and press RUN EXE
  • Once the export has completed, go into: C:\Program Files (x86)\Pepperi\Pepperi for Quickbooks\exporter\   and pick up items.csv. Check this new file has the updated custom fields you created
  • Go into the back office, Items -> Manage Items ->Import/Export -> Import and upload the items.csv file
  • Remove the ‘Main category’ mapping from the current column by changing it back to ‘Choose Value’
  • Select your new column populated by your custom field, and select main category from the drop down selection

Your current data will upload manually in this form. This is a one time operation - the mapping will be saved for any future automatic uploads.

The Pepperi for SAP tutorial is available here for download in PDF.