public static function getPromocionesFirmaFamilia($idFirma, $idFamilia, $soloVigentes = true)
 {
     $rows = array();
     $promo = new Promociones();
     $database = $promo->getDataBaseName();
     $table = $promo->getTableName();
     $promo->conecta();
     if (is_resource($promo->_dbLink)) {
         $query = "SELECT p.Id " . "FROM {$database}.{$table} p, {$database}.AgtArticulos a " . "WHERE p.IdArticulo=a.Id AND " . " a.IdFirma='{$idFirma}' AND " . " a.IdFamilia='{$idFamilia}'";
         //echo $query,"<br/>";
         $promo->_em->query($query);
         $rows = $promo->_em->fetchResult();
     }
     return $rows;
 }
<?php

/* @var $this PromocionesController */
/* @var $model Promociones */
$this->menu = array(array('label' => 'Crear Promociones', 'url' => array('create')), array('label' => 'Buscar Promociones Activas', 'url' => array('admin', 'estado' => 'Activa')), array('label' => 'Buscar Promociones Vencidas', 'url' => array('admin', 'estado' => 'Vencida')));
$lasActivas = Promociones::model()->findAll("estado = 'Activa'");
?>


<style>
	#anuncios table{
    width:90%;
    border-collapse: collapse; 
    border:black 1px solid;  
	}

	#anuncios tr {
  	border: black 1px solid;
	}

	#anuncios td {
  	border: black 1px solid;
	}
</style>
	<h2>Promociones Activas</h2>
	<hr>
	<?php 
if (!$lasActivas) {
    echo "<h4 class='text-error'>No hay promociones activas</h4>";
}
foreach ($lasActivas as $las_activas) {
<?php

/* @var $this PromocionesController */
/* @var $model Promociones */
$this->menu = array(array('label' => 'Crear Promociones', 'url' => array('create')), array('label' => 'Buscar Promociones Activas', 'url' => array('admin', 'estado' => 'Activa')), array('label' => 'Buscar Promociones Vencidas', 'url' => array('admin', 'estado' => 'Vencida')));
$lasVencidas = Promociones::model()->findAll("estado = 'Vencida'");
?>


<style>
	#anuncios table{
    width:90%;
    border-collapse: collapse; 
    border:black 1px solid;  
	}

	#anuncios tr {
  	border: black 1px solid;
	}

	#anuncios td {
  	border: black 1px solid;
	}
</style>
	<h2>Promociones Vencidas</h2>
	<hr>

	<?php 
if (!$lasVencidas) {
    echo "<h4 class='text-error'>No hay promociones vencidas</h4>";
}
Example #4
0
 /**
  * Recibe un objeto AlbaranCab o PstoCab y devuelve un array
  * con siete elementos:
  *
  *  [Promocion] -> El objeto promocion (si hay)
  *  [Promo][Precio] -> El precio de la promocion
  *  [Promo][Descuento] -> El descuento de la promocion
  *  [Promo][PrecioConImpuestos] -> El precio de la promocion con Impuestos
  *  [Tarifa][Precio] -> El precio de la tarifa
  *  [Tarifa][Descuento] -> El descuento de la tarifa
  *  [Tarifa][PrecioConImpuestos] -> El de la tarifa con impuestos
  *
  * Para ello consulta promociones vigentes para el artículo, cliente
  * y si no hay, aplica la tarifa asociada al cliente.
  *
  * @param objeto $objetoVenta Un objeto albaran o presupuesto
  * @return array Array con el objeto promocion, el precio y el descuento de la tarifa y de la promocion
  */
 public function cotizar($objetoVenta, $unidades)
 {
     $precios = array();
     // ---------------------------------------------------------------------
     // Coger el precio de tarifa
     // ---------------------------------------------------------------------
     $tarifa = $objetoVenta->getIDCliente()->getIDTarifa();
     if ($tarifa->getTipo()->getIDTipo() == '0') {
         //Descuento sobre el PVP
         $precios['Tarifa']['Precio'] = $this->getPrecioVenta();
         $precios['Tarifa']['Descuento'] = $tarifa->getValor();
     } else {
         //Margen sobre el PVD
         $precios['Tarifa']['Precio'] = $this->getPrecioCosto() * (1 + $tarifa->getValor() / 100);
         $precios['Tarifa']['Descuento'] = 0;
     }
     $precios['Tarifa']['PrecioConImpuestos'] = $precios['Tarifa']['Precio'] * (1 + $this->getIDIva()->getIva() / 100);
     // -------------------------------------------------------------------------
     //  Buscar promociones. En caso de haber promo para artículo y para familia,
     //  prevalecen los promos a nivel de artículo sobre
     //  las promos a nivel de familia
     // -------------------------------------------------------------------------
     $promocion = new Promociones();
     $filtro = "( \n                (IDArticulo='{$this->getIDArticulo()}') or \n                (IDFamilia='{$this->getIDFamilia()->getIDFamilia()}')\n            ) AND (CantidadMinima<='{$unidades}')\n              AND (FinPromocion>='{$objetoVenta->getDate()}') \n              AND (IDFP='{$objetoVenta->getIDFP()->getIDFP()}')";
     $promociones = $promocion->cargaCondicion("*", $filtro, "IDArticulo DESC");
     if (!count($promociones)) {
         $filtro = "( \n                (IDArticulo='{$this->getIDArticulo()}') or \n                (IDFamilia='{$this->getIDFamilia()->getIDFamilia()}')\n            ) AND (CantidadMinima<='{$unidades}')\n              AND (FinPromocion>='{$objetoVenta->getDate()}') \n              AND (IDFP='0')";
         $promociones = $promocion->cargaCondicion("*", $filtro, "IDArticulo DESC");
     }
     $hayPromo = false;
     if (count($promociones)) {
         // Recorro las promos-clientes a ver si hay alguna especifica para el cliente
         while (!$hayPromo and list(, $promocion) = each($promociones)) {
             // El articulo está en promocion, ver si aplica al cliente
             $promoCliente = new PromocionesClientes();
             $filtro = "IDPromocion='{$promocion['IDPromocion']}' and (IDCliente='{$objetoVenta->getIDCliente()->getIDCliente()}')";
             $promoClientes = $promoCliente->cargaCondicion("Id,IdPromocion", $filtro);
             if ($promoClientes[0]['Id'] != '') {
                 // La promo aplica
                 $hayPromo = true;
                 $promocion = new Promociones($promoClientes[0]['IdPromocion']);
             }
         }
         if (!$hayPromo) {
             // Recorro los promos-clientes a ver si hay alguna para el grupo de clientes
             reset($promociones);
             while (!$hayPromo and list(, $promocion) = each($promociones)) {
                 $promoCliente = new PromocionesClientes();
                 $filtro = "IDPromocion='{$promocion['IDPromocion']}' and (IDGrupo='{$objetoVenta->getIDCliente()->getIDGrupo()->getIDGrupo()}')";
                 $promoClientes = $promoCliente->cargaCondicion("Id,IdPromocion", $filtro);
                 if ($promoClientes[0]['Id'] != '') {
                     // La promo aplica
                     $hayPromo = true;
                     $promocion = new Promociones($promoClientes[0]['IdPromocion']);
                 }
             }
             unset($promoCliente);
         }
     }
     if ($hayPromo) {
         // Hay promo, coger precios de promo
         $precios['Promocion'] = $promocion;
         switch ($promocion->getTipoPromocion()->getIDTipo()) {
             case '0':
                 //Promocion de descuento en PVP
                 $precios['Promo']['Precio'] = $this->getPrecioVenta();
                 $precios['Promo']['Descuento'] = $promocion->getValor();
                 break;
             case '1':
                 //Promocion en Margen sobre PVD
                 $precios['Promo']['Precio'] = $this->getPrecioCosto() * (1 + $promocion->getValor() / 100);
                 $precios['Promo']['Descuento'] = 0;
                 break;
             case '2':
                 //Promocion en precio neto
                 $precios['Promo']['Precio'] = $promocion->getValor();
                 $precios['Promo']['Descuento'] = 0;
                 break;
         }
         $precios['Promo']['PrecioConImpuestos'] = $precios['Promo']['Precio'] * (1 + $this->getIDIva()->getIva() / 100);
     }
     unset($promocion);
     return $precios;
 }
 /**
  * Returns the data model based on the primary key given in the GET variable.
  * If the data model is not found, an HTTP exception will be raised.
  * @param integer $id the ID of the model to be loaded
  * @return Promociones the loaded model
  * @throws CHttpException
  */
 public function loadModel($id)
 {
     $model = Promociones::model()->findByPk($id);
     if ($model === null) {
         throw new CHttpException(404, 'The requested page does not exist.');
     }
     return $model;
 }
<?php

include_once '../../model/Promociones/funcionesPromociones.php';
if ($_POST) {
    extract($_POST);
    if (isset($accion) && !empty($accion)) {
        $promociones = new Promociones();
        switch ($accion) {
            case 'getPromociones':
                $data = $promociones->getPromociones();
                echo json_encode($data);
                break;
            case 'buscaProducto':
                $data = $promociones->buscaProductos($CveProducto);
                echo json_encode($data);
                break;
            case 'guardarPromocion':
                $data = $promociones->mergeProductos($_POST);
                echo json_encode($data);
                break;
            default:
                break;
        }
    } else {
        echo 'error';
    }
} else {
    echo "Peticion Invalida";
}
<?php

/*
 * DEVUELVE LOS ARTICULOS EN PROMOCION PARA LA FIRMA Y FAMILIA INDICADA
 * INDICADO EN EL PARÁMETRO 'formato'
 *
 * Es llamado por AJAX
 *
 * @author Sergio Perez <*****@*****.**>
 * @copyright Informatica ALBATRONIC
 * @since 06.08.2015
 */
include_once "../bin/albatronic/autoloader.inc.php";
$v = $_GET;
$formato = strtoupper($v['formato']);
$promociones = array();
$promos = Articulos::getPromocionesFirmaFamilia($v['idFirma'], $v['idFamilia'], false);
foreach ($promos as $promo) {
    $promo = new Promociones($promo['Id']);
    $promociones[] = $promo->iterator();
}
switch ($formato) {
    case '':
    case 'JSON':
        $tag = json_encode($promociones);
        break;
    default:
        $tag = "";
        break;
}
echo $tag;
Example #8
0
 /**
  * Devuelve las promociones vigentes para el cliente
  * y la fecha indicada.
  *
  * El formato de fecha pasado debe ser YYYY-mm-dd
  *
  * @param date $fecha La fecha
  * @return array Array con objetos promociones
  */
 public function getPromosVigentes($fecha = '')
 {
     if ($fecha == '') {
         $fecha = date('Y-m-d');
     }
     $promos = array();
     $promociones = new Promociones();
     $promoClientes = new PromocionesClientes();
     $familias = new Familias();
     $em = new EntityManager($promociones->getConectionName());
     if ($em->getDbLink()) {
         $query = "SELECT DISTINCT t1.IDPromocion\n                FROM {$promociones->getDataBaseName()}.{$promociones->getTableName()} as t1,\n                     {$promoClientes->getDataBaseName()}.{$promoClientes->getTableName()} as t2,\n                     {$familias->getDataBaseName()}.{$familias->getTableName()} as t3\n                WHERE t1.FinPromocion>='{$fecha}'\n                AND t1.IDPromocion=t2.IDPromocion\n                AND ( (t2.IDCliente='{$this->IDCliente}') OR (t2.IDGrupo='{$this->getIDGrupo()->getIDGrupo()}') )\n                AND ( t1.IDFamilia = t3.IDFamilia OR (1))\n                ORDER BY t1.FinPromocion ASC, t1.IDArticulo DESC,t3.Familia";
         $em->query($query);
         $rows = $em->fetchResult();
         $em->desConecta();
         foreach ($rows as $row) {
             $promos[] = new Promociones($row['IDPromocion']);
         }
     }
     unset($em);
     unset($promociones);
     unset($promoClientes);
     unset($familias);
     return $promos;
 }
 private function importPromociones()
 {
     $file = getcwd() . "/docs/docs1/import/PROMOCIONES.txt";
     $array = $this->leeCsv($file);
     $obj = new Promociones();
     $obj->truncate();
     $articulo = new Articulos();
     foreach ($array as $item) {
         //print_r($item);
         $codigo = trim($item['IDARTICULO']);
         $row = $articulo->querySelect("Id", "IdFirma='{$item['IDFIRMA']}' and IdFamilia='{$item['IDFAMILIA']}' and Codigo='{$codigo}'");
         if ($row[0]['Id']) {
             $fecha = split(" ", $item['FECHALIMITE']);
             $fecha = split("/", $fecha[0]);
             $fecha = $fecha[2] . "-" . str_pad($fecha[1], 2, "0", STR_PAD_LEFT) . "-" . str_pad($fecha[0], 2, "0", STR_PAD_LEFT);
             $obj = new Promociones();
             $obj->setId($item['IDPROMOCION']);
             $obj->setIdArticulo($row[0]['Id']);
             $obj->setFechaLimite($fecha);
             $obj->setCantidadMinima(self::trataNumero($item['CANTIDADMINIMA']));
             $obj->setPrecioNeto(self::trataMoneda($item['NETO']));
             $obj->setDescuento(self::trataNumero($item['DESCUENTO']));
             $obj->setComision(self::trataNumero($item['COMISION']));
             $id = $obj->create();
             if (!$id) {
                 print_r($obj->getErrores());
             }
         } else {
             echo "Importar Promociones: No existe el artículo {$codigo}<br/>";
         }
     }
     // Importar las relaciones promocion-cliente
     $file = getcwd() . "/docs/docs1/import/PROMOCIONES_CLIENTES.txt";
     $array = $this->leeCsv($file);
     $obj = new Relaciones();
     $obj->queryDelete("EntidadOrigen='Promociones' and EntidadDestino='Clientes'");
     $promocion = new Promociones();
     foreach ($array as $item) {
         //print_r($item);
         $row = $promocion->querySelect("Id", "Id='{$item['IDPROMOCION']}'");
         if ($row[0]['Id']) {
             $obj = new Relaciones();
             $obj->setEntidadOrigen('Promociones');
             $obj->setIdEntidadOrigen($item['IDPROMOCION']);
             $obj->setEntidadDestino('Clientes');
             $obj->setIdEntidadDestino($item['IDCLIENTE']);
             $id = $obj->create();
             if (!$id) {
                 print_r($obj->getErrores());
             }
         } else {
             echo "Importar Promociones-Clientes: No existe la promocion {$item['IDPROMOCION']}<br/>";
         }
     }
 }