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; }
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.'); } } }