Esempio n. 1
0
 public function checkum($attribute, $params)
 {
     $modeloum = Alconversiones::model()->findAll("codart='" . $this->codart . "' and um2 ='" . $this->um . "'");
     if (!$modeloum === null) {
         //si hay registros  ok
     } else {
         //si no hay  registros ver que se al unida de medida base sino error
         $maestro = Maestrocompo::model()->findByPk($this->codart);
         if ($maestro === null) {
             $this->adderror('codart', 'Este material no existe');
         } else {
             if ($maestro->um != $this->um) {
                 $this->adderror('um', 'Esta unidad de medida no esta ampliada para este material,amplie las vistas del material');
             }
         }
     }
 }
Esempio n. 2
0
	       <div class="row">
				<?php 
echo $form->labelEx($model, 'cant');
?>
				<?php 
echo CHtml::textField('fdfdfd4544', $model->cant . " ( " . $model->desolpe_um->desum . " )", array('size' => 16, 'maxlength' => 16, 'disabled' => $habilitado));
?>
		    </div>
		  <div class="row">
				<?php 
echo CHtml::label('Stock libre', '45');
?>
                <?php 
?>
				<?php 
echo CHtml::textField('cansst', $model->desolpe_alinventario->cantlibre / Alconversiones::model()->convierte($model->codart, $model->um) . " ( " . $model->desolpe_um->desum . " )", array('size' => 16, 'maxlength' => 16, 'disabled' => $habilitado));
?>
			</div>
	    </div>
	     <div class="panelderecho">
			<div class="row">
				<?php 
echo CHtml::label('Reservar ', '4r5');
?>
				<?php 
//echo $form->textField($model,'cantidad_reservada',array('value'=>min($model->cant,$model->desolpe_alinventario->cantlibre),'size'=>8,'maxlength'=>8));
?>
		         <?php 
echo $form->textField($model, 'cantidad_reservada', array('size' => 8, 'maxlength' => 8));
?>
		   
Esempio n. 3
0
 /**
  * Returns the data model based on the primary key given in the GET variable.
  * If the data model is not found, an HTTP exception will be raised.
  * @param integer $id the ID of the model to be loaded
  * @return Alconversiones the loaded model
  * @throws CHttpException
  */
 public function loadModel($id)
 {
     $model = Alconversiones::model()->findByPk($id);
     if ($model === null) {
         throw new CHttpException(404, 'The requested page does not exist.');
     }
     return $model;
 }
Esempio n. 4
0
 public function checkum($attribute, $params)
 {
     if ((!empty($this->codart) or !is_null($this->codart)) and $this->tipsolpe == 'M') {
         $Modelomaterial = Maestrocompo::model()->findbyPk(TRIM($this->codart));
         if ($Modelomaterial === null) {
             //  $this->adderror('codart','No.  Existe este material' );
         } else {
             $unidad = trim($Modelomaterial->um);
             if ($unidad != $this->um) {
                 //si no se encontro buscar en la tabla conversiones
                 $matriz = Alconversiones::model()->findAll("um2='" . trim($this->um) . "' and codart='" . trim($this->codart) . "'");
                 if (count($matriz) == 0) {
                     //$matriz2=Alconversiones::model()->findAll("um1='".trim($unidad)."'");
                     $this->adderror('um', 'No hay conversiones para esta Um');
                 }
             } else {
                 //  $this->adderror('um','Esta unidad no es aplicable  '.$this->um.' -  '.$unidad );
             }
         }
     } else {
     }
 }
 public function actualizacostes($model, $transaccion, $ceco = null)
 {
     //Public function actionpruebax() {
     $todook = true;
     $hijos = Alkardex::model()->findall("hidvale=:hid and codestado not in('98')  ", array(":hid" => $model->id));
     // $hijos=Alkardex::model()->findall("id=437");
     for ($i = 0; $i < count($hijos); $i++) {
         $modelogastos = new CcGastos();
         if (is_null($ceco)) {
             ///Rebuscamos la solpe
             if ($hijos[$i]['codmov'] == '70') {
                 //Si es un reingreso debemos de buscar recursivamente en el Kardex
                 $modelodetalle = Desolpe::model()->findByPk(Alkardex::model()->findByPk($hijos[$i]['idref'])->idref);
             } else {
                 $modelodetalle = Desolpe::model()->findByPk($hijos[$i]['idref']);
             }
             $modelogastos->ceco = $modelodetalle->imputacion;
         } else {
             $modelogastos->ceco = $ceco;
         }
         //$modelodetalle=Desolpe::model()->findByPk(232);
         $modelogastos->fechacontable = $hijos[$i]['fecha'];
         //Los costos salen del inventario no del precio unitario del Kardex; (Punit+ Punitdif)
         $registroinventario = Alinventario::model()->findByPk(Alkardex::model()->findByPk($hijos[$i]['id'])->alkardex_alinventario->id);
         ///////////////haciendo el calculo estandar de signo y conversiones
         $signo = Almacenmovimientos::model()->findByPk($hijos[$i]['codmov'])->signo * -1;
         /// Como son costos , es el opuesto
         $conversion = Alconversiones::model()->convierte($hijos[$i]['codart'], $hijos[$i]['um']);
         //echo " la conversion  ".$conversion."  ".gettype($conversion)."      \n";
         //echo " material y um  ".$hijos[$i]['codart']."  ".$hijos[$i]['um']."      \n";
         //echo " el signo  es ".Almacenmovimientos::model()->findByPk($hijos[$i]['codmov'])->signo."  ".gettype(Almacenmovimientos::model()->findByPk($hijos[$i]['codmov'])->signo)."      \n";
         //$signo=Almacenmovimientos::model()->findByPk($movimiento)->signo*-1;  /// Como son costos , es el opuesto
         $cantidadmovida = $signo * abs($conversion) * abs($hijos[$i]['cant']);
         ///////////ok///////////////////////////////////////
         ////ahora calculando el precio unitario real, para esto actualizamos el Registro de Inventario,
         ///Esto es indiependiente si el material tiene control de precio S o V
         $registroinventario->Actualizar($hijos[$i]['codmov'], $hijos[$i]['cant'], $hijos[$i]['preciounit']);
         $modelogastos->monto = $cantidadmovida * ($registroinventario->punit + $registroinventario->punitdif);
         ///
         //echo  " la conversion ".$conversion."\n";
         //echo  " la cantidad movida ".$cantidadmovida."\n";
         //echo " precio unitario ".$registroinventario->punit."\n";
         // echo   "El monto    ".$modelogastos->monto."\n";
         //echo " la diferencia  ".$registroinventario->punit."  ".gettype($registroinventario->punit)."      \n";
         //echo " la diferencia  ".$registroinventario->punitdif."  ".gettype($registroinventario->punitdif)."      \n";
         //yii::app()->end();
         $modelogastos->idref = $hijos[$i]['id'];
         //con el kardex lo amarramos
         $modelogastos->clasecolector = 'K';
         //CENTRO DE COSTO
         $modelogastos->tipo = 'M';
         //materialkes
         $modelogastos->codmoneda = Yii::app()->params['monedadef'];
         if (!$modelogastos->save()) {
             //$transaccion->rollback();
             //throw new CHttpException(500,'No se pudo grabar los costos');
             Yii::app()->user->setFlash('error', 'No se pudieron grabar los costes');
             $todook = false;
         }
     }
     return $todook;
 }
Esempio n. 6
0
 public function checkcodigo($attribute, $params)
 {
     $modelomaterial = Maestrocompo::model()->find("codigo=:codigox", array(":codigox" => TRIM($this->codart)));
     if (is_null($modelomaterial)) {
         $this->adderror('codart', 'Este material no existe');
     } else {
         $modelocabecera = Almacendocs::model()->findByPk($this->hidvale);
         $modinventario = Alinventario::model()->find("codart='" . trim($this->codart) . "' AND codalm='" . $modelocabecera->codalmacen . "' AND codcen='" . $modelocabecera->codcentro . "'");
         if (is_null($modinventario)) {
             //if($this->alkardex_alinventario===null) {
             $this->adderror('codart', 'Este material tiene que ser ampliado al centro -:  ' . $modelocabecera->codcentro . ' y almacen ' . $modelocabecera->codalmacen . ' ');
         } else {
             //veriicando la unidad de medida
             if ($this->um != $modelomaterial->um) {
                 //si es diferente a la unidad de medida base
                 //revisar las conversiones
                 $matrizunidades = Alconversiones::model()->findAll("codart=:codigox and um2=:unitas ", array(":codigox" => TRIM($this->codart), ":unitas" => $this->um));
                 if (count($matrizunidades) == 0) {
                     $this->adderror('um', 'No existe conversiones para esta unidad de medida en este material ');
                 }
             }
         }
     }
 }
Esempio n. 7
0
 public function checkcanti($attribute, $params)
 {
     ///cone sta fiunciuon verificamos que la reserva sea consistente
     //primero debemos de verificar qu este item nbo este reservado
     if (!$this->est == '30') {
         $this->adderror('cantidad_reservada', 'El status de este item no permite reservar');
     }
     //luego verifica rque las cantidades a ingrear sean consistentes
     if ($this->cantidad_compras + $this->cantidad_reservada != $this->cant) {
         $this->adderror('cantidad_reservada', 'La cantidad reservada y compras  no coincide con la solicitada');
     }
     //verifica que la cantidad a reservar no supere el stock de inventario
     //antes asegurarse que se esta hablando de la misma unidad de medida base, emn otro caso convertir
     if (!$this->um == Maestrocompo::model()->findByPk(trim($this->codart))->um) {
         $cantidad_reservada_convertida = $this->cant * Alconversiones::model()->convierte($this->codart, $this->um);
     } else {
         $cantidad_reservada_convertida = $this->cantidad_reservada;
     }
     $eninventario = $this->desolpe_alinventario->cantlibre;
     //ahora si lo que se quiere reservar es mayot que lo que hay en inventario
     if ($eninventario < $cantidad_reservada_convertida) {
         $this->adderror('cantidad_reservada', 'La cantidad reservada es mayor de la que hay en inventario');
     }
     if ($eninventario > 0 and $cantidad_reservada_convertida == 0) {
         $this->adderror('cantidad_reservada', 'La cantidad reservada no puede ser cero, habiendo stock');
     }
 }
Esempio n. 8
0
 public function actionReservaitem($id)
 {
     $model = Desolpe::Model()->findByPk($id);
     if ($model === null) {
         throw new CHttpException(404, 'No se encontro ningun documento para estos datos');
     }
     if ($model->tipsolpe == 'S') {
         throw new CHttpException(500, 'No se puede reservar un servicio');
     }
     $modelocabecera = Solpe::model()->findByPk($model->hidsolpe);
     if ($modelocabecera->escompra == '1') {
         throw new CHttpException(500, 'No se puede reservar items de solicitudes hechas para compras ');
     }
     // Uncomment the following line if AJAX validation is needed
     $this->performAjaxValidation($model);
     $model->setscenario('reservar');
     if (isset($_POST['Desolpe'])) {
         $model->attributes = $_POST['Desolpe'];
         if ($model->save()) {
             $transaccion = $model->dbConnection->beginTransaction();
             $idsolpe = $model->id;
             $cantcompra = $model->cantidad_compras;
             $cantreservada = $model->cantidad_reservada;
             if ($cantreservada > 0) {
                 $modelo = new Alreserva();
                 $modelo->hidesolpe = $idsolpe;
                 $modelo->cant = $cantreservada;
                 $modelo->flag = '1';
                 // $model->est='06'; //estado 'RESERVADO'
                 //$modelo->codocu='045';
             }
             if ($cantcompra > 0) {
                 $modelin = new Alreserva();
                 $modelin->hidesolpe = $idsolpe;
                 $modelin->cant = $cantcompra;
                 $modelin->flag = '0';
                 //  $model->est='08'; //'SOLICITADO PARA COMPRA'
                 //$modelin->codocu='008';
             }
             $modeloinventario = Alinventario::model()->findByPk($model->desolpe_alinventario->id);
             if (!is_null($modeloinventario)) {
                 $modeloinventario->setscenario('modificacantidad');
                 $modeloinventario->cantlibre = $modeloinventario->cantlibre - $cantreservada * Alconversiones::model()->convierte($modeloinventario->codart, $model->um);
                 ///;
                 $modeloinventario->cantres = $modeloinventario->cantres + $cantreservada * Alconversiones::model()->convierte($modeloinventario->codart, $model->um);
             }
             $model->est = ($cantcompra > 0 and $cantreservada == 0) ? '80' : '60';
             ///si es una solicitud exclusiva apra compras el estado es '08'
             if ($model->save() and $cantreservada > 0 ? $modelo->save() : true and $modeloinventario->save() and $cantcompra > 0 ? $modelin->save() : true) {
                 $transaccion->commit();
             } else {
                 $transaccion->rollback();
                 ///regresar todo a como estaba
                 throw new CHttpException(404, 'carayyyyyy');
             }
             if (!empty($_GET['asDialog'])) {
                 //Close the dialog, reset the iframe and update the grid
                 echo CHtml::script("window.parent.\$('#cru-dialogdetalle').dialog('close');\n\t\t\t\t\t\t\t\t\t\t\t\t\t                    window.parent.\$('#cru-detalle').attr('src','');\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\twindow.parent.\$.fn.yiiGridView.update('detalle-grid');\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t");
                 Yii::app()->end();
             }
         }
     }
     if (!empty($_GET['asDialog'])) {
         $this->layout = '//layouts/iframe';
     }
     //ECHO $model->id;
     //Yii::app()->end();
     $this->render('_form_detalle_reservar', array('model' => $model, 'idcabeza' => $model->hidsolpe));
 }
Esempio n. 9
0
 public function Actualizareservainventario($codmovimiento = null)
 {
     $modeloinventario = Alinventario::model()->findByPk($this->alkardex_alinventario->id);
     $modeloinventario->setscenario('modificacantidad');
     $modeloinventario->cantres = $modeloinventario->cantres + $this->cant * Alconversiones::model()->convierte($this->codart, $this->um);
     ///;
     return $modeloinventario->save() ? 1 : 0;
 }
Esempio n. 10
0
 public function actioncargaums()
 {
     $valor = $_POST['Maestroclipro']['codart'];
     $valores = Alconversiones::model()->findall("codart='" . $valor . "'");
     $values = array();
     $otro = "";
     foreach ($valores as $registro) {
         $values[] = $registro['um2'];
         $otro = $registro['um1'];
     }
     array_push($values, $otro);
     $criteria = new CDbCriteria();
     $criteria->addInCondition('um', $values);
     $data = CHtml::listData(Ums::model()->findAll($criteria), "um", "desum");
     echo CHtml::tag('option', array('value' => null), CHtml::encode('Escoja una uM'), true);
     foreach ($data as $value => $name) {
         echo CHtml::tag('option', array('value' => $value), CHtml::encode($name), true);
     }
 }
Esempio n. 11
0
 public function actionModificaconversion($id)
 {
     $model = Alconversiones::model()->find("id=:cvb", array(":cvb" => $id));
     $modelomaestro = $this->loadModel($model->codart);
     if (isset($_POST['Alconversiones'])) {
         $model->attributes = $_POST['Alconversiones'];
         if ($model->save()) {
             if (!empty($_GET['asDialog'])) {
                 //Close the dialog, reset the iframe and update the grid
                 echo CHtml::script("window.parent.\$('#cru-dialogdetalle').dialog('close');\n\t\t\t\t\t\t\t\t\t\t\t\t\t                    window.parent.\$('#cru-detalle').attr('src','');\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t");
                 Yii::app()->end();
             }
         }
     }
     // if (!empty($_GET['asDialog']))
     $this->layout = '//layouts/iframe';
     $this->render('_form_detalle_conversiones', array('modelomaestro' => $modelomaestro, 'model' => $model, 'codigox' => $modelomaestro->codigo));
 }
Esempio n. 12
0
<div class="division">
	Agrega conversiones, no olvides refrescar la página para ver los cambios
	</div>
	<div class="division">
<?php 
$this->widget('zii.widgets.grid.CGridView', array('id' => 'conversiones-grid', 'dataProvider' => Alconversiones::model()->search_material($model->codigo), 'columns' => array('numerador', 'alconversiones_um1.desum', 'denominador', 'alconversiones_um2.desum', array('class' => 'CButtonColumn', 'buttons' => array('update' => array('visible' => 'true', 'url' => '$this->grid->controller->createUrl("/Maestrocompo/Modificaconversion/",
										    array("id"=>$data->id,
                                                   "asDialog"=>1,
											"gridId"=>$this->grid->id,
											)
									    )', 'click' => 'function(){ 
							    $("#cru-detalle").attr("src",$(this).attr("href")); 
							    $("#cru-dialogdetalle").dialog("open");  
							     return false;
							 }', 'imageUrl' => '' . Yii::app()->getTheme()->baseUrl . Yii::app()->params['rutatemagrid'] . 'update.png', 'label' => 'Actualizar Item'), 'delete' => array('visible' => 'false'), 'view' => array('visible' => 'false'))))));
?>
	</div>

<?php 
if ($habilitado == "") {
    $createUrl = $this->createUrl('/maestrocompo/creaconversion', array("codigox" => $model->codigo, "asDialog" => 1, "gridId" => 'detalle-conversion'));
    $UrlDefault = $this->createUrl('/ocompra/defaulte');
    echo CHtml::button("   +   ", array('title' => "Agregar ", 'onclick' => " \$('#cru-detalle').attr('src','{$createUrl} ');\$('#cru-dialogdetalle').dialog('open');"));
}
?>