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>"; }
/** * 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;
/** * 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/>"; } } }