/**
  * Genera un array con la informacion necesaria para imprimir el documento
  * Recibe un array con los ids de factura
  *
  * @param array $idsDocumento Array con los ids de facturas
  * @return array Array con dos elementos: master es un objeto factura y detail es un array de objetos lineas de factura
  */
 protected function getDatosDocumento($idsDocumento)
 {
     $master = array();
     $detail = array();
     // Recorro el array de las facturas a imprimir
     foreach ($idsDocumento as $key => $idDocumento) {
         // Instancio la cabecera de la factura
         $master[$key] = new FemitidasCab($idDocumento);
         // LLeno el array con objetos de lineas de factura
         $lineas = array();
         $facturaLineas = new FemitidasLineas();
         $rows = $facturaLineas->cargaCondicion('IDLinea', "IDFactura='{$idDocumento}' and Unidades<>0", "IDLinea ASC");
         foreach ($rows as $row) {
             $lineas[] = new FemitidasLineas($row['IDLinea']);
         }
         $detail[$key] = $lineas;
     }
     $datos = array('master' => $master, 'detail' => $detail);
     return $datos;
 }
 /**
  * Calcula el beneficio de una factura
  *
  * Devuelve un array con el precio de venta, el costo (bases imponibles)
  * y el beneficio de la factura
  *
  * array (
  *  'Venta'     => Importe total de la factura base imponible,
  *  'Costo'     => Importe total del costo de la factura base imponible
  *  'Beneficio' => Venta - Costo
  * )
  *
  * @param integer Id de la factura
  * @return array
  */
 public function getBeneficio($idFactura = '')
 {
     if ($idFactura == '') {
         $idFactura = $this->getIDFactura();
     }
     $lineas = new FemitidasLineas();
     $rows = $lineas->cargaCondicion("sum(ImporteCosto) as Costo", "IDFactura='{$idFactura}'");
     unset($lineas);
     $beneficio = array('Venta' => $this->TotalBases, 'Costo' => $rows[0]['Costo'], 'Beneficio' => $this->TotalBases - $rows[0]['Costo']);
     return $beneficio;
 }
 public function FemitidasLineas()
 {
     $nItems = 0;
     $nErrores = 0;
     $dbLink = mysql_connect("localhost", "root", "albatronic");
     $query = "TRUNCATE {$this->dbDestino}.ErpFemitidasLineas";
     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 c.Fecha, l.* from {$this->dbOrigen}.femitidas_cab as c LEFT JOIN {$this->dbOrigen}.femitidas_lineas as l ON c.IDFactura=l.IDFactura where l.IDFactura>0";
     $result = mysql_query($query, $dbLink);
     while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
         $c = new FemitidasLineas();
         $c->setIDFactura($row['IDFactura']);
         $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->setIDAlbaran($row['IDAlbaran']);
         if ($row['Fecha'] >= '2012-09-01') {
             $c->setIva($this->correspondenciaIva[$row['Iva']]);
         } else {
             $c->setIva($row['Iva']);
         }
         $c->setIDAgente(2);
         $c->setIDComercial(2);
         $c->setPrimaryKeyMD5(md5($row['IDLinea']));
         if (!$c->create()) {
             $errores[] = $c->getErrores();
             $nErrores++;
         } else {
             $nItems++;
         }
     }
     //mysql_close($dbLink);
     echo "Líneas Factura emitidas {$nItems}<br/>";
     if (count($errores)) {
         echo "<pre>";
         print_r($errores);
         echo "</pre>";
     }
 }
 static function getTopNFamilias($n = 10, $diasAtras = 365)
 {
     $femi = new FemitidasCab();
     $tablaFacturas = $femi->getDataBaseName() . "." . $femi->getTableName();
     $lineas = new FemitidasLineas();
     $tablaLineas = $lineas->getDataBaseName() . "." . $lineas->getTableName();
     $arti = new Articulos();
     $tablaArticulos = $arti->getDataBaseName() . "." . $arti->getTableName();
     $fami = new Familias();
     $tablaFamilias = $fami->getDataBaseName() . "." . $fami->getTableName();
     $idRol = $_SESSION['usuarioPortal']['IdRol'];
     if ($idRol != '0' and $idRol != '9') {
         $filtro = "(f.IDComercial='{$_SESSION['usuarioPortal']['Id']}')";
     } else {
         $filtro = "(1)";
     }
     $hoy = new Fecha();
     $desde = $hoy->sumaDias(-$diasAtras);
     $filtro .= " AND (f.Fecha>='{$desde}')";
     $em = new EntityManager($femi->getConectionName());
     if ($em->getDbLink()) {
         $query = "select c.Familia,sum(l.Importe) as Total \n                from {$tablaLineas} as l \n                    left join {$tablaArticulos} as a on l.IDArticulo=a.IDArticulo\n                    left join {$tablaFacturas} as f on l.IDFactura=f.IDFactura\n                    left join {$tablaFamilias} as c on a.IDFamilia=c.IDFamilia\n                where {$filtro}\n                group by c.IDFamilia\n                order by sum(l.Importe) DESC\n                limit 0,{$n}";
         $em->query($query);
         $rows = $em->fetchResult();
     }
     unset($em);
     unset($femi);
     unset($lineas);
     unset($arti);
     return $rows;
 }