예제 #1
0
 function registra()
 {
     /*Pasos a realizar*/
     /*1.- Cabeceras: Se registra el movimiento y se actualiza la orden de compra*/
     $dataMovimiento = $_REQUEST['Movimiento'];
     $dataMovimiento['idtipooperacion'] = 2;
     $dataMovimiento['iddocumentotipo'] = $dataMovimiento['tipodoc'];
     $dataMovimiento['serie'] = $dataMovimiento['serie'];
     if ($dataMovimiento['serie'] != "" && $dataMovimiento['ndocumento'] != "") {
         $dataMovimiento['essunat'] = 1;
     }
     $idOrdenCompra = $dataMovimiento['idordencompra'];
     $movimiento = new Movimiento();
     $exito1 = $movimiento->grabaMovimiento($dataMovimiento);
     $ordenCompra = new Ordencompra();
     //Tipo de Cambio Vigente:
     /*$tc=New TipoCambio();
     		$tcv=$tc->consultavigente(2);
     		$tipocambio=$tcv[0]['venta'];*/
     //Tipo Cambio de la Orden:
     $tcv = $ordenCompra->TipoCambioxIdOrdenCompra($idOrdenCompra);
     $tipocambio = $tcv[0]['tipocambiovigente'];
     // echo $tipocambio;
     // exit;
     $oc['registrado'] = 1;
     $exito2 = $ordenCompra->actualizaOrdenCompra($oc, $idOrdenCompra);
     /*2.- Detalle: Se registra el detalle del movimiento y actualiza el detalle de la orden*/
     $dataDetalleMovimiento = $_REQUEST['Detallemovimiento'];
     $detalleMovimiento = new Detallemovimiento();
     $detalleOrdenCompra = new Detalleordencompra();
     /*3.- Actualizando la tabla de productos y su historial*/
     $dataProducto = $_REQUEST['Producto'];
     $producto = new Producto();
     // Para actualizar los Stocks y precio valorizado
     $historialProducto = new Historialproducto();
     // Para grabar precios de productos
     //Verificando que se grabaron las cabeceras
     if ($exito1 and $exito2) {
         //if(1==1){
         $items = count($dataDetalleMovimiento);
         for ($i = 1; $i <= $items; $i++) {
             //Definiendo datos a grabar:
             $iddetalleordencompra = $dataDetalleMovimiento[$i]['iddetalleordencompra'];
             $idProducto = $dataDetalleMovimiento[$i]['idproducto'];
             //$precioCosto=$dataDetalleMovimiento[$i]['preciocosto'];
             $precioCosto = $tipocambio * $dataDetalleMovimiento[$i]['preciocosto'];
             $cantidadRecibida = $dataDetalleMovimiento[$i]['cantidadrecibidaoc'];
             $cantidadsolicitada = $dataDetalleMovimiento[$i]['cantidadsolicitadaoc'];
             $importe = round($precioCosto * $cantidadRecibida, 2);
             $stockactual = $dataProducto[$i]['stockactual'];
             $stockdisponible = $dataProducto[$i]['stockdisponible'];
             $precioactual = $dataProducto[$i]['precioactual'];
             $stockproducto = $stockactual + $cantidadRecibida;
             $stockDisp = $stockdisponible + $cantidadRecibida - $cantidadsolicitada;
             //$stockdisponible=$stockproducto+$cantidadRecibida;
             $fecha = date("Y/m/d");
             //Actualizar la Orden de Compra, con la cantidad recibida.
             $doc['cantidadrecibidaoc'] = $cantidadRecibida;
             $exito3 = $detalleOrdenCompra->actualizaDetalleOrdenCompra($doc, $iddetalleordencompra);
             //DetalleMovimiento
             $ddm['idmovimiento'] = $exito1;
             $ddm['idproducto'] = $idProducto;
             $ddm['pu'] = $precioCosto;
             $ddm['cantidad'] = $cantidadRecibida;
             $ddm['importe'] = $importe;
             $ddm['stockactual'] = $stockproducto;
             //Valorizando el producto:
             $preciovalorizado = ($precioCosto * $cantidadRecibida + $stockactual * $precioactual) / $stockproducto;
             $preciovalorizado = round($preciovalorizado, 2);
             $ddm['preciovalorizado'] = $preciovalorizado;
             $exito4 = $detalleMovimiento->grabaDetalleMovimieto($ddm);
             //Actualizando datos del producto:
             $dp['stockactual'] = $stockproducto;
             $dp['stockdisponible'] = $stockDisp;
             $dp['esagotado'] = 0;
             if ($_REQUEST['vbimportaciones'] == 1) {
                 $dp['preciocosto'] = $preciovalorizado;
             }
             //$dp['stockdisponible']=$stockdisponible;
             $exito5 = $producto->actualizaProducto($dp, $idProducto);
             //Creando el historial del Producto
             $dhp['idordencompra'] = $idOrdenCompra;
             $dhp['idproducto'] = $idProducto;
             $dhp['fentrada'] = date("Y/m/d");
             $dhp['cantidadentrada'] = $cantidadRecibida;
             $dhp['stockactual'] = $stockproducto;
             $exito6 = $historialProducto->grabaHistorialProducto($dhp);
         }
         if ($exito3 and $exito4 and $exito5 and $exito6) {
             $ruta['ruta'] = "/almacen/regordencompra";
             $this->view->show("ruteador.phtml", $ruta);
         }
     }
 }
예제 #2
0
 function registra()
 {
     $dataMovimiento = $_REQUEST['Movimiento'];
     $idOrdenCompra = $dataMovimiento[idordencompra];
     $numero = $_REQUEST['txtCantidadDetalleMovimiento'];
     $producto = new Producto();
     $movimiento = new Movimiento();
     $detalleMovimiento = new Detallemovimiento();
     $ordenCompra = new Ordencompra();
     $detalleOrdenCompra = new Detalleordencompra();
     $historialProducto = new Historialproducto();
     $exitoMovimiento = $movimiento->grabaMovimiento($dataMovimiento);
     $operacion = $dataMovimiento[idtipomovimiento] == 1 ? "+" : "-";
     //Si el concepto movimiento es ingreso por compras
     if ($dataMovimiento[idordencompra]) {
         $dataOrdenCompra = array('registrado' => '1');
         $exitoOrdenCompra = $ordenCompra->actualizaOrdenCompra($dataOrdenCompra, $idOrdenCompra);
         for ($i = 1; $i <= $numero; $i++) {
             $datosDetalleMovimiento = $_REQUEST['Detallemovimiento' . $i];
             $datosProducto = $_REQUEST['Producto' . $i];
             if ($datosDetalleMovimiento[estado]) {
                 $cantidad = $datosDetalleMovimiento[cantidadrecibida];
                 $idProducto = $datosDetalleMovimiento[idproducto];
                 $iddetalleordencompra = $datosDetalleMovimiento[iddetalleordencompra];
                 //Obtenemos el stock actual y agregamos el elemento stockactual al
                 //array $datosProducto y lo actualizamos la tabla wc_producto
                 $dataProducto = $producto->buscaProducto($idProducto);
                 $datosProducto['stockactual'] = $dataProducto[0]['stockactual'] + $cantidad;
                 $exitoProducto = $producto->actualizaProducto($datosProducto, $idProducto);
                 //Actualizamos la cantidadrecibida de la tabla wc_detalleordencompra
                 $cantidadRecibida = array('cantidadrecibida' => $cantidad);
                 $exitoDetalleOrdenCompra = $detalleOrdenCompra->actualizaDetalleOrdenCompra($cantidadRecibida, $iddetalleordencompra);
                 //Preparar el array $datosProducto para insertar registro en al tabla
                 //wc_historialproducto. Eliminamos los elemtos stockactual y preciolista
                 //luego agregamos idproducto y cantidad.
                 unset($datosProducto['stockactual']);
                 unset($datosProducto['preciolista']);
                 $datosProducto['idproducto'] = $idProducto;
                 $datosProducto['cantidad'] = $cantidad;
                 $datosProducto['fecha'] = date('Y/m/d');
                 $exitoHistorialProducto = $historialProducto->grabaHistorialProducto($datosProducto);
                 //Preparamos el array $datosDetalleMovimiento para insertar registro en la
                 //tabla wc_detallemovimiento.
                 unset($datosDetalleMovimiento['iddetalleordencompra']);
                 unset($datosDetalleMovimiento['estado']);
                 array_splice($datosDetalleMovimiento, -2);
                 $datosDetalleMovimiento['cantidad'] = $cantidad;
                 $exitoDetalleMovimiento = $detalleMovimiento->grabaDetalleMovimieto($datosDetalleMovimiento);
             }
         }
         if ($exitoMovimiento and $exitoOrdenCompra and $exitoProducto and $exitoDetalleOrdenCompra and $exitoHistorialProducto and $exitoDetalleMovimiento) {
             $ruta['ruta'] = "/movimiento/listar";
             $this->view->show("ruteador.phtml", $ruta);
         }
     } else {
         $dataDetalleMovimiento = array_splice($_REQUEST, 3, count($_REQUEST) - 8);
         foreach ($dataDetalleMovimiento as $data) {
             $cantidad = $data[cantidad];
             $idProducto = $data[idproducto];
             $dataProducto = $producto->buscaProducto($idProducto);
             $stockActual = $dataProducto[0]['stockactual'];
             $stockNuevo = $operacion == '+' ? array('stockactual' => $stockActual + $cantidad) : array('stockactual' => $stockActual - $cantidad);
             $exitoDetalleMovimiento = $detalleMovimiento->grabaDetalleMovimieto($data);
             $exitoProducto = $producto->actualizaProducto($stockNuevo, $idProducto);
         }
         if ($exitoMovimiento and $exitoDetalleMovimiento and $exitoProducto) {
             $ruta['ruta'] = "/movimiento/listar";
             $this->view->show("ruteador.phtml", $ruta);
         }
     }
 }