/** * CÁLCULO DEL RECARGO ENERGÉTICO. * Si hay artículos que están sujetos a recargo energético, hay que calcular * el importe del impuesto e incluir una línea automática con dicho valor. * Si la línea ya está incluida, se actualiza. * * El articulo que se factura para recargo energetico viene definido en el parametro REART * Y el precio kilo en el parametro REIMP */ public function calculaRecargoEnergetico() { $var = new CpanVariables("Mod", "Web", "PcaeEmpresas"); $parametro = $var->getNode("especificas"); $reArticulo = $parametro['reArticulo']; unset($var); // Ver si existe el articulo que se ha definido en parametros // para facturar el recargo energetico $articulo = new Articulos(); $articulo = $articulo->find('Codigo', $reArticulo); if ($articulo->getIDArticulo()) { // Se ha definido el parametro con el codigo del articulo // para aplicar el recargo energetico. Ahora hay que ver si en el presupuesto // en curso hay articulos sujetos a recargo energético. $em = new EntityManager($this->getConectionName()); $tablaArticulos = "{$articulo->getDataBaseName()}.{$articulo->getTableName()}"; $lineas = new PstoLineas(); $tablaLineas = "{$lineas->getDataBaseName()}.{$lineas->getTableName()}"; unset($lineas); $query = "select t1.*,t2.Peso from {$tablaLineas} as t1, {$tablaArticulos} as t2 where t1.IDPsto='{$this->IDPsto}' and t1.IDArticulo=t2.IDArticulo and t2.RecargoEnergetico='1'"; $em->query($query); $rows = $em->fetchResult(); if ($rows) { //Hay articulos sujetos a recargo energetico $reKilos = 0; foreach ($rows as $row) { $reKilos += $row['MtsFa'] * $row['Peso']; } $reImporte = $reKilos * $articulo->getPrecioVenta(); //Ver si ya está la linea de presupuesto creada. $query = "select IDLinea from {$tablaLineas} where IDPsto='{$this->IDPsto}' and IDArticulo='{$articulo->getIDArticulo()}'"; $em->query($query); $rows = $em->fetchResult(); if ($rows) { // Ya estaba, actualizar $query = "update {$tablaLineas} set Unidades='{$reKilos}',Precio='{$articulo->getPrecioVenta()}',Importe='{$reImporte}' where IDLinea='{$rows[0]['IDLinea']}'"; $em->query($query); } else { // No está, crear $lineaPsto = new PstoLineas(); $lineaPsto->setIDPsto($this->IDPsto); $lineaPsto->setIDArticulo($articulo->getIDArticulo()); $lineaPsto->setDescripcion($articulo->getDescripcion()); $lineaPsto->setUnidades($reKilos); $lineaPsto->setPrecio($articulo->getPrecioVenta()); $lineaPsto->setImporte($reImporte); $lineaPsto->setIDAgente($_SESSION['usuarioPortal']['Id']); $lineaPsto->setIDComercial($this->IDComercial); $lineaPsto->setIDAlmacen($this->IDAlmacen); $lineaPsto->setIva($articulo->getIDIva()->getIva()); $lineaPsto->create(); unset($lineaPsto); } } else { // No hay articulos con recargo energetico. // Borro el eventual cargo de recargo energetico. $lineas = new PstoLineas(); $lineas->queryDelete("IDPsto='{$this->IDPsto}' and IDArticulo='{$articulo->getIDArticulo()}'"); unset($lineas); } $em->desConecta(); unset($em); } }