public function actionIngresoCajaPaciente($idOrigen)
 {
     //Buscar Paciente Origen
     $pacienteOrigen = Paciente::model()->findByPk($idOrigen);
     //Ingreso a Caja de Paciente
     $pacienteDestino = Paciente::model()->findByPk($_POST['paciente']);
     $pacienteDestino->saldo = $pacienteDestino->saldo + $_POST['valor'];
     if ($pacienteDestino->update()) {
         //Registro en caja
         $movimientoDeposito = new PacienteMovimientos();
         $movimientoDeposito->paciente_id = $pacienteDestino->id;
         $movimientoDeposito->valor = $_POST['valor'];
         $movimientoDeposito->tipo = "Ingreso";
         $movimientoDeposito->sub_tipo = "Tranferencia de Paciente";
         $movimientoDeposito->comentario = $_POST['comentario'];
         $movimientoDeposito->descripcion = "El Paciente No. " . $pacienteOrigen->id . " Nombre: " . $pacienteOrigen->nombreCompleto . ". Realizo un traslado de su caja a este paciente";
         $movimientoDeposito->usuario_id = Yii::app()->user->usuarioId;
         $movimientoDeposito->fecha = date("Y-m-d H:i:s");
         $movimientoDeposito->save();
         //Retiro a Caja de Paciente
         $pacienteOrigen->saldo = $pacienteOrigen->saldo - $_POST['valor'];
         if ($pacienteOrigen->update()) {
             //Registro en caja
             $movimientoDepositoOrigen = new PacienteMovimientos();
             $movimientoDepositoOrigen->paciente_id = $pacienteOrigen->id;
             $movimientoDepositoOrigen->valor = $_POST['valor'];
             $movimientoDepositoOrigen->tipo = "Egreso";
             $movimientoDepositoOrigen->sub_tipo = "Tranferencia a Paciente";
             $movimientoDepositoOrigen->comentario = $_POST['comentario'];
             $movimientoDepositoOrigen->descripcion = "Transferencia a paciente No. " . $pacienteDestino->id . " Nombre: " . $pacienteDestino->nombreCompleto . ".";
             $movimientoDepositoOrigen->usuario_id = Yii::app()->user->usuarioId;
             $movimientoDepositoOrigen->fecha = date("Y-m-d H:i:s");
             $movimientoDepositoOrigen->save();
             //Ingreso
             $nuevoIngreso = new Ingresos();
             $nuevoIngreso->paciente_id = $pacienteOrigen->id;
             $nuevoIngreso->n_identificacion = $pacienteOrigen->n_identificacion;
             //$nuevoIngreso->contrato_id = $datosContrato->id;
             $nuevoIngreso->valor = $_POST['valor'];
             $nuevoIngreso->descripcion = "Transferencia a caja de paciente " . $pacienteDestino->nombreCompleto;
             $nuevoIngreso->centro_costo_id = 98;
             $nuevoIngreso->forma_pago = "Transferencia a Paciente";
             $nuevoIngreso->fecha_sola = date("Y-m-d");
             $nuevoIngreso->fecha = date("Y-m-d H:i:s");
             $nuevoIngreso->personal_id = Yii::app()->user->usuarioId;
             $nuevoIngreso->estado = "Activo";
             $nuevoIngreso->vendedor_id = Yii::app()->user->usuarioId;
             $nuevoIngreso->personal_seguimiento = Yii::app()->user->usuarioId;
             $nuevoIngreso->save();
         }
     }
     $this->render('view', array('model' => $pacienteDestino));
 }
 /**
  * Creates a new model.
  * If creation is successful, the browser will be redirected to the 'view' page.
  */
 public function actionCreate()
 {
     $model = new PacienteMovimientos();
     // Uncomment the following line if AJAX validation is needed
     // $this->performAjaxValidation($model);
     if (isset($_POST['PacienteMovimientos'])) {
         $model->attributes = $_POST['PacienteMovimientos'];
         if ($model->save()) {
             $this->redirect(array('view', 'id' => $model->id));
         }
     }
     $this->render('create', array('model' => $model));
 }
 public function actionAnular()
 {
     $id = $_GET['id'];
     if ($_POST['clave'] == "super") {
         //Proceso de anulación
         $elIngreso = Ingresos::model()->findByPk($id);
         $ingresoActual = $elIngreso->valor;
         $elIngreso->valor = $elIngreso->valor - $elIngreso->valor * 2;
         $elIngreso->estado = "Anulado";
         $elIngreso->observacion_anular = $_POST['observacion_anular'];
         $iddepaciente = $elIngreso->paciente_id;
         if ($elIngreso->save()) {
             if ($elIngreso->contrato_id != NULL) {
                 //Actualizar Saldo de contrato
                 $datoContrato = Contratos::model()->findByPk($elIngreso->contrato_id);
                 $datoContrato->saldo = $datoContrato->saldo + $ingresoActual;
                 $datoContrato->save();
             } else {
                 //Buscar Caja Personal de Paciente
                 $cajaPersonal = Paciente::model()->findByPk($iddepaciente);
                 $cajaPersonal->saldo = $cajaPersonal->saldo - $ingresoActual;
                 $cajaPersonal->update();
                 //Movimientos
                 $movimientosCaja = new PacienteMovimientos();
                 $movimientosCaja->paciente_id = $iddepaciente;
                 $movimientosCaja->valor = $ingresoActual * -1;
                 $movimientosCaja->tipo = "Anulado";
                 $movimientosCaja->ingreso_id = $id;
                 $movimientosCaja->sub_tipo = "Ingreso sin Contrato Anulado";
                 $movimientosCaja->descripcion = "Se anula ingreso a caja personal";
                 $movimientosCaja->usuario_id = Yii::app()->user->usuarioId;
                 $movimientosCaja->fecha = date("Y-m-d H:i:s");
                 $movimientosCaja->save();
             }
             //Actualizar caja si es efectivo
             if ($elIngreso->forma_pago == "Efectivo") {
                 $datoCaja = CajaEfectivo::model()->findByPk($elIngreso->personal_id);
                 $datoCaja->total = $datoCaja->total - $ingresoActual;
                 $datoCaja->save();
                 $datoCajaDetalle = CajaEfectivoDetalle::model()->find("ingreso_id = {$elIngreso->id}");
                 $datoCajaDetalle->tipo = "Ingreso Anulado";
                 $datoCajaDetalle->monto = $datoCajaDetalle->monto * -1;
                 $datoCajaDetalle->update();
             }
             Yii::app()->user->setFlash('success', "Se ha realizado con éxito la anulación");
             $this->redirect(array('view', 'id' => $id));
         }
     } else {
         Yii::app()->user->setFlash('error', "Usted no esta autorizado para realizar esta anulación");
         $this->redirect(array('view', 'id' => $id));
     }
 }
 public function actionLiquidar()
 {
     $idContrato = $_GET['id'];
     $datosContrato = Contratos::model()->findByPk($idContrato);
     $datosContrato->comentario_liquidado = $_POST['Contratos']['comentario_liquidado'];
     if ($datosContrato->comentario_liquidado == "") {
         Yii::app()->user->setFlash('error', "No se liquido el contrato. No se coloco comentario de liquidación.");
         $this->redirect(array('view', 'id' => $datosContrato->id));
     }
     //Detalle de contrato
     $total_tratamiento = 0;
     $total_tratamientos_realizados = 0;
     $total_vu = 0;
     $total_vu_descuento = 0;
     $total_vu_suma = 0;
     $total_vu_descuento_suma = 0;
     $sumaIngresos = 0;
     $total_cxc = 0;
     $total_nota_credito = 0;
     $saldo_favor = 0;
     $tipo_accion = "";
     $tratamiendo_sindescuento = 0;
     $tratamiento_condescuento = 0;
     //Saldo a Favor*****************
     $tratamientosRealizados = ContratosTratamientoRealizados::model()->findAll("contrato_id = {$datosContrato->id}");
     if ($tratamientosRealizados) {
         foreach ($tratamientosRealizados as $tratamientos_realizados) {
             $preciosTratamiento = ContratoDetalle::model()->find("contrato_id = {$tratamientos_realizados->contrato_id} and linea_servicio_id = {$tratamientos_realizados->linea_servicio_id}");
             $tratamiendo_sindescuento = $tratamiendo_sindescuento + $preciosTratamiento->vu;
             $tratamiento_condescuento = $tratamiento_condescuento + $preciosTratamiento->vu_desc;
         }
     }
     if ($datosContrato->saldo == $datosContrato->total) {
         if ($datosContrato->descuento == "Si") {
             $saldo_favor = $tratamiento_condescuento * -1;
         } else {
             $saldo_favor = $tratamiendo_sindescuento * -1;
         }
     } else {
         if ($datosContrato->descuento == "Si") {
             $saldo_favor = $datosContrato->total - $datosContrato->saldo - $tratamiento_condescuento;
         } else {
             $saldo_favor = $datosContrato->total - $datosContrato->saldo - $tratamiendo_sindescuento;
         }
     }
     //$saldo_favor = ($datosContrato->total - $datosContrato->saldo)-$tratamiento_condescuento;
     //Suma de ingresos
     $detalleIngresos = Ingresos::model()->findAll("contrato_id = {$idContrato} and estado = 'Activo'");
     if ($detalleIngresos) {
         foreach ($detalleIngresos as $detalle_ingreso) {
             $sumaIngresos = $sumaIngresos + $detalle_ingreso->valor;
         }
     }
     $datosContratoDetalle = ContratoDetalle::model()->findAll("contrato_id = {$idContrato}");
     foreach ($datosContratoDetalle as $datos_Contrato_Detalle) {
         $total_tratamiento = $total_tratamiento + $datos_Contrato_Detalle->cantidad;
         $total_tratamientos_realizados = $total_tratamientos_realizados + $datos_Contrato_Detalle->realizadas;
         $total_vu = $total_vu + $datos_Contrato_Detalle->vu;
         $total_vu_descuento = $total_vu_descuento + $datos_Contrato_Detalle->vu_desc;
         $total_vu_suma = $total_vu_suma + $datos_Contrato_Detalle->vu * $datos_Contrato_Detalle->realizadas;
         $total_vu_descuento_suma = $total_vu_descuento_suma + $datos_Contrato_Detalle->vu_desc * $datos_Contrato_Detalle->realizadas;
     }
     //$saldo_favor = $total_vu_suma;
     //se esta liquidando un contrato inclumplido = Valores sin descuento
     if ($datosContrato->descuento == "No") {
         if ($datosContrato->saldo == 0) {
             //$saldo_favor = $sumaIngresos - $total_vu_descuento;
             $saldo_favor = $sumaIngresos - $total_vu_suma;
         }
         if ($total_tratamientos_realizados <= $total_tratamiento) {
             $saldo_favor = $sumaIngresos - $total_vu_suma;
         }
     }
     //---->>>***** Aca es donde se depositara a la caja personal
     if ($saldo_favor > 0) {
         //Ingreso a caja Personal
         $PacienteCaja = Paciente::model()->findByPk($datosContrato->paciente_id);
         $PacienteCaja->saldo = $PacienteCaja->saldo + $saldo_favor;
         if ($PacienteCaja->update()) {
             $movimientosCaja = new PacienteMovimientos();
             $movimientosCaja->paciente_id = $PacienteCaja->id;
             //$movimientosCaja->valor = $PacienteCaja->saldo;
             $movimientosCaja->valor = $saldo_favor;
             $movimientosCaja->tipo = "Ingreso";
             $movimientosCaja->sub_tipo = "Nota de Crédito";
             $movimientosCaja->contrato_id = $datosContrato->id;
             $movimientosCaja->descripcion = "Ingreso a caja de paciente con nota de crédito por liquidación de contrato N°. " . $datosContrato->id;
             $movimientosCaja->usuario_id = Yii::app()->user->usuarioId;
             $movimientosCaja->fecha = date("Y-m-d H:i:s");
             //$movimientosCaja->save();
             if ($movimientosCaja->save()) {
                 $notadeCredito = new NotaCredito();
                 $notadeCredito->paciente_id = $datosContrato->paciente_id;
                 $notadeCredito->n_identificacion = $datosContrato->n_identificacion;
                 $notadeCredito->contrato_id = $datosContrato->id;
                 $notadeCredito->valor = $saldo_favor;
                 $notadeCredito->fecha = date("Y-m-d");
                 $notadeCredito->fecha_hora = date("Y-m-d H:i:s");
                 $notadeCredito->personal_id = Yii::app()->user->usuarioId;
                 $notadeCredito->save();
                 //Buscar Centro de Costo
                 $centrodecosto = CentroCosto::model()->find("nombre = 'Nota Credito'");
                 $nuevoIngreso = new Ingresos();
                 $nuevoIngreso->paciente_id = $datosContrato->paciente_id;
                 $nuevoIngreso->n_identificacion = $datosContrato->n_identificacion;
                 //$nuevoIngreso->contrato_id = $datosContrato->id;
                 $nuevoIngreso->valor = $saldo_favor;
                 $nuevoIngreso->descripcion = "Ingreso a caja de paciente por Nota de Crédito N° " . $notadeCredito->id;
                 $nuevoIngreso->centro_costo_id = $centrodecosto->id;
                 $nuevoIngreso->forma_pago = "Nota de Crédito";
                 $nuevoIngreso->fecha_sola = date("Y-m-d");
                 $nuevoIngreso->fecha = date("Y-m-d H:i:s");
                 $nuevoIngreso->personal_id = Yii::app()->user->usuarioId;
                 $nuevoIngreso->estado = "Activo";
                 $nuevoIngreso->vendedor_id = Yii::app()->user->usuarioId;
                 $nuevoIngreso->personal_seguimiento = Yii::app()->user->usuarioId;
                 $nuevoIngreso->save();
                 $datosContrato->estado = "Liquidado";
                 $datosContrato->update();
                 foreach ($datosContratoDetalle as $datos_contrato_detalle) {
                     $datos_contrato_detalle->estado = "Liquidado";
                     $datos_contrato_detalle->update();
                 }
                 $this->redirect(array('view', 'id' => $datosContrato->id));
             }
         }
     }
     if ($saldo_favor < 0) {
         if ($datosContrato->saldo == 0) {
             // $datosContrato->estado = "Liquidado";
             // $datosContrato->update();
             // foreach ($datosContratoDetalle as $datos_contrato_detalle)
             // {
             // 		$datos_contrato_detalle->estado = "Liquidado";
             // 		$datos_contrato_detalle->update();
             // }
             // $this->redirect(array('view','id'=>$datosContrato->id));
         }
         //Comentado
         // if ($datosContrato->saldo > 0) //No ha pagado contrato, los tratamientos van sin descuento
         // {
         // 	$datosContrato->estado = "Liquidado";
         // 	$datosContrato->update();
         // 	foreach ($datosContratoDetalle as $datos_contrato_detalle)
         // 	{
         // 			$datos_contrato_detalle->estado = "Liquidado";
         // 			$datos_contrato_detalle->update();
         // 	}
         // 	$this->redirect(array('view','id'=>$datosContrato->id));
         // }
         //Buscar si hay cuenta por cobrar madre
         $laCuenta = CuentasXc::model()->find("paciente_id = {$datosContrato->paciente_id}");
         if ($laCuenta) {
             $laCuentaExiste = CuentasXcDetalle::model()->find("contrato_id = {$datosContrato->id}");
             if ($laCuentaExiste) {
                 $laCuentaExiste->saldo = $saldo_favor * -1;
                 $laCuentaExiste->update();
                 $sumadetalles = CuentasXcDetalle::model()->findAll("paciente_id = {$datosContrato->paciente_id}");
                 $total_detalles = 0;
                 foreach ($sumadetalles as $suma_detalles) {
                     $total_detalles = $total_detalles + $suma_detalles->saldo;
                 }
                 $cuentaPrincipal = CuentasXc::model()->find("paciente_id = {$datosContrato->paciente_id}");
                 $cuentaPrincipal->saldo = $total_detalles;
                 $cuentaPrincipal->update();
             } else {
                 $detallesCuenta = new CuentasXcDetalle();
                 $detallesCuenta->cuentas_xc_id = $laCuenta->id;
                 $detallesCuenta->paciente_id = $datosContrato->paciente_id;
                 $detallesCuenta->n_identificacion = $datosContrato->n_identificacion;
                 $detallesCuenta->contrato_id = $datosContrato->id;
                 $detallesCuenta->saldo = $saldo_favor * -1;
                 $detallesCuenta->save();
                 $sumadetalles = CuentasXcDetalle::model()->findAll("paciente_id = {$datosContrato->paciente_id}");
                 $total_detalles = 0;
                 foreach ($sumadetalles as $suma_detalles) {
                     $total_detalles = $total_detalles + $suma_detalles->saldo;
                 }
                 $laCuenta->saldo = $total_detalles;
                 $laCuenta->update();
             }
         } else {
             $nuevaCuenta = new CuentasXc();
             $nuevaCuenta->paciente_id = $datosContrato->paciente_id;
             $nuevaCuenta->n_identificacion = $datosContrato->n_identificacion;
             $nuevaCuenta->saldo = $saldo_favor * -1;
             $nuevaCuenta->save();
             $detallesCuenta = new CuentasXcDetalle();
             $detallesCuenta->cuentas_xc_id = $nuevaCuenta->id;
             $detallesCuenta->paciente_id = $nuevaCuenta->paciente_id;
             $detallesCuenta->n_identificacion = $nuevaCuenta->n_identificacion;
             $detallesCuenta->contrato_id = $datosContrato->id;
             $detallesCuenta->saldo = $nuevaCuenta->saldo;
             $detallesCuenta->save();
         }
         //if ($datosContrato->saldo > 0) //No ha pagado contrato, los tratamientos van sin descuento
         //{
         $datosContrato->estado = "Liquidado";
         $datosContrato->update();
         foreach ($datosContratoDetalle as $datos_contrato_detalle) {
             $datos_contrato_detalle->estado = "Liquidado";
             $datos_contrato_detalle->update();
         }
         $this->redirect(array('view', 'id' => $datosContrato->id));
         //}
     }
     if ($saldo_favor == 0) {
         # code...
     }
     Yii::app()->user->setFlash('error', $saldo_favor);
     //Contrato Pagado
     if ($datosContrato->saldo == 0) {
         //Verificar si todos los tratamientos ya estan realizados
     }
 }