Ejemplo n.º 1
0
 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');
     }
 }
Ejemplo n.º 2
0
 private function proceso($idevento, $id)
 {
     $mensaje = "";
     $compra = Ocompra::model()->findByPk($id);
     switch ($idevento) {
         case 65:
             ///APROB
             if (Ocompra::puedeautorizar()) {
                 $filas = $compra->detallefirme;
                 foreach ($filas as $row) {
                     // $filafirme=Docompra::model()->findByPk($row->id);//solo si
                     //Solo si no esta anulado
                     $row->setScenario('cambiaestado');
                     if (in_array($row->estadodetalle, Estado::estadosnocalculablesdetalle($compra->coddocu))) {
                         $row->estadodetalle = ESTADO_DOCOMPRA_APROBADO;
                     }
                     if (!$row->save()) {
                         $mensaje .= " Ocurrió un error  en el item " . $row->item . " al guardar los datos del estado detalle  <br>";
                     }
                 }
             } else {
                 $mensaje .= " No tiene permisos para efectuar esta acción <br>";
             }
             break;
         case 67:
             ///deshacer APROBACIOPN
             ///AQUI YA NNOS ETRABAJA CON EL BUFFER SE TRABAJADA CON LA TABAL ORIIGNAL
             $filas = $compra->detallefirme;
             foreach ($filas as $row) {
                 //$filafirme=Docompra::model()->findByPk($row->id);
                 if ($row->cantidadentregada > 0) {
                     $mensaje .= "  El item " . $row->item . "  Ya tiene ingreso de almacen <br>";
                 } else {
                     //si no tiene atenciones entonces normal no mas Revertimos
                     $row->setScenario('cambiaestado');
                     if (in_array($row->estadodetalle, Estado::estadosnocalculablesdetalle($compra->coddocu))) {
                         $row->estadodetalle = ESTADO_DOCOMPRA_CREADO;
                     }
                     $mensaje .= $row->save() ? "" : " No se pudo revertir  el item " . $row->item . "<br>";
                     /*print_r($row->geterrors());
                       print_r($row->geterrors());yii::app()->end();*/
                 }
                 //refrescar el buffer
                 $this->ClearBuffer($id);
                 //Limpia temporal
                 $this->IniciaBuffer($id);
                 //Levanta temporales
             }
             break;
         case 66:
             ///aNULAR
             //aqui hayq ue tabajar directametne cn la tabla firme DOCOMPRA
             $filas = $compra->detallefirme;
             //aqui hayq ue tabajar directametne cn la tabla firme DOCOMPRA
             foreach ($filas as $row) {
                 if ($row->cantidadentregada > 0) {
                     $mensaje .= "  El item " . $row->item . "  Ya tiene ingresos de almacen <br>";
                 } else {
                     //si no tiene atenciones entonces normal no mas Revertimos
                     $row->setScenario('cambiaestado');
                     $row->estadodetalle = ESTADO_DOCOMPRA_ANULADO;
                     $mensaje .= $row->save() ? "" : " No se pudo anular el item " . $row->item . "<br>";
                 }
             }
             //refrescar el buffer
             $this->ClearBuffer($id);
             //Limpia temporal
             $this->IniciaBuffer($id);
             //Levanta temporales
             break;
     }
     return $mensaje;
 }
Ejemplo n.º 3
0
 public static function RegistrosDetallePorMovimiento($mov, $numdoc = NULL)
 {
     switch ($mov) {
         case '10':
             $registros = self::DevuelveSolPespendientes($numdoc);
             break;
         case '79':
             $registros = self::DevuelveSolPespendientes($numdoc);
             break;
         case '68':
             $id = Ocompra::model()->find("numcot=:vnumerocompra", array(":vnumerocompra" => trim($numdoc)))->idguia;
             $registros = self::DevuelveServiciosPendientes($id);
             break;
         case '77':
             //INIICNAR TRASALADO, n hya nada que decolver
             $registros = array();
             break;
         case '78':
             //Acepta traslado
             $id = Almacendocs::model()->find("numvale=:vnumvale", array(":vnumvale" => trim($numdoc)))->id;
             $registros = self::DevuelveTraspasospendientes($id);
             break;
         case '98':
             //carag inicial no haya nada que devolver
             $registros = array();
             break;
         case '89':
         case '40':
             //anular vale
             // yii::app()->end();
             $id = Almacendocs::model()->find("numvale=:vnumvale", array(":vnumvale" => trim($numdoc)))->id;
             $registros = self::DevuelveKardexHijosconalias($id);
             break;
         case '70':
             //Reingreso
             // yii::app()->end();
             $registros = array();
             break;
         case '20':
             /* echo "salio el mv";
                yii::app()->end();*/
             $id = Almacendocs::model()->find("numvale=:vnumvale", array(":vnumvale" => trim($numdoc)))->id;
             $registros = self::DevuelveKardexHijosconalias($id);
             break;
         case '30':
             /* echo "salio el mv";
                yii::app()->end();*/
             $id = Ocompra::model()->find("numcot=:vnumerocompra", array(":vnumerocompra" => trim($numdoc)))->idguia;
             $registros = self::DevuelveComprasPendientes($id);
             break;
         case 2:
             echo "i equals 2";
             break;
     }
     //  var_dump($registros);
     return $registros;
 }
Ejemplo n.º 4
0
 public static function RegistrosDetallePorMovimiento($mov, $numdoc = NULL, $idvale = null)
 {
     switch ($mov) {
         case '10':
             $registros = self::DevuelveSolPespendientes($numdoc, $idvale);
             break;
         case '79':
             $registros = self::DevuelveSolPespendientes($numdoc, $idvale);
             break;
         case '68':
             $id = Ocompra::model()->find("numcot=:vnumerocompra", array(":vnumerocompra" => trim($numdoc)))->idguia;
             $registros = self::DevuelveServiciosPendientes($id);
             break;
         case '77':
             //INIICNAR TRASALADO, n hya nada que decolver
             $registros = array();
             break;
         case '78':
             //Acepta traslado
             $id = Almacendocs::model()->find("numvale=:vnumvale", array(":vnumvale" => trim($numdoc)))->id;
             $registros = self::DevuelveTraspasospendientes($id);
             break;
         case '54':
             //ANULA ACEPTACION DEL TRASLADO
             $id = Almacendocs::model()->find("numvale=:vnumvale", array(":vnumvale" => trim($numdoc)))->id;
             $registros = self::DevuelveKardexHijosconalias($id);
             break;
         case '98':
             //carag inicial no haya nada que devolver
             $registros = array();
             break;
         case '89':
             //anular carga inicial
             // yii::app()->end();
             $id = Almacendocs::model()->find("numvale=:vnumvale", array(":vnumvale" => trim($numdoc)))->id;
             $registros = self::DevuelveKardexHijosconalias($id);
             break;
         case '70':
             //Reingreso
             // yii::app()->end();
             $registros = array();
             break;
         case '20':
             /* echo "salio el mv";
                yii::app()->end();*/
             $id = Almacendocs::model()->find("numvale=:vnumvale", array(":vnumvale" => trim($numdoc)))->id;
             $registros = self::DevuelveKardexHijosconalias($id);
             break;
         case '40':
             //anular ingreso de compras
             /* echo "salio el mv";
                yii::app()->end();*/
             $id = Almacendocs::model()->find("numvale=:vnumvale", array(":vnumvale" => trim($numdoc)))->id;
             $registros = self::DevuelveKardexHijosconalias($id);
             break;
         case '30':
             /* echo "salio el mv";
                yii::app()->end();*/
             $id = Ocompra::model()->find("numcot=:vnumerocompra", array(":vnumerocompra" => trim($numdoc)))->idguia;
             $registros = self::DevuelveComprasPendientes($id);
             break;
         case '50':
             $registros = array();
             break;
         default:
             throw new CHttpException(500, __CLASS__ . ' => ' . __FUNCTION__ . '     No se ha encontrado tratamiento de registros hijos para este movimiento revise esta funcion ');
     }
     //  var_dump($registros);
     return $registros;
 }
Ejemplo n.º 5
0
 public function checkcompra($attribute, $params)
 {
     //Verfiicando que existan una compra liberada
     $registro = Ocompra::model()->findAll("numcot=:nimi", array("nimi" => trim($this->numdocref)));
     if (!(count($registro) > 0)) {
         $this->adderror('numdocref', 'Esta Orden de compra no existe ' . $this->numdocref . ' ' . count($registro));
     } else {
         $aestadosoc = array(ESTADO_OC_CREADA, ESTADO_OC_ANULADA, ESTADO_OC_FACTURADA);
         //NO TINEE QUE ESTAR CREADA NI ANULADA NI FACTURADA
         if (in_array($registro->codestado, $aestadosoc)) {
             $this->adderror('numdocref', 'Esta Orden de compra no tiene status valido : ' . $registro->estado);
         }
         ////Verfiicando que existan en esa solpe items que esten reservadas
         /* $matriz=Desolpe::model()->findAll( "hidsolpe=:mipa and est='60' and cant > 0 ",array("mipa"=>$registro[0]['id']));
         	     if(count($matriz) ==0 )  {
         		 $this->adderror('numdocref','Esta Solpe no tiene items reservados ');*/
     }
 }
Ejemplo n.º 6
0
 public function mueveadicionales()
 {
     $monedacompras = null;
     /*var_dump($this->codocuref);
     	var_dump(ARRAY(CODIGO_DOCUMENTO_COMPRAS,CODIGO_DOCUMENTO_DETALLE_COMPRA ));
     	yii::app()->end();*/
     if (in_array($this->codocuref, array(CODIGO_DOCUMENTO_COMPRAS, CODIGO_DOCUMENTO_DETALLE_COMPRA))) {
         $monedacompras = Ocompra::model()->find("numcot=:ndoc", array(":ndoc" => $this->numdocref))->moneda;
     }
     /*var_dump($monedacompras);
     	yii::app()->end();*/
     $monedamain = yii::app()->settings->get('general', 'general_monedadef');
     switch ($this->codmov) {
         case "10":
             $this->InsertaAtencionReserva();
             $ceco = Desolpe::model()->findByPk($this->idref)->imputacion;
             $this->InsertaCcGastos($ceco);
             $this->alkardex_alinventario->actualiza_stock($this->codmov, abs($this->cantidadbase()), null);
             break;
         case "20":
             $this->InsertaAtencionReserva();
             $ceco = Desolpe::model()->findByPk($this->idref)->imputacion;
             $this->InsertaCcGastos($ceco);
             $this->alkardex_alinventario->actualiza_stock($this->codmov, abs($this->cantidadbase()), null);
             break;
             break;
         case "30":
             //INGRESO COMPRA
             $this->InsertaAlentregasCompras();
             ///obteniendo la moneda del documento de COMPRAS
             $this->alkardex_alinventario->actualiza_stock($this->codmov, abs($this->cantidadbase()), $this->preciounitariobase($monedacompras));
             break;
         case "40":
             //ANULAR INGRESO COMPRA
             $this->InsertaAlentregasCompras();
             $this->alkardex_alinventario->actualiza_stock($this->codmov, abs($this->cantidadbase()), null);
             break;
         case "79":
             $this->preciounit = $this->getMonto();
             $this->InsertaAtencionReserva();
             $ceco = Dpeticion::model()->findByPk($this->idref)->imputacion;
             $this->InsertaCcGastos($ceco);
             $this->alkardex_alinventario->actualiza_stock($this->codmov, abs($this->cantidadbase()), null);
             break;
         case "81":
             $this->preciounit = $this->getMonto();
             $this->InsertaAtencionReserva();
             $ceco = Dpeticion::model()->findByPk($this->idref)->imputacion;
             $this->InsertaCcGastos($ceco);
             $this->alkardex_alinventario->actualiza_stock($this->codmov, abs($this->cantidadbase()), null);
             break;
         case "98":
             $moneda = $this->alkardex_alinventario->almacen->codmon;
             $this->alkardex_alinventario->actualiza_stock($this->codmov, abs($this->cantidadbase()), $this->preciounitariobase($moneda));
             break;
         case "89":
             $this->alkardex_alinventario->actualiza_stock($this->codmov, abs($this->cantidadbase()), $this->preciounitariobase(yii::app()->settings->get('general', 'general_monedadef')));
             break;
         case "60":
             echo "Your favorite color is green!";
             break;
         case "77":
             //inica traslado
             $this->alkardex_alinventario->actualiza_stock($this->codmov, abs($this->cantidadbase()), null);
             break;
         case "78":
             //acepta el traspaso
             $thisoriginal = Alkardex::model()->findByPk($this->idref);
             ///cone sto busca el kardex del almacen emisor
             //verifica la consistencia
             $thisoriginal->InsertaAlkardexTraslado($this->cant);
             // $thisoriginal->getMonto();
             $movimientoauxiliar = '45';
             $thisoriginal->alkardex_alinventario->actualiza_stock($movimientoauxiliar, abs($this->cantidadbase()), null);
             //verificamos la moneda del almacen que emite
             $moneda = $thisoriginal->alkardex_alinventario->almacen->codmoneda;
             $this->alkardex_alinventario->actualiza_stock($this->codmov, abs($this->cantidadbase()), $this->preciounitariobase($moneda));
             break;
         case "70":
             //reingreso
             //primero que nada el reingreso usa como referencia el vale de salida
             $kardorigen = Almacendocs::model()->findByPk($this->idref);
             //Siemrpe que no se ahya reingresado el total
             if ($kardorigen->cant < $kardorigen->reingreso_cant) {
                 $kardorigen->InsertaReingreso();
                 $ceco = CcGastos::model()->find("hidref=:vid", array(":vid" => $this->id));
                 $this->InsertaCcGastos($ceco);
                 $this->alkardex_alinventario->actualiza_stock($this->codmov, abs($this->cantidadbase()));
             }
             break;
         case "50":
             //salida para ceco
             $this->InsertaCcGastos($this->colector);
             $this->alkardex_alinventario->actualiza_stock($this->codmov, abs($this->cantidadbase()));
             break;
         case "60":
             //Anula salida para ceco
             $this->InsertaCcGastos($this->colector);
             $this->alkardex_alinventario->actualiza_stock($this->codmov, abs($this->cantidadbase()));
             break;
         default:
             throw new CHttpException(500, __CLASS__ . '  ' . __FUNCTION__ . '  No se ha definido este codigo de movimiento');
     }
 }
Ejemplo n.º 7
0
 public function mueveadicionales()
 {
     $monedacompras = null;
     if (in_array($this->codocuref, array(CODIGO_DOCUMENTO_COMPRAS, CODIGO_DOCUMENTO_DETALLE_COMPRA))) {
         $monedacompras = Ocompra::model()->find("numcot=:ndoc", array(":ndoc" => $this->numdocref))->moneda;
     }
     $monedamain = yii::app()->settings->get('general', 'general_monedadef');
     switch ($this->codmov) {
         case "10":
             $this->InsertaAtencionReserva(CODIGO_DOCUMENTO_RESERVA);
             $ceco = Desolpe::model()->findByPk($this->idref)->imputacion;
             //$ceco=$this->updatesolpe()->imputacion;
             $this->InsertaCcGastos($ceco);
             $this->alkardex_alinventario->actualiza_stock($this->codmov, abs($this->cantidadbase()), null);
             break;
         case "20":
             $this->InsertaAtencionReserva(CODIGO_DOCUMENTO_RESERVA);
             $ceco = Desolpe::model()->findByPk($this->idref)->imputacion;
             $this->InsertaCcGastos($ceco);
             $this->alkardex_alinventario->actualiza_stock($this->codmov, abs($this->cantidadbase()), null);
             break;
         case "11":
             $this->InsertaAtencionReserva(CODIGO_DOCUMENTO_RQ_COMPRA);
             $ceco = Desolpe::model()->findByPk($this->idref)->imputacion;
             $this->InsertaCcGastos($ceco);
             ///AQUI NO  SE ACTUALIZA EL STOCK DEL INVNETARIO PORQUE LA CANTIDAD PASA DIRECTAMENTE a  la atencion RQ y AL GASTO
             //$this->alkardex_alinventario->actualiza_stock($this->codmov,abs($this->cantidadbase()),null);
             break;
         case "12":
             $this->InsertaAtencionReserva(CODIGO_DOCUMENTO_RQ_COMPRA);
             $ceco = Desolpe::model()->findByPk($this->idref)->imputacion;
             $this->InsertaCcGastos($ceco);
             //$this->alkardex_alinventario->actualiza_stock($this->codmov,abs($this->cantidadbase()),null);
             break;
         case "30":
             //INGRESO COMPRA
             $this->InsertaAlentregasCompras();
             //$this->insertaAtencionreserva();
             ///obteniendo la moneda del documento de COMPRAS
             $this->ocuparsedelosRq(SALIDA_RQ);
             ///Si hay RQ de compras verifica y astender
             $this->alkardex_alinventario->actualiza_stock($this->codmov, abs($this->cantidadbase()), $this->preciounitariobase($monedacompras));
             break;
         case "40":
             //ANULAR INGRESO COMPRA
             $this->InsertaAlentregasCompras();
             $this->ocuparsedelosRq(SALIDA_RQ);
             ///Si hay RQ de compras verifica y anular
             $this->alkardex_alinventario->actualiza_stock($this->codmov, abs($this->cantidadbase()), null);
             break;
         case "79":
             $this->preciounit = $this->getMonto();
             $this->InsertaAtencionReserva();
             $ceco = Dpeticion::model()->findByPk($this->idref)->imputacion;
             $this->InsertaCcGastos($ceco);
             $this->alkardex_alinventario->actualiza_stock($this->codmov, abs($this->cantidadbase()), null);
             break;
         case "81":
             $this->preciounit = $this->getMonto();
             $this->InsertaAtencionReserva();
             $ceco = Dpeticion::model()->findByPk($this->idref)->imputacion;
             $this->InsertaCcGastos($ceco);
             $this->alkardex_alinventario->actualiza_stock($this->codmov, abs($this->cantidadbase()), null);
             break;
         case "98":
             $moneda = $this->alkardex_alinventario->almacen->codmon;
             $this->alkardex_alinventario->actualiza_stock($this->codmov, abs($this->cantidadbase()), $this->preciounitariobase($moneda));
             break;
         case "89":
             $this->alkardex_alinventario->actualiza_stock($this->codmov, abs($this->cantidadbase()), $this->preciounitariobase(yii::app()->settings->get('general', 'general_monedadef')));
             break;
         case "60":
             echo "Your favorite color is green!";
             break;
         case "77":
             //inica traslado
             $this->alkardex_alinventario->actualiza_stock($this->codmov, abs($this->cantidadbase()), null);
             break;
         case "78":
             //acepta el traspaso
             $thisoriginal = Alkardex::model()->findByPk($this->idref);
             ///cone sto busca el kardex del almacen emisor
             //verifica la consistencia
             $thisoriginal->InsertaAlkardexTraslado($this->cant);
             // $thisoriginal->getMonto();
             $movimientoauxiliar = '45';
             $thisoriginal->alkardex_alinventario->actualiza_stock($movimientoauxiliar, abs($this->cantidadbase()), null);
             //verificamos la moneda del almacen que emite
             $moneda = $thisoriginal->alkardex_alinventario->almacen->codmon;
             $this->alkardex_alinventario->actualiza_stock($this->codmov, abs($this->cantidadbase()), $this->preciounitariobase($moneda));
             //  yii::app()->end();
             break;
         case "54":
             //ANULA EL INGRESO DEL TRASLADO
             ///Compensar primero el Kardex del vale del receptor
             $thisoriginal = Alkardex::model()->findByPk($this->idref);
             ///cone sto busca el kardex del almacen emisor
             $thisoriginal->InsertaAlkardexTraslado($this->cant);
             $movimientoauxiliar = '64';
             //ANULA SALIDA TRASLADO EN KARDEX EMISOR
             $thisoriginal->alkardex_alinventario->actualiza_stock($movimientoauxiliar, abs($this->cantidadbase()), null);
             //verificamos la moneda del almacen que emite
             $moneda = $thisoriginal->alkardex_alinventario->almacen->codmon;
             $this->alkardex_alinventario->actualiza_stock($this->codmov, abs($this->cantidadbase()), $this->preciounitariobase($moneda));
             break;
         case "70":
             //reingreso
             //primero que nada el reingreso usa como referencia el vale de salida
             $kardorigen = Almacendocs::model()->findByPk($this->idref);
             //Siemrpe que no se ahya reingresado el total
             if ($kardorigen->cant < $kardorigen->reingreso_cant) {
                 $kardorigen->InsertaReingreso();
                 $ceco = CcGastos::model()->find("hidref=:vid", array(":vid" => $this->id));
                 $this->InsertaCcGastos($ceco);
                 $this->alkardex_alinventario->actualiza_stock($this->codmov, abs($this->cantidadbase()));
             }
             break;
         case "50":
             //salida para ceco
             $this->InsertaCcGastos($this->colector);
             $this->alkardex_alinventario->actualiza_stock($this->codmov, abs($this->cantidadbase()));
             break;
         case "60":
             //Anula salida para ceco
             $this->InsertaCcGastos($this->colector);
             $this->alkardex_alinventario->actualiza_stock($this->codmov, abs($this->cantidadbase()));
             break;
         default:
             throw new CHttpException(500, __CLASS__ . '  ' . __FUNCTION__ . '  No se ha definido este codigo de movimiento');
     }
 }
Ejemplo n.º 8
0
 private function proceso($idevento, $id)
 {
     $mensaje = "";
     switch ($idevento) {
         case 65:
             ///APROB
             $filas = Ocompra::model()->findByPk($id)->detallefirme;
             foreach ($filas as $row) {
                 // $filafirme=Docompra::model()->findByPk($row->id);//solo si
                 //Solo si no esta anulado
                 if (!$row->estadodetalle == ESTADO_DOCOMPRA_ANULADO) {
                     $row->estadodetalle = ESTADO_DOCOMPRA_APROBADO;
                 }
                 ///AVTUALIZAR TAMBIEN EL ESTADO DE LOS REGISTROS DE LA TBLA PUENTE DESOLPECOMPRA
                 //DE ESTO SE ENCARGA DOCOMPRA en el evento AfterSave()
                 if (!$row->save()) {
                     $mensaje .= " Ocurrió un error  en el item " . $row->item . " al guardar los datos del estado detalle  <br>";
                 }
             }
             break;
         case 67:
             ///deshacer APROBACIOPN
             ///AQUI YA NNOS ETRABAJA CON EL BUFFER SE TRABAJADA CON LA TABAL ORIIGNAL
             $filas = Ocompra::model()->findByPk($id)->detallefirme;
             foreach ($filas as $row) {
                 //$filafirme=Docompra::model()->findByPk($row->id);
                 if ($row->cantidadentregada > 0) {
                     $mensaje .= "  El item " . $row->item . "  Ya tiene ingreso de almacen <br>";
                 } else {
                     //si no tiene atenciones entonces normal no mas Revertimos
                     $row->setScenario('cambiaestado');
                     $row->estadodetalle = ESTADO_DOCOMPRA_CREADO;
                     $mensaje .= $row->save() ? "" : " No se pudo anular el item " . $row->item . "<br>";
                 }
                 //refrescar el buffer
                 $this->ClearBuffer($id);
                 //Limpia temporal
                 $this->IniciaBuffer($id);
                 //Levanta temporales
             }
             break;
         case 66:
             ///aNULAR
             //aqui hayq ue tabajar directametne cn la tabla firme DOCOMPRA
             $filas = Ocompra::model()->findByPk($id)->detallefirme;
             //aqui hayq ue tabajar directametne cn la tabla firme DOCOMPRA
             foreach ($filas as $row) {
                 if ($row->cantidadentregada > 0) {
                     $mensaje .= "  El item " . $row->item . "  Ya tiene ingresos de almacen <br>";
                 } else {
                     //si no tiene atenciones entonces normal no mas Revertimos
                     $row->setScenario('cambiaestado');
                     $row->estadodetalle = ESTADO_DOCOMPRA_ANULADO;
                     $mensaje .= $row->save() ? "" : " No se pudo anular el item " . $row->item . "<br>";
                 }
             }
             //refrescar el buffer
             $this->ClearBuffer($id);
             //Limpia temporal
             $this->IniciaBuffer($id);
             //Levanta temporales
             break;
     }
     return $mensaje;
 }