/** * Quita la vinculación entre la empresa y el usuario y todos * los permisos que tuviera para los proyectos y apps de la empresa * * @return boolean TRUE si el borraro se ha hecho con exito */ public function erase() { $idEmpresa = $this->IdEmpresa; $idUsuario = $this->IdUsuario; $ok = parent::erase(); if ($ok) { // Borrar todos los permisos de acceso del usuario-empresa $em = new EntityManager($this->getConectionName()); if ($em->getDbLink()) { $query = "DELETE FROM {$em->getDataBase()}.PcaePermisos WHERE IdEmpresa='{$idEmpresa}' AND IdUsuario='{$idUsuario}'"; $em->query($query); $this->_errores = $em->getError(); $em->desConecta(); } unset($em); } return $ok; }
/** * Borra físicamente el registro que vincula la app al proyecto * y elimina todos los permisos relativos a ese proyecto y app * @return boolean */ public function delete() { $idProyecto = $this->IdProyecto; $idEmpresa = $this->getIdProyecto()->getIdEmpresa()->getId(); $idApp = $this->IdApp; $ok = parent::erase(); if ($ok) { // Borrar todos los permisos de acceso a la app borrada $em = new EntityManager($this->getConectionName()); if ($em->getDbLink()) { $query = "DELETE FROM {$em->getDataBase()}.PcaePermisos WHERE IdEmpresa='{$idEmpresa}' AND IdProyecto='{$idProyecto}' AND IdApp='{$idApp}'"; $em->query($query); $this->_errores = $em->getError(); $em->desConecta(); } unset($em); } return $ok; }
/** * Devuelve un array de objetos articulos que cumplen la * regla $idRegla, ordenados por SortOrder ASC * * El array tendrá $nItems elementos. * * @param int $idRegla El id de la regla * @param int $nItems El número máximo de elementos a devolver. Opcional, por defecto todos. * @return \Articulos array de objetos Articulos */ public function getArticulos($idRegla, $nItems = 999999) { $array = array(); if ($nItems <= 0) { $nItems = 999999; } $em = new EntityManager($this->getConectionName()); if ($em->getDbLink()) { // Condición de vigencia $ahora = date("Y-m-d H:i:s"); $filtro = "(a.Deleted='0') AND (a.Publish='1') AND (a.ActiveFrom<='{$ahora}') AND ( (a.ActiveTo>='{$ahora}') or (a.ActiveTo='0000-00-00 00:00:00') )"; $query = "\n SELECT a.IDArticulo as Id\n FROM {$em->getDataBase()}.ErpOrdenesArticulos r, {$em->getDataBase()}.ErpArticulos a\n WHERE r.IDRegla='{$idRegla}' AND r.IDArticulo=a.IDArticulo AND a.Vigente='1' AND {$filtro}\n ORDER BY r.SortOrder ASC\n LIMIT {$nItems}"; $em->query($query); $rows = $em->fetchResult(); $em->desConecta(); } unset($em); if (is_array($rows)) { foreach ($rows as $row) { $array[$row['Id']] = new Articulos($row['Id']); } } return $array; }
/** * Devuelve un array de objetos articulos que cumplen la * regla $idRegla, ordenados por SortOrder ASC * * El array tendrá $nItems elementos. * * @param int $idRegla El id de la regla * @param int $nItems El número máximo de elementos a devolver. Opcional, por defecto todos. * @return \ErpArticulos array de objetos Articulos */ public function getArticulos($idRegla, $nItems = 999999) { $array = array(); if ($nItems <= 0) { $nItems = 999999; } $articulos = new Articulos(); $tablaArticulos = $articulos->getTableName(); unset($articulos); $em = new EntityManager($this->getConectionName()); if ($em->getDbLink()) { $query = "\n SELECT a.IDArticulo as Id\n FROM {$em->getDataBase()}.{$this->getTableName()} r, {$em->getDataBase()}.{$tablaArticulos} a\n WHERE r.IDRegla='{$idRegla}' AND r.IDArticulo=a.IDArticulo AND a.Publish='1' AND a.Vigente='1' AND a.Deleted='0'\n ORDER BY r.SortOrder ASC\n LIMIT {$nItems}"; $em->query($query); $rows = $em->fetchResult(); $em->desConecta(); } unset($em); if (is_array($rows)) { foreach ($rows as $row) { $array[$row['Id']] = new Articulos($row['Id']); } } return $array; }
/** * Crea las líneas de recepciones relativas al traspaso * * @param integer $idTraspaso */ public function cargaLineasTraspaso($idTraspaso) { // Cargo las lineas dl traspaso que no están recibidas y cuyos artículos son inventariables. // Borro las eventuales líneas de recepción que no están recibidas $traspasosLineas = new TraspasosLineas(); $rows = array(); $em = new EntityManager($traspasosLineas->getConectionName()); if ($em->getDbLink()) { $query = "select l.IDLinea\n from {$em->getDataBase()}.ErpTraspasosLineas l, {$em->getDataBase()}.ErpArticulos a\n where l.IDTraspaso = '{$idTraspaso}' and\n l.IDEstado = '2' and\n l.Tipo = '0' and\n l.IDArticulo = a.IDArticulo and\n a.Inventario = '1'\n order by IDLinea ASC;"; $em->query($query); $rows = $em->fetchResult(); $query = "delete from ErpRecepciones where Entidad='TraspasosCab' and IDEntidad='{$idTraspaso}' and Recepcionada='0'"; $em->query($query); $em->desConecta(); } unset($em); unset($traspasosLineas); // Por cada lína de traspaso crea una línea de recepción foreach ($rows as $row) { $this->creaLineaRecepcion('TraspasosCab', $idTraspaso, new TraspasosLineas($row['IDLinea'])); } }
/** * Devuelve el nombre físico de la BD donde está la entidad en curso * @return string Nombre de la BD */ public function getDataBaseName() { $em = new EntityManager($this->getConection()); $dataBaseName = $em->getDataBase(); unset($em); return $dataBaseName; }
/** * Proceso de facturación agrupada. * * Se pueden agrupar pedidos de distintas sucursales, en cuyo caso * la factura generada se asignará a la sucursal en curso. * * Se agrupan las facturas en base a la forma de pago. * * @return <type> */ public function ConformarAction() { $facturados = array(); $filtro = $this->request['filtro']; $fecha = new Fecha($filtro['desdeFecha']); $desdeFecha = $fecha->getaaaammdd(); $fecha = new Fecha($filtro['hastaFecha']); $hastaFecha = $fecha->getaaaammdd(); unset($fecha); if ($filtro['idSucursal'] == '') { $filterSucursal = "(1)"; $idSucursal = $_SESSION['suc']; } else { $filterSucursal = "(IDSucursal='{$filtro['idSucursal']}')"; $idSucursal = $filtro['idSucursal']; } $filter = $filterSucursal . " AND c.IDFactura='0' and c.IDEstado='2' and c.IDProveedor='{$filtro['idProveedor']}' and c.Fecha>='{$desdeFecha}' and c.Fecha<'{$hastaFecha}' and c.FlagFacturar='1'"; //COMPRUEBO QUE NO HAYA MAS DE TRES TIPOS DE IVA ENTRE TODOS LOS ALBARANES A FACTURAR $pedidos = new PedidosCab(); $em = new EntityManager($pedidos->getConectionName()); if (!$em->getDbLink()) { $this->values['errores'] = $em->getError(); return $this->listAction(); } $query = "SELECT l.Iva\n FROM\n {$em->getDataBase()}.ErpPedidosLineas as l,\n {$em->getDataBase()}.ErpPedidosCab as c\n WHERE {$filter} and c.IDPedido=l.IDPedido\n GROUP BY l.Iva"; $em->query($query); $rows = $em->fetchResult(); $em->desConecta(); if (count($rows) > 3) { $this->values['alertas'] = "Hay más de tres tipos de iva distintos. No se puede agrupar"; return $this->listAction(); } $contador = new Contadores($this->request['idContador']); // Buscar la cuenta contable de compras para la sucursal $sucursal = new Sucursales($idSucursal); $ctaCompras = $sucursal->getCtaContableCompras(); unset($sucursal); //AGRUPO LOS PEDIDOS POR FORMA DE PAGO. $em = new EntityManager($pedidos->getConectionName()); $query = "SELECT c.IDFP, sum(c.Total) as Total FROM {$pedidos->getDataBaseName()}.ErpPedidosCab as c WHERE {$filter} GROUP BY c.IDFP"; $em->query($query); $rows = $em->fetchResult(); $em->desConecta(); foreach ($rows as $row) { $numeroFactura = $contador->asignaContador(); $factura = new FrecibidasCab(); $factura->setIDSucursal($idSucursal); $factura->setIDContador($this->request['idContador']); $factura->setNumeroFactura($numeroFactura); $factura->setSuFactura($this->request['suFactura']); $factura->setFecha($this->request['fecha']); $factura->setIDProveedor($filtro['idProveedor']); $factura->setCuentaCompras($ctaCompras); $factura->setIDFP($row['IDFP']); $idFactura = $factura->create(); // Guardo en un array los id's de facturas generadas $facturados[] = $idFactura; if ($idFactura != 0) { // Crear las líneas de factura $em = new EntityManager($pedidos->getConectionName()); $query = "select l.* from {$pedidos->getDataBaseName()}.ErpPedidosLineas l, {$pedidos->getDataBaseName()}.ErpPedidosCab c where (c.IDPedido=l.IDPedido) and (c.IDFP='{$row['IDFP']}') and {$filter}"; $em->query($query); $lineas = $em->fetchResult(); $em->desConecta(); foreach ($lineas as $linea) { $linFactura = new FrecibidasLineas(); $linFactura->setIDFactura($idFactura); $linFactura->setIDArticulo($linea['IDArticulo']); $linFactura->setDescripcion($linea['Descripcion']); $linFactura->setUnidades($linea['UnidadesPtesFacturar']); $linFactura->setPrecio($linea['Precio']); $linFactura->setDescuento($linea['Descuento']); $linFactura->setIva($linea['Iva']); $linFactura->setIDPedido($linea['IDPedido']); $linFactura->setIDLineaPedido($linea['IDLinea']); if ($linFactura->create()) { // Pongo el estado de la linea de pedido a "Facturado" y // quitar el pendiente de facturar. $lineaPedido = new PedidosLineas($linea['IDLinea']); $lineaPedido->setIDEstado(3); $lineaPedido->setUnidadesPtesFacturar(0); $lineaPedido->save(); } unset($linFactura); } // Totalizar la factura $factura->recalcula(); // Crear vencimientos $factura->creaVctos(); // Anotar en caja si procede $factura->anotaEnCaja(); // Actualiza las cabecera del grupo de pedidos $em = new EntityManager($pedidos->getConectionName()); $query = "update {$pedidos->getDataBaseName()}.ErpPedidosCab c set c.IDFactura='{$idFactura}', c.IDEstado='3' where (c.IDFP='{$row['IDFP']}') and ({$filter})"; $em->query($query); $em->desConecta(); unset($factura); } else { $this->values['errores'] = $factura->getErrores(); } } return $this->listAction(); }