示例#1
0
 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()));
     }
 }
示例#2
0
 /**
  *
  *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"]);
 }