/// <summary> /// Sybase internal use only. /// <summary> public void RbsReplayInternal(YPF.Comercial.RRCC.SUP.Motivo entity) { YPF.Comercial.RRCC.SUP.intrnl.OperationReplay _replay = new YPF.Comercial.RRCC.SUP.intrnl.OperationReplay(); _replay.RemoteId =("."); _replay.Component =("CRMMobileDesa.Motivo_rs"); _replay.EntityKey =(entity.KeyToString()); _replay.Operation =(entity.LastOperation); bool _includeBig = !("delete").Equals(_replay.Operation); com.sybase.afx.json.JsonObject _parameters = new com.sybase.afx.json.JsonObject(); _parameters.Put("entity", YPF.Comercial.RRCC.SUP.Motivo.__toJSON(entity, _includeBig)); //_replay.Parameters =(_parameters.ToString()); //lock(typeof(YPF.Comercial.RRCC.SUP.CRMMobileDesaDB)) //{ Sybase.Persistence.ConnectionWrapper _conn = YPF.Comercial.RRCC.SUP.CRMMobileDesaDB.AcquireDBWriteConnection(); Sybase.Persistence.LocalTransaction _tran = null; try { _tran = _conn.BeginTransaction(); com.sybase.afx.json.JsonObject _json = new com.sybase.afx.json.JsonObject(); _replay.Attributes =(_json.ToString()); _replay.Save(); _replay.SaveParameter(_parameters); _tran.Commit(); } catch (Sybase.Persistence.PersistenceException pe) { _tran.Rollback(); throw pe; } catch (System.ApplicationException e) { _tran.Rollback(); throw e; } //} }
private static void InternalSynchronize (string synchronizationGroup, Sybase.Persistence.SyncStatusListener listener, Sybase.Persistence.SynchronizationContext syncContext, com.sybase.afx.json.JsonObject syncContextEx) { string mlServerHost; int mlServerPort; string syncUsername; string syncPassword; bool isInitialSync = "initialSync".Equals(synchronizationGroup) || KeyGenerator.InitSync(); YPF.Comercial.RRCC.SUP.PersonalizationParameters _pp = GetPersonalizationParameters(); _pp.Username =(GetSynchronizationProfile().UserName); _pp.Password =(GetSynchronizationProfile().Password); _pp.SaveUserNamePassword(); lock(_synchronizeLock) { Sybase.Mobile.Application.GetInstance().ApplicationSettings.CheckApplicationSettingsAvailable(); Sybase.Persistence.ConnectionProfile _interProfile = new Sybase.Persistence.ConnectionProfile(); _interProfile.DomainName =("default"); _interProfile.ServerName =("sdbuetmapl28"); _interProfile.PortNumber =(2480); _interProfile.NetworkProtocol =("http,https"); _interProfile.NetworkStreamParams =("trusted_certificates=;url_suffix="); _interProfile.ApplyProperties(Sybase.Mobile.Application.GetInstance().ApplicationSettings); _interProfile.ApplyProperties(GetSynchronizationProfile()); mlServerHost = _interProfile.ServerName; mlServerPort = _interProfile.PortNumber; syncUsername = _interProfile.UserName; syncPassword = _interProfile.Password; string sysPlatform = _interProfile.GetProperty("os"); Sybase.Persistence.ConnectionWrapper ulConn = null; com.sybase.afx.db.ConnectionSyncParams syncParms = new com.sybase.afx.db.ConnectionSyncParams(); try { YPF.Comercial.RRCC.SUP.PersonalizationParameters pp = new YPF.Comercial.RRCC.SUP.PersonalizationParameters(); syncUsername += ("@" + _interProfile.DomainName); com.sybase.afx.json.JsonObject json = new com.sybase.afx.json.JsonObject(); Sybase.Collections.GenericList<YPF.Comercial.RRCC.SUP.ClientPersonalization> listClientPersonalization = pp.ListClientPK; foreach(YPF.Comercial.RRCC.SUP.ClientPersonalization __item in listClientPersonalization) { json.Put(__item.Key_name, __item.GetRealValue()); } Sybase.Collections.GenericList<YPF.Comercial.RRCC.SUP.SessionPersonalization> sessionServerPersonalization = pp.ListSessionPK; foreach(YPF.Comercial.RRCC.SUP.SessionPersonalization __item in sessionServerPersonalization) { json.Put(__item.Key_name, __item.Value); } json.Put("pv", "" + YPF.Comercial.RRCC.SUP.CRMMobileDesaDB.GetProtocolVersion()); json.Put("pid", com.sybase.afx.util.PidUtil.GetId()); json.Put("cle", _interProfile.GetProperty("changeLogEnabled", "false")); if(isInitialSync) { com.sybase.afx.json.JsonObject jsonMBOMap = new com.sybase.afx.json.JsonObject(); jsonMBOMap.Put("DireccionEntrega",231); jsonMBOMap.Put("Interaccion",232); jsonMBOMap.Put("CalendarioInteraccionLocal",233); jsonMBOMap.Put("CategoriaPregunta",234); jsonMBOMap.Put("ClienteCabeceraPedido",235); jsonMBOMap.Put("ClienteDetallePedido",236); jsonMBOMap.Put("ClienteDeuda",237); jsonMBOMap.Put("ClienteFacturacion",238); jsonMBOMap.Put("CustomLocalData",239); jsonMBOMap.Put("Direccion",240); jsonMBOMap.Put("EstadoInteraccion",241); jsonMBOMap.Put("Formulario",242); jsonMBOMap.Put("FormularioMercado",243); jsonMBOMap.Put("FormularioMercadoSegmento",244); jsonMBOMap.Put("FormularioMercadoSubsegmento",245); jsonMBOMap.Put("FormularioMercadoTamano",246); jsonMBOMap.Put("FormularioPrecios",247); jsonMBOMap.Put("FormularioPreciosMercado",248); jsonMBOMap.Put("FormularioPreciosRed",249); jsonMBOMap.Put("FormularioPreciosZonaInspeccion",250); jsonMBOMap.Put("FormularioTransporte",251); jsonMBOMap.Put("Mail",252); jsonMBOMap.Put("Motivo",253); jsonMBOMap.Put("Negocio",254); jsonMBOMap.Put("OpcionRespuesta",255); jsonMBOMap.Put("Parametro",256); jsonMBOMap.Put("Pregunta",257); jsonMBOMap.Put("PreguntaFormulario",258); jsonMBOMap.Put("Provincia",259); jsonMBOMap.Put("RelevamientoPrecios",260); jsonMBOMap.Put("RelevamientoPreciosProducto",261); jsonMBOMap.Put("RelevamientoProducto",262); jsonMBOMap.Put("RelevamientoProductoProducto",263); jsonMBOMap.Put("RelevamientoProductoTipo",264); jsonMBOMap.Put("RelevamientoProveedor",265); jsonMBOMap.Put("RelevamientoProveedorCanal",266); jsonMBOMap.Put("RelevamientoProveedorLogistica",267); jsonMBOMap.Put("RelevamientoTransporte",268); jsonMBOMap.Put("RelevamientoTransporteCompetidor",269); jsonMBOMap.Put("RelevamientoTransporteProducto",270); jsonMBOMap.Put("RepresentanteComercial",271); jsonMBOMap.Put("Respuesta",272); jsonMBOMap.Put("RespuestaInteraccionFormulario",273); jsonMBOMap.Put("Segmento",274); jsonMBOMap.Put("SeleccionFormulario",275); jsonMBOMap.Put("SeleccionTablaRelevamiento",276); jsonMBOMap.Put("TablaRelevamiento",277); jsonMBOMap.Put("Telefono",278); jsonMBOMap.Put("TipoInteraccion",279); jsonMBOMap.Put("LogRecordImpl",281); jsonMBOMap.Put("OperationReplay",282); jsonMBOMap.Put("SISSubscription",285); jsonMBOMap.Put("PackageProperties",286); jsonMBOMap.Put("ChangeLogImpl",288); jsonMBOMap.Put("OfflineAuthentication",289); jsonMBOMap.Put("RepresentanteComercialSynchronizationParameters",290); jsonMBOMap.Put("RepresentanteComercial_pull_pq",291); jsonMBOMap.Put("ClientPersonalization",341); jsonMBOMap.Put("KeyGenerator",346); jsonMBOMap.Put("LocalKeyGenerator",348); json.Put("mboMap", jsonMBOMap); json.Put("publications", synchronizationGroup); json.Put("isInitialSync", isInitialSync.ToString()); } else { json.Put("publications", synchronizationGroup); } bool async = !isInitialSync && _interProfile.GetBoolean("asyncReplay", true); if(syncContextEx == null) { syncContextEx = new com.sybase.afx.json.JsonObject(); } syncContextEx.Remove("async"); syncContextEx.Put("async", async + ""); json.Put("_as", async + ""); if(async && !IsReplayQueueEmpty()) { YPF.Comercial.RRCC.SUP.intrnl.OperationReplay rq = new YPF.Comercial.RRCC.SUP.intrnl.OperationReplay(); rq.SetComponent("CRMMobileDesaDB"); com.sybase.afx.json.JsonObject parameter = new com.sybase.afx.json.JsonObject(); if(syncContext != null) { object userContext = syncContext.UserContext; if(userContext != null) { if(userContext is string) { parameter.Put("userContext", userContext); } else { throw new Sybase.Persistence.PersistenceException("user context must be string for async operation replay"); } } parameter.Put("synchronizationGroup",synchronizationGroup); } rq.SetParameters(parameter.ToString()); rq.SetOperation("batchNotify"); rq.Save(); } if(_appName != null) { json.Put("app", _appName); } json.Put("appId", Sybase.Mobile.Application.GetInstance().ApplicationIdentifier); if (sysPlatform != null) { json.Put("os", sysPlatform); } string str = json.ToString(); byte[] bin = com.sybase.afx.util.StringUtil.ToUTF8(str); string authParam = com.sybase.afx.util.BinaryUtil.ToStringBase64(bin); bool isHttps = _interProfile.NetworkProtocol.Equals("https", System.StringComparison.OrdinalIgnoreCase); int maxLen = 4000; int size = (authParam.Length + maxLen - 1) / maxLen; if (size > 16) { throw new Sybase.Persistence.SynchronizeException("the whole length of personalization parameters exceeds the limit of authenticate parameters and the safe length is 512 bytes"); } string[] authList = new string[16]; for (int i = 0; i < size; i++) { authList[i] = authParam.Substring(i * maxLen, ((i + 1) * maxLen < authParam.Length) ? maxLen : (authParam.Length - i * maxLen)); } for (int i = size; i < 16; i++) { authList[i] = "x";//Spacer } ulConn = AcquireDBWriteConnection(); syncParms.IsHttps = isHttps; syncParms.Version = _interProfile.DomainName + "_" + "crmmobiledesa.1_0"; syncParms.UserName = syncUsername; if(_interProfile.Certificate != null) { syncPassword = null; } syncParms.Password = syncPassword + ("@" + com.sybase.afx.util.PidUtil.GetId()); string mlStreamParams = "host=\"" + mlServerHost + "\";port=\"" + mlServerPort + "\""; string urlSuffix = com.sybase.afx.util.NetworkStreamParams.ExtractValue("url_suffix", _interProfile.NetworkStreamParams); if(urlSuffix != null && urlSuffix.Length != 0) { mlStreamParams = "host=\"" + mlServerHost + "\";port=\"" + mlServerPort + "\";url_suffix=\"" + urlSuffix + "\""; } //setting http_userid and http_password if HTTPCredentials are available Sybase.Persistence.LoginCredentials lc = Sybase.Mobile.Application.GetInstance().ConnectionProperties.HTTPCredentials; if (lc != null) { string http_userid = lc.UserName; string http_password = lc.Password; mlStreamParams = mlStreamParams + ";http_userid=\"" + http_userid + "\";http_password=\"" + http_password + "\""; } string cookie = com.sybase.afx.util.NetworkStreamParams.ExtractValue("set_cookie", _interProfile.NetworkStreamParams); Sybase.Collections.StringProperties httpCookies = Sybase.Mobile.Application.GetInstance().ConnectionProperties.HttpCookies; if (httpCookies != null) { foreach(string key in httpCookies.Keys()) { string value = httpCookies.Item(key); if (cookie == null || cookie.Length == 0) { cookie = key + "=" + value; } else { cookie += "," + key + "=" + value; } } } if (cookie != null && cookie.Length != 0) { mlStreamParams = mlStreamParams + ";set_cookie=\"" + cookie +"\""; } System.Collections.Generic.List<string> headers = com.sybase.afx.util.NetworkStreamParams.ExtractListValue("custom_header", _interProfile.NetworkStreamParams); foreach (string header in headers) { mlStreamParams = mlStreamParams + ";custom_header=\"" + header +"\""; } Sybase.Collections.StringProperties httpHeaders = Sybase.Mobile.Application.GetInstance().ConnectionProperties.HttpHeaders; if (httpHeaders != null) { foreach(string key in httpHeaders.Keys()) { string value = httpHeaders.Item(key); mlStreamParams = mlStreamParams + ";custom_header=\"" + key + ":" + value + "\""; } } string ip = _interProfile.GetString("client_ip"); if(ip != null && ip.Length != 0) { mlStreamParams = mlStreamParams + ";client_ip_addr=\"" + ip + "\""; } if(isHttps) { string ts = com.sybase.afx.util.NetworkStreamParams.ExtractValue("trusted_certificates", _interProfile.NetworkStreamParams); mlStreamParams += ";trusted_certificates=\"" + ts + "\""; string tls = com.sybase.afx.util.NetworkStreamParams.ExtractValue("tls_type", _interProfile.NetworkStreamParams); if (tls != null) { mlStreamParams += ";tls_type=\"" + tls + "\""; } } System.Collections.Generic.IList<System.Collections.Generic.KeyValuePair<string, string>> nwParams = com.sybase.afx.util.NetworkStreamParams.Parse(_interProfile.NetworkStreamParams); foreach (System.Collections.Generic.KeyValuePair<string, string> entry in nwParams) { string v = entry.Key; if (!v.StartsWith("url_suffix") && !v.StartsWith("trusted_certificates") && !v.StartsWith("tls_type") && !v.StartsWith("http_userid") && !v.StartsWith("http_password") && !v.StartsWith("set_cookie") && !v.StartsWith("custom_header")) { mlStreamParams += ";" + v + "=\"" + entry.Value + "\""; } } syncParms.StreamParms = mlStreamParams; syncParms.Publications = synchronizationGroup; syncParms.AuthenticationParms = authList; syncParms.UploadOnly = syncContextEx.GetBoolean("uploadOnly"); com.sybase.afx.db.ConnectionUtil.SetConnectionSyncParams(ulConn, syncParms); com.sybase.afx.db.CommandUtil.TraceSynchronize(_profile.GetSyncProfile(), synchronizationGroup, syncContext, GetRemoteId(ulConn)); if (listener != null) { string[] mboNames = com.sybase.afx.DatabaseBase.GetMBONames(synchronizationGroup, GetPublications()); System.Collections.Hashtable tableMBOMap = getTableMBOMap(); com.sybase.afx.db.ConnectionUtil.Synchronize(ulConn, listener, _interProfile.ToSyncConnection(), mboNames, tableMBOMap); } else { com.sybase.afx.db.ConnectionUtil.Synchronize(ulConn); } //check protocol version PackageProperties _props = PackageProperties.Find("protocol_version"); int _pv = 0; if (_props != null) { _pv = System.Int32.Parse(_props.Value); } if (!isInitialSync && GetProtocolVersion() > _pv) { string _msg = "device's protocol version is incompatible with the server's protocol version. (" + GetProtocolVersion() + " > " + _pv + ")"; Sybase.Persistence.ProtocolException _pe = new Sybase.Persistence.ProtocolException(_msg); GetCallbackHandler().OnMessageException(_pe); throw _pe; } PackageProperties lastRequestId = PackageProperties.Find("lastRequestId"); if(lastRequestId == null) { lastRequestId = new PackageProperties(); lastRequestId.Key = "lastRequestId"; } try { lastRequestId.Value = KeyGenerator.GenerateId()+""; } catch(Sybase.Persistence.SynchronizeRequiredException) { lastRequestId = null; } if(lastRequestId != null) { lastRequestId.Save(); } YPF.Comercial.RRCC.SUP.intrnl.OperationReplay.Finish(); } catch(com.sybase.afx.db.SynchronizationException _ex) { string exMsg = _ex.ToString(); com.sybase.afx.db.ConnectionImpl connImpl = (com.sybase.afx.db.ConnectionImpl)ulConn; iAnywhere.Data.UltraLite.ULConnection ul_conn = (iAnywhere.Data.UltraLite.ULConnection)connImpl.GetConnection(); if (_ex.NativeError == com.sybase.afx.db.SynchronizationException.SQLE_MOBILINK_COMMUNICATIONS_ERROR) { string strMessage = ul_conn.SyncResult.StreamErrorParameters; try { int errorCode = System.Convert.ToInt32(strMessage); Sybase.Mobile.Application.GetInstance().ApplicationCallback.OnHttpCommunicationError(errorCode, "", new Sybase.Collections.StringProperties()); } catch (System.FormatException) { } } long authValue = ul_conn.SyncResult.AuthValue; if ((_ex.NativeError == com.sybase.afx.db.SynchronizationException.SQLE_MOBILINK_AUTHENTICATION_FAILED) && (authValue == com.sybase.afx.util.AuthExceptionUtil.FAILURE_CODE_TOKEN_VALIDATION_ERROR || authValue == 4000)) { GetCallbackHandler().OnLoginFailure(); if (syncContext == null) { syncContext = new Sybase.Persistence.SynchronizationContext(); } syncContext.ErrorCode = 401; syncContext.ErrorMessage = "authentication failed."; if (authValue == com.sybase.afx.util.AuthExceptionUtil.FAILURE_CODE_TOKEN_VALIDATION_ERROR) { syncContext.ErrorCode = 412; } } com.sybase.afx.util.AuthExceptionUtil.CheckAuthValueAfterSync(com.sybase.afx.db.ConnectionUtil.GetConnectionSyncAuthValue(ulConn), _ex); if (_ex.NativeError == com.sybase.afx.db.SynchronizationException.SQLE_MOBILINK_COMMUNICATIONS_ERROR) { exMsg += "Details:\n" + com.sybase.afx.db.ConnectionUtil.GetConnectionSyncDetail(ulConn) + "\n"; } if( !"system".Equals(synchronizationGroup) && com.sybase.afx.db.SynchronizationException.SQLE_SERVER_SYNCHRONIZATION_ERROR == _ex.NativeError ) { try { YPF.Comercial.RRCC.SUP.CRMMobileDesaDB.Synchronize("system", null); } catch { if (!"initialSync".Equals(synchronizationGroup)) { string _msg = "the package is not deployed or device's protocol version may be incompatible with the server's protocol version. (" + GetProtocolVersion() + " > 0)"; Sybase.Persistence.ProtocolException _pe = new Sybase.Persistence.ProtocolException(_msg); GetCallbackHandler().OnMessageException(_pe); throw _pe; } } } throw new Sybase.Persistence.SynchronizeException(exMsg,_ex); } catch(System.Exception _ex) { throw new Sybase.Persistence.SynchronizeException(_ex.ToString(),_ex); } finally { if(ulConn != null) { ReleaseDBConnection();; } } } }
/// <summary> /// Set current MBO attributes by specified MBO. /// </summary> public static YPF.Comercial.RRCC.SUP.intrnl.OperationReplay Merge(YPF.Comercial.RRCC.SUP.intrnl.OperationReplay entity) { YPF.Comercial.RRCC.SUP.intrnl.OperationReplay ent = Find(entity._pk()); if (ent == null) { ent = new YPF.Comercial.RRCC.SUP.intrnl.OperationReplay(); } ent.CopyAll(entity); ent.Save(); return ent; }
private static YPF.Comercial.RRCC.SUP.intrnl.OperationReplay _find(long id, String sql, bool findOs, bool findNonPending) { Sybase.Persistence.ConnectionWrapper _conn = YPF.Comercial.RRCC.SUP.CRMMobileDesaDB.AcquireDBReadConnection(); System.Data.IDataReader _rs = null; int count = 0; try { YPF.Comercial.RRCC.SUP.intrnl.OperationReplay _rt = null; System.Data.IDbCommand ps = com.sybase.afx.db.CommandUtil.CreateCommand(_conn, sql); com.sybase.afx.db.CommandUtil.SetLong(_conn.GetConnectionProfile(), ps, "requestId", id); _rs = ps.ExecuteReader(); Sybase.Persistence.ConnectionProfile profile = _conn.GetConnectionProfile(); while (com.sybase.afx.db.ReaderUtil.Read(profile, _rs)) { _rt = new YPF.Comercial.RRCC.SUP.intrnl.OperationReplay(); _rt.Bind(profile, _rs); count++; } if (_rs != null) com.sybase.afx.db.ReaderUtil.Close(profile, _rs, count); if (ps != null) ps.Dispose(); return _rt; } catch(System.Data.DataException ex) { throw new Sybase.Persistence.PersistenceException(ex.ToString(), ex); } finally { YPF.Comercial.RRCC.SUP.CRMMobileDesaDB.ReleaseDBConnection(); } }
internal static YPF.Comercial.RRCC.SUP.intrnl.OperationReplay FromJSON(object _json) { if (_json == null) { return null; } else { YPF.Comercial.RRCC.SUP.intrnl.OperationReplay _obj = new YPF.Comercial.RRCC.SUP.intrnl.OperationReplay(); _obj._fromJSON((com.sybase.afx.json.JsonObject)_json); return _obj; } }
/// <summary> /// Find a List of YPF.Comercial.RRCC.SUP.intrnl.OperationReplay /// </summary> /// <exception cref="PersistentException">Thrown if unable to retrieve mobile business object.</exception> /// <remarks> </remarks> public static Sybase.Collections.GenericList<YPF.Comercial.RRCC.SUP.intrnl.OperationReplay> FindReadyToFinish(int skip, int take) { skip = skip + 1; Sybase.Collections.GenericList<YPF.Comercial.RRCC.SUP.intrnl.OperationReplay> result_2 = new Sybase.Collections.GenericList<YPF.Comercial.RRCC.SUP.intrnl.OperationReplay>(); System.Data.IDataReader rs_4 = null; int count_5 = 0; Sybase.Persistence.ConnectionWrapper _conn = null; try { _conn = YPF.Comercial.RRCC.SUP.CRMMobileDesaDB.AcquireDBReadConnection(); string _selectSQL = " r.\"a\",r.\"c\",r.\"d\",r.\"e\",r.\"f\",r.\"g\",r.\"h\",r.\"i\",r.\"j\",r.\"b\" from \"crmmobiledesa_1_0_operationreplay\" r where r.\"j\" = 1 order by r.\"b\""; _selectSQL = "select top " + take + " start at " + skip + " " + _selectSQL; System.Data.IDbCommand ps_3 = com.sybase.afx.db.CommandUtil.CreateCommand(_conn, _selectSQL); rs_4 = ps_3.ExecuteReader(); Sybase.Persistence.ConnectionProfile profile = _conn.GetConnectionProfile(); while (com.sybase.afx.db.ReaderUtil.Read(profile, rs_4)) { YPF.Comercial.RRCC.SUP.intrnl.OperationReplay entity_6 = new YPF.Comercial.RRCC.SUP.intrnl.OperationReplay(); entity_6.Bind(profile, rs_4); count_5++; result_2.Add(entity_6); } if (rs_4 != null) com.sybase.afx.db.ReaderUtil.Close(profile, rs_4, count_5); if (ps_3 != null) ps_3.Dispose(); _selectSQL = null; } catch (System.Data.DataException ex) { throw new Sybase.Persistence.PersistenceException(ex.ToString(), ex); } finally { YPF.Comercial.RRCC.SUP.CRMMobileDesaDB.ReleaseDBConnection(); } return result_2; }
public void Finish_rbsReplayInternal(Sybase.Persistence.IOperationReplay _call_tmp) { YPF.Comercial.RRCC.SUP.intrnl.OperationReplay _call = (YPF.Comercial.RRCC.SUP.intrnl.OperationReplay)_call_tmp; com.sybase.afx.json.JsonObject parameters = (com.sybase.afx.json.JsonObject)(com.sybase.afx.json.JsonReader .Parse(_call.Parameters)); string exception = _call.Exception; YPF.Comercial.RRCC.SUP.Direccion entity = (YPF.Comercial.RRCC.SUP.Direccion)(YPF.Comercial.RRCC.SUP.Direccion.__fromJSON(parameters.Get("entity"))); //lock(typeof(YPF.Comercial.RRCC.SUP.CRMMobileDesaDB)) //{ Sybase.Persistence.ConnectionWrapper conn = YPF.Comercial.RRCC.SUP.CRMMobileDesaDB.AcquireDBWriteConnection(); Sybase.Persistence.LocalTransaction tran = null; try { tran = conn.BeginTransaction(); long ____id = entity.ReplayCounter; YPF.Comercial.RRCC.SUP.Direccion _client = YPF.Comercial.RRCC.SUP.Direccion.Find(entity._pk()); YPF.Comercial.RRCC.SUP.Direccion _downloadState = null; if (_client != null) { _downloadState = _client.DownloadState; } if (exception == null) { YPF.Comercial.RRCC.SUP.CRMMobileDesaDB.GetCallbackHandler().OnReplaySuccess(_client == null ? entity : _client); YPF.Comercial.RRCC.SUP.Direccion.GetCallbackHandler().OnReplaySuccess(_client == null ? entity : _client); if ((_client != null) && _client.IsPending) { long _rc = _client.ReplayPending; if (_rc == ____id) { if (_rc == _client.ReplayCounter) { _client._cancelPending2(false); } else { _client.ReplayPending = 0; _client.ReplayFailure = 0; _client.__update(true); } } } } else { _client.ReplayFailure = (_client.ReplayPending); _client._cascadeUpdateReplayCounterPending(false); if (_client != null && _client.ReplayPending == ____id) { _client.ReplayPending = (0); _client.ReplayCounter = (YPF.Comercial.RRCC.SUP.KeyGenerator.GenerateId()); _client.ReplayFailure = (____id); _client.__update(true); if (_downloadState != null) { _downloadState._update_os(); } } YPF.Comercial.RRCC.SUP.CRMMobileDesaDB.GetCallbackHandler().OnReplayFailure(_client); YPF.Comercial.RRCC.SUP.Direccion.GetCallbackHandler().OnReplayFailure(_client); } _call.Delete(); tran.Commit(); } catch (Sybase.Persistence.PersistenceException pe) { tran.Rollback(); throw pe; } catch (System.ApplicationException e) { tran.Rollback(); throw e; } //} }