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; }
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(); }
/** * * 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; }
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();
<?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();
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()); }
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 {
$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>";
$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( );
<?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
/** * *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); }
/** * *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); }
$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"; } } }
$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;
/** * * 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"); }