public function actionObservacionpedido()
 {
     if (isset($_POST['ObservacionForm'])) {
         $model = new ObservacionForm();
         $model->attributes = $_POST['ObservacionForm'];
         if ($model->validate()) {
             $objCompra = Compras::model()->findByPk($model->idCompra);
             if ($objCompra === null) {
                 echo CJSON::encode(array('result' => 'error', 'response' => 'Compra no existente'));
                 Yii::app()->end();
             }
             $objObservacion = new ComprasObservaciones();
             $objObservacion->idCompra = $model->idCompra;
             $objObservacion->observacion = $model->observacion;
             $objObservacion->idOperador = Yii::app()->controller->module->user->id;
             $objObservacion->notificarCliente = 0;
             $objObservacion->idTipoObservacion = $model->tipoObservacion;
             if ($model->estado != null) {
                 $transaction = Yii::app()->db->beginTransaction();
                 try {
                     $estadoCompra = EstadoCompra::model()->findByPk($model->estado);
                     if ($estadoCompra == null) {
                         throw new Exception('Estado inválido');
                     }
                     $objObservacion->observacion = "<b>Cambio de estado: " . $estadoCompra->compraEstado . ".</b> " . $objObservacion->observacion;
                     if (!$objObservacion->save()) {
                         throw new Exception('Error al actualizar estado: ' . $objObservacion->validateErrorsResponse());
                     }
                     $objCompra->idEstadoCompra = $model->estado;
                     if ($model->estado == Yii::app()->params->callcenter['estadoCompra']['estado']['devolucion']) {
                         $objCompra->generarDocumentoCruce(Yii::app()->controller->module->user->id);
                     }
                     if (!$objCompra->save()) {
                         throw new Exception('Error al actualizar estado: ' . $objCompra->validateErrorsResponse());
                     }
                     //$objCompraEstado
                     $objCompraEstado = new ComprasEstados();
                     $objCompraEstado->idCompra = $objCompra->idCompra;
                     $objCompraEstado->idEstadoCompra = $model->estado;
                     $objCompraEstado->idOperador = Yii::app()->controller->module->user->id;
                     if (!$objCompraEstado->save()) {
                         throw new Exception("Error al guardar traza de estado: " . $objCompraEstado->validateErrorsResponse());
                     }
                     $transaction->commit();
                     echo CJSON::encode(array('result' => 'ok', 'response' => array('msg' => 'Observación registrada.', 'htmlObservaciones' => $this->renderPartial('_observaciones', array('objCompra' => $objCompra), true, false), 'htmlEncabezado' => $this->renderPartial('_encabezadoPedido', array('objCompra' => $objCompra), true, false))));
                     Yii::app()->end();
                 } catch (Exception $exc) {
                     Yii::log($exc->getMessage() . "\n" . $exc->getTraceAsString(), CLogger::LEVEL_ERROR, 'application');
                     try {
                         $transaction->rollBack();
                     } catch (Exception $txexc) {
                         Yii::log($txexc->getMessage() . "\n" . $txexc->getTraceAsString(), CLogger::LEVEL_ERROR, 'application');
                     }
                     echo CJSON::encode(array('result' => 'error', 'response' => $exc->getMessage()));
                     Yii::app()->end();
                 }
             } else {
                 if (!$objObservacion->save()) {
                     echo CJSON::encode(array('result' => 'error', 'response' => 'Error al actualizar estado: ' . $objObservacion->validateErrorsResponse()));
                     Yii::app()->end();
                 }
                 echo CJSON::encode(array('result' => 'ok', 'response' => array('msg' => 'Observación registrada.', 'htmlObservaciones' => $this->renderPartial('_observaciones', array('objCompra' => $objCompra), true, false))));
                 Yii::app()->end();
             }
         } else {
             echo CActiveForm::validate($model);
         }
     } else {
         if (isset($_POST['NotificacionForm'])) {
             $model = new NotificacionForm();
             $model->attributes = $_POST['NotificacionForm'];
             if ($model->validate()) {
                 $objCompra = Compras::model()->findByPk($model->idCompra);
                 if ($objCompra === null) {
                     echo CJSON::encode(array('result' => 'error', 'response' => 'Compra no existente'));
                     Yii::app()->end();
                 }
                 $objObservacion = new ComprasObservaciones();
                 $objObservacion->idCompra = $model->idCompra;
                 $objObservacion->observacion = $model->observacion;
                 $objObservacion->idOperador = Yii::app()->controller->module->user->id;
                 $objObservacion->notificarCliente = 1;
                 if (!$objObservacion->save()) {
                     echo CJSON::encode(array('result' => 'error', 'response' => 'Error al actualizar estado: ' . $objObservacion->validateErrorsResponse()));
                     Yii::app()->end();
                 }
                 try {
                     $contenido = $this->renderPartial('//common/mensajeHtml', array('mensaje' => $objObservacion->observacion), true, true);
                     $htmlCorreo = $this->renderPartial('//common/correo', array('contenido' => $contenido), true, true);
                     sendHtmlEmail($objCompra->objUsuario->correoElectronico, Yii::app()->params->callcenter['observacion']['asuntoMensaje'], $htmlCorreo);
                 } catch (Exception $exc) {
                 }
                 echo CJSON::encode(array('result' => 'ok', 'response' => array('msg' => 'Observación registrada.', 'htmlObservaciones' => $this->renderPartial('_observaciones', array('objCompra' => $objCompra), true, false))));
                 Yii::app()->end();
             } else {
                 echo CActiveForm::validate($model);
             }
         } else {
             throw new CHttpException(404, 'Solicitud invalida.');
         }
     }
 }
Beispiel #2
0
 public static function cantidadComprasPorEstado($fecha, $idOperador = null)
 {
     $query1 = "";
     if ($idOperador == null) {
         /*   $query1 = "SELECT eo.idEstadoCompra, COUNT(t.idCompra) cantidad
              FROM t_Compras t  
              RIGHT OUTER JOIN m_EstadoCompra eo ON (eo.idEstadoCompra=t.idEstadoCompra) AND (t.fechaCompra>='$fecha' AND t.tipoEntrega='" . Yii::app()->params->entrega["tipo"]['domicilio'] . "') OR (t.idOperador IS NULL AND t.fechaCompra IS NULL)
              GROUP BY eo.idEstadoCompra
              ORDER BY eo.idEstadoCompra";*/
         $query1 = "SELECT eo.idEstadoCompra, COUNT(t.idCompra) cantidad\n            FROM t_Compras t  \n            INNER JOIN m_EstadoCompra eo ON (eo.idEstadoCompra=t.idEstadoCompra) \n\t\t\t\t\tWHERE (t.fechaCompra>='{$fecha}' )\n            GROUP BY eo.idEstadoCompra\n            ORDER BY eo.idEstadoCompra";
         $fecha1 = new DateTime();
         $fecha1->modify('+90 minutes');
         $fecha2 = new DateTime();
         $fecha2->modify('+120 minutes');
         $condition = " (t.seguimiento=1 AND t.fechaEntrega BETWEEN '" . $fecha1->format('Y-m-d H:i:s') . "' AND '" . $fecha2->format('Y-m-d H:i:s') . "')";
         $query2 = "SELECT COUNT(t.idCompra) as cantidad\n            FROM t_Compras as t  \n            WHERE (t.fechaCompra>='{$fecha}' AND {$condition})";
     } else {
         /*   $query1 = "SELECT eo.idEstadoCompra, COUNT(t.idCompra) cantidad
              FROM t_Compras t  
              RIGHT OUTER JOIN m_EstadoCompra eo ON (eo.idEstadoCompra=t.idEstadoCompra) AND (t.idOperador=$idOperador AND t.fechaCompra>='$fecha' AND t.tipoEntrega='" . Yii::app()->params->entrega["tipo"]['domicilio'] . "') OR (t.idOperador IS NULL AND t.fechaCompra IS NULL)
              GROUP BY t.idOperador, eo.idEstadoCompra
              ORDER BY eo.idEstadoCompra";*/
         $query1 = "SELECT eo.idEstadoCompra, COUNT(t.idCompra) cantidad\n            FROM t_Compras t  \n            INNER JOIN m_EstadoCompra eo ON (eo.idEstadoCompra=t.idEstadoCompra) \n\t\t\t\t\tWHERE (t.idOperador={$idOperador} AND t.fechaCompra>='{$fecha}' )\n            GROUP BY eo.idEstadoCompra\n            ORDER BY eo.idEstadoCompra";
         $fecha1 = new DateTime();
         $fecha1->modify('+90 minutes');
         $fecha2 = new DateTime();
         $fecha2->modify('+120 minutes');
         $condition = " (t.seguimiento=1 AND t.fechaEntrega BETWEEN '" . $fecha1->format('Y-m-d H:i:s') . "' AND '" . $fecha2->format('Y-m-d H:i:s') . "')";
         $query2 = "SELECT COUNT(t.idCompra) as  cantidad\n            FROM t_Compras  as t WHERE (t.idOperador={$idOperador} AND t.fechaCompra>='{$fecha}' AND {$condition})";
     }
     $resultAux1 = Yii::app()->db->createCommand($query1)->queryAll(true);
     $resultAux2 = Yii::app()->db->createCommand($query2)->queryAll(true);
     $result = array();
     $estados = EstadoCompra::model()->findAll();
     foreach ($resultAux1 as $arr) {
         $result[$arr['idEstadoCompra']] = $arr['cantidad'];
         if ($arr['idEstadoCompra'] == Yii::app()->params->callcenter['estadoCompra']['estado']['pendiente']) {
             $result[$arr['idEstadoCompra']] += $resultAux2[0]['cantidad'];
         }
     }
     foreach ($estados as $est) {
         if (!isset($result[$est->idEstadoCompra])) {
             $result[$est->idEstadoCompra] = 0;
         }
     }
     $query2 = "";
     if ($idOperador == null) {
         $query2 = "SELECT COUNT(c.idCompra) cantidad\n            FROM t_Compras c\n            JOIN t_ComprasItems ci ON (ci.idCompra=c.idCompra)\n            WHERE ci.terceros=1 AND c.fechaCompra>='{$fecha}' ";
     } else {
         $query2 = "SELECT COUNT(c.idCompra) cantidad\n            FROM t_Compras c\n            JOIN t_ComprasItems ci ON (ci.idCOmpra=c.idCompra)\n            WHERE ci.terceros=1 AND c.idOperador={$idOperador} AND c.fechaCompra>='{$fecha}' ";
     }
     $resultAux2 = Yii::app()->db->createCommand($query2)->queryRow(true);
     $result['terceros'] = $resultAux2['cantidad'];
     $query3 = "";
     if ($idOperador == null) {
         $query3 = "SELECT COUNT(c.idCompra) cantidad\n            FROM t_Compras c\n            WHERE c.seguimiento=1 AND c.fechaCompra>='{$fecha}' ";
     } else {
         $query3 = "SELECT COUNT(c.idCompra) cantidad\n            FROM t_Compras c\n            WHERE c.seguimiento=1 AND c.idOperador={$idOperador} AND c.fechaCompra>='{$fecha}' ";
     }
     $resultAux3 = Yii::app()->db->createCommand($query3)->queryRow(true);
     $result['seguimiento'] = $resultAux3['cantidad'];
     return $result;
 }
Beispiel #3
0
?>
'>
            </div>
                <input type="hidden" name="FormBusqueda[tipo]" value="criterio">
            <div class="col-xs-1">
                <button type="submit" class="btn btn-primary btn-sm">
                    <i class="glyphicon glyphicon-search"></i>
                    Buscar
                </button>
            </div>  
      </div>
      </form>
</div>

<?php 
$listDataEstado = CHtml::listData(EstadoCompra::listData(), 'idEstadoCompra', 'compraEstado');
?>
<div class="form-group">
    <form id="form-busqueda-operador" class="form-inline" method="post">
        <div class="row">
            <div class="col-xs-2">
                <label for="FormBusqueda_operador">Búsqueda por operador</label>
            </div>
            <?php 
$estado = $operador = "";
if ($form != null) {
    if ($form['tipo'] == "operador") {
        $estado = $form['estado'];
        $operador = $form['operador'];
    }
}