protected function GenerateResponse() { try { $this->response = SucursalesController::VenderCaja(isset($_POST['descuento']) ? $_POST['descuento'] : null, isset($_POST['id_comprador']) ? $_POST['id_comprador'] : null, isset($_POST['impuesto']) ? $_POST['impuesto'] : null, isset($_POST['retencion']) ? $_POST['retencion'] : null, isset($_POST['subtotal']) ? $_POST['subtotal'] : null, isset($_POST['tipo_venta']) ? $_POST['tipo_venta'] : null, isset($_POST['total']) ? $_POST['total'] : null, isset($_POST['billetes_cambio']) ? json_decode($_POST['billetes_cambio']) : null, isset($_POST['billetes_pago']) ? json_decode($_POST['billetes_pago']) : null, isset($_POST['cheques']) ? json_decode($_POST['cheques']) : null, isset($_POST['detalle_orden']) ? json_decode($_POST['detalle_orden']) : null, isset($_POST['detalle_paquete']) ? json_decode($_POST['detalle_paquete']) : null, isset($_POST['detalle_producto']) ? json_decode($_POST['detalle_producto']) : null, isset($_POST['id_caja']) ? $_POST['id_caja'] : null, isset($_POST['id_sucursal']) ? $_POST['id_sucursal'] : null, isset($_POST['id_venta_caja']) ? $_POST['id_venta_caja'] : null, isset($_POST['saldo']) ? $_POST['saldo'] : "0", isset($_POST['tipo_pago']) ? $_POST['tipo_pago'] : null); } catch (Exception $e) { //Logger::error($e); throw new ApiException($this->error_dispatcher->invalidDatabaseOperation($e->getMessage())); } }
/** * *Genera una venta fuera de caja, puede usarse para que el administrador venda directamente a clientes especiales. EL usuario y la sucursal seran tomados de la sesion. La fecha se tomara del servidor. La empresa sera tomada del alamacen del que fueron tomados los productos * * @param total float Total de la venta * @param retencion float Monto aportado por retenciones * @param descuento float Monto descontado por descuentos * @param tipo_venta string Si esta es una venta a credito o de contado * @param impuesto float Monto aportado por impuestos * @param subtotal float Subtotal de la venta antes de ser afectada por impuestos, descuentos y retenciones * @param id_comprador_venta int Id del usuario al que se le vende, si es a una sucursal, el id se pasa negativo * @param detalle_venta json Objeto que contendra los ids y las cantidades de los productos que se vendieron con el id almacen de donde fueron seleccionados para determinar a que empresa pertenecen * @param datos_cheque json Si el tipo de pago fue en cheque, se pasan el nombre del banco, el monto y los ultimos 4 numeros de cada cheque que se uso para pagar la venta * @param saldo float Saldo que ha sido aportado a la venta * @param tipo_de_pago string Si la venta es pagada con tarjeta, con efectivo o con cheque * @return id_venta int Id autogenerado de la nueva venta **/ public static function Nueva($descuento, $id_comprador_venta, $impuesto, $subtotal, $tipo_venta, $total, $datos_cheque = null, $detalle_orden = null, $detalle_paquete = null, $detalle_venta = null, $es_cotizacion = false, $id_sucursal = null, $saldo = "0", $tipo_de_pago = null) { if ($es_cotizacion) { return self::Cotizar($descuento, $id_comprador_venta, $impuesto, $subtotal, $tipo_venta, $total, $datos_cheque, $detalle_orden, $detalle_paquete, $detalle_venta, $id_sucursal, $saldo, $tipo_de_pago); } Logger::log("Creando nueva venta fuera de caja....."); //validar que vengan datos en detalles if (is_null($detalle_orden) && is_null($detalle_venta) && is_null($detalle_paquete)) { Logger::warn("No se enviaron detalles en la venta"); throw new InvalidDataException(); } if (!is_array($detalle_orden)) { $detalle_orden = object_to_array($detalle_orden); } if (!is_array($detalle_venta)) { $detalle_venta = object_to_array($detalle_venta); } if (!is_array($detalle_paquete)) { $detalle_paquete = object_to_array($detalle_paquete); } if (empty($detalle_orden) && empty($detalle_venta) && empty($detalle_paquete)) { Logger::warn("No se enviaron detalles en la venta"); throw new InvalidDataException(); } //Se utiliza el metodo de Sucursal controller, dejando que tome la caja y la sucursal como nulos try { $venta = SucursalesController::VenderCaja($descuento, $id_comprador_venta, $impuesto, 0, $subtotal, $tipo_venta, $total, null, null, $datos_cheque, $detalle_orden, $detalle_paquete, $detalle_venta, null, $id_sucursal, null, $saldo, $tipo_de_pago); } catch (BusinessLogicException $ble) { Logger::error("**************************"); throw $ble; } catch (Exception $e) { Logger::error("No se pudo crear la nueva venta: " . $e); if ($e->getCode() == 901) { throw new Exception("No se pudo crear la nueva venta: " . $e->getMessage(), 901); } throw new Exception("No se pudo crear la nueva venta", 901); } Logger::log("======== Venta " . $venta["id_venta"] . " exitosa ========="); return array("id_venta" => (int) $venta["id_venta"]); }