/** * Creates a new model. * If creation is successful, the browser will be redirected to the 'view' page. */ public function actionCreate() { $model = new Alinventario(); // Uncomment the following line if AJAX validation is needed // $this->performAjaxValidation($model); if (isset($_POST['Alinventario'])) { $model->attributes = $_POST['Alinventario']; if ($model->save()) { $this->redirect(array('view', 'id' => $model->id)); } } $this->render('create', array('model' => $model)); }
public function generacontabilidad($model) { $transaccion = $model->dbConnection->beginTransaction(); switch ($model->codocuref) { ///Luego hacer los procedimientos segun sea el caso case '210': ///un documento de compras //sacando de una vez el descuento y la conversion moneda para calcular preciosn $modelocompra = Ocompra::model()->find("numcot=:numerox ", array(":numerox" => trim($model->numdocref))); $descuento = is_null($modelocompra->descuento) ? 0 : $modelocompra->descuento / 100; $moneda = $modelocompra->moneda; if ($moneda == Yii::app()->params['monedadef']) { $conversion = 1; } else { $conversion = Numeromaximo::cambiomoneda($moneda, Yii::app()->params['monedadef']); } /*********************************************************************** + LLENAMOS EL LOG DE ENTREGAS DE LA POSICION DE LA ORDEN DE COMPRA ************************************************************************/ $modelokardex = Alkardex::model()->findall("hidvale=" . $model->id . " and codestado='99' "); if (count($modelokardex) > 0) { for ($i = 0; $i < count($modelokardex); ++$i) { $modeloentregas = new Alentregas(); $modeloentregas->iddetcompra = $modelokardex[$i]['idref']; $modeloentregas->cant = $modelokardex[$i]['cant']; $modeloentregas->idkardex = $modelokardex[$i]['id']; if (!$modeloentregas->save()) { $transaccion->rollback(); throw new CHttpException(500, 'Se produjo un error al registrar las entregas'); } ///TAMBIEN ACTUALIZAMOS EL STATRUS DE LAS POSCIONES DE LA ORDEN DE COMPRA // $modelodetoc=New Docompra; $modelodetoc = Docompra::model()->findByPk($modelokardex[$i]['idref']); if (!is_null($modelodetoc)) { //verificando primero cuanto ya se ha atendido antes $criteria = new CDbCriteria(); $criteria->select = 'sum(cant) AS sumatoria'; $criteria->addCondition(" iddetcompra= " . $modelokardex[$i]['idref'] . " and idkardex <> " . $modelokardex[$i]['id']); $rowsuma = Alentregas::model()->find($criteria); $totalatendido = is_null($rowsuma) ? 0 : $rowsuma['sumatoria']; ///esto es lo que se ha atendido if ($totalatendido >= $modelodetoc->cant) { $transaccion->rollback(); throw new CHttpException(500, 'Se produjo un error, esta poscionde pedido ya estaba atendida por completo'); } else { if ($modelokardex[$i]['cant'] + $totalatendido > $modelodetoc->cant) { $transaccion->rollback(); throw new CHttpException(500, 'Se produjo un error, con este ingreso se sobrepasa la cantidad comprada' . $totalatendido); } else { if ($modelokardex[$i]['cant'] + $totalatendido < $modelodetoc->cant) { $modelodetoc->estadodetalle = '50'; //atencion parcial } else { $modelodetoc->estadodetalle = '60'; //atencion total } if (!$modelodetoc->save()) { $transaccion->rollback(); throw new CHttpException(500, 'No se pudo grabar la actualizacion del detalle del pedido'); } } } } /*************************************************************** * ACTUALIZAR EL INVENTARIO TAMBIEN * Datos a actualizar * CANTIDAD , PRECIO , PONDERADO PRECIO UNITARIO * ****************************************************************/ //la cantidad $inventario = Alinventario::model()->find(" codalm=:almacencito and codart=:articulito and codcen=:centrito", array(":almacencito" => $model->codalmacen, ":articulito" => $modelokardex[$i]['codart'], ":centrito" => $model->codcentro)); if (!is_null($inventario)) { //$inventario->codalm=$model->codalmacen; //$inventario->codart=$model->codalmacen; //$inventario->codcentro=$model->codcentro; //$inventario->codmon=Yii->app()->params['monedadef']; $inventario->um = $modelokardex[$i]['um']; $inventario->cantlibre = $inventario->cantlibre + $modelokardex[$i]['cant']; $inventario->punit = ($modelodetoc->punit * (1 - $descuento) * $conversion * $modelokardex[$i]['cant'] + ($inventario->cantlibre + $inventario->cantres) * $inventario->punit) / ($inventario->cantlibre + $inventario->cantres + $modelokardex[$i]['cant']); $inventario->codmon = Yii::app()->params['monedadef']; } else { $inventario = new Alinventario(); $inventario->codalm = $model->codalmacen; $inventario->codart = $modelokardex[$i]['codart']; $inventario->codcen = $model->codcentro; $inventario->codmon = Yii::app()->params['monedadef']; $inventario->um = $modelokardex[$i]['um']; $inventario->cantlibre = $modelokardex[$i]['cant']; $inventario->canttran = 0; $inventario->cantres = 0; } if (!$inventario->save()) { $transaccion->rollback(); echo "hola" . $inventario->codalm . "--" . $inventario->codart . "--" . $inventario->codcen . "--" . $inventario->codmon . "--" . $inventario->um . "--" . $inventario->cantlibre; throw new CHttpException(500, 'NO se pudieron actualizar los datos de inventario ' . $inventario->codalm . "--" . $inventario->codart . "--" . $inventario->codcen . "--" . $inventario->codmon . "--" . $inventario->um . "--" . $inventario->cantlibre); //throw new CHttpException(500,'NO se pudieron actualizar los datos de inventario ');'); } /************************************* * ************************************************************************/ } } else { //si no enuentra kardex hijos $transaccion->rollback(); throw new CHttpException(500, 'Se produjo un error , no se hallaron kardex hijos'); } //fin de si encuentra kardex hijos /// debemos tambien de colcoar el status de cambio de estado al KARDEX $command = Yii::app()->db->createCommand(" UPDATE Alkardex set codestado='10' where hidvale=" . $model->id); $modelocompra->codestado = '60'; if ($command->execute() > 0 and $modelocompra->save()) { $transaccion->commit(); } else { $transaccion->rollback(); throw new CHttpException(500, 'Hubo un error inesperado al moemento de actualizar el kardex '); } break; case '340': // Solicitud de pedido ///primero cambiamos el estado de los kardex $command = Yii::app()->db->createCommand(" UPDATE alkardex set codestado='10' , valido='1' where checki='1' and hidvale=" . $model->id . " "); $command->execute(); ///luego cambiamos el estado del vale $model->cestadovale = '20'; $model->save(); //actualizamos el estado de las solpe y desolpe $transaccion->commit(); break; default: throw new CHttpException(500, 'Se ha tomado un codigo/documento que no es valido'); } }
/** * Creates a new model. * If creation is successful, the browser will be redirected to the 'view' page. */ public function actionCreate() { $model = new Maestrocompo(); $model->valorespordefecto(); // Uncomment the following line if AJAX validation is needed $this->performAjaxValidation($model); if (isset($_POST['Maestrocompo'])) { $model->attributes = $_POST['Maestrocompo']; $transaccion = $model->dbConnection->beginTransaction(); if ($model->save()) { //actualizamos tambien las tablas inventario y maestrodetalle //inventario $centros = Centros::model()->findAll(); foreach ($centros as $fila) { $modeloporcentros = new Maestrodetallecentros(); $modeloporcentros->setAttributes(array('hcodart' => $model->codigo, 'codcen' => $fila->codcen, 'catvalor' => '', 'iqf' => '0'), true); // var_dump($fila); $modeloalmacenes = Almacenes::model()->findall("codcen=:vcdocen", array(":vcdocen" => $fila->codcen)); foreach ($modeloalmacenes as $filaalmacen) { //$contact->setIsNewRecord(true); $modeloinventario = new Alinventario(); $modelodetalle = new Maestrodetalle(); $modelodetalle->setAttributes(array('codart' => $model->codigo, 'codcentro' => $fila->codcen, 'codal' => $filaalmacen->codalm, 'codgrupoventas' => '001', 'canaldist' => '01', 'sujetolote' => '0', 'canteconomica' => 0, 'cantreposic' => 0, 'cantreorden' => 0, 'leadtime' => 0, 'controlprecio' => 'V'), true); $modeloinventario->setAttributes(array('codart' => $model->codigo, 'codcen' => $fila->codcen, 'codalm' => $filaalmacen->codalm, 'cantlibre' => 0, 'canttran' => 0, 'cantres' => 0, 'ubicacion' => '', 'lote' => '', 'codmon' => Yii::app()->params['monedadef']), true); // var_dump($modeloinventario); /* echo "<br><br><br>"; var_dump($modelodetalle->attributes); echo "<br><br><br>";*/ // var_dump($modeloinventario->attributes); if (!$modeloinventario->save() or !$modelodetalle->save()) { $transaccion->rollback(); throw new CHttpException(404, 'No se pudieron grabar los datos detalles '); } else { } } //bucle de almacenes if (!$modeloporcentros->save()) { $transaccion->rollback(); throw new CHttpException(404, 'No se pudieron grabar los datos del modelo poR CENTROS '); } } ///FIN DEL BUCLE CENTROS $transaccion->commit(); Yii::app()->user->setFlash('success', "Se ha creado el material " . $model->codigo); } else { /// SSI HUBO UN ERRRO AL GRANAR EL MATERIAL $transaccion->rollback(); throw new CHttpException(404, 'No se pudieron grabar los datos del material '); } $this->redirect(array('update', 'id' => $model->codigo)); } /// si no se puede grabar $this->render('create', array('model' => $model, 'habilitado' => '')); }