Ejemplo n.º 1
0
 private static function GetCerrarVentaParams($id_venta)
 {
     $ventaVo = VentaDAO::getByPK($id_venta);
     $resultArray = $ventaVo->asArray();
     //buscar su cliente
     $result["cliente"] = self::GetUsuarioArray($ventaVo->getIdCompradorVenta());
     //agente de venta
     $result["agente"] = self::GetUsuarioArray($ventaVo->getIdUsuario());
     //buscar sus productos y ordenes
     $result["contenido"] = array_merge(VentaProductoDAO::search(new VentaProducto(array("id_venta" => $id_venta))), VentaOrdenDAO::search(new VentaOrden(array("id_venta" => $id_venta))));
     //direccion
     //buscar su agente
     //buscar sucursal
     //buscar empresa
     return $result;
 }
Ejemplo n.º 2
0
 public static function Venta($id_venta)
 {
     $ventaDao = VentaDAO::getByPK($id_venta);
     if ($ventaDao === null) {
         throw new InvalidDataException("Esta venta no existe");
     }
     $clienteDao = UsuarioDAO::getByPK($ventaDao->getIdCompradorVenta());
     $agenteDao = UsuarioDAO::getByPK($ventaDao->getIdUsuario());
     if ($ventaDao->getEsCotizacion()) {
         $pdf = self::createPdf("Cotizacion");
     } else {
         $pdf = self::createPdf("Nota de venta");
     }
     $opciones_tabla = array();
     $opciones_tabla['showLines'] = 0;
     $opciones_tabla['showHeadings'] = 0;
     $opciones_tabla['shaded'] = 0;
     $opciones_tabla['fontSize'] = 8;
     $opciones_tabla['xOrientation'] = 'right';
     $opciones_tabla['xPos'] = self::puntos_cm(7.5);
     $opciones_tabla['width'] = self::puntos_cm(11);
     $opciones_tabla['textCol'] = array(0, 0, 0);
     $opciones_tabla['titleFontSize'] = 12;
     $opciones_tabla['rowGap'] = 3;
     $opciones_tabla['colGap'] = 3;
     $f = date("d/m/y", $ventaDao->getFecha()) . " " . date("H:i:s", $ventaDao->getFecha());
     if ($ventaDao->getEsCotizacion()) {
         $datos = array(array("col" => "<b>Cotizacion</b>"), array("col" => $ventaDao->getIdVenta()), array("col" => "<b>Numero de orden</b>"), array("col" => ""), array("col" => "<b>Fecha de venta</b>"), array("col" => $f), array("col" => "<b>Agente que cotizo</b>"), array("col" => self::readableText($agenteDao->getNombre())));
     } else {
         $datos = array(array("col" => "<b>Venta</b>"), array("col" => $ventaDao->getIdVenta()), array("col" => "<b></b>"), array("col" => ""), array("col" => "<b>Fecha de venta</b>"), array("col" => $f), array("col" => "<b>Agente de venta</b>"), array("col" => self::readableText($agenteDao->getNombre())));
     }
     $pdf->ezSetY(self::puntos_cm(26.8));
     $opciones_tabla['xPos'] = self::puntos_cm(14.2);
     $opciones_tabla['width'] = self::puntos_cm(4);
     $opciones_tabla['showLines'] = 0;
     $opciones_tabla['shaded'] = 2;
     $opciones_tabla['shadeCol'] = array(1, 1, 1);
     $opciones_tabla['shadeCol2'] = array(0.8984375, 0.95703125, 0.99609375);
     $pdf->ezTable($datos, "", "", $opciones_tabla);
     $ventaProducto = VentaProductoDAO::search(new VentaProducto(array("id_venta" => $id_venta)));
     $ventaOrden = VentaOrdenDAO::search(new VentaOrden(array("id_venta" => $id_venta)));
     $prods = array_merge($ventaProducto, $ventaOrden);
     array_push($prods, $ventaDao);
     self::printProducts($pdf, $prods);
     self::printClient($pdf, $clienteDao);
     self::drawBasicGuide($pdf);
     $pdf->ezStream();
 }
Ejemplo n.º 3
0
 /**
  *
  * Lista las ventas de una sucursal.
  *
  * @param id_sucursal int Id de la sucursal de la cual listaran sus ventas
  * @return ventas json Objeto que conendra la informacion de las ventas de esa sucursal
  * */
 public static function Ventas_sucursal($id_sucursal)
 {
     Logger::log("Listando las ventas de la sucursal " . $id_sucursal);
     $ventas = VentaDAO::search(new Venta(array("id_sucursal" => $id_sucursal)));
     Logger::log("Se listan " . count($ventas) . " ventas");
     return $ventas;
 }
Ejemplo n.º 4
0
    return UsuarioDAO::getByPK($id_receptor)->getNombre();
}
function isCancelado($foo, $obj)
{
    if ($obj["cancelado"] == 1) {
        return "<font title = \"Abono cancelado debido a {$obj['motivo_cancelacion']}\" style = \"color:red; cursor: help;\" >{$foo}</font>";
    }
    return $foo;
}
$page = new GerenciaComponentPage();
//
// Requerir parametros
//
$page->requireParam("vid", "GET", "Esta venta no existe.");
VentasController::ActualizarTotales($_GET["vid"]);
$esta_venta = VentaDAO::getByPK($_GET["vid"]);
//
// Titulo de la pagina
//
if ($esta_venta->getEsCotizacion()) {
    $page->addComponent(new TitleComponent("Detalles de la cotizacion " . $esta_venta->getIdVenta(), 2));
} else {
    $page->addComponent(new TitleComponent("Detalles de la venta " . $esta_venta->getIdVenta(), 2));
}
if ($esta_venta->getCancelada()) {
    $page->addComponent(new TitleComponent("[CANCELADA]", 3));
}
//
// Menu de opciones
//
$menu = new MenuComponent();
Ejemplo n.º 5
0
<?php

define("BYPASS_INSTANCE_CHECK", false);
require_once "../../../server/bootstrap.php";
$page = new GerenciaComponentPage();
$page->addComponent(new TitleComponent("Ventas"));
$page->addComponent(new MessageComponent("Lista de ventas"));
$tabla = new TableComponent(array("id_comprador_venta" => "Cliente", "tipo_de_venta" => "Tipo de venta", "subtotal" => "Subtotal", "total" => "Total", "saldo" => "Saldo", "cancelada" => "Cancelada", "fecha" => "Fecha"), VentaDAO::getAll(NULL, NULL, "fecha", "DESC"));
//
function funcion_comprador($id_comprador)
{
    return UsuarioDAO::getByPK($id_comprador) ? UsuarioDAO::getByPK($id_comprador)->getNombre() : "-----";
}
$tabla->addColRender("id_comprador_venta", "funcion_comprador");
$tabla->addColRender("cancelada", "funcion_cancelada");
$tabla->addOnClick("id_venta", "(function(a){ window.location = 'ventas.detalle.php?vid=' + a; })");
$page->addComponent($tabla);
$page->render();
Ejemplo n.º 6
0
 private static function Cotizar($descuento, $id_comprador_venta, $impuesto, $subtotal, $tipo_venta, $total, $datos_cheque = null, $detalle_orden = null, $detalle_paquete = null, $detalle_venta = null, $id_sucursal = null, $saldo = "0", $tipo_de_pago = null)
 {
     Logger::log("Cotizando ....");
     //Se obtiene el id del usuario actualmente logueado
     $aS = SesionController::Actual();
     $id_usuario = $aS["id_usuario"];
     //Se busca al usuario comprador
     $usuario = UsuarioDAO::getByPK($id_comprador_venta);
     if (!is_null($id_sucursal)) {
         $sucursal = SucursalDAO::getByPK($id_sucursal);
         if (is_null($sucursal)) {
             Logger::error("La sucursal " . $id_sucursal . " no existe");
             throw new InvalidDataException("La sucursal no existe", 901);
         }
         if (!$sucursal->getActiva()) {
             Logger::error("La sucursal " . $id_sucursal . " esta desactivada");
             throw new InvalidDataException("La sucursal esta desactivada", 901);
         }
     }
     //Se inicializa la venta con los parametros obtenidos
     $venta = new Venta();
     $venta->setRetencion(0);
     $venta->setEsCotizacion(true);
     $venta->setIdCompradorVenta($id_comprador_venta);
     $venta->setSubtotal($subtotal);
     $venta->setImpuesto($impuesto);
     $venta->setTotal($total);
     $venta->setDescuento($descuento);
     $venta->setTipoDeVenta($tipo_venta);
     $venta->setIdCaja(null);
     $venta->setIdSucursal($id_sucursal);
     $venta->setIdUsuario($id_usuario);
     $venta->setIdVentaCaja(NULL);
     $venta->setCancelada(0);
     $venta->setTipoDePago(null);
     $venta->setSaldo(0);
     $venta->setFecha(time());
     DAO::transBegin();
     try {
         VentaDAO::save($venta);
     } catch (Exception $e) {
         DAO::transRollback();
         Logger::error("No se pudo realizar la venta: " . $e);
         throw new Exception("No se pudo realizar la venta", 901);
     }
     //Si el detalle de las ordenes compradas, el detalle de los paquetes y el detalle de los productos
     //son nulos, manda error.
     if (is_null($detalle_orden) && is_null($detalle_paquete) && is_null($detalle_venta)) {
         throw new InvalidDataException("No se recibieron ni paquetes ni productos ni servicios para esta venta", 901);
     }
     //Por cada detalle, se valida la informacion recibida, se guarda en un registro
     //que contiene el id de la venta generada y se guarda el detalle en su respectiva tabla.
     if (!is_null($detalle_venta)) {
         $detalle_producto = object_to_array($detalle_venta);
         if (!is_array($detalle_producto)) {
             throw new Exception("El detalle del producto es invalido", 901);
         }
         foreach ($detalle_producto as $d_p) {
             $d_producto = new VentaProducto();
             $d_producto->setIdVenta($venta->getIdVenta());
             if (!array_key_exists("id_producto", $d_p) || !array_key_exists("cantidad", $d_p) || !array_key_exists("precio", $d_p) || !array_key_exists("descuento", $d_p) || !array_key_exists("impuesto", $d_p) || !array_key_exists("retencion", $d_p) || !array_key_exists("id_unidad", $d_p)) {
                 throw new Exception("El detalle del producto es invalido", 901);
             }
             Logger::log("Insertando venta_producto:");
             $d_producto->setCantidad($d_p["cantidad"]);
             $d_producto->setDescuento($d_p["descuento"]);
             $d_producto->setIdProducto($d_p["id_producto"]);
             $d_producto->setIdUnidad($d_p["id_unidad"]);
             $d_producto->setImpuesto($d_p["impuesto"]);
             $d_producto->setPrecio($d_p["precio"]);
             $d_producto->setRetencion($d_p["retencion"]);
             Logger::log($d_producto);
             try {
                 VentaProductoDAO::save($d_producto);
             } catch (Exception $e) {
                 DAO::transRollback();
                 Logger::error("No se pudo realizar la venta: " . $e);
                 throw new Exception("No se pudo realizar la venta", 901);
             }
         }
     }
     /* Fin de if para detalle_producto */
     DAO::transEnd();
     Logger::log("====== Cotizacion realizada exitosamente ======== ");
     return array("id_venta" => $venta->getIdVenta());
 }
Ejemplo n.º 7
0
 public static function Corte($fecha_final, $id_sucursal, $total_efectivo)
 {
     if ($fecha_final > time()) {
         throw new BusinessLogicException("You must give a time in the past.");
     }
     if ($fecha_final == 0) {
         $fecha_final = time();
     }
     $suc = SucursalDAO::getByPK($id_sucursal);
     if (is_null($suc)) {
         throw new InvalidDataException("'Sucursal' does not exist");
     }
     $corte = EfectivoController::UltimoCorte($suc);
     if (is_null($corte)) {
         //'CordeDeSucursal' has never happende,
         //use the opening date.
         $start_date = $suc->getFechaApertura();
     } else {
         $start_date = $corte->getFin();
     }
     //ASSERT( $fecha_final . "<=" . $start_date );
     $ingresos_por_tipo = array("BANCO" => 0.0, "CAJA" => 0.0);
     $ventas = VentasController::Lista($start_date, $fecha_final);
     //esto regresa, total, subtotal, impuesto
     $ventasTotal = VentaDAO::TotalVentasNoCanceladasAContadoDesdeHasta($start_date, $fecha_final);
     //$abonosTotal = AbonoVenta::TotalAbonosNoCanceladosDesdeHasta( $start_date, $fecha_final );
     /*
     foreach( $ventas as $v ){
     
         switch( $v->tipo_de_pago ){
             cash :      $ingresos[ cash ] += $v->getTotal();
             banco :     $ingresos[ banco ] += $v->getTotal()
             cheque :
             default: throw new Exception();
     
         }
     }
     */
     $cu = SesionController::Actual();
     $corte = new CorteDeSucursal();
     $corte->setIdSucursal($id_sucursal);
     $corte->setIdUsuario($cu["id_usuario"]);
     $corte->setInicio($start_date);
     $corte->setFin($fecha_final);
     $corte->setFechaCorte(time());
     try {
         CorteDeSucursalDAO::save($corte);
     } catch (Exception $e) {
         throw new InvalidDatabaseException($e);
     }
     return array("id_corte_sucursal" => $corte->getIdCorteSucursal());
 }
define("BYPASS_INSTANCE_CHECK", false);
require_once "../../../server//bootstrap.php";
$page = new GerenciaComponentPage();
$compra = $venta = $prestamo = null;
$page->requireParam("did", "GET", "No se obtuvo al deudor al que se le cargara el abono.");
//
// Titulo
//
if (isset($_GET["cid"])) {
    $compra = true;
    $page->addComponent(new TitleComponent("Nuevo abono a la compra " . $_GET["cid"], 2));
} else {
    if (isset($_GET["vid"])) {
        $venta = true;
        $page->addComponent(new TitleComponent("Nuevo abono a la venta " . $_GET["vid"], 2));
        $page->addComponent(new TitleComponent("Saldo \$" . VentaDAO::getByPK($_GET["vid"])->getSaldo(), 3));
    } else {
        if (isset($_GET["pid"])) {
            $prestamo = true;
            $page->addComponent(new TitleComponent("Nuevo abono al prestamo " . $_GET["pid"], 2));
        } else {
            $page->requireParam("cid", "GET", "No se sabe si el abono sera para compra, venta o prestamo.");
        }
    }
}
//
// Forma de nuevo producto
//
if ($compra) {
    $form = new DAOFormComponent(new AbonoCompra());
} else {
Ejemplo n.º 9
0
$table .= "    <td></td>";
$table .= "  </tr>";
#------------------------------------
$ventas_cheque = 0;
$table .= "  <tr>";
$table .= "    <td></td>";
$table .= "    <td></td>";
$table .= "    <td>Cheques</td>";
$table .= "    <td>" . FormatMoney($ventas_cheque) . "</td>";
$table .= "    <td></td>";
$table .= "    <td></td>";
$table .= "    <td></td>";
$table .= "    <td></td>";
$table .= "  </tr>";
#------------------------------------
$ventas_credito = VentaDAO::TotalVentasNoCanceladasACreditoDesdeHasta($fecha_inicial, $fecha_final);
$ventas_credito = $ventas_credito["total"];
$table .= "  <tr>";
$table .= "    <td></td>";
$table .= "    <td></td>";
$table .= "    <td>Credito</td>";
$table .= "    <td style=\"border-bottom: 1px;border-bottom-color: black;border-style: solid;\">" . FormatMoney($ventas_credito) . "</td>";
$table .= "    <td></td>";
$table .= "    <td></td>";
$table .= "    <td></td>";
$table .= "    <td></td>";
$table .= "  </tr>";
#------------------------------------
$total_ventas = $ventas_efectivo + $ventas_cheque + $ventas_credito;
$table .= "  <tr>";
$table .= "    <td></td>";
Ejemplo n.º 10
0
$menu->addItem("Nueva cotizacion", "ventas.nueva.php");
$page->addComponent($menu);
$cotizaciones = new Venta(array("es_cotizacion" => true));
$tabla = new TableComponent(array("id_comprador_venta" => "Cliente", "subtotal" => "Subtotal", "total" => "Total", "fecha" => "Fecha"), VentaDAO::search($cotizaciones, "fecha", "desc"));
$tabla->addOnClick("id_venta", "(function(a){ window.location = 'ventas.detalle.php?vid=' + a; })");
$tabla->addColRender("id_comprador_venta", "getUserName");
$tabla->addColRender("total", "FormatMoney");
$tabla->addColRender("saldo", "FormatMoney");
$tabla->addColRender("fecha", "FormatTime");
$page->addComponent($tabla);
/* *********************************************************************
 * Ventas canceladas
 * ********************************************************************* */
$page->nextTab("Canceladas");
$ventas = new Venta(array("es_cotizacion" => false, "cancelada" => true));
$tabla = new TableComponent(array("id_comprador_venta" => "Cliente", "tipo_de_venta" => "Tipo de venta", "subtotal" => "Subtotal", "descuento" => "Descuento", "total" => "Total", "saldo" => "Saldo", "fecha" => "Fecha"), VentaDAO::search($ventas, "fecha", "desc"));
$tabla->addColRender("fecha", "FormatTime");
$tabla->addColRender("subtotal", "FormatMoney");
$tabla->addColRender("total", "FormatMoney");
$tabla->addColRender("saldo", "FormatMoney");
$tabla->addColRender("id_comprador_venta", "getUserName");
$tabla->addOnClick("id_venta", "(function(a){ window.location = 'ventas.detalle.php?vid=' + a; })");
$page->addComponent($tabla);
/* ********************************************************************* 
 * Corte
 * ********************************************************************* */
/*
$page->nextTab( "Corte" );

$sucursales = SucursalDAO::getAll( );
Ejemplo n.º 11
0
<?php

define("BYPASS_INSTANCE_CHECK", false);
require_once "../../../server/bootstrap.php";
$movimiento = VentaDAO::getByPK(354)->asArray();
$documento = DocumentoBaseDAO::getByPK(51);
//	var_dump($movimiento);
DocumentosController::Cerrar(51, $movimiento);
//buscar movimiento existente
//buscar documento a realizar
//validar documento
//validar que los parametros del documento esten disponibles
//insertar en documento tabla
//mandar imprimir
Ejemplo n.º 12
0
 /**
  *
  *Dar por terminada una orden, cuando el cliente satisface el ultimo pago
  *
  * @param id_orden int Id de la orden a terminar
  **/
 public static function TerminarOrden($id_orden, $id_venta = null)
 {
     Logger::log("Terminando orden " . $id_orden . " ");
     if (!is_null($id_venta)) {
         Logger::log("Asignando orden a id_venta=" . $id_venta);
         //que la venta exista
         $v = VentaDAO::getByPK($id_venta);
         if (is_null($v)) {
             throw new InvalidDataException("La venta a la que se quiere asignar no existe.");
         }
     }
     //ver que exista la orden de servicio
     $ods = OrdenDeServicioDAO::getByPK($id_orden);
     if (is_null($ods)) {
         throw new InvalidDataException("La orden de servicio que desea terminar no existe");
     }
     if (!$ods->getActiva()) {
         throw new BusinessLogicException("La orden que quieres terminar ya no esta terminada.");
     }
     DAO::transBegin();
     try {
         $ods->setActiva(0);
         OrdenDeServicioDAO::save($ods);
     } catch (Exception $e) {
         throw InvalidDatabaseOperationException($e);
     }
     if (!is_null($id_venta)) {
         $vo = new VentaOrden();
         $vo->setIdVenta($id_venta);
         $vo->setIdOrdenDeServicio($id_orden);
         $vo->setPrecio($ods->getPrecio());
         $vo->setDescuento(0);
         $vo->setImpuesto(0);
         $vo->setRetencion(0);
         //Actualizar totales
         $ventaVo = VentaDAO::getByPK($id_venta);
         try {
             VentaOrdenDAO::save($vo);
         } catch (Exception $e) {
             throw InvalidDatabaseOperationException($e);
         }
     } else {
         //crearle una nueva venta
         $venta = new Venta();
         $s = SesionController::Actual();
         Logger::error("There is plenty of hard-coded stuff here !");
         $venta->setIdCompradorVenta($ods->getIdUsuarioVenta());
         $venta->setTipoDeVenta("contado");
         $venta->setFecha(time());
         $venta->setSubtotal(0);
         $venta->setEsCotizacion(0);
         $venta->setImpuesto(0);
         $venta->setTotal(0);
         $venta->setIdSucursal($s["id_sucursal"]);
         $venta->setIdUsuario($s["id_usuario"]);
         $venta->setSaldo(0);
         //si hay adelanto se resta al saldo de la venta el adelanto, esta resta se hace al insertar el abono_venta
         $venta->setCancelada(false);
         $venta->setRetencion(0);
         //vamos a ver si este dude tiene suficient credito para esto
         try {
             Logger::log("Insertando la venta ....");
             VentaDAO::save($venta);
         } catch (Exception $e) {
             DAO::transRollback();
             Logger::error($e->getMessage());
             throw new InvalidDatabaseOperationException("No se pudo crear la nueva orden de servicio");
         }
         $venta_orden = new VentaOrden();
         $venta_orden->setIdVenta($venta->getIdVenta());
         $venta_orden->setIdOrdenDeServicio($ods->getIdOrdenDeServicio());
         $venta_orden->setPrecio(0);
         $venta_orden->setDescuento(0);
         $venta_orden->setImpuesto(0);
         $venta_orden->setRetencion(0);
         try {
             Logger::log("Insertando la orden de venta....");
             VentaOrdenDAO::save($venta_orden);
         } catch (Exception $e) {
             DAO::transRollback();
             Logger::error($e->getMessage());
             throw new InvalidDatabaseOperationException("No se pudo crear la nueva orden de servicio");
         }
         $id_venta = $venta->getIdVenta();
     }
     DAO::transEnd();
     Logger::log("La orden de servicio se ha terminado exitosamente");
     return array("id_venta" => $id_venta);
 }
Ejemplo n.º 13
0
 /**
  *
  *Se crea un  nuevo abono, la caja o sucursal y el usuario que reciben el abono se tomaran de la sesion. La fecha se tomara del servidor
  *
  * @param id_deudor int Id del usuario o la sucursal que realiza el abono, las sucursales seran negativas
  * @param tipo_pago json JSON con la informacion que describe el tipo de pago, si es con cheque, en efectivo o con tarjeta
  * @param monto float monto abonado de la sucursal
  * @param nota string Nota del abono
  * @param id_venta int Id de la venta a la que se le abona
  * @param varios bool True si el monto sera repartido en los prestamos,ventas o compras mas antiguas. Esto se define si se pasa el valor id_venta,id_prestamo o id_compra
  * @param cheques json Se toma el nombre del banco, el monto y los ultimos cuatro numeros del o los cheques usados para este abono
  * @param id_prestamo int Id del prestamo al que se le esta abonando
  * @param id_compra int Id de la compra a la que se abona
  * @return id_abono int El id autogenerado del abono de la sucursal
  **/
 public static function NuevoAbono($id_deudor, $monto, $tipo_pago, $billetes = null, $cheques = null, $id_compra = null, $id_prestamo = null, $id_venta = null, $nota = null)
 {
     Logger::log("Insertando nuevo abono ... ");
     //Se obtiene la sesion del usuario
     $id_usuario = SesionController::getCurrentUser();
     $id_usuario = $id_usuario->getIdUsuario();
     if (is_null($id_usuario)) {
         Logger::error("No se pudo obtener el usuario de la sesion, ya inicio sesion?");
         throw new AccessDeniedException("No se pudo obtener el usuario de la sesion, ya inicio sesion?");
     }
     //Se validan los parametros obtenidos
     $validar = self::validarParametrosAbono($monto, $id_deudor, $nota, $tipo_pago);
     if (is_string($validar)) {
         Logger::error($validar);
         throw new Exception($validar);
     }
     //Si el tipo de pago es con cheque y no se reciben cheques, lanzas una excepcion
     if ($tipo_pago === "cheque" && is_null($cheques)) {
         Logger::error("Se intenta pagar con cheque mas no se envio info de cheques");
         throw new Exception("No se recibio informacion del cheque");
     }
     //Se inicializan las variables de los parametros de las tablas de abonos
     $usuario = UsuarioDAO::getByPK($id_deudor);
     $id_sucursal = self::getSucursal();
     $id_caja = self::getCaja();
     $fecha = time();
     $cancelado = 0;
     $abono = null;
     //Nuevo regitro del abono
     $from = 0;
     //Bandera que indica a que operacion pertenece el abono
     $operacion = null;
     //Objeto de la operacion, puede ser un objeto de venta, de ocmpra o de prestamo
     /*
      * Se valida de que operacion pertenece el abono y de acuerdo a lo obtenido, se realizan 
      * las operaciones necesarias en cada tabla.
      * 
      * Primero se valida que la operacion exista, que sea a credito, que no haya sido cancelada, 
      * que no haya sido saldada y que no se abone mas del total de la operacion.
      * 
      * Despues se inicializa el registro de la tabla correspondiente, se modifica el saldo del deudor
      * y se activa la bandera from
      */
     if (!is_null($id_compra)) {
         /*************************************************************
          * 	abono a compra
          ************************************************************* */
         Logger::log("Abono pertenece a compra, compraid=" . $id_compra);
         $operacion = CompraDAO::getByPK($id_compra);
         if (is_null($operacion)) {
             Logger::error("La compra con id: " . $id_compra . " no existe");
             throw new Exception("La compra con id: " . $id_compra . " no existe");
         }
         if ($operacion->getTipoDeCompra() !== "credito") {
             Logger::error("La compra especificada no es a credito, no se puede abonar a una compra de contado");
             throw new Exception("La compra especificada no es a credito, no se puede abonar a una compra de contado");
         }
         if ($operacion->getCancelada()) {
             Logger::error("La compra ya ha sido cancelada, no se puede abonar a esta compra");
             throw new Exception("La compra ya ha sido cancelada, no se puede abonar a esta compra");
         }
         if ($operacion->getSaldo() > 0) {
             Logger::error("La compra ya ha sido saldada, no se puede abonar a esta compra");
             throw new Exception("La compra ya ha sido saldada, no se puede abonar a esta compra");
         }
         if ($operacion->getSaldo() - $monto < 0) {
             Logger::error("No se puede abonar esta cantidad a esta compra, pues sobrepasa el total de la misma");
             throw new Exception("No se puede abonar esta cantidad a esta compra, pues sobrepasa el total de la misma");
         }
         Logger::log("Insertando abono compra...");
         $abono = new AbonoCompra();
         $abono->setIdCompra($id_compra);
         $abono->setIdReceptor($id_deudor);
         $abono->setIdDeudor($id_usuario);
         $usuario->setSaldoDelEjercicio($usuario->getSaldoDelEjercicio() - $monto);
         $from = 1;
     } else {
         if (!is_null($id_prestamo)) {
             /*************************************************************
              * abono a prestamo
              ************************************************************* */
             $operacion = PrestamoDAO::getByPK($id_prestamo);
             if (is_null($operacion)) {
                 Logger::error("El prestamo con id: " . $id_prestamo . " no existe");
                 throw new Exception("El prestamo con id: " . $id_prestamo . " no existe");
             }
             if ($operacion->getMonto() <= $operacion->getSaldo()) {
                 Logger::error("El prestamo ya ha sido saldado, no se puede abonar a este prestamo");
                 throw new Exception("El prestamo ya ha sido saldad0, no se puede abonar a este prestamo");
             }
             if ($operacion->getMonto() < $operacion->getSaldo() + $monto) {
                 Logger::error("No se puede abonar esta cantidad a este prestamo, pues sobrepasa el total del mismo");
                 throw new Exception("No se puede abonar esta cantidad a este prestamo, pues sobrepasa el total del mismo");
             }
             $abono = new AbonoPrestamo();
             $abono->setIdPrestamo($id_prestamo);
             $abono->setIdReceptor($id_usuario);
             $abono->setIdDeudor($id_deudor);
             $usuario->setSaldoDelEjercicio($usuario->getSaldoDelEjercicio() + $monto);
             $from = 2;
         } else {
             if (!is_null($id_venta)) {
                 /*************************************************************
                  * abono a venta
                  ************************************************************* */
                 $operacion = VentaDAO::getByPK($id_venta);
                 if (is_null($operacion)) {
                     Logger::error("La venta con id: " . $id_venta . " no existe");
                     throw new Exception("La venta con id: " . $id_venta . " no existe");
                 }
                 if ($operacion->getTipoDeVenta() !== "credito") {
                     Logger::error("La ventaa especificada no es a credito, no se puede abonar a una venta de contado");
                     throw new Exception("La venta especificada no es a credito, no se puede abonar a una venta de contado");
                 }
                 if ($operacion->getCancelada()) {
                     Logger::error("La venta ya ha sido cancelada, no se puede abonar a esta venta");
                     throw new Exception("La venta ya ha sido cancelada, no se puede abonar a esta venta");
                 }
                 if ($operacion->getSaldo() <= 0) {
                     Logger::error("La venta ya ha sido saldada, no se puede abonar a esta venta");
                     Logger::log("La venta {$id_venta} tiene un total de " . $operacion->getTotal() . " y un saldo pendiente de " . $operacion->getSaldo() . " por lo tanto ya ha sido saldada.");
                     throw new Exception("La venta ya ha sido saldada, no se puede abonar a esta venta");
                 }
                 if ($operacion->getSaldo() - $monto < 0) {
                     Logger::error("No se puede abonar esta cantidad a esta venta, pues sobrepasa el total de la misma");
                     throw new Exception("No se puede abonar esta cantidad a esta venta, pues sobrepasa el total de la misma");
                 }
                 Logger::log("Insertando AbonoVenta...");
                 $abono = new AbonoVenta();
                 $abono->setIdVenta($id_venta);
                 $abono->setIdReceptor($id_usuario);
                 $abono->setIdDeudor($id_deudor);
                 //(OLD) $usuario->setSaldoDelEjercicio($usuario->getSaldoDelEjercicio() + $monto);
                 //Figu: se establece el saldo del cliente restandole la venta y a su vez si tiene adelanto se le incrementa su saldo
                 //$usuario->setSaldoDelEjercicio(  ( $usuario->getSaldoDelEjercicio() - $operacion->getTotal()  ) + $monto );
                 $usuario->setSaldoDelEjercicio($usuario->getSaldoDelEjercicio() + $monto);
                 $from = 3;
             } else {
                 Logger::error("No se recibio si el abono sera para una venta, una compra o un prestamo, no se hace nada");
                 throw new Exception("No se recibio si el abono sera para una venta, una compra o un prestamo, no se hace nada");
             }
         }
     }
     //Una vez hecho los cambios particulaes, se realizan los cambios generales
     $operacion->setSaldo($operacion->getSaldo() - $monto);
     $abono->setCancelado($cancelado);
     $abono->setIdCaja($id_caja);
     $abono->setFecha($fecha);
     $abono->setIdSucursal($id_sucursal);
     $abono->setMonto($monto);
     $abono->setNota($nota);
     $abono->setTipoDePago($tipo_pago);
     $id_cheques = array();
     $id_abono = null;
     DAO::transBegin();
     try {
         //Si se reciben cheques y el tipo de pago es cheque, se genera el nuevo cheque y
         //se va almacenando su id en el arreglo id_cheques
         if ($tipo_pago === "cheque" && !is_null($cheques)) {
             foreach ($cheques as $cheque) {
                 array_push($id_cheques, ChequesController::NuevoCheque($cheque["nombre_banco"], $cheque["monto"], $cheque["numero"], $cheque["expedido"]));
             }
         }
         //Dependiendo de que operacion se realizo se van guardando los cheques, los abonos y las operaciones
         //pues todas cambiaron.
         //Si se recibieron cheques, no se modifica la caja.
         //En el caso de las ventas, al final se busca la venta en la tabla venta_empresa y se pone como saldada
         //si ese ha sido el caso
         switch ($from) {
             case 1:
                 AbonoCompraDAO::save($abono);
                 CompraDAO::save($operacion);
                 $id_abono = $abono->getIdAbonoCompra();
                 $cheque_abono_compra = new ChequeAbonoCompra();
                 $cheque_abono_compra->setIdAbonoCompra($id_abono);
                 if (!is_null($id_caja) && empty($id_cheques)) {
                     CajasController::modificarCaja($id_caja, 0, $billetes, $monto);
                 }
                 foreach ($id_cheques as $id_cheque) {
                     $cheque_abono_compra->setIdCheque($id_cheque);
                     ChequeAbonoCompraDAO::save($cheque_abono_compra);
                 }
                 break;
             case 2:
                 AbonoPrestamoDAO::save($abono);
                 PrestamoDAO::save($operacion);
                 $id_abono = $abono->getIdAbonoPrestamo();
                 $cheque_abono_prestamo = new ChequeAbonoPrestamo();
                 $cheque_abono_prestamo->setIdAbonoPrestamo($id_abono);
                 if (!is_null($id_caja) && empty($id_cheques)) {
                     CajasController::modificarCaja($id_caja, 1, $billetes, $monto);
                 }
                 foreach ($id_cheques as $id_cheque) {
                     $cheque_abono_prestamo->setIdCheque($id_cheque);
                     ChequeAbonoPrestamoDAO::save($cheque_abono_prestamo);
                 }
                 break;
             case 3:
                 AbonoVentaDAO::save($abono);
                 VentaDAO::save($operacion);
                 $id_abono = $abono->getIdAbonoVenta();
                 $cheque_abono_venta = new ChequeAbonoVenta();
                 $cheque_abono_venta->setIdAbonoVenta($id_abono);
                 if (!is_null($id_caja) && empty($id_cheques)) {
                     CajasController::modificarCaja($id_caja, 1, $billetes, $monto);
                 }
                 foreach ($id_cheques as $id_cheque) {
                     $cheque_abono_venta->setIdCheque($id_cheque);
                     ChequeAbonoVentaDAO::save($cheque_abono_venta);
                 }
                 if ($operacion->getSaldo() >= $operacion->getTotal()) {
                     $ventas_empresa = VentaEmpresaDAO::search(new VentaEmpresa(array("id_venta" => $operacion->getIdVenta())));
                     foreach ($ventas_empresa as $venta_empresa) {
                         $venta_empresa->setSaldada(1);
                         VentaEmpresaDAO::save($venta_empresa);
                     }
                 }
         }
         /* Fin switch de from */
         UsuarioDAO::save($usuario);
     } catch (Exception $e) {
         DAO::transRollback();
         Logger::error("Error al crear el abono: " . $e);
         throw new Exception("Error al crear el abono");
     }
     DAO::transEnd();
     Logger::log("Abono creado exitosamente");
     return array("id_abono" => $id_abono);
 }
Ejemplo n.º 14
0
$compras = CompraDAO::getAll();
for ($i = 0; $i < sizeof($compras); $i++) {
    //buscar sus productos
    $productos = CompraProductoDAO::search(new CompraProducto(array("id_compra" => $compras[$i]->getIdCompra())));
    for ($p = 0; $p < sizeof($productos); $p++) {
        $d_producto = $productos[$p]->asArray();
        $id_sucursal = 7;
        echo ".";
        try {
            SucursalesController::IncrementarDeAlmacenes($d_producto, $id_sucursal);
        } catch (Exception $e) {
            echo "e";
        }
    }
}
$ventas = VentaDAO::getAll();
for ($i = 0; $i < sizeof($ventas); $i++) {
    //buscar sus productos
    $productos = VentaProductoDAO::search(new VentaProducto(array("id_venta" => $ventas[$i]->getIdVenta())));
    if (sizeof($productos) == 0) {
        e("NO HAY PRODUCTOS, WTF");
    }
    for ($p = 0; $p < sizeof($productos); $p++) {
        echo ".";
        try {
            SucursalesController::DescontarDeAlmacenes($productos[$p], $id_sucursal);
        } catch (Exception $e) {
            echo "e";
        }
    }
}
Ejemplo n.º 15
0
    $este_usuario = UsuarioDAO::getByPK($_GET["id_cliente"]);
} else {
    if (isset($_GET["cid"])) {
        $este_usuario = UsuarioDAO::getByPK($_GET["cid"]);
    }
}
if (is_null($este_usuario)) {
    die("Este cliente no existe.");
}
//
// Titulo de la pagina
//
$page->addComponent(new TitleComponent(utf8_decode($este_usuario->getNombre()), 2));
$page->nextTab("Panorama");
//buscar sus ventas
$ventas = VentaDAO::search(new Venta(array("id_comprador_venta" => $este_usuario->getIdUsuario())));
$servicios = OrdenDeServicioDAO::search(new OrdenDeServicio(array("id_usuario_venta" => $este_usuario->getIdUsuario())));
$seguimientos = ClienteSeguimientoDAO::search(new ClienteSeguimiento(array("id_cliente" => $este_usuario->getIdUsuario())));
$seguimientos_a_ordenes = array();
//seguimientos a ordenes
for ($os = 0; $os < sizeof($servicios); $os++) {
    $r = SeguimientoDeServicioDAO::search(new SeguimientoDeServicio(array("id_orden_de_servicio" => $servicios[$os]->getIdOrdenDeServicio())));
    $seguimientos_a_ordenes = array_merge($seguimientos_a_ordenes, $r);
}
$eventos = array_merge($ventas, $servicios, $seguimientos, $seguimientos_a_ordenes);
function orderByDate($eventObjA, $eventObjB)
{
    $a = $eventObjA["fecha"];
    $b = $eventObjB["fecha"];
    if ($a == $b) {
        return 0;
Ejemplo n.º 16
0
 /**
  *
  * Configura el numero de decimales que se usaran para ciertas operaciones del sistema, como precios de venta, costos, tipos de cambio, entre otros
  *
  * @param cambio int Tipos de Cambio
  * @param cantidades int Cantidades
  * @param costos int Costos y Precio de Compra
  * @param ventas int Precio de Venta
  * @return status string ok
  **/
 public static function DecimalesConfiguracion($cambio, $cantidades, $costos, $ventas)
 {
     //validamos que los valores enviados sean numericos
     if (!ctype_digit($cambio) || !ctype_digit($cantidades) || !ctype_digit($costos) || !ctype_digit($ventas)) {
         Logger::error("Los valores ingresados deben de ser Numeros Enteros");
         return array("status" => "failure", "message" => "Los valores ingresados deben de ser Numeros Enteros");
     }
     //buscamos la configuracion de decimales
     $configuraciones = ConfiguracionDAO::search(new Configuracion(array("descripcion" => "decimales")));
     if (empty($configuraciones)) {
         Logger::error("No se tiene registro de la configuracion 'decimales' en la tabla de configuraciones");
         return array("status" => "failure", "message" => "No se tiene registro de la configuracion 'decimales' en la tabla de configuraciones");
     } else {
         $decimales = $configuraciones[0];
         $config = json_decode($decimales->getValor());
     }
     //verificamos que la configuracion contenga todos los parametros
     if (!isset($config->cambio)) {
         Logger::error("No se encontro la configuracion de \"cambio\" en el JSON");
         return array("status" => "failure", "message" => "No se encontro la configuracion de \"cambio\" en el JSON");
     }
     if (!isset($config->cantidades)) {
         Logger::error("No se encontro la configuracion de \"cantidades\" en el JSON");
         return array("status" => "failure", "message" => "No se encontro la configuracion de \"cantidades\" en el JSON");
     }
     if (!isset($config->costos)) {
         Logger::error("No se encontro la configuracion de \"costos\" en el JSON");
         return array("status" => "failure", "message" => "No se encontro la configuracion de \"costos\" en el JSON");
     }
     if (!isset($config->ventas)) {
         Logger::error("No se encontro la configuracion de \"ventas\" en el JSON");
         return array("status" => "failure", "message" => "No se encontro la configuracion de \"ventas\" en el JSON");
     }
     //en caso de haber registrado compras de producto ya no se puede bajar el numero de decimales en "costo" y "cantidades"
     if (count(CompraDAO::getAll()) > 0) {
         if ($config->costos > $costos) {
             Logger::error("El valor de \"costos\" no puede ser menor que el valor actual, debido a que ya se cuenta con movimientos.");
             return array("status" => "failure", "message" => "El valor de \"costos\" no puede ser menor que el valor actual, debido a que ya se cuenta con movimientos.");
         } else {
             $config->costos = $costos;
         }
         if ($config->cantidades > $cantidades) {
             Logger::error("El valor de \"cantidades\" no puede ser menor que el valor actual, debido a que ya se cuenta con movimientos.");
             return array("status" => "failure", "message" => "El valor de \"cantidades\" no puede ser menor que el valor actual, debido a que ya se cuenta con movimientos.");
         } else {
             $config->cantidades = $cantidades;
         }
     } else {
         $config->costos = $costos;
         $config->cantidades = $cantidades;
     }
     //en caso de que haya ventas el valor de "ventas" no puede ser menor que el actual
     if (count(VentaDAO::getAll()) > 0) {
         if ($config->ventas > $ventas) {
             Logger::error("El valor de \"ventas\" no puede ser menor que el valor actual, debido a que ya se cuenta con movimientos.");
             return array("status" => "failure", "message" => "El valor de \"ventas\" no puede ser menor que el valor actual, debido a que ya se cuenta con movimientos.");
         } else {
             $config->ventas = $ventas;
         }
     } else {
         $config->ventas = $ventas;
     }
     //TODO : En el caso de la configuracion de cambio aun esta por definir las reglas de negocio
     $config->cambio = $cambio;
     //modificamos el valor de la configuracion de decimales
     $decimales->setValor(json_encode($config));
     //intentamos guardar los cambios
     try {
         ConfiguracionDAO::save($decimales);
     } catch (Exception $e) {
         Logger::error("Error {$e}");
         return array("status" => "failure", "message" => $e->getMessage());
     }
     //termino con exito
     return array("status" => "okay");
 }