/** * * @param int $pedido_cab_id * @param int $pedido_det_sec * @return \Dispo\Data\PedidoDetData|NULL */ public function consultar($pedido_cab_id, $pedido_det_sec) { $PedidoDetData = new PedidoDetData(); $sql = ' SELECT pedido_det.* ' . ' FROM pedido_det ' . ' WHERE pedido_cab_id = :pedido_cab_id ' . ' and pedido_det_sec = :pedido_det_sec'; $stmt = $this->getEntityManager()->getConnection()->prepare($sql); $stmt->bindValue(':pedido_cab_id', $pedido_cab_id); $stmt->bindValue(':pedido_det_sec', $pedido_det_sec); $stmt->execute(); $row = $stmt->fetch(); //Se utiliza el fecth por que es un registro if ($row) { $PedidoDetData->setPedidoCabId($row['pedido_cab_id']); $PedidoDetData->setPedidoDetSec($row['pedido_det_sec']); //$PedidoDetData->setMarcacionSec ($row['marcacion_sec']); $PedidoDetData->setInventarioId($row['inventario_id']); $PedidoDetData->setVariedadId($row['variedad_id']); $PedidoDetData->setGradoId($row['grado_id']); $PedidoDetData->setTipoCajaId($row['tipo_caja_id']); $PedidoDetData->setTipoCajaOrigenEstado($row['tipo_caja_origen_estado']); $PedidoDetData->setTipoCajaOrigenId($row['tipo_caja_origen_id']); $PedidoDetData->setNroCajas($row['nro_cajas']); $PedidoDetData->setCantidadBunch($row['cantidad_bunch']); $PedidoDetData->setTallosxBunch($row['tallos_x_bunch']); $PedidoDetData->setTallosTotal($row['tallos_total']); $PedidoDetData->setPrecio($row['precio']); $PedidoDetData->setTotal($row['total']); //$PedidoDetData->setAgenciaCargaId ($row['agencia_carga_id']); //$PedidoDetData->setComentario ($row['comentario']); //$PedidoDetData->setSec ($row['sec']); //$PedidoDetData->setSecc ($row['secc']); $PedidoDetData->setPedidoCabOfertaId($row['pedido_cab_oferta_id']); $PedidoDetData->setPedidoDetOfertaSec($row['pedido_det_oferta_sec']); $PedidoDetData->setEstadoPrecioContraOferta($row['estado_precio_contraoferta']); $PedidoDetData->setEstadoPedidoAdicional($row['estado_pedido_adicional']); $PedidoDetData->setEstadoMixto($row['estado_mixto']); $PedidoDetData->setEstadoRegOferta($row['estado_reg_oferta']); $PedidoDetData->setCalidadId($row['calidad_id']); $PedidoDetData->setPuntoCorte($row['punto_corte']); return $PedidoDetData; } else { return null; } //end if }
/** * Permite crear un Pedido o agregar detalles a un Pedido ya Existente * * @param int|null $pedido_cab_id * @param string $cliente_id * @param int $usuario_cliente_id * @param int $usuario_vendedor_id * @param int $marcacion_sec * @param string $agencia_carga_id * @param string $producto_id * @param string $variedad_id * @param string $grado_id * @param string $tallos_x_bunch * @param string $tipo_caja_id * @param int $nro_cajas_seleccionada * @return array */ public function addItem($pedido_cab_id, $cliente_id, $usuario_cliente_id, $usuario_vendedor_id, $marcacion_sec, $agencia_carga_id, $producto_id, $variedad_id, $grado_id, $tallos_x_bunch, $tipo_caja_id, $nro_cajas_seleccionada, $control_transaccion = true, $tipo_oferta = null, $carne_pedido_cab_sec = null) { $DispoBO = new DispoBO(); $PedidoCabDAO = new PedidoCabDAO(); $PedidoDetDAO = new PedidoDetDAO(); $PedidoCabData = new PedidoCabData(); $PedidoDetData = new PedidoDetData(); if ($control_transaccion) { $this->getEntityManager()->getConnection()->beginTransaction(); } //end if try { $DispoBO->setEntityManager($this->getEntityManager()); $PedidoCabDAO->setEntityManager($this->getEntityManager()); $PedidoDetDAO->setEntityManager($this->getEntityManager()); /* * 1. Se establece cual es el usuario que va ingresar el pedido o anadir items al detalle */ if (empty($usuario_vendedor_id)) { $usuario_ing_id = $usuario_cliente_id; } else { $usuario_ing_id = $usuario_vendedor_id; } /* * 2. Se obtiene la DISPO ACTUAL */ $result_dispo = $DispoBO->getDispo($cliente_id, $usuario_cliente_id, $marcacion_sec, $tipo_caja_id, $variedad_id, $grado_id, false, true, true, $producto_id, $tallos_x_bunch); if ($result_dispo['respuesta_code'] != 'OK') { if ($control_transaccion) { $this->getEntityManager()->getConnection()->rollback(); $this->getEntityManager()->close(); } //end if return $result_dispo; } //end if $reg_dispo = $result_dispo['result_dispo'][0]; /* * 3. Revisar si tiene un pedido activo */ if (empty($pedido_cab_id)) { //Se llena los campos //$PedidoCabData->setId ($pedido_cab_id); $PedidoCabData->setFecha(\Application\Classes\Fecha::getFechaHoraActualServidor()); $PedidoCabData->setClienteId($cliente_id); $PedidoCabData->setMarcacionSec($marcacion_sec); $PedidoCabData->setAgenciaCargaId($agencia_carga_id); $PedidoCabData->setTotal(0); $PedidoCabData->setComentario(''); $PedidoCabData->setEstado(\Application\Constants\Pedido::ESTADO_COMPRANDO); $PedidoCabData->setUsuarioClienteId($usuario_cliente_id); $PedidoCabData->setUsuarioIngId($usuario_ing_id); $pedido_cab_id = $PedidoCabDAO->ingresar($PedidoCabData); } //end if /* * 4. Se registra el detalle */ $pedido_cab_sec = $PedidoDetDAO->consultarMaximaSecuencia($pedido_cab_id); $pedido_cab_sec++; $bunch_total = $nro_cajas_seleccionada * $reg_dispo['cantidad_bunch']; //Se multiplica por la cantidad de bunch que tiene una caja $tallos_total = $bunch_total * $reg_dispo['tallos_x_bunch']; if ($tipo_oferta == 'oferta_carne') { $precio = $reg_dispo['precio_oferta']; } else { $precio = $reg_dispo['precio']; } //end if $precio_total = $tallos_total * $precio; //Se multiplica el precio del tallo //Se define el total x caja if (empty($precio)) { $total_x_caja = 0; } else { $total_x_caja = $reg_dispo['tallos_x_bunch'] * $bunch_total / $nro_cajas_seleccionada * $precio; } //end if $PedidoDetData->setPedidoCabId($pedido_cab_id); $PedidoDetData->setPedidoDetSec($pedido_cab_sec); // $PedidoDetData->setMarcacionSec ($marcacion_sec); $PedidoDetData->setInventarioId($reg_dispo['inventario_id']); $PedidoDetData->setVariedadId($variedad_id); $PedidoDetData->setGradoId($grado_id); $PedidoDetData->setTipoCajaId($tipo_caja_id); $PedidoDetData->setTipoCajaOrigenEstado($reg_dispo['tipo_caja_origen_estado']); $PedidoDetData->setTipoCajaOrigenId($reg_dispo['tipo_caja_origen_id']); $PedidoDetData->setNroCajas($nro_cajas_seleccionada); $PedidoDetData->setCantidadBunch($bunch_total); $PedidoDetData->setTallosxBunch($reg_dispo['tallos_x_bunch']); $PedidoDetData->setTallosTotal($tallos_total); $PedidoDetData->setPrecio($precio); $PedidoDetData->setTotalXCaja($total_x_caja); $PedidoDetData->setTotal($precio_total); // $PedidoDetData->setAgenciaCargaId ($agencia_carga_id); // $PedidoDetData->setComentario (''); if ($tipo_oferta == 'oferta_hueso') { $PedidoDetData->setPedidoCabOfertaId($pedido_cab_id); $PedidoDetData->setPedidoDetOfertaSec($carne_pedido_cab_sec); } else { $PedidoDetData->setPedidoCabOfertaId(null); $PedidoDetData->setPedidoDetOfertaSec(null); } //end if if ($tipo_oferta == 'oferta_carne') { $PedidoDetData->setEstadoRegOferta(1); } else { $PedidoDetData->setEstadoRegOferta(0); } //end if $PedidoDetData->setCalidadId($this->calidad_id); $PedidoDetData->setPuntoCorte($this->punto_corte); //MORONITOR //conversion a caja FB $cajas_fb = \Application\Classes\CajaConversion::equivalenciaFB($tipo_caja_id, $nro_cajas_seleccionada); $PedidoDetData->setEqFb($cajas_fb); $PedidoDetData->setUsuarioIngId($usuario_ing_id); $PedidoDetData->setUsuarioModId($usuario_ing_id); $key_det = $PedidoDetDAO->ingresar($PedidoDetData); /* * 5. Actualizar el total de la CABECERA de PEDIDO */ $PedidoCabDAO->actualizarTotal($pedido_cab_id); /* * 6. Devuelve el resultado del registro del PEDIDO */ $result['respuesta_code'] = 'OK'; $result['respuesta_msg'] = ''; $result['pedido_cab_id'] = $pedido_cab_id; $result['pedido_cab_sec'] = $pedido_cab_sec; $result['variedad_nombre'] = $reg_dispo['variedad_nombre']; if ($control_transaccion) { $this->getEntityManager()->getConnection()->commit(); } //end if return $result; } catch (Exception $e) { if ($control_transaccion) { $this->getEntityManager()->getConnection()->rollback(); $this->getEntityManager()->close(); } //end if throw $e; } }