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