示例#1
0
        public IHttpActionResult Create(OportunidadVentaNM oportunidadVentaNM)
        {
            string exMessage    = string.Empty;
            object objRespuesta = null;
            int?   idCotizacion = 0;

            RptaOportunidadVentaNM rptaOportunidadVentaNM = new RptaOportunidadVentaNM();

            _repository = new OportunidadRetailRepository();

            try
            {
                int?intIdCliCot = null;
                List <ClienteCot> ListClientes               = null;
                ClienteCot        Cliente_Cot                = null;
                CotizacionVta     DtsCotizacionVta           = null;
                UsuarioLogin      usuarioLogin               = null;
                DateTime          _fechaIgnoredTriggerCuenta = Convert.ToDateTime(ConfigurationManager.AppSettings["DATO_IGNORED_TRIGGER_CUENTA"]);

                valCreateOportunidadNM(ref oportunidadVentaNM, ref rptaOportunidadVentaNM, ref usuarioLogin, ref DtsCotizacionVta);
                if (string.IsNullOrEmpty(rptaOportunidadVentaNM.codigo) == false)
                {
                    return(Ok(new { respuesta = rptaOportunidadVentaNM }));
                }

                //int intIdUsuWeb = oportunidadVentaNM.UsuarioCrea;
                int      intIdDep = usuarioLogin.IdDep;
                int      intIdOfi = usuarioLogin.IdOfi;
                string   strIPUsuario = "127.0.0.0";
                string   strTextoPost = string.Empty;
                bool     bolCambioEstado = false, bolEsUrgenteEmision = false;
                DateTime?datFechaPlazoEmision = null;

                #region ProcesoClientes
                Cliente_Cot = (ClienteCot)_oportunidadVentaNMRepository.SelectByCodeSF(oportunidadVentaNM.idCuenta_SF)["pCurResult_out"];

                if (!(Cliente_Cot != null))
                {
                    if (string.IsNullOrEmpty(oportunidadVentaNM.IdTipoDoc) == false && string.IsNullOrEmpty(oportunidadVentaNM.NumDoc) == false)
                    {
                        ListClientes = (List <ClienteCot>)_repository.SelectByDocumento(oportunidadVentaNM.IdTipoDoc, oportunidadVentaNM.NumDoc)["pCurResult_out"];
                    }
                    else
                    {
                        ListClientes = (List <ClienteCot>)_repository.SelectByEmail(oportunidadVentaNM.EmailCli)["pCurResult_out"];
                    }

                    if (ListClientes != null && ListClientes.Count > 0)
                    {
                        Cliente_Cot = ListClientes[0];
                    }
                }

                if (Cliente_Cot != null)
                {
                    intIdCliCot = Cliente_Cot.IdCliCot;
                    /*Update*/
                    _oportunidadVentaNMRepository._Update((int)intIdCliCot, oportunidadVentaNM.NombreCli, oportunidadVentaNM.ApePatCli,
                                                          oportunidadVentaNM.ApeMatCli, oportunidadVentaNM.EmailCli, Cliente_Cot.EmailAlterCliCot, null,
                                                          oportunidadVentaNM.EnviarPromociones.Equals("1"), Cliente_Cot.Direccion,
                                                          oportunidadVentaNM.NumDoc, oportunidadVentaNM.IdTipoDoc, oportunidadVentaNM.IdUsuarioSrv_SF,
                                                          Webs_Cid.ID_WEB_WEBFAREFINDER, null, _fechaIgnoredTriggerCuenta);

                    bool valor = _oportunidadVentaNMRepository._Update_Estado_Promociones((int)intIdCliCot, oportunidadVentaNM.EnviarPromociones);

                    if (Cliente_Cot.RecibePromo == false & oportunidadVentaNM.EnviarPromociones.Equals("1"))
                    {
                        // Antes no estaba suscrito
                        NMMail.Mail_AgregaEmailListaBoletinNMV(7, 1, (oportunidadVentaNM.NombreCli + " " + oportunidadVentaNM.ApePatCli).ReplaceSpecialChars(), oportunidadVentaNM.EmailCli, Constantes_Mail.EMAIL_BOLETIN_NMV, true);

                        if ((intIdOfi == Constantes_SRV.INT_ID_OFI_CORPORATIVO_VACACIONAL & intIdDep == Constantes_SRV.INT_ID_DEP_COUNTER) | (intIdOfi == Constantes_SRV.INT_ID_OFI_NMV & intIdDep == Constantes_SRV.INT_ID_DEP_COUNTER))
                        {
                            NMMail.Mail_AgregaEmailListaBoletinNMV(7, 1, (oportunidadVentaNM.NombreCli + " " + oportunidadVentaNM.ApePatCli).ReplaceSpecialChars(), oportunidadVentaNM.EmailCli, Constantes_Mail.EMAIL_BOLETIN_CORPORATIVO_VACACIONAL, true);
                        }
                        else if (intIdOfi == Constantes_SRV.INT_ID_OFI_CALL_CENTER)
                        {
                            NMMail.Mail_AgregaEmailListaBoletinNMV(163, 1, (oportunidadVentaNM.NombreCli + " " + oportunidadVentaNM.ApePatCli).ReplaceSpecialChars(), oportunidadVentaNM.EmailCli, Constantes_Mail.EMAIL_BOLETIN_RIPLEY, true);
                        }
                    }
                    else if (Cliente_Cot.RecibePromo == true & !oportunidadVentaNM.EnviarPromociones.Equals("1"))
                    {
                        // Estaba suscrito y ahora ya no lo va a estar
                        NMMail.Mail_AgregaEmailListaBoletinNMV(7, 1, (oportunidadVentaNM.NombreCli + " " + oportunidadVentaNM.ApePatCli).ReplaceSpecialChars(), oportunidadVentaNM.EmailCli, Constantes_Mail.EMAIL_BOLETIN_NMV, false);

                        if (intIdOfi == Constantes_SRV.INT_ID_OFI_CORPORATIVO_VACACIONAL & intIdDep == Constantes_SRV.INT_ID_DEP_COUNTER)
                        {
                            NMMail.Mail_AgregaEmailListaBoletinNMV(7, 1, (oportunidadVentaNM.NombreCli + " " + oportunidadVentaNM.ApePatCli).ReplaceSpecialChars(), oportunidadVentaNM.EmailCli, Constantes_Mail.EMAIL_BOLETIN_CORPORATIVO_VACACIONAL, false);
                        }
                        else if (intIdOfi == Constantes_SRV.INT_ID_OFI_CALL_CENTER)
                        {
                            NMMail.Mail_AgregaEmailListaBoletinNMV(163, 1, (oportunidadVentaNM.NombreCli + " " + oportunidadVentaNM.ApePatCli).ReplaceSpecialChars(), oportunidadVentaNM.EmailCli, Constantes_Mail.EMAIL_BOLETIN_RIPLEY, false);
                        }
                    }
                }
                else
                {
                    /*Insert*/
                    intIdCliCot = (int)_repository.InsertaClienteCotizacion(oportunidadVentaNM.NombreCli, oportunidadVentaNM.ApePatCli,
                                                                            oportunidadVentaNM.ApeMatCli, oportunidadVentaNM.EmailCli, null, null, oportunidadVentaNM.EnviarPromociones.Equals("1"),
                                                                            null, oportunidadVentaNM.NumDoc, oportunidadVentaNM.IdTipoDoc, oportunidadVentaNM.IdUsuarioSrv_SF,
                                                                            Webs_Cid.ID_WEB_WEBFAREFINDER, null, false, null, _fechaIgnoredTriggerCuenta)["pNumIdNewCliCot_out"];

                    if (intIdCliCot != null && intIdCliCot > 0)
                    {
                        _oportunidadVentaNMRepository.RegistraCuenta(oportunidadVentaNM.idCuenta_SF, (int)intIdCliCot);
                    }


                    /*START INSERT PAX PTA (Consultar si lo sacamos)*/
                    //try
                    //{
                    //    string PrimerNombre = string.Empty;
                    //    string SegundoNombre = string.Empty;

                    //    if (oportunidadVentaNM.NombreCli.Split(' ').Length > 0)
                    //        PrimerNombre = oportunidadVentaNM.NombreCli.Split(' ')[0];
                    //    if (oportunidadVentaNM.NombreCli.Split(' ').Length > 1)
                    //    {
                    //        SegundoNombre = oportunidadVentaNM.NombreCli.Split(' ')[1];
                    //        if (oportunidadVentaNM.NombreCli.Split(' ').Length > 2)
                    //            SegundoNombre += " " + oportunidadVentaNM.NombreCli.Split(' ')[2];
                    //    }
                    //    ws_pax_paxdoc InsertClienteNM = new ws_pax_paxdoc();
                    //    ws_pax_aux.ws_pax_paxdoc.r_message[] respond = InsertClienteNM.prc_web_insert_pax(oportunidadVentaNM.IdTipoDoc, oportunidadVentaNM.NumDoc,
                    //        oportunidadVentaNM.ApePatCli, oportunidadVentaNM.ApeMatCli, PrimerNombre, SegundoNombre, string.Empty, oportunidadVentaNM.EmailCli, string.Empty, string.Empty, string.Empty, string.Empty, usuarioLogin.LoginUsuario);
                    //}
                    //catch (Exception ex)
                    //{
                    //    NMailAlerta oNMailAlerta = new NMailAlerta();
                    //    oNMailAlerta.EnvioCorreoRegistrarError("Error de " + Constantes_SRV.APP_NAME, this, ex, strIPUsuario + "|btnGrabarCli_ServerClick");
                    //    oNMailAlerta = null;
                    //}
                    /*END INSERT PAX PTA*/

                    if (oportunidadVentaNM.EnviarPromociones.Equals("1"))
                    {
                        if ((intIdOfi == Constantes_SRV.INT_ID_OFI_CORPORATIVO_VACACIONAL & intIdDep == Constantes_SRV.INT_ID_DEP_COUNTER))
                        {
                            NMMail.Mail_AgregaEmailListaBoletinNMV(7, 1, (oportunidadVentaNM.NombreCli + " " + oportunidadVentaNM.ApePatCli).ReplaceSpecialChars(), oportunidadVentaNM.EmailCli, Constantes_Mail.EMAIL_BOLETIN_CORPORATIVO_VACACIONAL, true);
                        }

                        NMMail.Mail_AgregaEmailListaBoletinNMV(7, 1, (oportunidadVentaNM.NombreCli + " " + oportunidadVentaNM.ApePatCli).ReplaceSpecialChars(), oportunidadVentaNM.EmailCli, Constantes_Mail.EMAIL_BOLETIN_NMV, true);
                    }
                }
                #endregion


                #region ProcesoCotizacion
                if (oportunidadVentaNM.IdCotSRV == null)
                {
                    /*Creamos la Cotizacion*/
                    if (usuarioLogin.IdUsuario == 1813)
                    {
                        intIdDep = 30;
                        intIdOfi = 23;
                    }

                    idCotizacion = _oportunidadVentaNMRepository.Inserta_Cot_Vta(oportunidadVentaNM.ModoIngreso, oportunidadVentaNM.Comentario,
                                                                                 usuarioLogin.NomCompletoUsuario, usuarioLogin.LoginUsuario, strIPUsuario, (int)intIdCliCot,
                                                                                 usuarioLogin.IdUsuario, intIdDep, intIdOfi, Webs_Cid.ID_WEB_WEBFAREFINDER, Lang_Cid.IdLangSpa,
                                                                                 oportunidadVentaNM.IdCanalVenta, oportunidadVentaNM.ServiciosAdicionales.Split(';'),
                                                                                 oportunidadVentaNM.CiudadIata, null, 0, oportunidadVentaNM.IdDestino, oportunidadVentaNM.FechaIngreso,
                                                                                 oportunidadVentaNM.Fecharegreso, oportunidadVentaNM.CantidadAdultos, oportunidadVentaNM.CantidadNinos,
                                                                                 string.Empty, null, null, null, null, null, null, null, null, string.Empty, null);

                    if (idCotizacion != null && idCotizacion > 0)
                    {
                        /*_repository.RegistraOportunidad(oportunidadVentaNM.IdOportunidad_SF, (int)idCotizacion);*/
                        _oportunidadVentaNMRepository.RegistraOportunidad(oportunidadVentaNM.IdOportunidad_SF, (int)idCotizacion);
                    }

                    /*DtsCotizacionVta = _cotizacionSRV_Repository.Get_Datos_CotizacionVta((int)idCotizacion);*/
                }
                else
                {
                    idCotizacion = oportunidadVentaNM.IdCotSRV;
                    short?IdMotivoCierrePerdido = null;

                    /**Cambios de Estado**/
                    if (oportunidadVentaNM.idEstado != DtsCotizacionVta.IdEstado)
                    {
                        bolCambioEstado = true;
                        if (oportunidadVentaNM.idEstado == (short)ENUM_ESTADOS_COT_VTA.NoCompro)
                        {
                            IdMotivoCierrePerdido = Convert.ToInt16(oportunidadVentaNM.IdMotivoNoCompro);
                            //strTextoPost = "<span class='texto_cambio_estado'>Cambio de estado a <strong>No Compro</strong></span>";
                        }
                    }

                    if (oportunidadVentaNM.idEstado == (short)ENUM_ESTADOS_COT_VTA.DerivadoCA || oportunidadVentaNM.idEstado == (short)ENUM_ESTADOS_COT_VTA.DerivadoCA_Paq)
                    {
                        bolEsUrgenteEmision  = true;
                        datFechaPlazoEmision = oportunidadVentaNM.fechaPlazoEmision; //Convert.ToDateTime(DateTime.Now.ToShortDateString() + " " + oportunidadVentaNM.HoraEmision + ":00");
                        //strTextoPost = "<span class='texto_cambio_estado'>EMISIÓN ANTES DE: " + string.Format("dd/MM/yyyy HH:mm", datFechaPlazoEmision) + "</span><br>";
                    }

                    /*Es Emitido*/
                    if (oportunidadVentaNM.Emitido == true)
                    {
                        _cotizacionSRV_Repository._Update_EsEmitido((int)oportunidadVentaNM.IdCotSRV, true);
                    }

                    /*Validar las validaciones a considerar*/

                    /*if (usuarioLogin.IdOfi == Constantes_SRV.INT_ID_OFI_NMVCOM || (usuarioLogin.IdOfi == Constantes_SRV.INT_ID_OFI_NMV && usuarioLogin.IdDep == Constantes_SRV.INT_ID_DEP_EMERGENCIAS) || usuarioLogin.EsSupervisorSRV)
                     * {
                     *  if ((!DtsCotizacionVta.EsEmitido) && oportunidadVentaNM.Emitido != null && oportunidadVentaNM.Emitido == true)
                     *  {
                     *      _cotizacionSRV_Repository._Update_EsEmitido((int)oportunidadVentaNM.IdCotSRV, true);
                     *  }
                     * }*/

                    /*Asignarse*/
                    if (oportunidadVentaNM.Asignarse == true)
                    {
                        bool bolAsignado = _cotizacionSRV_Repository._Update_CounterAdministrativo((int)oportunidadVentaNM.IdCotSRV, oportunidadVentaNM.counterAsignado);
                        //messageOK = (bolAsignado == false ? "La cotización ya ha sido asignado a un counter administrativo." : messageOK);
                    }

                    /*Requiere Firma Cliente (Consultar validacion de Pedidos - Del lado de SF?)*/
                    if (oportunidadVentaNM.RequiereFirmaCliente != null)
                    {
                        _cotizacionSRV_Repository._Update_Requiere_FirmaCliente_Cot((int)oportunidadVentaNM.IdCotSRV, (bool)oportunidadVentaNM.RequiereFirmaCliente);
                    }

                    /*Insertamos el Post*/
                    _cotizacionSRV_Repository.Inserta_Post_Cot(DtsCotizacionVta.IdCot, Constantes_SRV.ID_TIPO_POST_SRV_USUARIO, strTextoPost,
                                                               strIPUsuario, usuarioLogin.LoginUsuario, usuarioLogin.IdUsuario, usuarioLogin.IdDep, usuarioLogin.IdOfi, null, null,
                                                               oportunidadVentaNM.idEstado, bolCambioEstado, null, false, null, usuarioLogin.EsCounterAdminSRV,
                                                               (usuarioLogin.EsCounterAdminSRV == true ? DtsCotizacionVta.IdUsuWeb : usuarioLogin.IdUsuario),
                                                               (usuarioLogin.EsCounterAdminSRV == true ? DtsCotizacionVta.IdOfi : usuarioLogin.IdOfi),
                                                               (usuarioLogin.EsCounterAdminSRV == true ? DtsCotizacionVta.IdDep : usuarioLogin.IdDep), bolEsUrgenteEmision,
                                                               datFechaPlazoEmision, IdMotivoCierrePerdido, null, oportunidadVentaNM.MontoEstimado, 0);
                    /*Notas: En caso soliciten habilitar el Post, para el valor Emitido la estructura del Post es diferente, habria que hacer unas condicionales adicionales*/
                    /*Notas: En caso soliciten habilitar el Post, para la AutoAsignacion la estructura del Post es diferente, habria que hacer unas condicionales adicionales*/

                    /*Actualizamos el estado de la oportunidad*/
                    _oportunidadVentaNMRepository.UpdateOportunidad(oportunidadVentaNM.IdOportunidad_SF, (int)idCotizacion, Estados_Oportunidad.ID_ST_REGI_NO_ENVIO);

                    /*Modalidad de Compra*/
                    if (oportunidadVentaNM.idEstado == (short)ENUM_ESTADOS_COT_VTA.Facturado && (usuarioLogin.IdOfi == Constantes_SRV.INT_ID_OFI_NMVCOM || usuarioLogin.IdDep == Constantes_SRV.INT_ID_DEP_SISTEMAS || _oportunidadVentaNMRepository._EsCounterAdministratiivo(usuarioLogin.IdOfi))) //, usuarioLogin.IdDep, false))
                    {
                        _cotizacionSRV_Repository._Update_ModalidadCompra(DtsCotizacionVta.IdCot, (short)oportunidadVentaNM.ModalidadCompra);
                    }

                    if (usuarioLogin.IdOfi == Constantes_SRV.INT_ID_OFI_NMVCOM | usuarioLogin.IdOfi == Constantes_SRV.INT_ID_OFI_TRAVEL_STORE | usuarioLogin.IdDep == Constantes_SRV.INT_ID_DEP_SISTEMAS | usuarioLogin.IdOfi == Constantes_SRV.INT_ID_OFI_NMV | usuarioLogin.IdOfi == 116)
                    {
                        if (oportunidadVentaNM.MontoCompra != null && oportunidadVentaNM.idEstado == (short)ENUM_ESTADOS_COT_VTA.DerivadoCA && DtsCotizacionVta.IdReservaVuelos == null)
                        {
                            _oportunidadVentaNMRepository._Update_DatosReservaVuelo_Manual_Cot(DtsCotizacionVta.IdCot, oportunidadVentaNM.CodReserva, Constantes_SRV.INT_ID_MONEDA_USD, System.Convert.ToDouble(oportunidadVentaNM.MontoCompra));
                        }
                    }
                }
                #endregion

                rptaOportunidadVentaNM.codigo   = "OK";
                rptaOportunidadVentaNM.mensaje  = (oportunidadVentaNM.Accion_SF.ToUpper().Trim() == "UPDATE" ? "Se actualizo correctamente" : "Se agregó correctamente");
                rptaOportunidadVentaNM.IdCotSrv = idCotizacion;

                objRespuesta = new { respuesta = rptaOportunidadVentaNM };
                return(Ok(objRespuesta));
            }
            catch (Exception ex)
            {
                exMessage = ex.Message;
                //rptaOportunidadVentaNM.codigo = "ER";
                //rptaOportunidadVentaNM.mensaje = ex.Message;
                //rptaOportunidadVentaNM.IdCotSrv = null;

                //objRespuesta = new { respuesta = rptaOportunidadVentaNM };
                //return Ok(objRespuesta);
                return(InternalServerError(ex));
            }
            finally
            {
                (new
                {
                    Body = oportunidadVentaNM,
                    Response = rptaOportunidadVentaNM,
                    Exception = exMessage
                }).TryWriteLogObject(_logFileManager, _clientFeatures);
            }
        }
示例#2
0
 private void cargarError(ref RptaOportunidadVentaNM rpOportunidadVentaNM, string errorText)
 {
     rpOportunidadVentaNM.codigo  = "ER";
     rpOportunidadVentaNM.mensaje = "VA: " + errorText;
 }
示例#3
0
        private void valCreateOportunidadNM(ref OportunidadVentaNM _oportunidadVentaNM, ref RptaOportunidadVentaNM _rptaOportunidadVentaNM, ref UsuarioLogin UserLogin, ref CotizacionVta CotizacionVta)
        {
            string mensajeError = string.Empty;
            Dictionary <string, string> TipoDocumentos = new Dictionary <string, string>()
            {
                { "DNI", "DNI" },
                { "CEX", "CARNÉ DE EXTRANJERÍA" },
                { "PSP", "PASAPORTE" }
            };

            if (_oportunidadVentaNM == null)
            {
                cargarError(ref _rptaOportunidadVentaNM, "Envie correctamente los parametros de entrada - RQ Nulo|");
                return;
            }
            if (string.IsNullOrEmpty(_oportunidadVentaNM.Accion_SF))
            {
                mensajeError += "La accion es un campo obligatorio|";
            }
            else if (_oportunidadVentaNM.Accion_SF.ToUpper().Trim() == "UPDATE" && _oportunidadVentaNM.IdCotSRV == null)
            {
                mensajeError += "El Id de Cotizacion es obligatorio al actualizar|";
            }
            else if (_oportunidadVentaNM.Accion_SF.ToUpper().Trim() == "INSERT" && _oportunidadVentaNM.IdCotSRV != null)
            {
                mensajeError += "Al insertar el Id de Cotizacion debe ser nulo|";
            }
            if (string.IsNullOrEmpty(_oportunidadVentaNM.idCuenta_SF))
            {
                mensajeError += "La cuenta SF es un campo obligatorio|";
            }
            if (string.IsNullOrEmpty(_oportunidadVentaNM.IdOportunidad_SF))
            {
                mensajeError += "La oportunidad SF es un campo obligatorio|";
            }
            if (_oportunidadVentaNM.IdCanalVenta <= 0)
            {
                mensajeError += "Envie un canal de venta correcto|";
            }
            if (string.IsNullOrEmpty(_oportunidadVentaNM.NombreCli))
            {
                mensajeError += "El nombre del cliente es un campo obligatorio|";
            }
            if (string.IsNullOrEmpty(_oportunidadVentaNM.ApePatCli))
            {
                mensajeError += "El apellido paterno del cliente es un campo obligatorio|";
            }
            if (!(string.IsNullOrEmpty(_oportunidadVentaNM.IdTipoDoc) == false && string.IsNullOrEmpty(_oportunidadVentaNM.NumDoc) == false && TipoDocumentos.Values.Contains(_oportunidadVentaNM.IdTipoDoc.Trim().ToUpper())))
            {
                if (string.IsNullOrEmpty(_oportunidadVentaNM.EmailCli))
                {
                    mensajeError += "El correo del cliente es un campo obligatorio|";
                }
            }
            else if (string.IsNullOrEmpty(_oportunidadVentaNM.EmailCli))
            {
                if (!(string.IsNullOrEmpty(_oportunidadVentaNM.IdTipoDoc) == false && string.IsNullOrEmpty(_oportunidadVentaNM.NumDoc) == false && TipoDocumentos.Values.Contains(_oportunidadVentaNM.IdTipoDoc.Trim().ToUpper())))
                {
                    mensajeError += "El tipo y número de documento del cliente es un campo obligatorio|";
                }
            }
            if (string.IsNullOrEmpty(_oportunidadVentaNM.IdTipoDoc) == false)
            {
                if (TipoDocumentos.Values.Contains(_oportunidadVentaNM.IdTipoDoc.Trim().ToUpper()))
                {
                    string NameTipoDoc = _oportunidadVentaNM.IdTipoDoc.Trim().ToUpper();
                    _oportunidadVentaNM.IdTipoDoc = TipoDocumentos.Where(p => p.Value == NameTipoDoc).FirstOrDefault().Key;
                }
                else
                {
                    mensajeError += "El tipo de documento no es un valor soportado|";
                }
            }
            if (string.IsNullOrEmpty(_oportunidadVentaNM.CiudadIata))
            {
                mensajeError += "La Ciudad Iata es un campo obligatorio|";
            }
            //if (string.IsNullOrEmpty(_oportunidadVentaNM.IdDestino))
            //{
            //    mensajeError += "Los destinos principales es un campo obligatorio|";
            //}
            if (string.IsNullOrEmpty(_oportunidadVentaNM.EnviarPromociones))
            {
                mensajeError += "La opcion de envio de promociones es un campo obligatorio 0 - 1|";
            }
            if (_oportunidadVentaNM.IdUsuarioSrv_SF <= 0)
            {
                mensajeError += "Envie un ID de usuario SRV valido|";
            }
            if (string.IsNullOrEmpty(_oportunidadVentaNM.Comentario))
            {
                mensajeError += "El comentario es un campo obligatorio|";
            }
            if (string.IsNullOrEmpty(_oportunidadVentaNM.Estado))
            {
                mensajeError += "El estado es un campo obligatorio|";
            }
            if (string.IsNullOrEmpty(_oportunidadVentaNM.ServiciosAdicionales))
            {
                mensajeError += "Los Servicios Adicionales son un campo obligatorio|";
            }
            if (string.IsNullOrEmpty(_oportunidadVentaNM.tipoCotizacion))
            {
                mensajeError += "El tipo de cotizacion es un campo obligatorio|";
            }
            if (_oportunidadVentaNM.ModoIngreso <= 0)
            {
                mensajeError += "Envie un Modo de Ingreso valido|";
            }
            if (_oportunidadVentaNM.CantidadAdultos <= 0)
            {
                mensajeError += "La cantidad de adultos es un campo obligatorio|";
            }
            if (_oportunidadVentaNM.CantidadNinos == null)
            {
                _oportunidadVentaNM.CantidadNinos = 0;
            }

            /*Validacion en caso envien informacion*/
            if (_oportunidadVentaNM.FechaIngreso != null && _oportunidadVentaNM.FechaIngreso < DateTime.Now)
            {
                mensajeError += "La fecha de salida debe ser mayor a la fecha actual|";
            }
            else if (_oportunidadVentaNM.FechaIngreso != null & _oportunidadVentaNM.Fecharegreso != null)
            {
                if (_oportunidadVentaNM.FechaIngreso > _oportunidadVentaNM.Fecharegreso)
                {
                    mensajeError += "La fecha de regreso debe ser mayor a la fecha de salida|";
                }
            }


            if (string.IsNullOrEmpty(mensajeError))
            {
                /*Cargamos Datos del Usuario*/
                RepositoryByBusiness(null);
                UserLogin = _datosUsuario.Get_Dts_Usuario_Personal_NM(_oportunidadVentaNM.IdUsuarioSrv_SF);
                if (UserLogin == null)
                {
                    mensajeError += "ID del Usuario no registrado|";
                }
                else if (UserLogin.IdUsuario != _oportunidadVentaNM.IdUsuarioSrv_SF)
                {
                    _oportunidadVentaNM.IdUsuarioSrv_SF = UserLogin.IdUsuario;
                }

                _oportunidadVentaNM.idEstado = (short)_oportunidadVentaNMRepository._Select_EstadoIdXName(_oportunidadVentaNM.Estado);
                if (_oportunidadVentaNM.idEstado <= 0)
                {
                    mensajeError += "Envie un estado valido|";
                }

                /*Validacion Oportunidad*/
                int intCotizacion_SF = _oportunidadVentaNMRepository._Select_CotId_X_OportunidadSF(_oportunidadVentaNM.IdOportunidad_SF);
                if (intCotizacion_SF <= 0 && _oportunidadVentaNM.Accion_SF.ToUpper().Trim() == "UPDATE")
                {
                    mensajeError += "No es posible actualizar si la oportunidad no esta registrada|";
                }
                else if (intCotizacion_SF > 0 && _oportunidadVentaNM.Accion_SF.ToUpper().Trim() == "INSERT")
                {
                    mensajeError += "No es posible insertar si la oportunidad ya esta registrada|";
                }
                else if (intCotizacion_SF > 0 && _oportunidadVentaNM.Accion_SF.ToUpper().Trim() == "UPDATE" && intCotizacion_SF != _oportunidadVentaNM.IdCotSRV)
                {
                    mensajeError += "La cotizacion enviada es diferente a la registrada|";
                }
                else
                {
                    /*Adicionalmente si envian el id de un counter administrativo y este no existe modificar por el counter por defecto*/
                    if (_oportunidadVentaNM.Accion_SF.ToUpper().Trim() == "UPDATE" && _oportunidadVentaNM.counterAsignado != null && _oportunidadVentaNM.counterAsignado > 0)
                    {
                        UsuarioLogin UserLoginCA = _datosUsuario.Get_Dts_Usuario_Personal_NM((Int32)_oportunidadVentaNM.counterAsignado);
                        if (UserLoginCA != null && UserLoginCA.IdUsuario != _oportunidadVentaNM.counterAsignado)
                        {
                            _oportunidadVentaNM.counterAsignado = UserLoginCA.IdUsuario;
                        }
                    }
                }

                if (_oportunidadVentaNM.IdCotSRV != null && string.IsNullOrEmpty(mensajeError))
                {
                    CotizacionVta = _cotizacionSRV_Repository.Get_Datos_CotizacionVta((int)_oportunidadVentaNM.IdCotSRV);

                    if (CotizacionVta == null || CotizacionVta.IdCot == 0)
                    {
                        cargarError(ref _rptaOportunidadVentaNM, "No existe informacion de la cotizacion enviada|");
                        return;
                    }

                    /*Validaciones Valores Opcionales*/
                    if (_oportunidadVentaNM.idEstado != CotizacionVta.IdEstado)
                    {
                        if (_oportunidadVentaNM.idEstado == (short)ENUM_ESTADOS_COT_VTA.DerivadoCA || _oportunidadVentaNM.idEstado == (short)ENUM_ESTADOS_COT_VTA.Facturado)
                        {
                            if (_oportunidadVentaNM.idEstado == (short)ENUM_ESTADOS_COT_VTA.Facturado)
                            {
                                if (UserLogin.IdOfi == Constantes_SRV.INT_ID_OFI_NMVCOM | UserLogin.IdDep == Constantes_SRV.INT_ID_DEP_SISTEMAS)
                                {
                                    if (!(_oportunidadVentaNM.ModalidadCompra != null && (_oportunidadVentaNM.ModalidadCompra == 0 || _oportunidadVentaNM.ModalidadCompra == 1)))
                                    {
                                        cargarError(ref _rptaOportunidadVentaNM, "Debe enviar la modalidad de compra|");
                                        return;
                                    }
                                }
                            }

                            if (_oportunidadVentaNM.idEstado == (short)ENUM_ESTADOS_COT_VTA.DerivadoCA &&
                                (UserLogin.IdOfi == Constantes_SRV.INT_ID_OFI_NMVCOM | UserLogin.IdOfi == Constantes_SRV.INT_ID_OFI_TRAVEL_STORE |
                                 UserLogin.IdDep == Constantes_SRV.INT_ID_DEP_SISTEMAS))
                            {
                                if (_oportunidadVentaNM.fechaPlazoEmision == null)
                                {
                                    cargarError(ref _rptaOportunidadVentaNM, "Debe enviar la fecha y hora de emisión|");
                                    return;
                                }
                            }

                            List <int> lstPedidosSinBanco = _oportunidadVentaNMRepository._Select_Pedidos_SinBancoBy_IdCot((int)_oportunidadVentaNM.IdCotSRV);
                            if (lstPedidosSinBanco.Count > 0)
                            {
                                if (lstPedidosSinBanco.Count == 1)
                                {
                                    cargarError(ref _rptaOportunidadVentaNM, ("Para cambiar a este estado debe registrar la entidad bancaria en el pedido nro. " + lstPedidosSinBanco[0]));
                                    return;
                                }
                                else
                                {
                                    string strNrosPedido = "";
                                    foreach (int intIdPedido in lstPedidosSinBanco)
                                    {
                                        strNrosPedido += intIdPedido + ", ";
                                    }
                                    strNrosPedido += ".";
                                    strNrosPedido  = strNrosPedido.Replace(", .", ".");
                                    cargarError(ref _rptaOportunidadVentaNM, ("Para cambiar a este estado debe registrar la entidad bancaria en los sgtes. pedidos: " + strNrosPedido));
                                    return;
                                }
                            }

                            if (CotizacionVta.IdReservaVuelos == null && (_oportunidadVentaNM.idEstado == (short)ENUM_ESTADOS_COT_VTA.DerivadoCA || _oportunidadVentaNM.idEstado == (short)ENUM_ESTADOS_COT_VTA.DerivadoCA_Paq))
                            {
                                if (string.IsNullOrEmpty(_oportunidadVentaNM.CodReserva))
                                {
                                    cargarError(ref _rptaOportunidadVentaNM, "Debe ingresar el código de reserva de vuelo.");
                                    return;
                                }
                                else if (_oportunidadVentaNM.MontoCompra == null)
                                {
                                    cargarError(ref _rptaOportunidadVentaNM, "Debe ingresar el monto de la venta.");
                                    return;
                                }
                            }
                        }

                        if (_oportunidadVentaNM.idEstado == (short)ENUM_ESTADOS_COT_VTA.NoCompro)
                        {
                            if (string.IsNullOrEmpty(_oportunidadVentaNM.IdMotivoNoCompro))
                            {
                                cargarError(ref _rptaOportunidadVentaNM, "Debe ingresar el motivo del cierre perdido.");
                                return;
                            }
                            else if (ValidateProcess.isInt32(_oportunidadVentaNM.IdMotivoNoCompro) == false)
                            {
                                cargarError(ref _rptaOportunidadVentaNM, "Envie un motivo correcto de cierre perdido.");
                                return;
                            }
                        }
                    }

                    if (_oportunidadVentaNM.idEstado == (short)ENUM_ESTADOS_COT_VTA.Cotizado)
                    {
                        if (_oportunidadVentaNMRepository._EsCounterAdministratiivo(UserLogin.IdOfi))
                        {
                            if (_oportunidadVentaNM.MontoEstimado == null)
                            {
                                cargarError(ref _rptaOportunidadVentaNM, "Debe ingresar el monto estimado del file.");
                                return;
                            }
                        }
                    }

                    /*Validacion : Asignarse - Emitido*/
                    bool Asignar = false, Emitir = false;;
                    _oportunidadVentaNM.Asignarse = ((_oportunidadVentaNM.counterAsignado != null && _oportunidadVentaNM.counterAsignado > 0) ? true : false);

                    /*El codigo si permite la reasignacion pero el store procedure no.*/
                    if (_oportunidadVentaNM.Asignarse == true || _oportunidadVentaNM.Emitido == true)
                    {
                        if (UserLogin.IdOfi == Constantes_SRV.INT_ID_OFI_NMVCOM || (UserLogin.IdOfi == Constantes_SRV.INT_ID_OFI_NMV && UserLogin.IdDep == Constantes_SRV.INT_ID_DEP_EMERGENCIAS) || UserLogin.EsSupervisorSRV)
                        {
                            if (_oportunidadVentaNM.Asignarse == true)
                            {
                                if (CotizacionVta.IdUsuWebCA.HasValue)
                                {
                                    if (_oportunidadVentaNM.counterAsignado == CotizacionVta.IdUsuWebCA.Value)
                                    {
                                        Asignar = false;
                                    }
                                    else
                                    {
                                        Asignar = true;
                                    }
                                }
                                else
                                {
                                    Asignar = true;
                                }
                            }

                            if (_oportunidadVentaNM.Emitido == true && (!CotizacionVta.EsEmitido))
                            {
                                Emitir = true;
                            }
                        }
                        else if (UserLogin.EsCounterAdminSRV)
                        {
                            if (_oportunidadVentaNMRepository._EsCounterAdministratiivo(CotizacionVta.IdOfi) && _oportunidadVentaNMRepository._EsCounterAdministratiivo(UserLogin.IdOfi))
                            {
                                if (_oportunidadVentaNM.Asignarse == true)
                                {
                                    if (CotizacionVta.IdUsuWebCA.HasValue)
                                    {
                                        if (_oportunidadVentaNM.counterAsignado == CotizacionVta.IdUsuWebCA.Value)
                                        {
                                            Asignar = false;
                                        }
                                        else
                                        {
                                            Asignar = true;
                                        }
                                    }
                                    else
                                    {
                                        Asignar = true;
                                    }
                                }
                            }
                        }

                        /*Validacion Asignarse (Actualizamos la Asignacion)*/
                        _oportunidadVentaNM.Asignarse = Asignar;

                        /*Validacion Emitido (Actualizamos el p_Emitido)*/
                        _oportunidadVentaNM.Emitido = Emitir;
                    }
                }
            }

            if (string.IsNullOrEmpty(mensajeError) == false)
            {
                _rptaOportunidadVentaNM.codigo  = "ER";
                _rptaOportunidadVentaNM.mensaje = "VA: " + mensajeError;
            }
        }