Adding a Comments Field to Cartweaver using Paypal
The following changes need to be made:
1. In the database, add a column for order_comments:
ALTER TABLE tbl_orders
ADD order_comments varchar(255);
2. Change the order form to add a comment field (named cstComments):
CWIncOrderForm.php at or around line 261, add a form field:
<tr class="altRowOdd">
<td align="right">Comments</td>
<td><textarea name="cstComments"></textarea></td>
</tr>
3. Add a hidden form field to Paypal form on CWIncPayPal.php:
add form field at or around line 283:
<input type="hidden" name="comments" value="<?php echo($row_rsCWOrder["order_comments"]);?>">
4. Add a session variable to contain the comment field across form postings on CWIncOrderFormSetup.php line 27:
$_SESSION["checkingOut"] = "YES";
to this:
$_SESSION["checkingOut"] = "YES";
$_SESSION["order_comments"] = $_POST["cstComments"];
5. Add the field to the select statement on the confirmation page:
CWIncConfirmation.php line 38
$query_rsCWOrder = "SELECT O.order_ID,
O.order_TransactionID,
O.order_Date,
O.order_Status,
O.order_CustomerID,
O.order_Tax,
O.order_Shipping,
O.order_Total,
O.order_ShipMeth_ID,
O.order_ShipDate,
O.order_ShipTrackingID,
O.order_Address1,
O.order_Address2,
O.order_City,
O.order_State,
O.order_Zip,
O.order_Country,
O.order_Notes,
O.order_ActualShipCharge,
O.order_ShipName,
C.cst_FirstName,
C.cst_LastName,
C.cst_Email,
OS.orderSKU_SKU,
P.product_Name,
OS.orderSKU_Quantity,
OS.orderSKU_UnitPrice,
OS.orderSKU_SKUTotal,
SM.shipmeth_Name,
S.SKU_MerchSKUID
FROM tbl_orders O
INNER JOIN tbl_customers C
ON C.cst_ID = O.order_CustomerID
LEFT JOIN tbl_shipmethod SM
ON SM.shipmeth_ID = O.order_ShipMeth_ID
INNER JOIN tbl_orderskus OS
ON O.order_ID = OS.orderSKU_OrderID
INNER JOIN tbl_skus S
ON S.SKU_ID = OS.orderSKU_SKU
INNER JOIN tbl_products P
ON P.product_ID = S.SKU_ProductID
WHERE O.order_ID ='$thisOrderID'
ORDER BY P.product_Sort,
P.product_Name,
S.SKU_Sort,
S.SKU_ID;";
to:
$query_rsCWOrder = "SELECT O.order_ID,
O.order_TransactionID,
O.order_Date,
O.order_Status,
O.order_CustomerID,
O.order_Tax,
O.order_Shipping,
O.order_Total,
O.order_ShipMeth_ID,
O.order_ShipDate,
O.order_ShipTrackingID,
O.order_Address1,
O.order_Address2,
O.order_City,
O.order_State,
O.order_Zip,
O.order_Country,
O.order_Notes,
O.order_ActualShipCharge,
O.order_ShipName,
C.cst_FirstName,
C.cst_LastName,
C.cst_Email,
OS.orderSKU_SKU,
P.product_Name,
OS.orderSKU_Quantity,
OS.orderSKU_UnitPrice,
OS.orderSKU_SKUTotal,
SM.shipmeth_Name,
S.SKU_MerchSKUID,
O.order_comments
FROM tbl_orders O
INNER JOIN tbl_customers C
ON C.cst_ID = O.order_CustomerID
LEFT JOIN tbl_shipmethod SM
ON SM.shipmeth_ID = O.order_ShipMeth_ID
INNER JOIN tbl_orderskus OS
ON O.order_ID = OS.orderSKU_OrderID
INNER JOIN tbl_skus S
ON S.SKU_ID = OS.orderSKU_SKU
INNER JOIN tbl_products P
ON P.product_ID = S.SKU_ProductID
WHERE O.order_ID ='$thisOrderID'
ORDER BY P.product_Sort,
P.product_Name,
S.SKU_Sort,
S.SKU_ID;";
6. And display the comment in the email:
line 193:
$emailContents .= "\nOrder Total: " . cartweaverMoney($row_rsCWOrder["order_Total"]); ?>
TO:
$emailContents .= "\nOrder Total: " . cartweaverMoney($row_rsCWOrder["order_Total"]);
$emailContents .= "\nOrder Comments: " . $row_rsCWOrder["order_comments"]; ?>
7. Insert the comment field into the order on CWIncProcessOrder.php line 138:
this:
/* Insert the order into the database */
$query_rsCWAddOrder = sprintf("INSERT INTO tbl_orders
(order_ID, order_CustomerID,
order_Tax, order_Shipping,
order_Total, order_Status,
order_ShipMeth_ID, order_Address1,
order_Address2, order_City,
order_Zip, order_Country,
order_State, order_TransactionID,
order_Date, order_ShipName)
VALUES ('%s','%s',%s,%s,%s,'%s',%s,'%s','%s','%s','%s','%s','%s','%s',now(),'%s')",
$thisOrderID
, $_SESSION["customerID"]
, mySQLFloat($_SESSION["taxAmt"])
, mySQLFloat($_SESSION["shipTotal"])
, mySQLFloat($_SESSION["orderTotal"])
, $orderStatusID
, $_SESSION["shipPref"]
, $cartweaver->db->sqlSafe($row_rsCWGetCustShipping["cst_ShpAddress1"])
, $cartweaver->db->sqlSafe($row_rsCWGetCustShipping["cst_ShpAddress2"])
, $cartweaver->db->sqlSafe($row_rsCWGetCustShipping["cst_ShpCity"])
, $cartweaver->db->sqlSafe($row_rsCWGetCustShipping["cst_ShpZip"])
, $cartweaver->db->sqlSafe($row_rsCWGetCustShipping["country_Code"])
, $cartweaver->db->sqlSafe($row_rsCWGetCustShipping["stprv_Code"])
, $transactionID
, $cartweaver->db->sqlSafe($row_rsCWGetCustShipping["cst_ShpName"]));
$rsCWAddOrder = $cartweaver->db->executeQuery($query_rsCWAddOrder);
to this:
/* Insert the order into the database */
$query_rsCWAddOrder = sprintf("INSERT INTO tbl_orders
(order_ID, order_CustomerID,
order_Tax, order_Shipping,
order_Total, order_Status,
order_ShipMeth_ID, order_Address1,
order_Address2, order_City,
order_Zip, order_Country,
order_State, order_TransactionID,
order_Date, order_ShipName, order_comments)
VALUES ('%s','%s',%s,%s,%s,'%s',%s,'%s','%s','%s','%s','%s','%s','%s',now(),'%s','%s')",
$thisOrderID
, $_SESSION["customerID"]
, mySQLFloat($_SESSION["taxAmt"])
, mySQLFloat($_SESSION["shipTotal"])
, mySQLFloat($_SESSION["orderTotal"])
, $orderStatusID
, $_SESSION["shipPref"]
, $cartweaver->db->sqlSafe($row_rsCWGetCustShipping["cst_ShpAddress1"])
, $cartweaver->db->sqlSafe($row_rsCWGetCustShipping["cst_ShpAddress2"])
, $cartweaver->db->sqlSafe($row_rsCWGetCustShipping["cst_ShpCity"])
, $cartweaver->db->sqlSafe($row_rsCWGetCustShipping["cst_ShpZip"])
, $cartweaver->db->sqlSafe($row_rsCWGetCustShipping["country_Code"])
, $cartweaver->db->sqlSafe($row_rsCWGetCustShipping["stprv_Code"])
, $transactionID
, $cartweaver->db->sqlSafe($row_rsCWGetCustShipping["cst_ShpName"])
, $_SESSION["order_comments"]);
$rsCWAddOrder = $cartweaver->db->executeQuery($query_rsCWAddOrder);
8. Finally, add a display to the Admin section on admin/OrderDetails.php
this (line 72):
$query_rsCWOrder = sprintf("SELECT
ss.shipstatus_Name,
o.order_ID,
o.order_TransactionID,
o.order_Date,
o.order_Status,
o.order_CustomerID,
o.order_Tax,
o.order_Shipping,
o.order_Total,
o.order_ShipMeth_ID,
o.order_ShipDate,
o.order_ShipTrackingID,
o.order_Address1,
o.order_Address2,
o.order_City,
o.order_State,
o.order_Zip,
o.order_Country,
o.order_Notes,
o.order_ActualShipCharge,
o.order_ShipName,
c.cst_FirstName,
c.cst_LastName,
os.orderSKU_SKU,
p.product_Name,
os.orderSKU_Quantity,
os.orderSKU_UnitPrice,
os.orderSKU_SKUTotal,
sm.shipmeth_Name,
s.SKU_ID,
s.SKU_MerchSKUID
FROM
tbl_products p
INNER JOIN tbl_skus s
ON p.product_ID = s.SKU_ProductID
INNER JOIN tbl_orderskus os
ON s.SKU_ID = os.orderSKU_SKU
INNER JOIN tbl_orders o
ON o.order_ID = os.orderSKU_OrderID
LEFT JOIN tbl_shipmethod sm
ON sm.shipmeth_ID = o.order_ShipMeth_ID
INNER JOIN tbl_list_shipstatus ss
ON ss.shipstatus_id = o.order_Status
INNER JOIN tbl_customers c
ON c.cst_ID = o.order_CustomerID
WHERE
o.order_ID='%s'
ORDER BY
p.product_Name,
s.SKU_Sort",$_GET["order_ID"]);
to this:
$query_rsCWOrder = sprintf("SELECT
ss.shipstatus_Name,
o.order_ID,
o.order_TransactionID,
o.order_Date,
o.order_Status,
o.order_CustomerID,
o.order_Tax,
o.order_Shipping,
o.order_Total,
o.order_ShipMeth_ID,
o.order_ShipDate,
o.order_ShipTrackingID,
o.order_Address1,
o.order_Address2,
o.order_City,
o.order_State,
o.order_Zip,
o.order_Country,
o.order_Notes,
o.order_ActualShipCharge,
o.order_ShipName,
c.cst_FirstName,
c.cst_LastName,
os.orderSKU_SKU,
p.product_Name,
os.orderSKU_Quantity,
os.orderSKU_UnitPrice,
os.orderSKU_SKUTotal,
sm.shipmeth_Name,
s.SKU_ID,
s.SKU_MerchSKUID,
o.order_comments
FROM
tbl_products p
INNER JOIN tbl_skus s
ON p.product_ID = s.SKU_ProductID
INNER JOIN tbl_orderskus os
ON s.SKU_ID = os.orderSKU_SKU
INNER JOIN tbl_orders o
ON o.order_ID = os.orderSKU_OrderID
LEFT JOIN tbl_shipmethod sm
ON sm.shipmeth_ID = o.order_ShipMeth_ID
INNER JOIN tbl_list_shipstatus ss
ON ss.shipstatus_id = o.order_Status
INNER JOIN tbl_customers c
ON c.cst_ID = o.order_CustomerID
WHERE
o.order_ID='%s'
ORDER BY
p.product_Name,
s.SKU_Sort",$_GET["order_ID"]);
9. And then a way to display it at or around line 257:
<tr>
<th align="right">Comments: </th>
<td><textarea name="order_comments" cols="50" rows="15" id="order_comments"><?php
echo($row_rsCWOrder["order_comments"]);?></textarea></td>
</tr>