FULFILLMENT
Sections:
Automated Fulfillment Overview
Setup for shippable product fulfillment
Designating Items for fulfillment
Web-based Fulfillment
Fulfillment DB Table - OrderPostProc Table
Shippable Products B2B Configuration of Robot
Order Cancellation
Order Ship Acknowledgement Email
FORMAT1900 Shippable Products - transmission of ship instructions
FORMAT1900 Shippable Products - ship instructions executed message
FORMAT1800 Shippable Products - transmission of ship instructions
FORMAT1800 Shippable Products - ship instructions executed message
Offsite Digital Products B2B Payload Fulfillment
Offiste Digital Products B2B E-Mail Relay Acknowledgement
Offsite Digital Products B2B Plugin Configuration
Offsite Digital Products B2B Plugin Module Input
Offsite Digital Products B2B Plugin Module Output
Orders can be viewed or printed from Database Records or cc: copies of e-mail. The SendSafe system can be setup to automatically perform B2B order fulfillment with any offsite fulfillment center you may use. SendSafe also offers fully integrated RMA product return systems.
Some e-stores of almost any sales volume level opt to use the optional integrated fulfillment system to manage the flow of orders to their business (even when they do not use outside fulfillment centers). This setup provides both web-based and email-based fufillment options. For web-based operations the system shows lists of orders to be fufilled and provides the tools to fufillment them. In email-based the system will e-mail the e-store or fulfillment center a consolidated list of all orders which need to be processed today. This e-mail list will include all information needed for fulfillment. The e-store or fulfillment center then sends back to SendSafe a list of tracking numbers and ship dates which have been assigned to each lineitem in the order. SendSafe will automatically import this list and update ship status.
SendSafe also includes integrated support for performing immediate fulfillment of orders of digital products. Music, software, images, and more can be immediately provided for download to a customer after their charge has been approved.
In addition to what is described below, the bidding admin page should be used for viewing and working with custom products which use FFPs to describe the lineitem or for jobs which you are bidding using the integrated bidding system. See also: Bidding System for additional information.
Regardless the process used for handling orders, it is always a good idea to retain a copy of all cc: emailed receipts as a backup record of every order.
Low Volume E-Stores
Some low volume e-stores chose to keep it simple and drive their order processing directly from
the cc: copy of the e-receipt
which they receive. This e-receipt is a complete copy of what the customer received and includes all product
pick, billing, and shipping information that would be needed by accounting and warehouse personnel. A slightly more
automated solution is to use SendSafe's Web-based Fulfillment system (some customization by CPrompt my be
required).
Medium Volume E-Stores
Medium volume e-stores often use one of the following:
An alternative is the optional accounting report which allows you to create a report which list all orders which came in on a specific day or for a specific customer on a specific day. You can click on an order to get a printable copy which includes all billing, shipping, and product pick information that would be needed by accounting and warehouse personnel. This printed copy can be used as a product traveler. The report can be customized by CPrompt to print shipping labels, barcoded travelers, bills of lading, or even thank you letters.
This report can also be exported in a comma delimited format which can be imported by accounting programs, shipping programs, or other software like spreadsheets. The report flags all exported orders, so that you will not end up with duplicates.
The contents of the customer and sales reports are configurable (to some extent) in the information printed for each order or customer.
CPrompt can create for your business "simple to use" reports and data entry screens designed for warehouse employees. These reports and data entry screens can contain consolidated inventory pick lists, order assembly instructions, forms, etc. These screens can work with barcode scanners and can track which employee handled which order. There is no limit to what can be done with custom reports and data entry screens.
High Volume E-Stores
High volume e-stores often have their accounting, call-center, inventory, and shipping systems integrated directly with SendSafe(1).
All orders as they are receive by the e-commerce system will be automatically inserted into your existing accounting, call-center, inventory, and shipping control systems. You will not need to change a single internal business procedure while introducing e-commerce into your business.
SendSafe can also be customized to print inventory pick lists, barcoded travelers, or any other type of custom paperwork your business may need (which cannot be produced by your accounting or inventory control systems).
(1)Customization of SendSafe by CPrompt is often required for full automated solutions; semi-automated solutions may not require customization when 3rd part import tools are used. VPN network connections are also sometimes required.
This FulFillment functionality is an optional add-on to the basic SendSafe system and may require some customization. The system fufills order and tracks the delivery of the products via outside fulfilment centers or Web-based.
The Fulfillment subsystem can be used in two ways:
There are four different fulfillment methods in SendSafe:
Here are the basic steps for Mode A:
Here are the basic steps for Mode B:
An SQL Script is included with SendSafe which can be used to setup the jobs used to run B2B E-Mail based or Web-based Fulfillment. The name of this script is: Add B2B Fulfillment jobs.sql and Add e-mail or Web-based Fulfillment jobs.sql
Incoming E-Mail Account
This account is used by the robot to receive e-mail from the Fullment house. This account must be reserved
only for use by the robot.
Shippable Items in the database designated as "B2B fufilled" will be processed by the B2B fulfillment system. Items are designated B2B by prefacing the Payloadloc field with an '@' sign or a "#' sign. The value after the '@' or '#' sign can (optionally) be used to identify the item to the B2B fulfillment house. This value is typically the product SKU, but it can be any alphanumeric designation you need.
Mode A & B: Payloadloc fields prefaced with a '#' will be fulfilled using integrated B2B for shippable product fulfillment. Typically an entry will be #<Optional Code> where the optional code can be used to further identify ITEMS for Mode A or Mode B (this optional field is reported while ignored by SendSafe logic and can be any code you want). The typical value is product SKU. ExamplePayLoadLoc = #HSJ-123 or ExamplePayLoadLoc = #MODEA or ExamplePayLoadLoc = #ANYTHING
Mode C: Payloadloc fields prefaced with a '@' will be fulfilled using plugin B2B fulfillment for offsite digital product fulfillment.
Mode D: Payloadloc fields prefaced with NEITHER an '@'or '#' will be fulfilled immediately in a locally assembled digital payload.
VERY IMPORTANT: Do not put only the prefix code into the Payloadloc DB column. This will result in orders for the product going unprocessed. YOu must have both the prefix (# or @) + some text string following it.
See for details
The system can cancel an order either via a customer command on the thankyou page or by voiding it on the order admin page.
The B2B cancellation request will only be sent to the fulfillment email addresses if a ship order has been transmitted.
Inventory on an items will only be decremented if a ship confirmation has not been received from fulfillment.
Setup:
The fulfillment system will send out an order acknowledgement email to the customer; this is in addition to the order status page avaiable to the customer. This email will have the following format. The lines highlighted in blue are automatically generated for each email. The lines in green is text you provide as part of configuration of the B2B fulfillment job.
From: sales@mybiz.com To: mycustomer@theirbiz.com Subject: Your Order has Shipped
|
The OrderPostProc table contains information on state of fulfillment including B2B and Web-based. These are examples of what can be seen in this DB table AS orders move down the assembly line (a.k.a. as steps of fulfimment are completed).
Example of a non-fullment order:
| transactionid | ProcessStep | AcklFulFillmentCompleted | PostProcStatus |
| 28897 | NULL | NULL | {COMPLETED};E-RECEIPT PROC:SENT |
Example of an order ready for fullment transmission or Web-based:
| transactionid | ProcessStep | AcklFulFillmentCompleted | PostProcStatus |
| 28897 | 1 | NULL | {COMPLETED};E-RECEIPT PROC:SENT |
Example of an order which has been transmitted to the fulfillment center or Web-based charge capture is in progess:
| transactionid | ProcessStep | AcklFulFillmentCompleted | PostProcStatus |
| 28897 | 2 | NULL | {COMPLETED};E-RECEIPT PROC:SENT |
Example of an order which has recieved from the fulfillment house that the order has shipped or Web-based charge capture is complete (order is okay to ship):
| transactionid | ProcessStep | AcklFulFillmentCompleted | PostProcStatus |
| 28897 | 3 | NULL | {COMPLETED};E-RECEIPT PROC:SENT |
Example of ship Acknowledgement e-mail has been sent and order fulfillment is complete:
| transactionid | ProcessStep | AcklFulFillmentCompleted | PostProcStatus |
| 28897 | 4 | Jul 13 2004 2:59PM | {COMPLETED};E-RECEIPT PROC:SENT;FULFILLED |
Example of a fullment order which has encountered an error:
| transactionid | ProcessStep | AcklFulFillmentCompleted | PostProcStatus |
| 28897 | 0 | NULL | {COMPLETED};E-RECEIPT PROC:SENT |
| FILE = "..\SendSafe\<your store name>.store.config" Before modifying any configuration file always make a backup copy of the file. To find a specific storefronts configuration file: see Location of Configuration files | ||
| Keyword | Default value | Explanation |
| B2B INTEGRATED | YES | This keyword enabled and disables B2B and Web-based Fulfillment operations |
These three entries all set to YES will result in a serializer being assigned to the order ONCE the charge has been approved.
| SERIALIZER | YES | This keyword enabled and disables serializing orders. |
| ONLYSERIALIZE B2B | YES | This keyword controls whether only B2B and Web-based fulfilled order recieve a serializer. |
| B2B POSTPROC | YES | This keyword enabled and disables Built B2B post processing Fulfillment operations (for shipable products). Post processing involves assigning a serilizer to the order. |
| B2B MODULE LOC | <none> | Set to "<none>" will disable - This entry is used for a B2B digitial fulfillment plug in module. |
| B2B MODULE NAME | <none> | Set to "<none>" will disable - This entry is used for a B2B digitial fulfillment plug in module. |
Web-based fulfillment is controlled by using the Fulfillment admin page (located in the orders dropdown). This system is for 100% In-House fulfillment of orders OR for fulfillment houses which prefer to use a web based interface instead of email base data exchange.
This fulfillment function is fully integrated with SendSafe and does not require a B2B plugin module.
Web-based fulfillment works on orders as a whole, though you can designate different tracking # for different line items. Unlike B2B fulfillment, Web-based fulfillment will sweep all lineitems through the fulfillment process as long as one item or more in an order is flagged with the "#" in Payloadloc DB column and the ProcessStep=2.
Web-based fulfillment partially supports lineitem split shipments. It does not track allocation of items to tracking numbers as format1900 does. The result, if you split ship a lineitem with a quantity of greater than 1 in two or more boxes, you can only enter one tracking number per line item and therefore you cannot enter all the required tracking numbers UNLESS you manually enter the tracking information on the LineItem Admin page.
Basic steps of Web-based fulfillment:
Ship Confirmation Emails:
An order in processing Step #4 indicates that confirmation email has been sent to the customer.
Ship confirmation emails are sent to customers once the following conditions are meet:
Your order has shipped! Please check the order status webpage for tracking numbers and updates: http://www.yousite.com/store.orderstatus.asp
Order number: 166253442
*Order number: 166253442 is automatically appended text.
Back-ordered items:
Any lineitem can be flagged as backordered. If an order contains backordered items and the settlement button is pressed then the credit
card charge will be captured (if relavent), but no "Your order has been shipped" email will be sent to the customer.
An lineitem is set as backordered when when the orderlineitem.ShipMethod field has the string "(BACKORDERED)" in it.
An order is set as backordered when when the orders.status field has the string "BACKORDERED" in it.
The Admin sets the orderlineitem.ShipMethod "(BACKORDERED)" flag using the admin page. The Fulfillment Job (type 41) sets the orders.status field has to "BACKORDERED." This state change will not be made until the order has been released for processing and (optional capture) credit card processing has completed. So any order is not considered in backorder status until it had bee released.
General Notes:
This function is run by an Order FulFillent 41 job which looks like the example below:
| Parameter | value |
| param1 |
n/a |
| param2 |
n/a |
| param3 | Relay msg. This can be any text message which will be appended to the beginning of the outgoing e-mail acknowledgement sent to the customer. |
This B2B function is fully integrated with SendSafe and does not require a B2B plugin module. This system will send ASCII TEXT e-mail to the fulfillment house and process a return ASCII TEXT e-mail from the fulfillment house containing order shippment status. This function can also be used in-house as a means of initiating the warehouse stage of product handling.
At a preset time each, a consolidated list of items which were ordered that day and require fulfillment is automatically e-mailed to the fulfillment house.
Very important: You must limit the size of your SQL queries to 250 records (i.e. TOP 250). Unlimited queries can result in very large e-mails which may clog up some systems. The system will reject SQL which does not include a TOP 250 limit. If you have more than 250 records the system will automatically spawn new jobs to handle each 250 records chunk until all orders have been processed.
Very important: You must order your queries by order by orders.transactionid. Failure to order your queries by transactionid will result in missing or duplciate entries if you have more than 250 items returned by your query.
THIS JOB WILL NOT TRANSMIT SHIP INSTRUCTIONS FOR ORDERS PLACED BEFORE FULFILLMENT WAS ENABLED. The SQL used to generate a list of orders to be fulfilled selects on: products which have '#%' in their payloadLoc column and the ProcessStep = 1. This conditions will not be true for orders placed before fulfillment was enabled.
This function is run by a JobQueue job which looks like the example below:
| Parameter | value |
| param1 |
Outgoing E-Mail subjectline and cutoff time for orders which will be processed (The cutoff time must be before the job runs).
The cutoff time is NOT used if multiple SQL queries are used in param2. The cutoff time is 0:00 - 24:00 An optional flag can be appended to the end of this parameter which will prevent the word NULL from appearing in columns which contain empty data. See "nonulls" in the example above. If nonulls is present and empty cell will be created; if nonulls is not present then null be inserted into all null cells. If using multiple queries make sure that this cutoff time is properly included in each query. Make sure that the job is scheduled to run after the cut off time. |
| param2 |
This entry can either contain a list of DB columns for inclusion in the standard output OR mutliple queries delimited by semicolons. The system automatically detects FULL SQL statements vs. selection lists AND automatically detects lists of queries vs. single queries. Multiple Queries: This is a list of multiple queries delimited by semicolons. The queries must be complete SQL commands including all formatting. The SQL Queries must include handling of cutoff times if needed (the cutoff time entered into param1 will be ignored when multiple queries are used). The processstep will not be set to 2 until after the last query is run. Each query will result in a seperate e-mail. The subject lines for each e-mail will contain the title specified above in param1 with the query number appeneded (i.e. first query in list will have a query number = 0, second query in list will have a query number = 1, etc. See example above of job indexkey=20 above and resultant e-mail. List of DB columns: This is a list of the database columns which will be included in the report AND the order that the columns will be displayed. This list is used in the SQL select statement AND can include SQL Formatting command. See example above of job indexkey=19 above and resultant e-mail. |
| param3 | This is a semicolon delimited list of e-mail addresses which will recieve the B2B transmittal. |
Format of "Fulfillment Request" outgoing E-Mail
The e-mail which is sent to the fulfillment house is a comma delimited file containing all orders placed up to the cut off time each day. The specific fields and order of appearance is defined in param2 of the Job (see above). Any column from these tables can be included in the outgoring transmittal:
The example below contains the following fields in the specified order. Field selection and order is made by configuring the Post Processing Job.
orders.transactionid
serializer
date
LineItemID
sku
fullname
quantity
STR( OrderLineItem.priceea, 10,2)
shipmethod
name
company
address
city
state
zip
country
phone
altphone
STR( subtotalitems, 10,2)
STR( subtotalshipping, 10,2)
STR( subtotalsalestax, 10,2)
STR( totalamount, 10,2)
E-mail is sent from the fufillment house to the e-commerce system to update fulfillment status. This e-mail contains shipment tracking and other information which is automatically imported into the SendSafe database and presented to the customer on their order status pages. The receipt of this e-mail also results in a "shippment acknowledgment" e-mail automatically being sent to the customer.
The critical differences between 1800 format and 1900 are:
Each order can only be updated once by e-mail. Subsequent e-mailed data for a given order will be ignored. You can manually update the ship status for an order by using the lineitem admin page to modifying the ShipMethod field.
This function is run by a JobQueue job which looks like the example below:
| Parameter | value |
| param1 |
POP3 account spec used to retrieve the incoming e-mails the incoming e-mail's subject line the from-address which will be used on the e-mails sent to customers. [e-mail server];[email userid];[email password];[subject line used as password];[from address] EXAMPLE: mail2.c-prompt-dev.com;incoming@mybiz.com;password;subjectlinepassword;sales@mybiz.com |
| param2 |
defines the basic format of the e-mail.
Zero normalized column positions are used. The key-ID name is set to either (the column used to lookup either the entire order OR the lineitem: TransactionId or LineItemId. At this time only TransactionId is supported. |
| param3 | Relay msg. This can be any text message which will be appended to the beginning of the outgoing e-mail acknowledgement sent to the customer. |
This job is the how the customer sees the results of B2B Post Processing. Make sure that the job is scheduled to run after the cut off time for the outgoing transmittal job.
Notes:
EXAMPLE OF INCOMING E-MAIL
From: jj@fulfillmenthouse.com
To: BB@yourbiz.com
Subject: MYPASSWORD
"168552232","1Z90E13W0343464757"
"284080958","1Z90E13W0344638933"
"357590726","1Z90E13W0243506712"
"48604208","1Z90E13W0343857145"
"62432534","1Z90E13W0344334127"
This B2B function is fully integrated with SendSafe and does not require a B2B plugin module. This system will send FORMAT1900 e-mail to the fulfillment house and process a return FORMAT1900 e-mail from the fulfillment house containing order shippment status. This function can also be used in-house as a means of initiating the warehouse stage of product handling.
At a preset time(s) each day, a consolidated list of items which were ordered that day and require fulfillment are automatically e-mailed to the fulfillment house.
FORMAT1900 supports multi-address mode. Orders which have multiple shipto addresses will be result in separate ship instructions generated for each lineitem in the order.
Format1900 supports split shipments (i.e. multiple tracking numbers for orders shipped to the same address). Allocation of a shipping number for each item in an order is defined by the (tracking#)xN format in OrderLineItem.ShipMethod db column.
THIS JOB WILL NOT TRANSMIT SHIP INSTRUCTIONS FOR ORDERS PLACED BEFORE FULFILLMENT WAS ENABLED. The SQL used to generate a list of orders to be fulfilled selects on: products which have '#%' in their payloadLoc column and the ProcessStep = 1. This conditions will not be true for orders placed before fulfillment was enabled.
This function is run by a JobQueue job which looks like the example below:
| Parameter | value |
| param1 |
Outgoing E-Mail subjectline and cutoff time for orders which will be processed (The cutoff time must be before the job runs). The cutoff time is in minutes (prior to the time his job runs; typical values are 30 minutes to 1 hour. Syntax: [E-Mail Subject];[cutoff time];[nonulls];[nocommas];[ShipppingTypeCodes];[columnsInHeader];[colPositionShipMethod]. See example above. nonulls (Values are: nonulls and yesnulls; all lowercase) is a flag which will prevent the word NULL from appearing in columns which contain empty data. See "nonulls" in the example above. If nonulls is present and empty cell will be created; if nonulls is not present then null be inserted into all null cells. nocommas (Values are: nocommas and nocommas; all lowercase) is a flag which will cause all commans to be stripped from all entry fields. ShipppingTypeCodes is used for shipping code remappping. It is a list of 8 codes (semicolon delimited) 4 for the SendSafe labels: ground,second day,next day & Saturdays THEN 4 for the replacement codes for these values. These code are used are typically interal fulfillment house codes. The SendSafe codes are the values setup in Application("ShippingMethodNames") = "Ground,SecondDay,NextDay,Saturday" columnsInHeader is the zero normalized index number (column position) of the last DB column returned by the param2 SQL which go into the header portion of the spreadsheet. The header is displayed once per order, and the remainder of the param2 SQL columns are displayed for each line item in the order. This index number must include the automatically added transactionid which is the 1st column in all select statements for this fulfillment job. So count up the columns then add 1. colPositionShipMethod is the zero normalized index number (column position) of the shipmethod column in the select statement. This number must include the automatically added transactionid which is the 1st column in all select statements for this fulfillment job. So count up the columns then add 1. This value is used for ShipppingTypeCodes remapping. Make sure that the job is scheduled to run after the cut off time. |
| param2 |
This entry contains a list of DB columns for inclusion in the standard output email. The following tables are available:
This list is the entire column list for the SQL SELECT statement used to query orders from the DB. This list can contain subqueries and SQL formatting commands. The list can also contain empty ' ' labels which can be used to insert empty columns into the output to fill spread columns which are optional and not being provided; with the limitation that the last column in the header and last column in the lineitem are NOT empty labels. |
| param3 | This is a semicolon delimited list of e-mail addresses which will recieve the B2B transmittal. |
Format of "Fulfillment Request" outgoing E-Mail
The e-mail which is sent to the fulfillment house is an ASCII email with a comma delimited spreadsheet (*.CSV) attached containing all orders placed up to the cut off time each day. The format of the order header and line item entires depends soley on the configuration of the job.
An example of one possible layout of the email attachements which can be sent and recieved by SendSafe can be download here. Note the separate entires types for recipient information plus order totals verses and line items.
E-mail is sent from the fufillment house to the e-commerce system to update fulfillment status. This e-mail contains shipment tracking and other information which is automatically imported into the SendSafe database and presented to the customer on their order status pages. The receipt of this e-mail also results in a "shippment acknowledgment" e-mail automatically being sent to the customer.
Each order can only be updated once by e-mail. Subsequent e-mailed data for a given order will be ignored. You can manually update the ship status for an order by using the lineitem admin page to modifying the ShipMethod field.
This function is run by a JobQueue job which looks like the example below:
| Parameter | value |
| param1 |
POP3 account spec used to retrieve the incoming e-mails,
the incoming e-mail's subject line. EXAMPLE: mail2.c-prompt-dev.com;incoming@mybiz.com;password;subjectlinepassword For security reasons it is a good idea use a long complicated subjectline password. |
| param2 |
defines the basic format of the e-mail.
|
| param3 | Relay msg. This can be any text message which will be appended to the beginning of the outgoing e-mail acknowledgement sent to the customer. |
This job is the how the customer sees the results of B2B Post Processing. Make sure that the job is scheduled to run after the cut off time for the outgoing transmittal job.
Notes:
An example of one possible layout of the email attachements which can be sent and recieved by SendSafe can be download here. Please see filename: "Example of ship instructions executed.xls." Note how there is one line per SKU for each order; this is very different than format 1800.
This subsystem supports sending an electronic order for product fulfilment and then processing a return e-mail which indicates that the order was fulfilled.
See digital payloads for information on setting up digitally fulfilled items in the database. Please note: that SendSafe can directly handle digital product fulfillment. The only reasons to use an outside company for FulFillment is if you cannot assembled the digital product yourself.
This B2B method uses a plugin module to connect to the fulfillment company. This module can use any type of Internet connection from basic sockets to high level protocols lke http and XML SOAP
Example Record for non-B2B digital payload fullment order:
| transactionid | Fulfillment | PostProcStatus |
| 28897 | ftp://p1.biz.com/abc/ORDER15647.zip | {COMPLETED};E-RECEIPT PROC:SENT;PAYLOAD |
The system will receive e-mails from the fulfillment house. These e-mails will be parsed for an order ID-Key and an acknowledgment e-mail will be sent to the customer who placed the order. These incoming e-mails from the fulfillment house will be processed by a Job in the SendSafe JobQueue as defined below.
Note: all incoming e-mails must be ASCII text only (HTML E-Mails will fail).
Example of incoming e-mail:
Subject: FULFILLMENT RESPONSEMAIL
ThisId: xxxxx
This is your order. It contains:
WXYZ1000
WXYZ2000
Thanks
Example of JobeQueue Entry:
| Parameter | value |
| param1 |
POP3 account spec used to retrieve the incoming e-mails and the incoming e-mail's subject line: [e-mail server];[email userid];[email password];[subject line] EXAMPLE: mail2.c-prompt-dev.com;incoming@mybiz.com;password;EXPLORATION FULFILLMENT |
| param2 |
SQL used to retrieve relay e-mail address from customer DB table.
The E-Mail tagstring is a label which appears in the incoming e-mail WHICH LABELS the ID-Key. This same tagstring also appears in the SQL Select statement. Before running the SQL statement, the system will replace the tagstring in the SQL select statement WITH the value the tagstring was assigned in the incoming e-mail. In the above example of incoming e-mail that tagstring is "ThisId:" and the value would be "xxxxx" (i.e. ThisId: xxxxx). WARNING! the tagstring must never match (or be an embedeed substring) matching a column name OR SQL operator for in your SQL Select statement. Example of Parameter2 that would work with the incoming e-mail: Note the used of the string "This Id:" in the above example. If the e-mail a colon ":" along with the label THEN a colon must be used for the tagstring. There is no sub-parsing. The tagstrings must match exactly. The only processing is the removal or space-character padding. Also note, in the above example "ThisId:" would be replaced with the VALUE it was assigned in the incoming e-mail (i.e. ThisId: xxxxx). |
| param3 | Relay msg. This can be any text message which will be appended to the beginning of the outgoing e-mail acknowledgement sent to the customer. |
The data that is ID-key in the e-mail is the unique identification code; a transactionId would be fine, but other ID-key codes will work just as well. The ID-key code provided in the e-mail must work with the SQL Select phrase specified in the Job and the E-Mail tagstring (embedded in the SQL statement).
All text on the line following the ID-Key tagstring down through the end of the eimail will be copied into the outgoing e-mail AFTER the Relay Msg (param3).
| FILE = "..\SendSafe\<your store name>.store.config" Before modifying any configuration file always make a backup copy of the file. To find a specific storefronts configuration file: see Location of Configuration files | ||
| Keyword | Default value | Explanation |
| B2B INTEGRATED | NO | This keyword enabled and disables B2B Fulfillment operations |
| B2B POSTPROC | NO | This keyword enabled and disables Built B2B post processing Fulfillment operations (for shipable products). |
| B2B MODULE LOC | C:\SendSafe\B2B | This is the directory for the B2B Plugin module can be found. |
| B2B MODULE NAME | B2BFulFillment.exe | This is the filename of the B2B Plugin module. |
| B2B USERID | Userid | This is the userid which will be used to login to the remote fulfillment company's web service. |
| B2B PASSWORD | Password | This is the password which will be used to login to the remote fulfillment company's web service. |
| B2B HOST | 127.0.0.0 | This is the IP address or domain name of the service. |
| B2B PORT | 80 | This is the port of the service. |
| B2B TIMEOUT | 30 | This is the connection timeout in seconds. |
| B2B PREPROC COMMAND | ValidatePurchase | This is the command string that is passed to the B2B plug in module when running a pre-proc command to check that the
order can in fact be fulfilled. Enter |
| B2B FULFILLMENT COMMAND | PurchaseProducts | This is the command string that is passed to the B2B plug in module when running a fulfillment command. This command is run after the credit card is charged. |
| B2B FULFILLMENT EMSG | Congratulations on your new purchase(s) | This is a text message which is included in the e-receipt |
PreProc:
/HOST="203.110.131.25" /PORT="80" /TIMEOUT=30 /OPERATIONCODE="PurchaseExtrasWebService/PurchaseExtras.asmx/ValidateExtrasForPurchase" /USERID="oesdvalid@oesd.com" /PASSWORD="oesd" /PARAMLIST="1001-HFBZNNFTVNVH" /PAYLOADLIST="W00004" /AUDIT="C:\PROJECT\JSOF SSL\jsof\Audit" /FILEOUT="CPROMPT00000004.txt"
PostProc:
/HOST="203.110.131.25" /PORT="80" /TIMEOUT=30 /OPERATIONCODE="PurchaseExtrasWebService/PurchaseExtras.asmx/PurchaseExtras" /USERID="oesdvalid@oesd.com" /PASSWORD="oesd" /PARAMLIST="1001-HFBZNNFTVNVH" /PAYLOADLIST="W00004" /AUDIT="C:\PROJECT\JSOF SSL\jsof\Audit" /FILEOUT="CPROMPT00000004.txt"
| HOST | The IP ADDRESS (or domain name) to be used |
| PORT | The Port to be used |
| TIMEOUT | Connection Timeout in seconds |
| OPERATIONCODE | The command code string (will select which command to use) |
| USERID | A valid userid provided by Fulfillment house to access the B2B Web Service. |
| PASSWORD | A valid username provided by Fulfillment house to access the B2B Web Service. |
| PARAMLIST | A concatonate (comma delimited) Attribute string (concatonation of all ItemParameter fields for all B2B fulfillable products). |
| PAYLOADLIST | A concatonate (comma delimited) Payload string (concatonation of all payload fields for all B2B fulfillable products minus the @ designator and any payload field operators). |
| AUDIT | Path that will be used to output audit trail. |
| (OPTIONAL) | |
| TEST | If present this flag causes test values to be used instead of passed in parameters |
| FILEOUT | If present this is file will be used to output the results. |
Contents of the results from the file is listed below. This results file is parsed by the e-commerce system and acted on.
[[RUNNING TRANSACTION]]=
Host =>> 203.110.131.25
Port =>> 80
OperationCode =>> PurchaseExtrasWebService/PurchaseExtras.asmx/ValidateExtrasForPurchase
Timeout =>> 30
userId =>> oesdvalid@oesd.com
Password =>> oesd
SerialNum =>> 1001
IdCode =>> HFBZNNFTVNVH
payloadList =>> &productList=W00004
commandURL =>> /PurchaseExtrasWebService/PurchaseExtras.asmx/ValidateExtrasForPurchase?username=oesdvalid@oesd.com&password=oesd&serialnum=1001&identitycode=HFBZNNFTVNVH&major=10200&minor=0&version=1&productList=W00004
[[END TRANSACTION]]
[[RESULTS]]=
0 MStatus => failure-hard
1 MErrMsg => (Details: Invalid product for device.)
2 MErrCode => 5210
3 Raw-Results => CGIGET SUCCESSFUL: 200 code returned by server
[[END RESULTS]]
//
// SAMPLE FAILED TX FILE CONENT
[[RESULTS]]=
0 MStatus => failure-hard
1 MErrMsg => (Details: Invalid product for device.)
2 MErrCode => 5210
3 Raw-Results => CGIGET SUCCESSFUL: 200 code returned by server
[[END RESULTS]]
MStatus - Always present
"success" Transaction processed successfully; check auth-code for approval status
"partial" Transaction processed successfully; check auth-code for approval status
"failure-hard" Authorization Failed OR System error which cannot be retried
"failure-q-or-cancel" Retryable error condition
"failure-q-or-discard" Retryable error condition