Example #1
0
 /**
  *
  *Lista las compras. Se puede filtrar por empresa, sucursal, caja, usuario que registra la compra, usuario al que se le compra, tipo de compra, si estan pagadas o no, por tipo de pago, canceladas o no, por el total, por fecha, por el tipo de pago y se puede ordenar por sus atributos.
  *
  * @param fecha_inicial string Se listaran las compras cuya fecha sea mayor a la indicada aqui
  * @param tipo_compra string Si es a credito, se listaran las compras que sean a credito, si es de contado, se listaran las compras de contado
  * @param id_usuario_compra int Se listaran las compras realizadas por este usuario, si es sucursal su id sera negativo
  * @param id_caja int Se listaran las compras registradas en esta caja
  * @param id_usuario int Se listaran las compras que ha registrado este usuario
  * @param id_empresa int Id de la empresa de la cual se listaran sus compras
  * @param id_sucursal int Id de la sucursal de la cual se listaran sus compras
  * @param fecha_final string Se listaran las compras cuya fecha sea menor a la indicada aqui
  * @param total_minimo float Se listaran las compras cuyo total sea mayor a este
  * @param total_maximo float Se listaran las compras cuyo total sea menor a este
  * @param saldada bool Si este valor no es obtenido, se listaran las compras tanto saldadas como las que no lo estan. Si es verdadero se listaran solo las compras saldadas, si es falso, se listaran solo las compras que no lo estan
  * @param cancelada bool Si este valor no es obtenido, se listaran tanto compras canceladas como no canceladas. Si es verdadero, se listaran solo las compras canceladas, si su valor es falso, se listaran solo las compras que no lo esten
  * @param tipo_pago string Se listaran las compras pagadas con cheque, tarjeta o efectivo de acuerdo a este valor
  * @return compras json Objeto que contendra la lista de las compras
  **/
 public static function Lista($cancelada = null, $fecha_final = null, $fecha_inicial = null, $id_caja = null, $id_empresa = null, $id_sucursal = null, $id_usuario = null, $id_vendedor_compra = null, $orden = null, $saldada = null, $tipo_compra = null, $tipo_pago = null, $total_maximo = null, $total_minimo = null)
 {
     Logger::log("Listando compras");
     //Se valida que el parametro orden sea correcto
     if (!is_null($orden) && $orden != "id_compra" && $orden != "id_caja" && $orden != "id_compra_caja" && $orden != "id_vendedor_compra" && $orden != "tipo_compra" && $orden != "fecha" && $orden != "subtotal" && $orden != "impuesto" && $orden != "descuento" && $orden != "total" && $orden != "id_sucursal" && $orden != "id_usuario" && $orden != "id_empresa" && $orden != "saldo" && $orden != "cancelada" && $orden != "tipo_de_pago" && $orden != "retencion") {
         Logger::error("EL parametro orden (" . $orden . ") no es valido");
         throw new Exception("EL parametro orden (" . $orden . ") no es valido", 901);
     }
     //Revisa si se recibieron parametros o no para saber cual metodo usar
     $parametros = false;
     if ($fecha_inicial != null || $tipo_compra != null || $id_vendedor_compra != null || $id_caja != null || $id_usuario != null || $id_empresa != null || $id_sucursal != null || $fecha_final != null || $total_minimo != null || $total_maximo != null || $cancelada != null || $tipo_pago != null) {
         $parametros = true;
     }
     $compras = null;
     if ($parametros) {
         Logger::log("Se recibieron parametros, se listan las compras en rango");
         //objetos que serviran para obtener un rango de valores
         $compra_criterio_1 = new Compra();
         $compra_criterio_2 = new Compra();
         $compra_criterio_1->setTipoDeCompra($tipo_compra);
         $compra_criterio_1->setIdVendedorCompra($id_vendedor_compra);
         $compra_criterio_1->setIdCaja($id_caja);
         $compra_criterio_1->setIdUsuario($id_usuario);
         $compra_criterio_1->setIdEmpresa($id_empresa);
         $compra_criterio_1->setIdSucursal($id_sucursal);
         $compra_criterio_1->setCancelada($cancelada);
         $compra_criterio_1->setTipoDePago($tipo_pago);
         //revisa los rangos recibidos y se asignan en conjunto con limites para obtener el rango deseado
         if ($fecha_inicial != null) {
             $compra_criterio_1->setFecha($fecha_inicial);
             if ($fecha_final != null) {
                 $compra_criterio_2->setFecha($fecha_final);
             } else {
                 $compra_criterio_2->setFecha(time());
             }
         } else {
             if ($fecha_final != null) {
                 $compra_criterio_1->setFecha($fecha_final);
                 $compra_criterio_2->setFecha("1001-01-01 00:00:00");
             }
         }
         if ($total_minimo !== null) {
             $compra_criterio_1->setTotal($total_minimo);
             if ($total_maximo !== null) {
                 $compra_criterio_2->setTotal($total_maximo);
             } else {
                 $compra_criterio_2->setTotal(1.8E+100);
             }
         } else {
             if ($total_maximo !== null) {
                 $compra_criterio_1->setTotal($total_maximo);
                 $compra_criterio_2->setTotal(0);
             }
         }
         $compras = CompraDAO::byRange($compra_criterio_1, $compra_criterio_2, $orden);
     } else {
         Logger::log("No se recibieron parametros, se listan todas las compras");
         $compras = CompraDAO::getAll(null, null, $orden);
     }
     //Si se recibe el parametro saldada, se tiene que hace un filtro extra donde solo se incluyan las compras
     //con ese valor de saldadada
     if ($saldada !== null) {
         $temporal = array();
         if ($saldada) {
             foreach ($compras as $compra) {
                 if ($compra->getTotal() <= $compra->getSaldo()) {
                     array_push($temporal, $compra);
                 }
             }
         } else {
             foreach ($compras as $compra) {
                 if ($compra->getTotal() > $compra->getSaldo()) {
                     array_push($temporal, $compra);
                 }
             }
         }
         $compras = $temporal;
     }
     Logger::log("Se obtuvo la lista con éxito");
     return $compras;
 }