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); } } }
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); } } }