public function PstoLineas() { $nItems = 0; $nErrores = 0; $dbLink = mysql_connect("localhost", "root", "albatronic"); $query = "TRUNCATE {$this->dbDestino}.ErpPstoLineas"; mysql_query($query); $query = "select Codigo,IDArticulo from {$this->dbDestino}.ErpArticulos"; $result = mysql_query($query, $dbLink); while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) { $correspondencia[$row['Codigo']] = $row['IDArticulo']; } $query = "select l.*, c.Estado, c.Fecha from {$this->dbOrigen}.psto_lineas as l LEFT JOIN {$this->dbOrigen}.psto_cab as c ON l.IDPsto=c.IDPsto where c.IDPsto>0"; $result = mysql_query($query, $dbLink); while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) { $c = new PstoLineas(); $c->setIDPsto($row['IDPsto']); $c->setIDLinea($row['IDLinea']); $c->setIDArticulo($correspondencia[$row['IDArticulo']]); $c->setDescripcion($row['Descripcion']); $c->setUnidades($row['Unidades']); $c->setPrecio($row['Precio']); $c->setDescuento($row['Descuento']); $c->setImporte($row['Importe']); $c->setImporteCosto($row['ImporteCosto']); $c->setIDAlmacen(1); if ($row['Fecha'] >= '2012-09-01') { $c->setIva($this->correspondenciaIva[$row['Iva']]); } else { $c->setIva($row['Iva']); } $c->setIDAgente(2); $c->setIDComercial(2); $c->setIDEstado($row['Estado']); $c->setPrimaryKeyMD5(md5($row['IDLinea'])); if (!$c->create()) { $errores[] = $c->getErrores(); $nErrores++; } else { $nItems++; } } //mysql_close($dbLink); echo "Líneas Presupuestos {$nItems}<br/>"; if (count($errores)) { echo "<pre>"; print_r($errores); echo "</pre>"; } }
/** * 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); } }