Tipos de Actualización¶
Flexygo incluye diferentes formas de establecer acciones de Insertar, Actualizar y Eliminar objetos. Existen 4 modos diferentes.
| Modo de actualización | Descripción |
|---|---|
| Estándar | Realiza una inserción, actualización o eliminación directa en la base de datos, basada en las propiedades del objeto. |
| Proceso DLL | Nos permite crear una DLL para realizar la inserción, eliminación y actualización. |
| C# Embedido | Nos permite crear con un C# embedido la inserción, eliminación y actualización de un objeto |
| Procedimiento Almacenado XML | Nos permite realizar operaciones adicionales sin tener que crear un proceso DLL. |
| Procedimiento Almacenado JSON | Nos permite realizar operaciones adicionales sin tener que crear un proceso en una DLL |
| Ahora Freeware Stored | Realiza una inserción, actualización o eliminación basadas en los procedimientos almacenados de AHORA ERP (si no se encuentran realizada el modo estándar). En un objeto adicional se asume que el objeto principal realiza la inserción en la tabla adicional |
| No hace absolutamente nada | No hace nada :) |
Existe un quinto modo llamado Procedimiento Almacenado Ahora Freeware, que se usa cuando se trabaja con el modelo de datos de Ahora Freeware ERP.
Para los ejemplos, hemos creado un objeto llamado systmpTes basado en dos tablas llamadas Test (Tabla 2) y TestConf (Tabla 3).
| Columna | Descripción |
|---|---|
| TestId | int no nulo |
| Descrip | nvarchar(2000) no nulo |
| IdDoc | identidad bit |
| InsertUpdate | bit |
| User | nvarchar(50) permite nulo |
| InsertUpdateDate | datetime no nulo |
| Columna | Descripción |
|---|---|
| TestId | int no nulo |
| Config | nvarchar(50) permite nulo |
Proceso DLL¶
Procedimiento Almacenado XML (Fácil)¶
Procedimiento Almacenado XML (Avanzado)¶
Utiliza procedimientos almacenados optimizados para actualizar solo los campos que han cambiado.
Procedimiento Almacenado JSON¶
Procedimiento Almacenado Ahora Freeware¶
Usar solo con el modelo de datos de Ahora Freeware ERP.
Imports FLEXYGO.Configuration.Tokens
Imports FLEXYGO.Data
Imports FLEXYGO.Exceptions
Imports FLEXYGO.Objects
Imports FLEXYGO.Processing
Imports FLEXYGO.Processing.ProcessManager
Imports FLEXYGO.Utilities.General
Imports FLEXYGO.Utilities.General.Util
Public Class SampleDataProcesses
'''''' <summary>
'''''' Insert new object
'''''' </summary>
'''''' <param name="Entity">User Entity object with all info</param>
'''''' <param name="Ret">ProcessHelper for returning results</param>
Public Shared Function InsertObj(Entity As EntityObject, Ret As ProcessHelper) As Boolean
Try
If Not Entity.CanInsert Then
Ret.LastException = New LocalizedException("You do Not have enough credentials to insert this Object.")
Return False
End If
''''Do something here before insert
If Entity.InsertProcess(Entity.TableName, Settings.ObjectSettings.eUpdateType.Standard, "") Then
''''Do something here after insert
Ret.Success = True
Return True
Else
Ret.Success = False
Ret.LastException = Entity.LastException
Return False
End If
Catch ex As Exception
Ret.Success = False
Ret.LastException = ex
Return False
End Try
End Function
End Class
Public Shared Function UpdateObj(Entity As EntityObject, Ret As ProcessHelper) As Boolean
Try
If Not Entity.CanUpdate Then
Ret.LastException = New LocalizedException("You do Not have enough credentials to update this Object.")
Return False
End If
Dim lTabla As DataTable = Entity.GetData.Tables(0).GetChanges
''Dim OldValue As String = lTabla.Rows(0)("my_data_field", DataRowVersion.Original)
''Dim NewValue As String = lTabla.Rows(0)("my_data_field", DataRowVersion.Original)
''Use this sintax to compare old and new values
''''Do something here begore update.
If Entity.UpdateProcess(Settings.ObjectSettings.eUpdateType.Standard, "") Then
''''Do something here after update.
Ret.Success = True
Return True
Else
Ret.Success = False
Ret.LastException = Entity.LastException
Return False
End If
Catch ex As Exception
Ret.Success = False
Ret.LastException = ex
Return False
End Try
End Function
Public Shared Function DeleteObj(Entity As EntityObject, Ret As ProcessHelper) As Boolean
Try
If Not Entity.CanDelete Then
Ret.LastException = New LocalizedException("You do Not have enough credentials to delete this Object.")
Return False
End If
''Do something here before delete
If Entity.DeleteProcess(Entity.TableName, Settings.ObjectSettings.eUpdateType.Standard, "") Then
''Do something here after delete
Ret.Success = True
Return True
Else
Ret.Success = False
Ret.LastException = Entity.LastException
Return False
End If
Catch ex As Exception
Ret.Success = False
Ret.LastException = ex
Return False
End Try
End Function
CREATE PROCEDURE [dbo].[P_TestInsert_Stored]
@Values as XML OUTPUT,
@ContextVars as XML,
@RetValues as XML OUTPUT
AS
----------------------------------------------------------------------------------
--#NAME
-- P_TestInsert_Stored
--#CREATION
-- 07/01/2016
--#CLASIFICATION
-- Framework/systemObjects
--#DESCRIPTION
-- Used for Testing object insert through Flexygo Stored procedure
--#PARAMETERS
-- @Values : Object properties ,
-- @ContextVars: Flexygo ciontext variables,
-- @RetValues : Flexygo process Helper (CloseParamWindow,JSCode,JSFile,LastException,Params,Refresh,Success,SuccesMessage,WarningMessage)
--#OBSERVATIONS
-- Values XML Sample
-- < Row rowId="d4ec88a0-3129-4c5d-b5ac-8c9d2867db64" ObjectName="systmpTest">
-- < Property Name="TestId" Value="3" OldValue="" TableName="_Test" IsKey="True" />
-- < Property Name="Descrip" Value="test3" OldValue="" TableName="_Test" IsKey="False" />
-- < Property Name="IdDoc" Value="" OldValue="" TableName="_Test" IsKey="False" />
-- < Property Name="InsertUpdate" Value="False" OldValue="False" TableName="_Test" IsKey="False" />
-- < Property Name="Usuario" Value="" OldValue="" TableName="_Test" IsKey="False" />
-- < Property Name="FechaInsertUpdate" Value="14/02/2018 0:00:00" OldValue="14/02/2018 0:00:00" TableName="_Test" IsKey="False" />
-- < Property Name="Config" Value="config3" OldValue="" TableName="_Test_Conf" IsKey="False" />
-- </Row>
--
-- ContextVars XML Sample
-- < Row>
-- < Property Name="reference" Value="0" />
-- < Property Name="subReference" Value="0" />
-- < Property Name="currentRole" Value="Admins" />
-- < Property Name="currentRoleId" Value="admins" />
-- < Property Name="currentUserLogin" Value="admin" />
-- < Property Name="currentUserId" Value="1" />
-- < Property Name="currentUserFullName" Value="admin" />
-- < Property Name="currentUserCultureId" Value="en-gb" />
-- < Property Name="currentUserLang" Value="en" />
-- < Property Name="currentUserEmail" Value="info@ahora.es.com" />
-- </Row>
--
-- Return vars XML Sample
-- <Property Success="False" SuccessMessage="" WarningMessage="" JSCode="" JSFile="" CloseParamWindow="False" refresh="False" />
--
--#CHANGES
-- 13/02/2018- David Miralpeix
----------------------------------------------------------------------------------
BEGIN TRY
--Declare field variables to load
DECLARE @TestId int,
@Descrip nvarchar(2000),
@IdDoc int,
@InsertUpdate bit,
@Usuario nvarchar(50),
@FechaInsertUpdate datetime ,
@Config nvarchar(50)
SET @TestId=@Values.value('(/Row/Property[@Name=''TestId'']/@Value)[1]', 'int' )
SET @Descrip=@Values.value('(/Row/Property[@Name=''Descrip'']/@Value)[1]', 'nvarchar(2000)' )
SET @Usuario=@Values.value('(/Row/Property[@Name=''Usuario'']/@Value)[1]', 'nvarchar(50)' )
SET @InsertUpdate=@Values.value('(/Row/Property[@Name=''InsertUpdate'']/@Value)[1]', 'bit' )
SET @FechaInsertUpdate=@Values.value('(/Row/Property[@Name=''FechaInsertUpdate'']/@Value)[1]', 'datetime' )
SET @Config=@Values.value('(/Row/Property[@Name=''Config'']/@Value)[1]', 'nvarchar(50)' )
/* perform process (insert fields into different tables) */
INSERT INTO _Test (TestId,Descrip, Usuario, InsertUpdate, FechaInsertUpdate)
SELECT @TestId, @DEscrip ,isnull(@Usuario,'nouser') ,@InsertUpdate ,isnull(@FechaInsertUpdate ,getdate())
INSERT INTO _Test_conf (TestId, Config)
SELECT @TestId , @Config
/* change Keys */
-- When Property has Value replacing Value
--SET @Values.modify('replace value of (/Row/Property[@Name=''TesId'']/@Value)[1] with "sysNavigationNode"')
-- When Property has not Value inserting Value
-- SET @Values.modify('insert attribute Value {sql:variable("@TesId")} into (/Row/Property[@Name=''TesId'' and empty(@Value)])[1]')
/* Process return values*/
SET @RetValues.modify('replace value of (/Property/@Success)[1] with 1')
SET @RetValues.modify('replace value of (/Property/@SuccessMessage)[1] with "All went fine"')
/* Return 0 if error */
RETURN 1
END TRY
BEGIN CATCH
IF @@TRANCOUNT >0 BEGIN
ROLLBACK TRAN
END
DECLARE @CatchError NVARCHAR(MAX)
SET @CatchError=dbo.funprintError(ERROR_MESSAGE(),ERROR_NUMBER(),ERROR_PROCEDURE(),@@PROCID ,ERROR_LINE())
RAISERROR(@CatchError,12,1)
SET @RetValues.modify('replace value of (/Property/@Success)[1] with 0')
SET @RetValues.modify('replace value of (/Property/@SuccessMessage)[1] with "Something went wrong"')
RETURN 0
END CATCH
CREATE PROCEDURE [dbo].[P_TestUpdate_Stored]
@Values as XML OUTPUT,
@ContextVars as XML,
@RetValues as XML OUTPUT
AS
----------------------------------------------------------------------------------
--#NAME
-- P_TestUpdate_Stored
--#CREATION
-- 07/01/2016
--#CLASIFICATION
-- Framework/systemObjects
--#DESCRIPTION
-- Used for Testing object update through Flexygo Stored procedure
--#PARAMETERS
-- @Values : Object properties ,
-- @ContextVars: Flexygo ciontext variables,
-- @RetValues : Flexygo process Helper (CloseParamWindow,JSCode,JSFile,LastException,Params,Refresh,Success,SuccesMessage,WarningMessage)
--#OBSERVATIONS
-- Values XML Sample
--< Row rowId="d4ec88a0-3129-4c5d-b5ac-8c9d2867db64" ObjectName="systmpTest">
-- < Property Name="TestId" Value="3" OldValue="3" TableName="_Test" IsKey="True" />
-- < Property Name="Descrip" Value="test4" OldValue="test3" TableName="_Test" IsKey="False" />
-- < Property Name="IdDoc" Value="" OldValue="" TableName="_Test" IsKey="False" />
-- < Property Name="InsertUpdate" Value="False" OldValue="False" TableName="_Test" IsKey="False" />
-- < Property Name="Usuario" Value="" OldValue="" TableName="_Test" IsKey="False" />
-- < Property Name="FechaInsertUpdate" Value="14/02/2018 0:00:00" OldValue="14/02/2018 0:00:00" TableName="_Test" IsKey="False" />
-- < Property Name="Config" Value="config4" OldValue="Config3" TableName="_Test_Conf" IsKey="False" />
--< /Row>
--
-- ContextVars XML Sample
-- < Row>
-- < Property Name="reference" Value="0" />
-- < Property Name="subReference" Value="0" />
-- < Property Name="currentRole" Value="Admins" />
-- < Property Name="currentRoleId" Value="admins" />
-- < Property Name="currentUserLogin" Value="admin" />
-- < Property Name="currentUserId" Value="1" />
-- < Property Name="currentUserFullName" Value="admin" />
-- < Property Name="currentUserCultureId" Value="en-gb" />
-- < Property Name="currentUserLang" Value="en" />
-- < Property Name="currentUserEmail" Value="info@ahora.es.com" />
-- < /Row>
--
-- Return vars XML Sample
-- < Property Success="False" SuccessMessage="" WarningMessage="" JSCode="" JSFile="" CloseParamWindow="False" refresh="False" />
--
--#CHANGES
-- 13/02/2018- David Miralpeix
----------------------------------------------------------------------------------
BEGIN TRY
--Declare field variables to load
DECLARE @TestId int,
@Descrip nvarchar(2000),
@IdDoc int,
@InsertUpdate bit,
@Usuario nvarchar(50),
@FechaInsertUpdate datetime ,
@Config nvarchar(50),
--OldValues
@OldTestId int
SET @OldTestId=@Values.value('(/Row/Property[@Name=''TestId'']/@OldValue)[1]', 'int' )
SET @TestId=@Values.value('(/Row/Property[@Name=''TestId'']/@Value)[1]', 'int' )
SET @Descrip=@Values.value('(/Row/Property[@Name=''Descrip'']/@Value)[1]', 'nvarchar(2000)' )
SET @Usuario=@Values.value('(/Row/Property[@Name=''Usuario'']/@Value)[1]', 'nvarchar(50)' )
SET @InsertUpdate=0
SET @FechaInsertUpdate=GETDATE()
SET @Config=@Values.value('(/Row/Property[@Name=''Config'']/@Value)[1]', 'nvarchar(50)' )
/* perform process (insert fields into different tables) */
UPDATE _Test set TestId=@TestId,Descrip=@Descrip, Usuario=@Usuario, @InsertUpdate=0, FechaInsertUpdate=@FechaInsertUpdate where TestId=@OldTestId
UPDATE _Test_conf set TestId=@TestId,Config=@Config where TestId=@OldTestId
/* change Keys if necesary*/
--SET @Values.modify('replace value of (/Row/Property[@Name=''TesId'']/@Value)[1] with @TestId')
/* Process return values*/
SET @RetValues.modify('replace value of (/Property/@Success)[1] with 1')
SET @RetValues.modify('replace value of (/Property/@SuccessMessage)[1] with "All went fine"')
RETURN 1
END TRY
BEGIN CATCH
IF @@TRANCOUNT > 0 BEGIN
ROLLBACK TRAN
END
DECLARE @CatchError NVARCHAR(MAX)
SET @CatchError=dbo.funprintError(ERROR_MESSAGE(),ERROR_NUMBER(),ERROR_PROCEDURE(),@@PROCID ,ERROR_LINE())
RAISERROR(@CatchError,12,1)
SET @RetValues.modify('replace value of (/Property/@Success)[1] with 0')
SET @RetValues.modify('replace value of (/Property/@SuccessMessage)[1] with "Something went wrong"')
RETURN 0
END CATCH
CREATE PROCEDURE [dbo].[P_TestDelete_Stored]
@Values as XML OUTPUT,
@ContextVars as XML,
@RetValues as XML OUTPUT
AS
----------------------------------------------------------------------------------
--#NAME
-- P_TestDelete_Stored
--#CREATION
-- 07/01/2016
--#CLASIFICATION
-- Framework/systemObjects
--#DESCRIPTION
-- Used for Testing object delete through Flexygo Stored procedure
--#PARAMETERS
-- @Values : Object properties ,
-- @ContextVars: Flexygo ciontext variables,
-- @RetValues : Flexygo process Helper (CloseParamWindow,JSCode,JSFile,LastException,Params,Refresh,Success,SuccesMessage,WarningMessage)
--#OBSERVATIONS
-- Values XML Sample
-- < Row rowId="d4ec88a0-3129-4c5d-b5ac-8c9d2867db64" ObjectName="systmpTest">
-- < Property Name="TestId" Value="3" OldValue="" TableName="_Test" IsKey="True" />
-- < Property Name="Descrip" Value="test3" OldValue="" TableName="_Test" IsKey="False" />
-- < Property Name="IdDoc" Value="" OldValue="" TableName="_Test" IsKey="False" />
-- < Property Name="InsertUpdate" Value="False" OldValue="False" TableName="_Test" IsKey="False" />
-- < Property Name="Usuario" Value="" OldValue="" TableName="_Test" IsKey="False" />
-- < Property Name="FechaInsertUpdate" Value="14/02/2018 0:00:00" OldValue="14/02/2018 0:00:00" TableName="_Test" IsKey="False" />
-- < Property Name="Config" Value="config3" OldValue="" TableName="_Test_Conf" IsKey="False" />
-- < /Row>
--
-- ContextVars XML Sample
-- < Row>
-- < Property Name="reference" Value="0" />
-- < Property Name="subReference" Value="0" />
-- < Property Name="currentRole" Value="Admins" />
-- < Property Name="currentRoleId" Value="admins" />
-- < Property Name="currentUserLogin" Value="admin" />
-- < Property Name="currentUserId" Value="1" />
-- < Property Name="currentUserFullName" Value="admin" />
-- < Property Name="currentUserCultureId" Value="en-gb" />
-- < Property Name="currentUserLang" Value="en" />
-- < Property Name="currentUserEmail" Value="info@ahora.es.com" />
-- < /Row>
--
-- Return vars XML Sample
-- < Property Success="False" SuccessMessage="" WarningMessage="" JSCode="" JSFile="" CloseParamWindow="False" refresh="False" />
--
--#CHANGES
-- 13/02/2018- David Miralpeix
----------------------------------------------------------------------------------
BEGIN TRY
--Declare field variables to load
DECLARE @TestId int,
@Descrip nvarchar(2000),
@IdDoc int,
@InsertUpdate bit,
@Usuario nvarchar(50),
@FechaInsertUpdate datetime ,
@Config nvarchar(50)
SET @TestId=@Values.value('(/Row/Property[@Name=''TestId'']/@Value)[1]', 'int' )
SET @Descrip=@Values.value('(/Row/Property[@Name=''Descrip'']/@Value)[1]', 'nvarchar(2000)' )
SET @Usuario=@Values.value('(/Row/Property[@Name=''Usuario'']/@Value)[1]', 'nvarchar(50)' )
SET @InsertUpdate=@Values.value('(/Row/Property[@Name=''InsertUpdate'']/@Value)[1]', 'bit' )
SET @FechaInsertUpdate=@Values.value('(/Row/Property[@Name=''FechaInsertUpdate'']/@Value)[1]', 'datetime' )
SET @Config=@Values.value('(/Row/Property[@Name=''Config'']/@Value)[1]', 'nvarchar(50)' )
/* perform process (delete fields into different tables) */
Delete from _Test where TestId=@TestId
Delete from _Test_Conf where TestId=@TestId
/* Process return values*/
SET @RetValues.modify('replace value of (/Property/@Success)[1] with 1')
SET @RetValues.modify('replace value of (/Property/@SuccessMessage)[1] with "All went fine"')
/* Return 0 if error */
RETURN 1
END TRY
BEGIN CATCH
IF @@TRANCOUNT > 0 BEGIN
ROLLBACK TRAN
END
DECLARE @CatchError NVARCHAR(MAX)
SET @CatchError=dbo.funprintError(ERROR_MESSAGE(),ERROR_NUMBER(),ERROR_PROCEDURE(),@@PROCID ,ERROR_LINE())
RAISERROR(@CatchError,12,1)
SET @RetValues.modify('replace value of (/Property/@Success)[1] with 0')
SET @RetValues.modify('replace value of (/Property/@SuccessMessage)[1] with "something went wrong"')
RETURN 0
END CATCH
CREATE PROCEDURE [dbo].[P_TestInsert_Stored_advanced]
@Values as XML OUTPUT,
@ContextVars as XML,
@RetValues as XML OUTPUT
AS
----------------------------------------------------------------------------------
--#NAME
-- P_TestInsert_Stored
--#CREATION
-- 07/01/2016
--#CLASIFICATION
-- Framework/systemObjects
--#DESCRIPTION
-- Used for Testing object insert through Flexygo Stored procedure
--#PARAMETERS
-- @Values : Object properties ,
-- @ContextVars: Flexygo ciontext variables,
-- @RetValues : Flexygo process Helper (CloseParamWindow,JSCode,JSFile,LastException,Params,Refresh,Success,SuccesMessage,WarningMessage)
--#OBSERVATIONS
-- Values XML Sample
-- < Row rowId="d4ec88a0-3129-4c5d-b5ac-8c9d2867db64" ObjectName="systmpTest">
-- < Property Name="TestId" Value="3" OldValue="" TableName="_Test" IsKey="True" />
-- < Property Name="Descrip" Value="test3" OldValue="" TableName="_Test" IsKey="False" />
-- < Property Name="IdDoc" Value="" OldValue="" TableName="_Test" IsKey="False" />
-- < Property Name="InsertUpdate" Value="False" OldValue="False" TableName="_Test" IsKey="False" />
-- < Property Name="Usuario" Value="" OldValue="" TableName="_Test" IsKey="False" />
-- < Property Name="FechaInsertUpdate" Value="14/02/2018 0:00:00" OldValue="14/02/2018 0:00:00" TableName="_Test" IsKey="False" />
-- < Property Name="Config" Value="config3" OldValue="" TableName="_Test_Conf" IsKey="False" />
-- < /Row>
--
-- ContextVars XML Sample
-- < Row>
-- < Property Name="reference" Value="0" />
-- < Property Name="subReference" Value="0" />
-- < Property Name="currentRole" Value="Admins" />
-- < Property Name="currentRoleId" Value="admins" />
-- < Property Name="currentUserLogin" Value="admin" />
-- < Property Name="currentUserId" Value="1" />
-- < Property Name="currentUserFullName" Value="admin" />
-- < Property Name="currentUserCultureId" Value="en-gb" />
-- < Property Name="currentUserLang" Value="en" />
-- < Property Name="currentUserEmail" Value="info@ahora.es.com" />
-- < /Row>
--
-- Return vars XML Sample
-- < Property Success="False" SuccessMessage="" WarningMessage="" JSCode="" JSFile="" CloseParamWindow="False" refresh="False" />
--
--#CHANGES
-- 13/02/2018- David Miralpeix
----------------------------------------------------------------------------------
BEGIN TRY
--Declare field variables to load
DECLARE @TestId int,
@Descrip nvarchar(2000),
@IdDoc int,
@InsertUpdate bit,
@Usuario nvarchar(50),
@FechaInsertUpdate datetime ,
@Config nvarchar(50)
/* load XML values into table @TableValues*/
DECLARE @XmlDoc int
DECLARE @TableValues TABLE (Name nvarchar(50) ,Value nvarchar(max),OldValue nvarchar(max) ,TableName nvarchar(255) , IsKey Bit )
EXEC sp_xml_preparedocument @XmlDoc OUTPUT, @Values
INSERT INTO @TableValues (Name, Value, OldValue, TableName , IsKey)
SELECT Name,Value,OldValue, TableName, IsKey FROM OPENXML(@XmlDoc,'/Row/Property',1)
WITH(Name nvarchar(250) '@Name',Value nvarchar(max) '@Value',OldValue nvarchar(max) '@OldValue' ,TableName nvarchar(255) '@TableName', IsKey Bit '@IsKey')
EXEC sp_xml_removedocument @XmlDoc
/* load Values into variables */
SELECT @TestId =Value FROM @TableValues WHERE Name='TestId'
SELECT @DEscrip =Value FROM @TableValues WHERE Name='Descrip'
SELECT @Usuario =Value FROM @TableValues WHERE Name='Usuario'
SELECT @InsertUpdate =Value FROM @TableValues WHERE Name='InsertUpdate'
SELECT @FechaInsertUpdate =Value FROM @TableValues WHERE Name='FechaInsertUpdate'
SELECT @Config =Value FROM @TableValues WHERE Name='Config'
/* perform process (insert fields into different tables) */
INSERT INTO _Test (TestId,Descrip, Usuario, InsertUpdate, FechaInsertUpdate)
SELECT @TestId, @DEscrip ,isnull(@Usuario,'nouser') ,@InsertUpdate ,isnull(@FechaInsertUpdate ,getdate())
INSERT INTO _Test_conf (TestId, Config)
SELECT @TestId , @Config
/* change Keys */
-- When Property has Value replacing Value
--SET @Values.modify('replace value of (/Row/Property[@Name=''TesId'']/@Value)[1] with "sysNavigationNode"')
-- When Property has not Value inserting Value
-- SET @Values.modify('insert attribute Value {sql:variable("@TesId")} into (/Row/Property[@Name=''TesId'' and empty(@Value)])[1]')
/* Process return values*/
SET @RetValues.modify('replace value of (/Property/@Success)[1] with 1')
SET @RetValues.modify('replace value of (/Property/@SuccessMessage)[1] with "All went fine"')
/* Return 0 if error */
RETURN 1
END TRY
BEGIN CATCH
IF @@TRANCOUNT > 0 BEGIN
ROLLBACK TRAN
END
DECLARE @CatchError NVARCHAR(MAX)
SET @CatchError=dbo.funprintError(ERROR_MESSAGE(),ERROR_NUMBER(),ERROR_PROCEDURE(),@@PROCID ,ERROR_LINE())
RAISERROR(@CatchError,12,1)
SET @RetValues.modify('replace value of (/Property/@Success)[1] with 0')
SET @RetValues.modify('replace value of (/Property/@SuccessMessage)[1] with "Something went wrong"')
RETURN 0
END CATCH
ALTER PROCEDURE [dbo].[P_TestUpdate_Stored_Advanced]
@Values as XML OUTPUT,
@ContextVars as XML,
@RetValues as XML OUTPUT
AS
----------------------------------------------------------------------------------
--#NAME
-- P_TestUpdate_Stored
--#CREATION
-- 07/01/2016
--#CLASIFICATION
-- Framework/systemObjects
--#DESCRIPTION
-- Used for Testing object update through Flexygo Stored procedure
--#PARAMETERS
-- @Values : Object properties ,
-- @ContextVars: Flexygo ciontext variables,
-- @RetValues : Flexygo process Helper (CloseParamWindow,JSCode,JSFile,LastException,Params,Refresh,Success,SuccesMessage,WarningMessage)
--#OBSERVATIONS
-- Values XML Sample
--< Row rowId="d4ec88a0-3129-4c5d-b5ac-8c9d2867db64" ObjectName="systmpTest">
-- < Property Name="TestId" Value="3" OldValue="3" TableName="_Test" IsKey="True" />
-- < Property Name="Descrip" Value="test4" OldValue="test3" TableName="_Test" IsKey="False" />
-- < Property Name="IdDoc" Value="" OldValue="" TableName="_Test" IsKey="False" />
-- < Property Name="InsertUpdate" Value="False" OldValue="False" TableName="_Test" IsKey="False" />
-- < Property Name="Usuario" Value="" OldValue="" TableName="_Test" IsKey="False" />
-- < Property Name="FechaInsertUpdate" Value="14/02/2018 0:00:00" OldValue="14/02/2018 0:00:00" TableName="_Test" IsKey="False" />
-- < Property Name="Config" Value="config4" OldValue="Config3" TableName="_Test_Conf" IsKey="False" />
--< /Row>
--
-- ContextVars XML Sample
-- < Row>
-- < Property Name="reference" Value="0" />
-- < Property Name="subReference" Value="0" />
-- < Property Name="currentRole" Value="Admins" />
-- < Property Name="currentRoleId" Value="admins" />
-- < Property Name="currentUserLogin" Value="admin" />
-- < Property Name="currentUserId" Value="1" />
-- < Property Name="currentUserFullName" Value="admin" />
-- < Property Name="currentUserCultureId" Value="en-gb" />
-- < Property Name="currentUserLang" Value="en" />
-- < Property Name="currentUserEmail" Value="info@ahora.es.com" />
-- < /Row>
--
-- Return vars XML Sample
-- < Property Success="False" SuccessMessage="" WarningMessage="" JSCode="" JSFile="" CloseParamWindow="False" refresh="False" />
--
--#CHANGES
-- 13/02/2018- David Miralpeix
----------------------------------------------------------------------------------
BEGIN TRY
--Declare field variables to load
DECLARE @TestId int,
@Descrip nvarchar(2000),
@IdDoc int,
@InsertUpdate bit,
@Usuario nvarchar(50),
@FechaInsertUpdate datetime ,
@Config nvarchar(50),
--OldValues
@OldTestId int ,
@OldDescrip nvarchar(2000),
@OldIdDoc int,
@OldInsertUpdate bit,
@OldUsuario nvarchar(50),
@OldFechaInsertUpdate datetime ,
@OldConfig nvarchar(50)
/* load XML values into table @TableValues*/
DECLARE @XmlDoc int
DECLARE @TableValues TABLE (Name nvarchar(50) ,Value nvarchar(max),OldValue nvarchar(max) ,TableName nvarchar(255) , IsKey Bit )
EXEC sp_xml_preparedocument @XmlDoc OUTPUT, @Values
INSERT INTO @TableValues (Name, Value, OldValue, TableName , IsKey)
SELECT Name,Value,OldValue, TableName, IsKey FROM OPENXML(@XmlDoc,'/Row/Property',1)
WITH(Name nvarchar(250) '@Name',Value nvarchar(max) '@Value',OldValue nvarchar(max) '@OldValue' ,TableName nvarchar(255) '@TableName', IsKey Bit '@IsKey')
EXEC sp_xml_removedocument @XmlDoc
/* load Values into variables */
SELECT @TestId =Value, @OldTestId =OldValue FROM @TableValues WHERE Name='TestId'
SELECT @Descrip =Value, @OldDescrip =OldValue FROM @TableValues WHERE Name='Descrip'
SELECT @Usuario =Value, @OldUsuario =OldValue FROM @TableValues WHERE Name='Usuario'
SELECT @InsertUpdate =Value, @OldInsertUpdate =OldValue FROM @TableValues WHERE Name='InsertUpdate'
SELECT @FechaInsertUpdate=Value, @OldFechaInsertUpdate =OldValue FROM @TableValues WHERE Name='FechaInsertUpdate'
SELECT @Config =Value, @OldConfig =OldValue FROM @TableValues WHERE Name='Config'
/* build update string for Table 1*/
DECLARE @UpdateString nvarchar(max)
SELECT @UpdateString =
CASE WHEN ISNULL(OldValue,0) < > ISNULL(Value,0) THEN 'TestId=' + Value +','
ELSE '' END FROM @TableValues WHERE Name='TestId'
SELECT @UpdateString =@UpdateString +
CASE WHEN ISNULL(OldValue,'') < > ISNULL(Value,'')
THEN 'Descrip='+ CASE WHEN Value IS NULL THEN 'NULL' ELSE '''' + Value +'''' END +','
ELSE '' END FROM @TableValues WHERE Name='Descrip'
SELECT @UpdateString =@UpdateString +
CASE WHEN ISNULL(OldValue,'') < > ISNULL(Value,'')
THEN 'Usuario='+ CASE WHEN Value IS NULL THEN 'NULL' ELSE '''' + Value +'''' END +','
ELSE '' END FROM @TableValues WHERE Name='Usuario'
SELECT @UpdateString =@UpdateString + ' InsertUpdate=0,'
SELECT @UpdateString =@UpdateString + 'FechaInsertUpdate=''' + CAst(GetDAte() as nvarchar) +''''
SELECT @UpdateString = 'UPDATE _Test SET ' + @UpdateString + ' WHERE TestId=' + CAST (ISNULL(@OldTestId ,'') as nVarchar(50) )
/* build update string for Table 1*/
DECLARE @UpdateString2 nvarchar(max)
SELECT @UpdateString2 =
CASE WHEN ISNULL(OldValue,0) < > ISNULL(Value,0) THEN 'TestId=' + Value +','
ELSE '' END FROM @TableValues WHERE Name='TestId'
SELECT @UpdateString2 =@UpdateString2 +
CASE WHEN ISNULL(OldValue,'') < > ISNULL(Value,'')
THEN 'Config='+ CASE WHEN Value IS NULL THEN 'NULL' ELSE '''' + Value +'''' END +','
ELSE '' END FROM @TableValues WHERE Name='Config'
SELECT @UpdateString2 = LEFT(@UpdateString2 , LEN(@UpdateString2 )-1) /*remove las coma*/
SELECT @UpdateString2 = 'UPDATE _Test_Conf SET ' + @UpdateString2 + ' WHERE TestId=' + CAST (ISNULL(@OldTestId ,'') as nVarchar(50) )
/* perform process (update fields into different tables) */
EXECUTE ( @UpdateString )
EXECUTE ( @UpdateString2 )
/* perform process (insert fields into different tables) */
UPDATE _Test set TestId=@TestId,Descrip=@Descrip, Usuario=@Usuario, @InsertUpdate=0, FechaInsertUpdate=@FechaInsertUpdate where TestId=@OldTestId
UPDATE _Test_conf set TestId=@TestId,Config=@Config where TestId=@OldTestId
/* change Keys if necesary*/
--SET @Values.modify('replace value of (/Row/Property[@Name=''TesId'']/@Value)[1] with sql:variable("@TestId")')
/* Process return values*/
SET @RetValues.modify('replace value of (/Property/@Success)[1] with 1')
SET @RetValues.modify('replace value of (/Property/@SuccessMessage)[1] with "All went fine"')
RETURN 1
END TRY
BEGIN CATCH
IF @@TRANCOUNT > 0 BEGIN
ROLLBACK TRAN
END
DECLARE @CatchError NVARCHAR(MAX)
SET @CatchError=dbo.funprintError(ERROR_MESSAGE(),ERROR_NUMBER(),ERROR_PROCEDURE(),@@PROCID ,ERROR_LINE())
RAISERROR(@CatchError,12,1)
SET @RetValues.modify('replace value of (/Property/@Success)[1] with 0')
SET @RetValues.modify('replace value of (/Property/@SuccessMessage)[1] with "Something went wrong"')
RETURN 0
END CATCH
CREATE PROCEDURE [dbo].[P_TestDelete_Stored_Advanced]
@Values as XML OUTPUT,
@ContextVars as XML,
@RetValues as XML OUTPUT
AS
----------------------------------------------------------------------------------
--#NAME
-- P_TestDelete_Stored
--#CREATION
-- 07/01/2016
--#CLASIFICATION
-- Framework/systemObjects
--#DESCRIPTION
-- Used for Testing object delete through Flexygo Stored procedure
--#PARAMETERS
-- @Values : Object properties ,
-- @ContextVars: Flexygo ciontext variables,
-- @RetValues : Flexygo process Helper (CloseParamWindow,JSCode,JSFile,LastException,Params,Refresh,Success,SuccesMessage,WarningMessage)
--#OBSERVATIONS
-- Values XML Sample
-- < Row rowId="d4ec88a0-3129-4c5d-b5ac-8c9d2867db64" ObjectName="systmpTest">
-- < Property Name="TestId" Value="3" OldValue="" TableName="_Test" IsKey="True" />
-- < Property Name="Descrip" Value="test3" OldValue="" TableName="_Test" IsKey="False" />
-- < Property Name="IdDoc" Value="" OldValue="" TableName="_Test" IsKey="False" />
-- < Property Name="InsertUpdate" Value="False" OldValue="False" TableName="_Test" IsKey="False" />
-- < Property Name="Usuario" Value="" OldValue="" TableName="_Test" IsKey="False" />
-- < Property Name="FechaInsertUpdate" Value="14/02/2018 0:00:00" OldValue="14/02/2018 0:00:00" TableName="_Test" IsKey="False" />
-- < Property Name="Config" Value="config3" OldValue="" TableName="_Test_Conf" IsKey="False" />
-- < /Row>
--
-- ContextVars XML Sample
-- < Row>
-- < Property Name="reference" Value="0" />
-- < Property Name="subReference" Value="0" />
-- < Property Name="currentRole" Value="Admins" />
-- < Property Name="currentRoleId" Value="admins" />
-- < Property Name="currentUserLogin" Value="admin" />
-- < Property Name="currentUserId" Value="1" />
-- < Property Name="currentUserFullName" Value="admin" />
-- < Property Name="currentUserCultureId" Value="en-gb" />
-- < Property Name="currentUserLang" Value="en" />
-- < Property Name="currentUserEmail" Value="info@ahora.es.com" />
-- < /Row>
--
-- Return vars XML Sample
-- < Property Success="False" SuccessMessage="" WarningMessage="" JSCode="" JSFile="" CloseParamWindow="False" refresh="False" />
--
--#CHANGES
-- 13/02/2018- David Miralpeix
----------------------------------------------------------------------------------
BEGIN TRY
--Declare field variables to load
DECLARE @TestId int,
@Descrip nvarchar(2000),
@IdDoc int,
@InsertUpdate bit,
@Usuario nvarchar(50),
@FechaInsertUpdate datetime ,
@Config nvarchar(50)
/* load XML values into table @TableValues*/
DECLARE @XmlDoc int
DECLARE @TableValues TABLE (Name nvarchar(50) ,Value nvarchar(max),OldValue nvarchar(max) ,TableName nvarchar(255) , IsKey Bit )
EXEC sp_xml_preparedocument @XmlDoc OUTPUT, @Values
INSERT INTO @TableValues (Name, Value, OldValue, TableName , IsKey)
SELECT Name,Value,OldValue, TableName, IsKey FROM OPENXML(@XmlDoc,'/Row/Property',1)
WITH(Name nvarchar(250) '@Name',Value nvarchar(max) '@Value',OldValue nvarchar(max) '@OldValue' ,TableName nvarchar(255) '@TableName', IsKey Bit '@IsKey')
EXEC sp_xml_removedocument @XmlDoc
/* load Values into variables */
SELECT @TestId =Value FROM @TableValues WHERE Name='TestId'
SELECT @DEscrip =Value FROM @TableValues WHERE Name='Descrip'
SELECT @Usuario =Value FROM @TableValues WHERE Name='Usuario'
SELECT @InsertUpdate =Value FROM @TableValues WHERE Name='InsertUpdate'
SELECT @FechaInsertUpdate =Value FROM @TableValues WHERE Name='FechaInsertUpdate'
SELECT @Config =Value FROM @TableValues WHERE Name='Config'
/* perform process (delete fields into different tables) */
Delete from _Test where TestId=@TestId
Delete from _Test_Conf where TestId=@TestId
/* Process return values*/
SET @RetValues.modify('replace value of (/Property/@Success)[1] with 1')
SET @RetValues.modify('replace value of (/Property/@SuccessMessage)[1] with "All went fine"')
/* Return 0 if error */
RETURN 1
END TRY
BEGIN CATCH
IF @@TRANCOUNT > 0 BEGIN
ROLLBACK TRAN
END
DECLARE @CatchError NVARCHAR(MAX)
SET @CatchError=dbo.funprintError(ERROR_MESSAGE(),ERROR_NUMBER(),ERROR_PROCEDURE(),@@PROCID ,ERROR_LINE())
RAISERROR(@CatchError,12,1)
SET @RetValues.modify('replace value of (/Property/@Success)[1] with 0')
SET @RetValues.modify('replace value of (/Property/@SuccessMessage)[1] with "something went wrong"')
RETURN 0
END CATCH
CREATE PROCEDURE [dbo].[P_TestInsert_Stored]
@Values as nvarchar(max) OUTPUT,
@RetValues as nvarchar(max) OUTPUT
AS
----------------------------------------------------------------------------------
--#NAME
-- P_TestInsert_Stored
--#PARAMETERS
-- @Values OUTPUT (Required) : Object properties values,
-- @OldValues (Optional) : Old object properties values,
-- @Schema (Optional) : Schema object properties,
-- @ContextVars (Optional): Flexygo context variables,
-- @RetValues OUTPUT (Required) : Flexygo process Helper
--#OBSERVATIONS
-- Values JSON Sample
-- {
-- "TestId": 1,
-- "Descrip": "Test",
-- "IdDoc": null,
-- "InsertUpdate": null,
-- "User": "admin",
-- "InsertUpdateDate": "2025-04-23T16:23:00",
-- "Config": "TestConfig"
-- }
--
-- Old Values JSON Sample
-- {
-- "TestId": 1,
-- "Descrip": "Test",
-- "IdDoc": null,
-- "InsertUpdate": null,
-- "User": "admin",
-- "InsertUpdateDate": "2025-04-23T16:23:00",
-- "Config": null
-- }
--
-- Schema JSON Sample
-- {
-- "RowId": "714a1a4b-b2ce-4f4b-8f5c-a7acc274da85",
-- "ObjectName": "Test",
-- "Schema": {
-- "TestId": {
-- "Name": "TestId",
-- "Value": 1,
-- "OldValue": null,
-- "TableName": "Test",
-- "IsKey": true
-- },
-- "Descrip": {
-- "Name": "Descrip",
-- "Value": "Test",
-- "OldValue": null,
-- "TableName": "Test",
-- "IsKey": false
-- },
-- "IdDoc": {
-- "Name": "IdDoc",
-- "Value": null,
-- "OldValue": null,
-- "TableName": "Test",
-- "IsKey": false
-- },
-- "InsertUpdate": {
-- "Name": "InsertUpdate",
-- "Value": null,
-- "OldValue": null,
-- "TableName": "Test",
-- "IsKey": false
-- },
-- "User": {
-- "Name": "User",
-- "Value": "admin",
-- "OldValue": null,
-- "TableName": "Test",
-- "IsKey": false
-- },
-- "InsertUpdateDate": {
-- "Name": "InsertUpdateDate",
-- "Value": "2025-04-23T16:23:00",
-- "OldValue": null,
-- "TableName": "Test",
-- "IsKey": false
-- },
-- "Config": {
-- "Name": "Config",
-- "Value": "TestConfig",
-- "OldValue": null,
-- "TableName": "Test_Conf",
-- "IsKey": false
-- }
-- }
-- }
--
-- ContextVars JSON Sample
-- {
-- "currentReference": "0",
-- "currentSubreference": "0",
-- "currentRole": "Admins",
-- "currentRoleId": "admins",
-- "currentUserLogin": "admin",
-- "currentUserId": "1",
-- "currentUserFullName": "Admin Admin",
-- "currentUserCultureId": "en-gb",
-- "currentUserLang": "en",
-- "currentUserEmail": "mail@mail.es.com"
-- }
--
-- Return vars JSON Sample
-- {
-- "Success": false,
-- "SuccessMessage": "",
-- "WarningMessage": "",
-- "LastException": null,
-- "LastAfterProcessName": null,
-- "LastProcessName": null,
-- "MoreProcesses": false,
-- "JSCode": "",
-- "JSFile": "",
-- "Data": {},
-- "CloseParamWindow": false,
-- "ClearSelectionBag": false,
-- "Refresh": false,
-- "LastExecutedProcess": null
-- }
----------------------------------------------------------------------------------
BEGIN TRY
--Declare field variables to load
DECLARE @TestId INT,
@Descrip NVARCHAR(2000),
@InsertUpdate BIT,
@User NVARCHAR(50),
@InsertUpdateDate DATETIME,
@Config NVARCHAR(50)
SELECT
@TestId = [TestId],
@Descrip = [Descrip],
@InsertUpdate = [InsertUpdate],
@User = [User],
@InsertUpdateDate = [InsertUpdateDate],
@Config = [Config]
FROM OPENJSON(@Values)
WITH (
TestId INT '$.TestId',
Descrip NVARCHAR(2000) '$.Descrip',
InsertUpdate BIT '$.InsertUpdate',
[User] NVARCHAR(50) '$.User',
InsertUpdateDate DATETIME '$.InsertUpdateDate',
Config NVARCHAR(50) '$.Config')
-- Insert register
INSERT INTO Test ([TestId], [Descrip], [InsertUpdate], [User], [InsertUpdateDate])
Select @TestId, @Descrip, isnull(@InsertUpdate,0), @User, @InsertUpdateDate
INSERT INTO Test_Conf([TestId], [Config])
Select @TestId, @Config
-- Change Keys
SET @Values = JSON_MODIFY(@Values, '$.TestId', @TestId);
-- Process return values
SET @RetValues = JSON_MODIFY(@RetValues, '$.Success', 1);
SET @RetValues = JSON_MODIFY(@RetValues, '$.SuccessMessage', 'All went fine');
RETURN 1
END TRY
BEGIN CATCH
IF @@TRANCOUNT >0 BEGIN
ROLLBACK TRAN
END
SET @RetValues = JSON_MODIFY(@RetValues, '$.Success', 0);
DECLARE @CatchError NVARCHAR(MAX)
SET @CatchError=dbo.funprintError(ERROR_MESSAGE(),ERROR_NUMBER(),ERROR_PROCEDURE(),@@PROCID ,ERROR_LINE())
RAISERROR(@CatchError,12,1)
RETURN 0
END CATCH
GO
CREATE PROCEDURE [dbo].[P_TestUpdate_Stored]
@Values as nvarchar(max) OUTPUT,
@OldValues as nvarchar(max),
@RetValues as nvarchar(max) OUTPUT
AS
----------------------------------------------------------------------------------
--#NAME
-- P_TestUpdate_Stored
--#PARAMETERS
-- @Values OUTPUT (Required) : Object properties values,
-- @OldValues (Optional) : Old object properties values,
-- @Schema (Optional) : Schema object properties,
-- @ContextVars (Optional): Flexygo context variables,
-- @RetValues OUTPUT (Required) : Flexygo process Helper
--#OBSERVATIONS
-- Values JSON Sample
-- {
-- "TestId": 1,
-- "Descrip": "Test",
-- "IdDoc": null,
-- "InsertUpdate": null,
-- "User": "admin",
-- "InsertUpdateDate": "2025-04-23T16:23:00",
-- "Config": "TestConfig"
-- }
--
-- Old Values JSON Sample
-- {
-- "TestId": 1,
-- "Descrip": "Test",
-- "IdDoc": null,
-- "InsertUpdate": null,
-- "User": "admin",
-- "InsertUpdateDate": "2025-04-23T16:23:00",
-- "Config": null
-- }
--
-- Schema JSON Sample
-- {
-- "RowId": "714a1a4b-b2ce-4f4b-8f5c-a7acc274da85",
-- "ObjectName": "Test",
-- "Schema": {
-- "TestId": {
-- "Name": "TestId",
-- "Value": 1,
-- "OldValue": null,
-- "TableName": "Test",
-- "IsKey": true
-- },
-- "Descrip": {
-- "Name": "Descrip",
-- "Value": "Test",
-- "OldValue": null,
-- "TableName": "Test",
-- "IsKey": false
-- },
-- "IdDoc": {
-- "Name": "IdDoc",
-- "Value": null,
-- "OldValue": null,
-- "TableName": "Test",
-- "IsKey": false
-- },
-- "InsertUpdate": {
-- "Name": "InsertUpdate",
-- "Value": null,
-- "OldValue": null,
-- "TableName": "Test",
-- "IsKey": false
-- },
-- "User": {
-- "Name": "User",
-- "Value": "admin",
-- "OldValue": null,
-- "TableName": "Test",
-- "IsKey": false
-- },
-- "InsertUpdateDate": {
-- "Name": "InsertUpdateDate",
-- "Value": "2025-04-23T16:23:00",
-- "OldValue": null,
-- "TableName": "Test",
-- "IsKey": false
-- },
-- "Config": {
-- "Name": "Config",
-- "Value": "TestConfig",
-- "OldValue": null,
-- "TableName": "Test_Conf",
-- "IsKey": false
-- }
-- }
-- }
--
-- ContextVars JSON Sample
-- {
-- "currentReference": "0",
-- "currentSubreference": "0",
-- "currentRole": "Admins",
-- "currentRoleId": "admins",
-- "currentUserLogin": "admin",
-- "currentUserId": "1",
-- "currentUserFullName": "Admin Admin",
-- "currentUserCultureId": "en-gb",
-- "currentUserLang": "en",
-- "currentUserEmail": "mail@mail.es.com"
-- }
--
-- Return vars JSON Sample
-- {
-- "Success": false,
-- "SuccessMessage": "",
-- "WarningMessage": "",
-- "LastException": null,
-- "LastAfterProcessName": null,
-- "LastProcessName": null,
-- "MoreProcesses": false,
-- "JSCode": "",
-- "JSFile": "",
-- "Data": {},
-- "CloseParamWindow": false,
-- "ClearSelectionBag": false,
-- "Refresh": false,
-- "LastExecutedProcess": null
-- }
----------------------------------------------------------------------------------
BEGIN TRY
--Declare field variables to load
DECLARE @TestId INT,
@Descrip NVARCHAR(2000),
@InsertUpdate BIT,
@User NVARCHAR(50),
@InsertUpdateDate DATETIME,
@Config NVARCHAR(50),
@OldTestId INT
--New Values
SELECT
@TestId = [TestId],
@Descrip = [Descrip],
@InsertUpdate = [InsertUpdate],
@User = [User],
@InsertUpdateDate = [InsertUpdateDate],
@Config = [Config]
FROM OPENJSON(@Values)
WITH (
TestId INT '$.TestId',
Descrip NVARCHAR(2000) '$.Descrip',
InsertUpdate BIT '$.InsertUpdate',
[User] NVARCHAR(50) '$.User',
InsertUpdateDate DATETIME '$.InsertUpdateDate',
Config NVARCHAR(50) '$.Config')
--Old Values
SELECT
@OldTestId = [TestId]
FROM OPENJSON(@OldValues)
WITH (
TestId INT '$.TestId')
-- Update register
UPDATE Test_Conf Set Config = @Config Where TestId = @OldTestId
UPDATE Test SET TestId=@TestId, Descrip=@Descrip, InsertUpdate = @InsertUpdate, [User] = @User, InsertUpdateDate = @InsertUpdateDate Where TestId = @OldTestId
-- Change Keys
SET @Values = JSON_MODIFY(@Values, '$.TestId', @TestId);
-- Process return values
SET @RetValues = JSON_MODIFY(@RetValues, '$.Success', 1);
SET @RetValues = JSON_MODIFY(@RetValues, '$.SuccessMessage', 'All went fine');
RETURN 1
END TRY
BEGIN CATCH
IF @@TRANCOUNT >0 BEGIN
ROLLBACK TRAN
END
SET @RetValues = JSON_MODIFY(@RetValues, '$.Success', 0);
DECLARE @CatchError NVARCHAR(MAX)
SET @CatchError=dbo.funprintError(ERROR_MESSAGE(),ERROR_NUMBER(),ERROR_PROCEDURE(),@@PROCID ,ERROR_LINE())
RAISERROR(@CatchError,12,1)
RETURN 0
END CATCH
GO
CREATE PROCEDURE [dbo].[P_TestDelete_Stored]
@Values as nvarchar(max) OUTPUT,
@RetValues as nvarchar(max) OUTPUT
AS
----------------------------------------------------------------------------------
--#NAME
-- P_TestDelete_Stored
--#PARAMETERS
-- @Values OUTPUT (Required) : Object properties values,
-- @OldValues (Optional) : Old object properties values,
-- @Schema (Optional) : Schema object properties,
-- @ContextVars (Optional): Flexygo context variables,
-- @RetValues OUTPUT (Required) : Flexygo process Helper
--#OBSERVATIONS
-- Values JSON Sample
-- {
-- "TestId": 1,
-- "Descrip": "Test",
-- "IdDoc": null,
-- "InsertUpdate": null,
-- "User": "admin",
-- "InsertUpdateDate": "2025-04-23T16:23:00",
-- "Config": "TestConfig"
-- }
--
-- Old Values JSON Sample
-- {
-- "TestId": 1,
-- "Descrip": "Test",
-- "IdDoc": null,
-- "InsertUpdate": null,
-- "User": "admin",
-- "InsertUpdateDate": "2025-04-23T16:23:00",
-- "Config": null
-- }
--
-- Schema JSON Sample
-- {
-- "RowId": "714a1a4b-b2ce-4f4b-8f5c-a7acc274da85",
-- "ObjectName": "Test",
-- "Schema": {
-- "TestId": {
-- "Name": "TestId",
-- "Value": 1,
-- "OldValue": null,
-- "TableName": "Test",
-- "IsKey": true
-- },
-- "Descrip": {
-- "Name": "Descrip",
-- "Value": "Test",
-- "OldValue": null,
-- "TableName": "Test",
-- "IsKey": false
-- },
-- "IdDoc": {
-- "Name": "IdDoc",
-- "Value": null,
-- "OldValue": null,
-- "TableName": "Test",
-- "IsKey": false
-- },
-- "InsertUpdate": {
-- "Name": "InsertUpdate",
-- "Value": null,
-- "OldValue": null,
-- "TableName": "Test",
-- "IsKey": false
-- },
-- "User": {
-- "Name": "User",
-- "Value": "admin",
-- "OldValue": null,
-- "TableName": "Test",
-- "IsKey": false
-- },
-- "InsertUpdateDate": {
-- "Name": "InsertUpdateDate",
-- "Value": "2025-04-23T16:23:00",
-- "OldValue": null,
-- "TableName": "Test",
-- "IsKey": false
-- },
-- "Config": {
-- "Name": "Config",
-- "Value": "TestConfig",
-- "OldValue": null,
-- "TableName": "Test_Conf",
-- "IsKey": false
-- }
-- }
-- }
--
-- ContextVars JSON Sample
-- {
-- "currentReference": "0",
-- "currentSubreference": "0",
-- "currentRole": "Admins",
-- "currentRoleId": "admins",
-- "currentUserLogin": "admin",
-- "currentUserId": "1",
-- "currentUserFullName": "Admin Admin",
-- "currentUserCultureId": "en-gb",
-- "currentUserLang": "en",
-- "currentUserEmail": "mail@mail.es.com"
-- }
--
-- Return vars JSON Sample
-- {
-- "Success": false,
-- "SuccessMessage": "",
-- "WarningMessage": "",
-- "LastException": null,
-- "LastAfterProcessName": null,
-- "LastProcessName": null,
-- "MoreProcesses": false,
-- "JSCode": "",
-- "JSFile": "",
-- "Data": {},
-- "CloseParamWindow": false,
-- "ClearSelectionBag": false,
-- "Refresh": false,
-- "LastExecutedProcess": null
-- }
----------------------------------------------------------------------------------
BEGIN TRY
--Declare field variables to load
DECLARE @TestId INT
SELECT
@TestId = [TestId]
FROM OPENJSON(@Values)
WITH (
TestId INT '$.TestId')
--Delete registers
DELETE Test_Conf Where TestId = @TestId
DELETE Test Where TestId = @TestId
-- Process return values
SET @RetValues = JSON_MODIFY(@RetValues, '$.Success', 1);
SET @RetValues = JSON_MODIFY(@RetValues, '$.SuccessMessage', 'All went fine');
RETURN 1
END TRY
BEGIN CATCH
IF @@TRANCOUNT >0 BEGIN
ROLLBACK TRAN
END
SET @RetValues = JSON_MODIFY(@RetValues, '$.Success', 0);
DECLARE @CatchError NVARCHAR(MAX)
SET @CatchError=dbo.funprintError(ERROR_MESSAGE(),ERROR_NUMBER(),ERROR_PROCEDURE(),@@PROCID ,ERROR_LINE())
RAISERROR(@CatchError,12,1)
RETURN 0
END CATCH
GO
ALTER PROCEDURE [dbo].[P_Test_I]
@TestId int OUTPUT,
@Descrip nvarchar(2000) OUTPUT,
@IdDoc int OUTPUT,
@Usuario nvarchar(50) OUTPUT,
@FechaInsertUpdate datetime OUTPUT
AS
BEGIN
-- Next Id
IF @TestId IS NULL OR @TestId=0
SELECT @TestId=ISNULL(MAX(@TestId)+1,1) FROM _Test
-- Insert
INSERT INTO _Test(TestId,Descrip,Usuario)
VALUES (@TestId,@Descrip,@Usuario)
--Insert into _Test_Conf
INSERT INTO _Test_Conf (TestId )
SELECT T.TestID FROM _TEst T
LEFT JOIN _Test_Conf C ON T.TestId=C.TEstId
WHERE C.TestID IS NULL
-- Check
IF @@ROWCOUNT=1 BEGIN
SELECT @IdDoc=IdDoc,@Usuario=Usuario,@FechaInsertUpdate=FechaInsertUpdate FROM _Test WHERE TestId = @TestId
RETURN -1
END ELSE BEGIN
PRINT 'ERROR IN TEST INSERT.'
RETURN 0
END
END
CREATE PROCEDURE [dbo].[P_Test_U]
@TestId_A int,
@Usuario nvarchar(50) OUTPUT,
@FechaInsertUpdate datetime OUTPUT
@TestId int OUTPUT,
@Descrip nvarchar(2000) OUTPUT
AS
Declare @Msg_err Varchar(255)
Declare @Usuario_ nvarchar(50)
Declare @FechaInsertUpdate_ datetime
BEGIN
UPDATE _Test SET TestId=@TestId, Descrip=@Descrip,InsertUpdate=1, Usuario=@usuario, FechaInsertUpdate=getdate()
WHERE TestId=@TestId_A AND Usuario=@Usuario And Convert(Varchar(20),FechaInsertUpdate,113)=Convert(Varchar(20),@FechaInsertUpdate,113)
END
------------------------------------------
-- Check if update was done
------------------------------------------
IF @@ROWCOUNT=1 BEGIN
SELECT @TestId=TestId,
@Descrip=Descrip,
@Usuario=Usuario,
@FechaInsertUpdate=FechaInsertUpdate
FROM _Test WHERE TestId=@TestId
RETURN -1
END ELSE BEGIN
SELECT @Usuario_=Usuario,
@FechaInsertUpdate_=FechaInsertUpdate
FROM _Test WHERE TestId=@TestId_A
IF @Usuario_ IS NULL BEGIN
PRINT 'Could not update. Might have bee previously deleted'
RETURN 0
END ELSE IF (@Usuario< > @Usuario_ OR Convert(Varchar(20),@FechaInsertUpdate,113)< > Convert(Varchar(20),@FechaInsertUpdate_,113)) BEGIN
PRINT 'Could not update. Might have bee previously modifyed'
RETURN 0
END
PRINT 'Could not update. Update Error'
RETURN 0
END
CREATE PROCEDURE [dbo].[P_Test_D]
@TestId int OUTPUT,
@Usuario nvarchar(50) OUTPUT,
@FechaInsertUpdate datetime OUTPUT
AS
Declare @Usuario_ nvarchar(50)
Declare @FechaInsertUpdate_ datetime
BEGIN
DELETE _Test
WHERE TestId=@TestId And Usuario=@Usuario And Convert(varchar(20),FechaInsertUpdate,113)=Convert(varchar(20),@FechaInsertUpdate,113)
-- check delete records
IF @@ROWCOUNT=1 BEGIN
RETURN -1
END ELSE BEGIN
SELECT @Usuario_=Usuario,
@FechaInsertUpdate_=FechaInsertUpdate
FROM _test WHERE TestId=@TestId
IF @Usuario_ IS NULL BEGIN
PRINT 'Could not delete. might have been previously deleted'
RETURN 0
END ELSE IF (@Usuario< > @Usuario_ Or Convert(varchar(20),@FechaInsertUpdate,113)< > Convert(varchar(20),@FechaInsertUpdate_,113)) BEGIN
PRINT 'Could not delete. might have been previously changed'
RETURN 0
END
-- no se ha podido borrar
PRINT 'Could not delete'
RETURN 0
end
END