Muchas gracias!!!! finalmente he conseguido controlar el stock de esta
forma, y para esta vez, me sirve con esto sencillo:

function comprar($idarticulo = null) {
if ($idarticulo != null) {
$articulo = $this->Product->find('first', array('conditions' =>
array('Product.id' => $idarticulo)));

if($articulo['Product']['stock']>0) {

$CantStock = $articulo['Product']['stock'];
$CantStock = $CantStock - 1;
$this->Product->id = $idarticulo;
$this->Product->saveField('stock', $CantStock); {

$this->Session->setFlash(__('El producto ha sido comprado', true));
$this->redirect(array('action' => 'comprar'));}


} else {
$this->Session->setFlash(__('El producto no se encuentra en stock en estos
momentos.', true));
$this->redirect(array('action' => 'index'));
}
}}


El 23 de abril de 2013 16:51, Guillermo Rohde <[email protected]>escribió:

> Perdón escribí mal:
> [..]
> $articulo = $this->Articulo->find('first', array('conditions' =>
> array('Articulo.id' => $idarticulo)));
> [..]
> Saludos!!
>
>
> El 23 de abril de 2013 11:47, Telmo García <[email protected]> escribió:
>
>> Muxhas gracias, pruebo eso y comento, en una hora aprox.
>> :)
>>
>> El martes, 23 de abril de 2013 16:44:09 UTC+2, GuillermoRohde escribió:
>>>
>>> Según entendí las compra son de a un articulo, no tiene carrito de
>>> compras...
>>>
>>> Entonces es sencillo:
>>>
>>>         function comprar($idarticulo = null) {
>>>  if ($idarticulo != null) {
>>>                         $articulo = $this->Articulo->first('list',
>>> array('conditions' => array('Articulo.id' => $idarticulo)));
>>>                         if($articulo['Articulo']['**stock']>0) {
>>>                                 [aca la lógica para cuando esta todo ok]
>>>                         } else {
>>>                                 [aca la lógica para cuando no hay stock]
>>>                         }
>>> }
>>>
>>> esto es algo básico nomas pero lo tendrias que adaptar a tu aplicación y
>>> si pasas mas variables o si las pasas por get  o post.
>>>
>>> Espero que te sirva.
>>> Saludos!!
>>>
>>>
>>>
>>>
>>>
>>> El 23 de abril de 2013 11:03, Telmo García <[email protected]> escribió:
>>>
>>> Muchas gracias por tu respuesta!!!
>>>> Necesito un sistema muy básico. En la vista del producto hay un botón
>>>> comprar. Como son productos de segunda mano, un usuario como mucho solo
>>>> puede comprar 1 unidad.
>>>> en la tabla products tengo el campo stock. simplemente tengo que
>>>> comprobar el stock (con la id de ese producto) para ir hacia un camino u
>>>> otro..
>>>>
>>>> Espero haberme explicado mejor.
>>>>
>>>>
>>>> El martes, 23 de abril de 2013 15:40:56 UTC+2, GuillermoRohde escribió:
>>>>>
>>>>> Hola Telmo, mira por lo que veo estas queriendo que se descuente del
>>>>> stock cuando selecciona el producto, pero tendrías que pensar
>>>>> en algún usuario que entra y se arrepiente de comprar un articulo x del
>>>>> cual tiene 4 unidades y el usuario pide las 4 en ese momento. A su vez
>>>>> ingresa otro usuario que solicita el mismo artículo a lo cual el sistema 
>>>>> va
>>>>> a responder que no se posee stock en existencia... y en definitiva no vas 
>>>>> a
>>>>> vender nada... si no es nada de eso lo que quisiste explicar te pido
>>>>> disculpas, no tengo idea como estas manejando el stock pero en tu tabla
>>>>> de artículos deberías tener los campos de stock y stock mínimo (y máximo 
>>>>> si
>>>>> fuera necesario), el campo sotck se incrementa en una compra a proveedores
>>>>> y se descuenta en una venta (al imprimir las lineas de la factura y que el
>>>>> comprador ya dio el OK). No tengo idea que tan complejo sea el sistema 
>>>>> pero
>>>>> lo básico para mejar sotck seria: proveedores, compras, ventas. En el cual
>>>>> al cargar las facturas de compras los artículos del stock se incrementas y
>>>>> lógicamente descuentan en la venta.
>>>>>
>>>>> Espero que se entienda y sea de tu ayuda.
>>>>>
>>>>> Saludos!!
>>>>>
>>>>>
>>>>> El 23 de abril de 2013 10:22, Telmo García <[email protected]>escribió:
>>>>>
>>>>>> Hola muy buenas.
>>>>>> En primer lugar agradecer a la gente de este foro tanta información
>>>>>> accesible a todo el mundo, es un lujo poder contar con este banco de
>>>>>> información.
>>>>>>
>>>>>> Quería dejar aquí constancia de un problema que tengo en un trabajo
>>>>>> que estoy realizando con Cake Php a ver si alguien puede echarme una 
>>>>>> mano,
>>>>>> ya que llevo días peleando y no soy capaz de solucionar:
>>>>>> Estoy creando una pequeña aplicación con el framework Cakephp 1.3.
>>>>>> Es una tienda donde el administrador puede añadir, editar y eliminar
>>>>>> productos que se guardan en una base de datos.
>>>>>> Los usuarios registrados pueden comprar esos productos.
>>>>>> Necesito crear una función (function comprar) en el controlador  de
>>>>>> productos que me calcule si el producto que se va a comprar tiene
>>>>>> suficiente stock, y en caso afirmativo muestre el mensaje de producto
>>>>>> comprado y realice la operacion en el campo de stock de la base de datos 
>>>>>> (
>>>>>> es decir que reste el numero de productos comprados al nº de stock).
>>>>>> En caso negativo, que el stock sea nulo o menor al que solicita el
>>>>>> comprador, que no permita comprar y muestre un mensaje de "producto fuera
>>>>>> de stock".
>>>>>> Esto es lo que me falta para terminar con mi proyecto y estoy
>>>>>> bastante perdido. El resto de funciones trabajan perfectamente. Espero 
>>>>>> que
>>>>>> alguien con más experiencia pueda ayudarme.
>>>>>> Muchas gracias a todos por adelantado.
>>>>>> Saludos!
>>>>>>
>>>>>> --
>>>>>> Has recibido este mensaje porque estás suscrito al grupo "CakePHP-es"
>>>>>> de Grupos de Google.
>>>>>> Para anular la suscripción a este grupo y dejar de recibir sus
>>>>>> correos electrónicos, envía un correo electrónico a cakephp-es+...@**
>>>>>> googlegroups.**com.
>>>>>> Para publicar una entrada en este grupo, envía un correo electrónico
>>>>>> a [email protected].
>>>>>>
>>>>>> Visita este grupo en http://groups.google.com/**group**
>>>>>> /cakephp-es?hl=es <http://groups.google.com/group/cakephp-es?hl=es>.
>>>>>> Para obtener más opciones, visita https://groups.google.com/**grou**
>>>>>> ps/opt_out <https://groups.google.com/groups/opt_out>.
>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>>  --
>>>> Has recibido este mensaje porque estás suscrito al grupo "CakePHP-es"
>>>> de Grupos de Google.
>>>> Para anular la suscripción a este grupo y dejar de recibir sus correos
>>>> electrónicos, envía un correo electrónico a cakephp-es+...@**
>>>> googlegroups.com.
>>>> Para publicar una entrada en este grupo, envía un correo electrónico a
>>>> [email protected].
>>>> Visita este grupo en 
>>>> http://groups.google.com/**group/cakephp-es?hl=es<http://groups.google.com/group/cakephp-es?hl=es>
>>>> .
>>>> Para obtener más opciones, visita https://groups.google.com/**
>>>> groups/opt_out <https://groups.google.com/groups/opt_out>.
>>>>
>>>>
>>>>
>>>
>>>  --
>> Has recibido este mensaje porque estás suscrito al grupo "CakePHP-es" de
>> Grupos de Google.
>> Para anular la suscripción a este grupo y dejar de recibir sus correos
>> electrónicos, envía un correo electrónico a
>> [email protected].
>>
>> Para publicar una entrada en este grupo, envía un correo electrónico a
>> [email protected].
>> Visita este grupo en http://groups.google.com/group/cakephp-es?hl=es.
>> Para obtener más opciones, visita
>> https://groups.google.com/groups/opt_out.
>>
>>
>>
>
>  --
> Has recibido este mensaje porque estás suscrito a un tema del grupo
> "CakePHP-es" de Grupos de Google.
> Para anular la suscripción a este tema, visita
> https://groups.google.com/d/topic/cakephp-es/Cwu9HuBsSrw/unsubscribe?hl=es.
> Para anular la suscripción a este grupo y todos sus temas, envía un correo
> electrónico a [email protected].
> Para publicar una entrada en este grupo, envía un correo electrónico a
> [email protected].
> Visita este grupo en http://groups.google.com/group/cakephp-es?hl=es.
> Para obtener más opciones, visita https://groups.google.com/groups/opt_out
> .
>
>
>



-- 
Telmo García Pérez
San Valentín

-- 
Has recibido este mensaje porque estás suscrito al grupo "CakePHP-es" de Grupos 
de Google.
Para anular la suscripción a este grupo y dejar de recibir sus correos 
electrónicos, envía un correo electrónico a 
[email protected].
Para publicar una entrada en este grupo, envía un correo electrónico a 
[email protected].
Visita este grupo en http://groups.google.com/group/cakephp-es?hl=es.
Para obtener más opciones, visita https://groups.google.com/groups/opt_out.


Responder a