Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
PHPOST [MOD] Stock en Tienda v2
#1
Hola amigos de Skylium!
Recientemente les traje el MOD de Tienda v2 administrable:
http://foro.skylium.com/tema-PHPOST-MOD-Tienda-v2

Bien, pues ahora, a pedido de Nico les traigo un complemento para este MOD que se trata de la posibilidad de sacar a la venta productos con stock, es decir, solo un determinado número de artículos a la venta.

NOTA: Deben tener instalado el MOD de Tienda v2!

Empecemos:
1) Abre el admin.php de inc/php y buscan:
Código PHP:
}  elseif($act == 'borrar'){
            
$producto $tsTienda->delProducto();
          if(
$producto == 1)
           
$tsCore->redirectTo($tsCore->settings['url'].'/admin/tienda?save=true');
           else
          
$smarty->assign("tsError"$producto); 
Y justo debajo añaden:
Código PHP:
}elseif($act == 'stock'){
                
$producto $tsTienda->getProducto((int)$_GET['id']);
            if(
is_array($producto))
             
$smarty->assign("tsProducto",$producto);
             else
             
$smarty->assign("tsError"$producto); 
             
            if(!empty(
$_POST['stock'])){
            
$producto2 $tsTienda->setStock((int)$_GET['id']);
          if(
$producto2 == 1)
           
$tsCore->redirectTo($tsCore->settings['url'].'/admin/tienda?save=true');
           else
          
$smarty->assign("tsError"$producto2); 
            } 
2) Abren el c.tienda.php de inc/class y buscan:
Código PHP:
function comprarProducto($id){
        global 
$tsUser$tsCore;
    
//FILTRAMOS DATOS
    
$id = (int)$id;
    
    
$data $this->getProducto($id);
        
$type $data['type'];

    if(
$tsUser->puntos $data['precio'])
    return 
'#Cpt1'
Y abajo añaden:
Código PHP:
    if($data['stock_a'] == && $data['stock'] < 1)
    return 
'Producto fuera de stock!';
    elseif(
$data['stock_a'] == 1)
    
$this->stock($data['id']); 
Luego buscan en último } del archivo, que estará en la última linea y justo arriba añaden:
Código PHP:
    function setStock($id){
        
//FILTRAMOS DATOS
        
$id = (int)$id;
        
$stock = (int)$_POST['stock'];
        
$act = empty($_POST['acts']) ? 1;
        if(
mysql_num_rows(mysql_query('SELECT id FROM t_productos WHERE id = \''.(int)$id.'\'')) != 1)
            return 
'Error #Cep3';
            
        if(
mysql_query('UPDATE t_productos SET stock_a = \''.$act.'\', stock = \''.$stock.'\' WHERE id = \''.(int)$id.'\''))
    return 
true;
    else
            return 
'Error #Cep4';
    
    }
    function 
stock($id){
        
//FILTRAMOS DATOS
        
$id = (int)$id;
        
        if(
mysql_num_rows(mysql_query('SELECT id FROM t_productos WHERE id = \''.(int)$id.'\'')) != 1)
            return 
'Error #Cep3';
            
        if(
mysql_query('UPDATE t_productos SET stock = stock - 1 WHERE id = \''.(int)$id.'\''))
    return 
true;
    else
            return 
'Error #Cep4';
    } 
3) Abren el m.admin_tienda.tpl de themes/TUTEMA/templates/admin_mods y buscan:
Código PHP:
            <input type="text" id="val" name="val" style="width:15%;{if $tsProducto.type == 4 || $tsProducto.type == ''}display:none;{/if}" value="{$tsProducto.obj}/>
                                                <
select name="opt" id="opt" style="width:125px;{if $tsProducto.type == 3  || $tsProducto.type == 4 || $tsProducto.type == ''}display:none;{/if}">
                                                    <
option value="0">Id</option>
                                                    <
option value="1">Nombre</option>
                                            
                                               </
select>
                    
                                            </
select>
                                    </
dd>
                                   
                                        <
p><input type="submit" name="save" value="{if $tsAct == 'nuevo'}Agregar producto{else}Guardar Cambios{/if}" class="btn_g"/></p>
                                    </
fieldset>
                                    </
form
Y abajo añaden:
Código PHP:
{elseif $tsAct == 'stock'}                                   
                                    <
form action="" method="post" autocomplete="off">
                                    <
fieldset>
                                        <
legend>Stock de producto</legend>
                                        <
dl>
                                            <
dt><label for="stock">Stock:</label><br /><span>Cantidad del producto (Número de unidades disponibles).</span></dt>
                                            <
dd><input type="text" name="stock" id="stock" value="{$tsProducto.stock}required /></dd>
                                        </
dl>
                                        <
dl>
                                        <
dt><label for="acts">Activar stock:</label><br /><spanActivar stock para este producto.</span></dt>
                                            <
label><input name="acts" type="radio" id="acts" value="1" {if $tsProducto.stock_a == 1}checked{/if} class="radio"/>Si</label>
                                            <
label><input name="acts" type="radio" id="acts" value="0" {if $tsProducto.stock_a == 0}checked{/if} class="radio"/>No</label>
                                </
dl
                                        <
p><input type="submit" name="save" value="{if $tsAct == 'nuevo'}Agregar producto{else}Guardar Cambios{/if}" class="btn_g"/></p>
                                    </
fieldset>
                                    </
form
En ese archivo buscan:
Código PHP:
    <thead>
                                            <
th>ID</th>
                                            <
th>Tipo</th>
                                            <
th>Precio</th>
                                            <
th>Objeto</th>
                                            <
th>Acciones</th>
                                        </
thead>
                                        <
tbody>
                                            {foreach 
from=$tsProductos item=t}
                                            <
tr>
                                                <
td>{$t.id}</td>
                                                <
td>{$t.type}</td>
                                                <
td>{$t.precio}</td>
                                                <
td>{$t.obj}</td>
                                                                                                <
td class="admin_actions"

Y lo reemplazan por:
Código PHP:
    <thead>
                                            <
th>ID</th>
                                            <
th>Tipo</th>
                                            <
th>Precio</th>
                                            <
th>Objeto</th>
                                            <
th>Stock</th>
                                            <
th>Acciones</th>
                                        </
thead>
                                        <
tbody>
                                            {foreach 
from=$tsProductos item=t}
                                            <
tr>
                                                <
td>{$t.id}</td>
                                                <
td>{$t.type}</td>
                                                <
td>{$t.precio}</td>
                                                <
td>{$t.obj}</td>
                                                <
td>{if $t.stock_a}{$t.stock}{else}-{/if}</td>
<
td class="admin_actions">
                                                    <
a href="{$tsConfig.url}/admin/tienda?act=stock&id={$t.id}"><img src="{$tsConfig.default}/images/icons/yes.png" title="Stock" /></a


4) Abren el m.tienda.tpl de themes/TUTEMA/templates/modules y buscan:
Código PHP:
{if $p.type == 'Puntos para dar'}
<
option value="{$p.id}">{$p.obj} {$p.type} (<font color="red">{$p.precio}</fontpuntos)</option>
{else}
<
option value="{$p.id}">{$p.type} {$p.obj} (<font color="red">{$p.precio}</fontpuntos)</option>
{/if}
{/foreach}
</
select>

{foreach 
from=$tsProductos item=p}
<
div id="producto{$p.id}">
<
br />
{if 
$tsUser->puntos $p.precio}
<
bNecesitas <font color="red">{$p.precio-$tsUser->puntos}</fontmás para poder comprar el producto¡Haz posts para conseguirlos!</b>
{else} 
Y lo reemplazan por:
Código PHP:
{if $p.type == 'Puntos para dar'}
<
option value="{$p.id}">{$p.obj} {$p.type} (<font color="red">{$p.precio}</fontpuntos) {if $p.stock_a} ({$p.stocken stock){/if}</option>
{else}
<
option value="{$p.id}">{$p.type} {$p.obj} (<font color="red">{$p.precio}</fontpuntos) {if $p.stock_a} ({$p.stocken stock){/if}</option>
{/if}
{/foreach}
</
select>

{foreach 
from=$tsProductos item=p}
<
div id="producto{$p.id}">
<
br />
{if 
$p.stock_a == && $p.stock 1}
<
b>Producto fuera de stock</b>
{elseif 
$tsUser->puntos $p.precio}
<
bNecesitas <font color="red">{$p.precio-$tsUser->puntos}</fontmás para poder comprar el producto¡Haz posts para conseguirlos!</b>
{else} 

5) Por último hacen esta SQL en su BD:
Código PHP:
ALTER TABLE `t_productosADD `stock_aINTNOT NULL ,
ADD `stockINTNOT NULL 

Y listo!!

Caps:
[img]http://puu.sh/6vosl.png[/img]

[img]http://puu.sh/6votT.png[/img]
[img]http://puu.sh/6voxP.png[/img]

[info]Demo de un producto en stock: [url]http://programu.net/tienda/[/url][/info]
User: demo
Pass: demo1234

Aunque no lo podrán comprar sin tener puntos pueden observar que indica el stock del producto de la medalla VIP.

Espero que les guste Sonrisa

Saludos Guiño
#2
Buenísimo como siempre, capo !!!
Gracias por compartirlo Guiño
#3
(01-02-2014, 02:00 AM)jorge_e_c2012 escribió: Buenísimo como siempre, capo !!!
Gracias por compartirlo Guiño
Muchas gracias Gran sonrisa, la verdad, me parece bastante útil.
#4
Buenisimo gracias por compartirlo Sonrisa
#5
Muy bueno el post tan claro de realizarlo tal ves podrias postear algo para oxwall creo seria muy util para muchos que usan este script de todas maneras gracias
WWW
#6
(05-03-2014, 12:52 AM)VeryPlus escribió: Buenisimo gracias por compartirlo Sonrisa
Gracias a ti por pasarte amigo Sonrisa

(05-03-2014, 01:31 AM)fox2201 escribió: Muy bueno el post tan claro de realizarlo tal ves podrias postear algo para oxwall creo seria muy util para muchos que usan este script de todas maneras gracias
Muchas gracias Gran sonrisa La verdad nunca usé ese script.
#7
Gracias por compartirlo ando que quiero hacer una página de ese tipo, pero aun así ando viendo que ventajas me puede dar pero este mod si es bueno, lo hace un poco más interesante poder obtener ciertas caracteristicas en la página.


Posibles temas similares...
Tema Autor Respuestas Vistas Último mensaje
  PHPOST [MOD] Tienda v2 aperpen 2 447 01-02-2014, 04:16 PM
Último mensaje: aperpen



Usuarios navegando en este tema: 1 invitado(s)