home *** CD-ROM | disk | FTP | other *** search
/ DOS/V Power Report 1997 March / VPR9703A.ISO / MS_DEV / VID / SERVER / ASF / DATA.Z / shipping.asp < prev    next >
Text File  |  1996-10-28  |  12KB  |  376 lines

  1. <!--#include virtual="/AdvWorks/Num2Dolr.inc"-->
  2. <SCRIPT LANGUAGE=VBScript RUNAT=Server>
  3.  FUNCTION CheckString (s, endchar)
  4.     pos = InStr(s, "'")
  5.     While pos > 0
  6.         s = Mid(s, 1, pos) & "'" & Mid(s, pos + 1)
  7.         pos = InStr(pos + 2, s, "'")
  8.     Wend
  9.    CheckString="'" & s & "'" & endchar
  10.    END FUNCTION
  11. </SCRIPT>
  12.  
  13. <%
  14. REM Get session variables
  15.   ARYshoppingcart = Session("MyShoppingCart")
  16.   CustomerID = Session("CustomerID")
  17.   iCount = Session("ItemCount")
  18.  
  19.   if CustomerID =0 then ' new customer
  20.     Response.Redirect "/AdvWorks/Equipment/GetCustomer.asp"
  21.   End If
  22.  
  23.   msg=""
  24.   DateErrorMsg = "<TT><B><I>An valid Expiration Date (MM/YY greater than today's date) is required</I></B></TT><BR>"
  25.   Action = Left(UCase(Request("Action")),5)
  26.   If Action = "ORDER" Then
  27.     REM First do some validation on the entries
  28.     If Len(Request("CreditCardNumber")) < 8 Then
  29.         msg="<TT><B><I>Credit Card number must have at least 8 digits</I></B></TT><BR>"
  30.     elseif NOT IsDate(Request("ExpDate")) then
  31.         msg = DateErrorMsg
  32.     elseif CDate(Request("ExpDate")) < now then
  33.         msg = DateErrorMsg
  34.     End If
  35.     
  36.     If    Request("ShipName") = "" OR _
  37.     Request("ShipContactFirstName") = "" OR _
  38.     Request("ShipContactLastName") = "" OR _
  39.     Request("ShipAddress") = "" OR _
  40.     Request("ShipCity") = "" OR _
  41.     Request("ShipState") = "" OR _
  42.     Request("ShipPostalCode") = "" OR _
  43.     Request("ShipCountry") = "" OR _
  44.     Request("ShipPhoneNumber") = "" Then
  45.       msg=msg & "<TT><B><I>All fields must have a valid non-empty response.</I></B></TT><BR>"
  46.     End If
  47.  
  48.  
  49.   If msg = "" Then  'No errors -- insert into database
  50.  
  51. ' Here is an example of generating the SQL statement for the Order directly
  52. ' It performs much better, but is a pain because of having to know when to 
  53. ' surround values with quotes.
  54.  
  55.     sql = "INSERT INTO Orders(CustomerID, EmployeeID, OrderDate, ShipName, "
  56.     sql = sql & "ShipContactFirstName, ShipContactLastName, ShipAddress, ShipCity, "
  57.     sql = sql & "ShipStateOrProvince, ShipPostalCode, ShipCountry, ShipPhoneNumber, "
  58.     sql = sql & "ShipDate, ShippingMethodID, FreightCharge, SalesTaxRate) "
  59.     sql = sql & "VALUES( "
  60. ' to run the stored procedure version, use the following line and comment OUT the
  61. ' indented lines setting the current date 
  62. '    sql = "InsertOrder "
  63.     sql = sql & Request("CustomerID")
  64.     sql = sql & ", 6, "
  65.            sql = sql & "{fn now()},"
  66.     sql = sql & CheckString(Request("ShipName"),",")
  67.     sql = sql & CheckString(Request("ShipContactFirstName"),",")
  68.     sql = sql & CheckString(Request("ShipContactLastName"),",")
  69.     sql = sql & CheckString(Request("ShipAddress"), ",")
  70.     sql = sql & CheckString(Request("ShipCity"), ",")
  71.     sql = sql & CheckString(Request("ShipState"), ",")
  72.     sql = sql & CheckString(Request("ShipPostalCode"), ",")
  73.     sql = sql & CheckString(Request("ShipCountry"), ",")
  74.     sql = sql & CheckString(Request("ShipPhoneNumber"), ",")
  75.         sql = sql & "{fn now()}, "
  76.     sql = sql & Request("ShippingMethod") & ", " 
  77.     sql = sql & Request("FreightCharge") & ", " 
  78.     sql = sql & Request("SalesTaxRate") & ")"
  79. ' UNDONE for sproc version, need to add output parameter here and remove the following
  80. ' lines of code doing the select.
  81.     Conn.Execute(sql)
  82.     sql1= "select @@identity"
  83.     sql2 = "select max(OrderID) from Orders"
  84.     set rs = Conn.Execute(sql2)
  85.     ' ="id = " & rs(0)
  86.     OrderID = rs(0)
  87.     rs.Close
  88. REM Generate Order Detail record for each item in shopping cart
  89.     '-----------------------------
  90.     For i = 1 to iCount
  91.         sql = "INSERT INTO Order_Details(OrderID, ProductID, Quantity, UnitPrice, Discount) "           
  92.         sql = sql & "VALUES( "
  93.         sql = sql & OrderID & ","
  94.         sql = sql & ARYshoppingcart(9,i) & ","
  95.         sql = sql & ARYshoppingcart(7,i) & ","
  96.         sql = sql & ARYshoppingcart(8,i) & ","
  97.         sql = sql & "0)"
  98.     Conn.Execute(sql)
  99.     Next
  100.  
  101. REM Generate Payment record
  102.         sql = "INSERT INTO Payments(OrderID, PaymentAmount, PaymentDate, CreditCardNumber, CreditCardExpDate, PaymentMethodID) " 
  103.         sql = sql & "VALUES( "
  104.         sql = sql & OrderID & ","
  105.         sql = sql & Request("PaymentAmount") & ","
  106.         sql = sql & "{fn now()},"
  107.         sql = sql & "'" & Request("CreditCardNumber") & "',"
  108.         sql = sql & "'" & CDate(Request("ExpDate")) & "',"
  109.         sql = sql & "2)"
  110.     Conn.Execute(sql)
  111.     
  112.     Session("ItemCount") = 0
  113.     Response.Redirect "/AdvWorks/equipment/congratulations.asp"
  114.   End If  'msg = ""
  115.  
  116.   ElseIf Left(UCase(Request("Action")),5) = "CANCE" Then
  117.      Session("ItemCount") = 0
  118.      Response.Redirect "/AdvWorks/default.asp"
  119.  
  120.   Else
  121.  
  122. '    Response.Write "Failed else"
  123.  
  124.   End If
  125. %>
  126.  
  127. <HTML>
  128.  
  129. <HEAD>
  130. <TITLE>Shipping and Payment</TITLE>
  131. </HEAD>
  132.  
  133. <BODY BACKGROUND="/AdvWorks/multimedia/images/back_sub.gif" LINK="#800000" VLINK="#008040"> 
  134. <FONT FACE="MS SANS SERIF" SIZE=2>
  135. <BGSOUND SRC="/AdvWorks/multimedia/sounds/windfin4.wav">
  136.  
  137. <TABLE WIDTH=600 BORDER=0>
  138.  
  139. <TR>
  140.  
  141. <TD> 
  142. <IMG SRC="/AdvWorks/multimedia/images/spacer.GIF" ALIGN=RIGHT WIDTH=100 ALT="Space">
  143. </TD>
  144.  
  145. <TD COLSPAN=5>
  146. <IMG SRC="/AdvWorks/multimedia/images/hd_payment_and_shipping.gif" width="364" height="42" ALT="Payment and Shipping">
  147.  
  148. <BR>
  149.  
  150. <HR SIZE=4>
  151. </TD>
  152.  
  153. </TR>
  154.  
  155. <!-- BEGIN sidebar navigation -->
  156.  
  157. <TR>
  158.  
  159. <TD ROWSPAN=4 ALIGN=RIGHT VALIGN=TOP>
  160.  
  161. <IMG SRC="/AdvWorks/multimedia/images/spacer.gif" WIDTH=120 HEIGHT=350 ALIGN=RIGHT ALT="Space">
  162.  
  163. </TD>
  164.  
  165.  
  166. <TD>
  167.  
  168. <!-- BEGIN table inserted into table data cell -->
  169. <!-- BEGIN form with first row of data -->
  170.  
  171. <FORM ACTION="/AdvWorks/equipment/shipping.asp?" METHOD=POST>
  172.  
  173. <!-- BEGIN column header row -->
  174. <%=msg%>
  175. <TABLE CELLPADDING=5 COLSPAN=2>
  176. <TR>
  177. <TD WIDTH=310 BGCOLOR="#800000"><FONT COLOR="#FFFFFF" STYLE="ARIAL NARROW" SIZE=1>Shipping</FONT></TD>
  178. <TD WIDTH=310 BGCOLOR="#800000"><FONT COLOR="#FFFFFF" STYLE="ARIAL NARROW" SIZE=1>Payment</FONT></TD>
  179. </TR>
  180.  
  181. <TD BGCOLOR="f7efde" VALIGN=TOP>
  182. <FONT SIZE=1>
  183. <% 
  184.   set rs = Conn.Execute("select * from Customers where CustomerID = " & CustomerID) 
  185. %>
  186. First Name: <INPUT TYPE="Text" NAME="ShipContactFirstName" VALUE="<%=rs("ContactFirstName")%>" SIZE=31 MAXLENGTH=35><P>
  187. Last Name: <INPUT TYPE="Text" NAME="ShipContactLastName" VALUE="<%=rs("ContactLastName")%>" SIZE=31 MAXLENGTH=35><P>
  188. Company: <INPUT TYPE="Text" NAME="ShipName" VALUE="<%=rs("CompanyName")%>" SIZE=31 MAXLENGTH=35><P>
  189. Address: <INPUT TYPE="Text" NAME="ShipAddress" VALUE="<%=rs("BillingAddress")%>"SIZE=36 MAXLENGTH=36><P>
  190. City:              State:   Postal Code:<BR>
  191. <INPUT TYPE="Text" NAME="ShipCity" VALUE="<%=rs("City")%>"Size=8>
  192. <INPUT TYPE="Text" NAME="ShipState" VALUE="<%=rs("StateOrProvince")%>"Size=2>
  193. <INPUT TYPE="Text" NAME="ShipPostalCode" VALUE="<%=rs("PostalCode")%>"Size=5><P>
  194. Country: <INPUT TYPE="Text" NAME="ShipCountry" VALUE="<%=rs("Country")%>" Size=21>
  195. Phone: <INPUT TYPE="Text" NAME="ShipPhoneNumber" VALUE="<%=rs("PhoneNumber")%>" Size=21>
  196. <INPUT TYPE="HIDDEN" NAME="CustomerID" VALUE="<%=rs("CustomerID")%>">
  197. <% rs.Close %>
  198. </FONT>
  199. </TD>
  200.  
  201. <TD BGCOLOR="f7efde" VALIGN=TOP>
  202. <FONT SIZE=1>
  203. Credit Card:
  204. <BR>
  205. <SELECT NAME="Credit Card" SIZE="1">
  206. <OPTION value="--------">VISA
  207. <OPTION value="--------">Master Card
  208. <OPTION value="--------">American Express
  209. <OPTION value="--------">Discovery
  210. </SELECT><P>
  211.  
  212. Credit Card #: <INPUT TYPE="Text" NAME="CreditCardNumber" VALUE="<%=Request("CreditCardNumber")%>" Size=35><P> 
  213. Expiration Date:<BR> <INPUT TYPE="Text" NAME="ExpDate" VALUE="<%=Request("ExpDate")%>" Size=8>  
  214. <P>
  215. Shipping Method:
  216. <HR>
  217. <% 
  218.     rs.Open "select * from Shipping_Methods", Conn
  219.     Checked = " checked>"
  220.     do while not rs.eof
  221.         Response.Write "<input type=radio name=ShippingMethod value=" & rs("ShippingMethodID") & Checked & rs("ShippingMethod") & "<BR>"
  222.         Checked = ">"
  223.         rs.MoveNext
  224.     loop
  225.     rs.Close
  226. %>
  227. <HR>
  228. </FONT>
  229. </TD>
  230.  
  231. </TR>
  232. </TABLE>
  233.  
  234. <!-- BEGIN new table with summary of order -->
  235.  
  236. <P>
  237.  
  238. <Table COLSPAN=7 CELLPADDING=5 BORDER=0>
  239.  
  240. <!-- BEGIN column header row -->
  241.  
  242. <TR>
  243.  
  244. <TD ALIGN=CENTER BGCOLOR="#800000">
  245. <FONT COLOR="#ffffff" SIZE=1>Product Code</FONT>
  246. </TD>
  247. <TD ALIGN=CENTER BGCOLOR="#800000">
  248. <FONT COLOR="#ffffff" SIZE=1>Product Name</FONT>
  249. </TD>
  250. <TD ALIGN=CENTER WIDTH=150 BGCOLOR="#800000">
  251. <FONT COLOR="#ffffff" SIZE=1>Description</FONT>
  252. </TD>
  253. <!--
  254. <TD ALIGN=CENTER BGCOLOR="#800000" WIDTH=75>
  255. <FONT COLOR="#ffffff" SIZE=1>Color</FONT>
  256. </TD>
  257. <TD ALIGN=CENTER BGCOLOR="#800000" WIDTH=75>
  258. <FONT COLOR="#ffffff" SIZE=1>Size</FONT>
  259. </TD>
  260. -->
  261. <TD ALIGN=CENTER BGCOLOR="#800000" WIDTH=75>
  262. <FONT COLOR="#ffffff" SIZE=1>Quantity</FONT>
  263. </TD>
  264. <TD ALIGN=CENTER BGCOLOR="#800000" WIDTH=75>
  265. <FONT COLOR="#ffffff" SIZE=1>Price</FONT>
  266. </TD>
  267.  
  268. </TR>
  269.  
  270. <!-- BEGIN row of inserted product data -->
  271. <%
  272. iSubtotal = 0
  273. For i = 1 to iCount
  274. %>
  275.  
  276. <TR>
  277.  
  278. <TD BGCOLOR="f7efde" ALIGN=CENTER>
  279. <FONT SIZE=1><%=ARYshoppingcart(2,i)%></FONT>
  280. </TD>
  281. <TD BGCOLOR="f7efde" ALIGN=CENTER>
  282. <FONT SIZE=1><%=ARYshoppingcart(3,i)%></FONT>
  283. </TD>
  284. <TD BGCOLOR="f7efde" ALIGN=LEFT WIDTH=150>
  285. <FONT SIZE=1><%=ARYshoppingcart(4,i)%></FONT>
  286. </TD>
  287. <!--
  288. <TD BGCOLOR="f7efde" ALIGN=CENTER>
  289. <FONT SIZE=1><%=ARYshoppingcart(5,i)%></FONT>
  290. <TD BGCOLOR="f7efde" ALIGN=CENTER>
  291. <FONT SIZE=1><%=ARYshoppingcart(6,i)%></FONT>
  292. </TD>
  293. -->
  294. <TD BGCOLOR="f7efde" ALIGN=CENTER>
  295. <FONT SIZE=1><%=ARYshoppingcart(7,i)%></FONT>
  296. </TD>
  297. <TD BGCOLOR="f7efde" ALIGN=RIGHT>
  298. <FONT SIZE=1><%=Num2Dollars(ARYshoppingcart(8,i))%></FONT>
  299. </TD>
  300.  
  301. </TR>
  302.  
  303. <%
  304. If (ARYshoppingcart(8,i)) <> "" Then
  305.    iSubTotal = iSubtotal + (ARYshoppingcart(8,i) * ARYshoppingcart(7,i))
  306. End If
  307. Next
  308. %>
  309.  
  310. <!-- BEGIN subtotal -->
  311. <TR>
  312. <TD COLSPAN=3></TD>
  313. <TD COLSPAN=1 BGCOLOR="f7efde" ALIGN=RIGHT><FONT COLOR="#800000" SIZE=1>Subtotal:</FONT></TD>
  314. <TD BGCOLOR="f7efde" ALIGN=RIGHT><FONT SIZE=1><%=Num2Dollars(iSubTotal)%></FONT></TD>
  315. </TR>
  316.  
  317. <!-- BEGIN tax -->
  318. <%iTaxRate = 0.08 %>
  319. <%iTax = iSubTotal * iTaxRate%>
  320. <TR>
  321. <TD COLSPAN=3></TD>
  322. <TD COLSPAN=1 BGCOLOR="f7efde" ALIGN=RIGHT><FONT COLOR="#800000" SIZE=1>Tax (8%):</FONT></TD>
  323. <TD BGCOLOR="f7efde" ALIGN=RIGHT><FONT SIZE=1><%=Num2Dollars(iTax)%></FONT></TD>
  324. </TR>
  325.  
  326. <!-- BEGIN shipping and handling -->
  327. <%iShipping = iSubTotal * 0.1%>
  328. <TR>
  329. <TD COLSPAN=3></TD>
  330. <TD COLSPAN=1  BGCOLOR="f7efde" ALIGN=RIGHT><FONT COLOR="#800000" SIZE=1>Shipping and Handling:</FONT></TD>
  331. <TD BGCOLOR="f7efde" ALIGN=RIGHT><FONT SIZE=1><%=Num2Dollars(iShipping)%></FONT></TD>
  332. </TR>
  333.  
  334. <!-- BEGIN grand total -->
  335. <% iGrandTotal = iSubTotal + iTax + iShipping%>
  336. <TR>
  337. <TD COLSPAN=3></TD>
  338. <TD COLSPAN=1 BGCOLOR="f7efde" ALIGN=RIGHT><FONT COLOR="#800000" SIZE=1>Grand Total:</FONT></TD>
  339. <TD BGCOLOR="f7efde" ALIGN=RIGHT><FONT SIZE=1><%=Num2Dollars(iSubTotal + iTax + iShipping)%></FONT></TD>
  340. </TR>
  341.  
  342. <!-- BEGIN Order Now! and Cancel buttons -->
  343. <TR>
  344. <TD ALIGN=LEFT COLSPAN=3></TD>
  345. <TD COLSPAN=2 BGCOLOR="#ffffff" ALIGN=RIGHT>
  346. <INPUT TYPE=HIDDEN NAME="FreightCharge" VALUE=<%=iShipping%>>
  347. <INPUT TYPE=HIDDEN NAME="SalesTaxRate" VALUE=<%=iTaxRate%>>
  348. <INPUT TYPE=HIDDEN NAME="PaymentAmount" VALUE=<%=iGrandTotal%>>
  349. <INPUT TYPE=SUBMIT NAME="Action" VALUE="Order Now!">
  350. <INPUT TYPE=SUBMIT NAME="Action" VALUE="Cancel">
  351. </TD>
  352.  
  353. </TR>
  354.  
  355. </TABLE>
  356.  
  357. <!-- END table inserted into table data cell -->
  358.  
  359. </FORM>
  360.  
  361.  
  362. </TD>
  363.  
  364. <% REM Column Span Value %>
  365. <% HTML_CS = 5 %>
  366. <% HTML_INDENT = FALSE %>
  367. <!--#include virtual="/AdvWorks/Disclaim.inc"-->
  368.  
  369. </TABLE>
  370.  
  371. <!--#include virtual="/AdvWorks/srcform.inc"-->
  372.  
  373. </BODY>
  374.  
  375. </HTML>
  376.