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>";
     }
 }
Esempio n. 2
0
 /**
  * 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);
     }
 }