Sub MeterArticulo (id)
' Añade el producto id al carrito de la compra
' En un caso real se deberían poder añadir más de una unidad
' bien desde el catálogo, bien editando en el carrito
' Si ya tengo el artículo en el carrito sumo 1 a la cantidad
if carrito.Exists(id) then
carrito(id)=carrito(id)+1
else
' Si no lo añado
carrito.Add id, 1
end if
Response.Write("Se ha añadido el artículo al carrito<br>")
End Sub
Sub SacarArticulo (id, cantidad)
' Saca un numero "cantidad" de articulos "id" del carrito
if not carrito.Exists(id) then
Response.Write("¡No tienes eso en tu carrito!")
else
if cantidad>1 then
'Quito todos así que quito ese articulo del carrito
carrito.Remove(id)
else
'Quito uno
carrito(id)=carrito(id)-1
if carrito(id)<1 then
carrito.Remove(id)
end if
end if
end if
End Sub
Sub EnviarCorreo(nombre,direccion,correo,telefono)
'--------------------------------------------
'capturamso los campos y mandamos el correo
Dim oRs, oRs2, SQL
Dim clave
Dim gastos ' Gastos de envio
Dim total, subtotal
gastos=0000 ' Para todo el mundo! :)
total=0
subtotal=0
' Conexión sin DSN a la base de datos
' Debería haber sacado estas líneas a un sub y llamarlo, pero en fin :(
set oRs=Server.CreateObject("ADODB.Recordset")
dim oMail
DIM Sender
dim Recipient
dim titulo
dim Texto
Set oMail = Server.CreateObject ("CDONTS.NewMail")
oMail.BodyFormat = cdoBodyFormatHTML
oMail.MailFormat = 0
Sender = "
[email protected]" 'Tu email
Recipient = correo 'Email de destino, aqui meto la variable correo que es la que ha metido en la caja,es decir a la que quiere el cliente que se le mande
'si hay mas de un lo separamos con mail1;mail2
titulo = "Envio del carrito de la compra"
Texto ="<html><body>"
Texto = Texto & "<center><h2><b>D/Dña " & nombre & "</b></h2></center><BR><BR>"
For Each clave in carrito
subtotal=0 ' Total de cada artículo en el carrito
'Pinto la línea de este producto
SQL="SELECT * FROM Productos WHERE IdProducto="&clave&";"
set oRs=oConn.Execute(SQL)
'para usar el telefono o la direccion en el correo simplemente con las variables direccion y telefono
Texto = Texto & " Producto : " & oRs.Fields("Nombre") & "<BR>"
Texto = Texto & " Cantidad : " & carrito(clave) & "<BR>"
Texto = Texto & " Precio : " & oRs.Fields("Precio") & "<BR>"
subtotal=CSng(FormatNumber(carrito(clave))*oRs.Fie lds("Precio"))
Texto = Texto & " Total : " & subtotal & "<BR>"
Texto = Texto & "<hr>"
total=total+subtotal
Next
Texto = Texto & "<br>"
Texto = Texto & "<center><b>Total de la compra:" & Total & "</b></center>"
Texto = Texto & "</body></html>"
'por si quieres mandar copia a alguien mas, lo descomentas si quieres que mande a mas de uno
'oMail.Cc="
[email protected]"
'por si quieres adjuntar ficheros a esa persona, lo descomentas si quieres mandar ficheros adjuntos
'oMail.AttachFile "c:\horas.xls"
oMail.Send Sender, Recipient, titulo, Texto
Set oMail = Nothing
oRs.close
set oRs = Nothing
'La instrucción oMail.MailFormat = 0 hace que el mail se envié con formato HTML, si MailFormat lo ponemos a 1 el mail se enviará en formato texto. También es posible enviar ficheros adjuntos con CDO, para poder hacerlo hay que utilizar la propiedad :
'AttachFile ruta del fichero, nombre del fichero
'ahora le volvemos a mostrar el carrito por ejemplo
MostrarCarrito
'Norma estas 5 lineas siguientes es el código añadido para eliminar el carrito al mandar el correo
set Session("carrito")=nothing
Session.Abandon
response.clear
response.redirect "gracias.asp"
response.end
End Sub
Sub PasarPorCaja
'-----------------------------------------------
' En este punto del script es donde debería ir
' todo lo relacionado con el pago, etc.
Dim fnombre
fnombre=CStr( Trim( Request.Form("fNombre") ) )
%></font>
<h2 align="center"><font face="Verdana" size="1">¡Gracias por comprar nuestros
productos!</font></h2>
<p align="center"><font face="Verdana" size="1">En breve nos comunicaremos en el
horario indicado para confirmar la entrega en su domicilio. <br>
Recomendamos tener lugar disponible en su freezer.<br>
</p>
<form name="datos">
<p align="center"><input type="hidden" name="ac" value="EnviarCorreo">
<table border="0" width="100%" cellspacing="0" height="40">
<tr>
<td width="50%" align="right" height="28">
<p align="right"><font face="Verdana" size="1" color="#000000">Nombre y
Apellido<br>
</font></td>
<td width="50%" height="28"><font face="Verdana" size="1"><input type="text" name="fnombre" size="20"></font></td>
</tr>
<tr>
<td width="50%" align="right" height="28"><font face="Verdana" size="1" color="#000000">Dirección<br>
</font></td>
<td width="50%" height="28"><font face="Verdana" size="1"><input type="text" name="fcalle" size="20"></font></td>
</tr>
<tr>
<td width="50%" align="right" height="28"><font face="Verdana" size="1" color="#000000">E
- Mail <br>
</font></td>
<td width="50%" height="28"><font face="Verdana" size="1"><input type="text" name="fmail" size="20"></font></td>
</tr>
<tr>
<td width="50%" align="right" height="1"><font face="Verdana" size="1" color="#000000">Tel<br>
</font></td>
<td width="50%" height="1"><font face="Verdana" size="1"><input type="text" name="ftel" size="20"></font></td>
</tr>
<tr>
<td width="50%" align="right" height="1"><font face="Verdana" size="1" color="#000000">Horario
de contacto<br>
</font></td>
<td width="50%" height="1"><font face="Verdana" size="1"><input type="text" name="fhora" size="20">
Ej:
de 9 a 13</font></td>
</tr>
<tr>
<td width="100%" align="right" height="1" colspan="2">
<p align="center"><font face="Verdana" size="1"><br>
<input type="button" value="Enviar Datos" style="font-size: 8pt; font-family: Verdana; background-color: rgb(233,233,233); border: 1px double #808080" onClick="envioCorreo();" ;></font></td>
</tr>
</table>
</form>
<%
MostrarCarrito
%>
<%
set Session("carrito")=nothing
End Sub
'---------------------------------
' Programa "principal"
'---------------------------------
Dim carrito
Dim accion
Dim producto
Dim cant
Dim oConn
set oConn=Server.CreateObject("ADODB.Connection")
oConn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("tienda.mdb")
' Si no existe el carrito lo creo
' si existe lo referencio
if isobject(Session("carrito")) then
set carrito=Session("carrito")
else
set carrito=Server.CreateObject("Scripting.Dictionary" )
end if
accion=CStr(Request.QueryString("ac")) 'Paso el parámetro a cadena
producto=CInt(Request.QueryString("prod")) 'Paso el parámetro cant a número entero
cant=CInt(Request.QueryString("cant")) 'Paso el parámetro cant a número entero
nombre = Request.QueryString("nombre")
direccion = Request.QueryString("direccion")
correo = Request.QueryString("correo")
telefono = Request.QueryString("telefono")
Select Case accion
Case "ver"
'Muestro el carrito
MostrarCarrito
Case "meter"
'Añado articulo al carrito
MeterArticulo producto
MostrarCarrito
Case "sacar"
call SacarArticulo (producto, cant)
MostrarCarrito
case "EnviarCorreo"
EnviarCorreo nombre,direccion,correo,telefono
Case "fin"
PasarPorCaja
Case else
'Muestro el catálogo
MostrarCatalogo
End Select
set Session("carrito")=carrito
oConn.Close
set oConn=nothing
%>
</font>
<p> </p>
<p> </p>
</body>
</html>