miércoles, 20 de junio de 2018

Fecha Inicial : .20/06/2018 
Fecha Final :  .20/06/2018
Hora Inicio: . 1:00 PM
Hora Final: . 2:20 PM 
Horas invertidas(Minutos): 80 minutos
Colaboradores: José David Rodríguez , Óscar Cortés
Tipo de labor: Compartido



Actividad: CRUD
Se tiene un programa en Python que se encarga de generar los crud para las tablas(ver Imagen Python). Este programa recibe como parámetro el script de las tablas. El resultado es el script con los crud (ver Imagen Resultado). Luego, estas tablas necesitan retoques para acomodarlas bien para por último obtener los crud finales (ver Imagen Final).


Imágenes:

Imagen Python
Imagen Resultado
Imagen Final

Apéndice:

  • Programa en Python

def fix_xml(pXml):
    respXML = ""
    i = 0
    
    while (i < len(pXml)):
        if pXml[i:i+2] == "ID":
            respXML += pXml[i:i+4] 
            n = ""
            i += 4
            while (pXml[i] != '"'):
                n += pXml[i]
                i+=1
            respXML += str( int(n) + 1) + '"'
        else:
            respXML += pXml[i]
            
        i+=1

    print(respXML)



def createHardcoreCRUDE(script):
    """Crea cuatro funciones por cada tabla, además
    de agregar a la tabla 'eventos' los cambios de cada tabla."""
    print("Hello world")
    
    tempo = ""
    jump = False
    for i in range(len(script)-1):
        if (script[i] != "\t"):
            tempo += script[i]

    
    tablas = []
    tabla = None
    
    for t in tempo.split("\n"):
        if len(t) == 0:
            continue
        
        if (t[-1] == "("):
            tabla = Tabla(t.split(" ")[2][:-1])
            tablas.append(tabla)
            
        elif (t[0] != ")" and tabla != None):
            tt = t.split(" ")
            tabla.agregarDato(tt[0], tt[1])

    for t in tablas:
        print("-- Tabla: " + t.nombre)
        t.CRUD_Create()
        print("\n\n")
        t.CRUD_Read()
        t.CRUD_Update()
        print("--" + "#" *32,"--\n\n\n")


class Tabla:
    nombre = ""
    columnas = []
    tipos = []
    parametros = []

    def __init__(self, pNombre):
        self.nombre = pNombre
        self.columnas = []
        self.tipos = []
        self.parametros = []

    def agregarDato(self, pNombre, pTipo):
        self.columnas.append(pNombre)
        intial = pNombre[0].upper()
        self.parametros.append("@p" + intial + pNombre[1:])
        self.tipos.append(pTipo)

    def toString(self):
        print(self.nombre)
        print(self.columnas)
        print(self.tipos)
        print(self.parametros)


    def toCRUD(self):
        self.CRUD_Create()
        self.CRUD_Delete()
        self.CRUD_Read()
        self.CRUD_Update()
        
        pass
    
    def CRUD_Create(self):
        #Create
        print("Create Procedure SPC_"+self.nombre)
        for i in range(1, len(self.parametros) - 1):
            if (i == len(self.parametros) - 2):
                print("\t"+self.parametros[i] + " " + self.tipos[i])
            else:
                print("\t"+self.parametros[i] + " " + self.tipos[i] + ", ")

        print("""as
begin
begin try
    begin tran

    declare @XmlAntes XML = (select * from """+ self.nombre + """ for XML auto, type)
    """)
        

        insertTable = "\tinsert into " + self.nombre + "("

        for i in range(1, len(self.parametros) - 1):
            insertTable += self.columnas[i] + ", "
        insertTable = insertTable[:-2] + ")"

        print(insertTable)
        values = "\t\tvalues ("
        
        for i in range(1, len(self.parametros) - 1):
            values += self.parametros[i] + ", "

        values = values[:-2] + ")"
        print(values)

        print("\n\tdeclare @XmlDespues XML = (select * from " + self.nombre + " for XML auto, type)")
        print("\n\texec SPC_EventoMantenimiento """ + self.nombre + ", 'insertar', null, @XmlAntes, @XmlDespues ")

        print("\tcommit\n\nend try")

        print("""
begin catch
    if (@@TRANCOUNT > 0)
rollback
end catch

end
go

""")


    def CRUD_Delete(self):

        #Delete
        print("Create Procedure SPD_"+self.nombre)
        print("\t@pID int")

        print("""as
begin
begin try
    begin tran

    declare @XmlAntes XML = (select * from """+ self.nombre + """ for XML auto, type)
    """)
        

        print("\tUpdate  " + self.nombre)
        print("\tSet Visible = 'n'")
        print("\tWhere @pId = ID")
        
        print("\n\tdeclare @XmlDespues XML = (select * from " + self.nombre + " for XML auto, type)")
        print("""
        exec SPC_EventoMantenimiento """ + self.nombre + """, 'borrado', null, @XmlAntes, @XmlDespues 
        """)

        print("\tcommit\nend try")

        print("""
begin catch
    if (@@TRANCOUNT > 0)
rollback
end catch

end
go

""")

    def CRUD_Update(self):
        
        #Update
        print("Create Procedure SPU_"+self.nombre)
        print("\t@pID int,")
        for i in range(1, len(self.parametros) - 1):
            if (i == len(self.parametros) - 2):
                print("\t"+self.parametros[i] + " " + self.tipos[i] + " = null")
            else:
                print("\t"+self.parametros[i] + " " + self.tipos[i] + " = null, ")

        print("""as
begin
begin try
    begin tran

    declare @XmlAntes XML = (select * from """+ self.nombre + """ for XML auto, type)
    """)
        

        print("\tUpdate  " + self.nombre)
        
        updates = "\tSet "
        for i in range(1, len(self.parametros) - 1):
            updates += self.columnas[i] + " = isNull(" + self.parametros[i] + ", " + self.columnas[i] + "), "
        print(updates[:-2])
        print("\tWhere @pId = ID")
        
        print("\n\tdeclare @XmlDespues XML = (select * from " + self.nombre + " for XML auto, type)")
        print("""
        exec SPC_EventoMantenimiento """ + self.nombre + """, 'actualizacion', null, @XmlAntes, @XmlDespues 
        """)

        print("\tcommit\nend try")

        print("""
begin catch
    if (@@TRANCOUNT > 0)
rollback
end catch

end
go


""")

    def CRUD_Read(self):
        
        #Read

        print("Alter Procedure SPR_"+self.nombre)
        print("\t@pID int = null,")
        for i in range(1, len(self.parametros) - 1):
            if (i == len(self.parametros) - 2):
                print("\t"+self.parametros[i] + " " + self.tipos[i] + " = null")
            else:
                print("\t"+self.parametros[i] + " " + self.tipos[i] + " = null, ")

        print("""as
begin
begin try
    begin tran
    """)
        
        print ("Select *")
        #for i in range(1, len(self.parametros) - 1):
        #    select += self.columnas[i] + ", "
        #print(select[:-2])
        print("From " + self.nombre)

        where = "\tWhere ID = isnull(@pID, ID) "
        for i in range(1, len(self.parametros) - 1):
            where += " and " + self.columnas[i] + " = isNull(" + self.parametros[i] + ", " + self.columnas[i] + ")"
            
        where += " and Visible = 'y'"
        print(where)
        

        print("\tcommit\nend try")

        print("""
begin catch
    if (@@TRANCOUNT > 0)
rollback
end catch

end
go

""")
        

createHardcoreCRUDE("""
CREATE TABLE TipoCliente(
ID INT PRIMARY KEY identity(1,1),
Descripcion varchar(30) NOT NULL,
Visible CHAR NOT NULL default 'y', CHECK (Visible = 'y' OR Visible = 'n')
)

CREATE TABLE Cliente(
ID INT PRIMARY KEY identity(1,1),
Nombre varchar(30) NOT NULL,
DocID INT NOT NULL,
FK_Tipo_Cliente INT NOT NULL FOREIGN KEY REFERENCES TipoCliente(ID),

Visible CHAR NOT NULL default 'y', CHECK (Visible = 'y' OR Visible = 'n')
)
CREATE TABLE Emisor(
ID INT PRIMARY KEY identity(1,1),
DocID INT NOT NULL,
Nombre varchar(30) NOT NULL,
QAcciones INT NOT NULL,
PrecioInicial MONEY NOT NULL,
Variacion INT NOT NULL,
Comision INT NOT NULL,
Visible CHAR NOT NULL default 'y', CHECK (Visible = 'y' OR Visible = 'n')
)
CREATE TABLE ClienteDeEmpresa(
ID INT PRIMARY KEY identity(1,1),
FK_Emisor int not null foreign key references Emisor(ID),
FK_Cliente int not null foreign key references Cliente(ID)
)

CREATE TABLE ClienteXEmisor(
ID INT PRIMARY KEY identity(1,1),
FK_Emisor int not null foreign key references Emisor(ID),
FK_Cliente int not null foreign key references Cliente(ID),

QAcciones int not null
)

CREATE TABLE Accion(
ID INT PRIMARY KEY identity(1,1),
FK_Emisor INT not null foreign key references Emisor(ID),
NombreEmpresa VARCHAR(30) NOT NULL,
Codigo INT NOT NULL,
PrecioActual MONEY NOT NULL,

Visible CHAR NOT NULL default 'y', CHECK (Visible = 'y' OR Visible = 'n')
)

create table MovimientoAcciones(
ID INT PRIMARY KEY identity(1,1),
FK_ClienteEmisor int not null foreign key references ClienteXEmisor(ID),
FK_Accion int not null foreign key references Accion(ID),
Cantidad int not null default 0,
Precio money not null default 0
)
CREATE TABLE Agente(
ID INT PRIMARY KEY identity(1,1),
Nombre varchar(30) NOT NULL,
Saldo INT NOT NULL,
Visible CHAR NOT NULL default 'y', CHECK (Visible = 'y' OR Visible = 'n')
)

CREATE TABLE TipoOperacion(
ID INT PRIMARY KEY identity(1,1),
Descripcion varchar(30) NOT NULL,
Visible CHAR NOT NULL default 'y', CHECK (Visible = 'y' OR Visible = 'n')
)

CREATE TABLE Operacion(
ID INT PRIMARY KEY identity(1,1),
FK_TipoOperacion INT NOT NULL FOREIGN KEY REFERENCES TipoOperacion(ID),
FK_Agente INT NOT NULL FOREIGN KEY REFERENCES Agente(ID),
FK_ClienteCompra INT NOT NULL FOREIGN KEY REFERENCES Cliente(ID),
FK_ClienteVenta INT NOT NULL FOREIGN KEY REFERENCES Cliente(ID),
FK_Movimiento int not null foreign key references MovimientoAcciones(ID),

Fecha DATE NOT NULL,
QAcciones INT NOT NULL,
Total int not null,
Comision int not null,
GananciaVendedor int not null default 0,

Visible CHAR NOT NULL default 'y', CHECK (Visible = 'y' OR Visible = 'n')
)

CREATE TABLE TipoMovimiento(
ID INT PRIMARY KEY identity(1,1),
Descripcion varchar(30) NOT NULL,
Visible CHAR NOT NULL default 'y', CHECK (Visible = 'y' OR Visible = 'n')
)

CREATE TABLE MovimientoComision(
ID INT PRIMARY KEY identity(1,1),
FK_Agente INT NOT NULL FOREIGN KEY REFERENCES Agente(ID),
FK_Tipo_Movimiento INT NOT NULL FOREIGN KEY REFERENCES TipoMovimiento(ID),
FK_Operacion INT NOT NULL FOREIGN KEY REFERENCES Operacion(ID),
Fecha DATE NOT NULL,
Monto MONEY NOT NULL,
Visible CHAR NOT NULL default 'y', CHECK (Visible = 'y' OR Visible = 'n')
)
CREATE TABLE EventoMantenimiento(
ID INT identity(1,1) primary key,
Tabla NVARCHAR(50) NOT NULL,
Antes XML NOT NULL,
Despues XML NOT NULL,
Fecha DATE NOT NULL default (getDate())
)
""")

  • Código de los CRUD
Create procedure [dbo].[SPC_EventoMantenimiento]
  @pTabla nvarchar(50),
  @pEvento nvarchar(50),
  @pFecha datetime = null,
  @pAntes XML,
  @pDespues XML
as

begin

begin tran
  insert into EventoMantenimiento (Tabla, Evento, Fecha, Antes, Despues)
  values (@pTabla, @pEvento, isnull(@pFecha, GETDATE()), @pAntes, @pDespues)
commit

end

-- Tabla: TipoCliente
Create Procedure SPU_TipoCliente
@pID int,
@pDescripcion varchar(30) = null
as
begin
begin try
    begin tran

    declare @XmlAntes XML = (select * from TipoCliente for XML auto, type)
    
Update  TipoCliente
Set Descripcion = isNull(@pDescripcion, Descripcion)
Where @pId = ID

declare @XmlDespues XML = (select * from TipoCliente for XML auto, type)

        exec SPC_EventoMantenimiento TipoCliente, 'actualizacion', null, @XmlAntes, @XmlDespues 
        
commit
end try

begin catch
    if (@@TRANCOUNT > 0)
rollback
end catch

end
go


-- Tabla: Cliente
Create Procedure SPU_Cliente
@pID int,
@pNombre varchar(30) = null, 
@pDocID INT = null, 
@pFK_Tipo_Cliente INT = null
as
begin
begin try
    begin tran

    declare @XmlAntes XML = (select * from Cliente for XML auto, type)
    
Update  Cliente
Set Nombre = isNull(@pNombre, Nombre), DocID = isNull(@pDocID, DocID), FK_Tipo_Cliente = isNull(@pFK_Tipo_Cliente, FK_Tipo_Cliente)
Where @pId = ID

declare @XmlDespues XML = (select * from Cliente for XML auto, type)

        exec SPC_EventoMantenimiento Cliente, 'actualizacion', null, @XmlAntes, @XmlDespues 
        
commit
end try

begin catch
    if (@@TRANCOUNT > 0)
rollback
end catch

end
go



--################################ --



-- Tabla: Emisor
Create Procedure SPU_Emisor
@pID int,
@pDocID INT = null, 
@pNombre varchar(30) = null, 
@pQAcciones INT = null, 
@pPrecioInicial MONEY = null, 
@pVariacion INT = null, 
@pComision INT = null
as
begin
begin try
    begin tran

    declare @XmlAntes XML = (select * from Emisor for XML auto, type)
    
Update  Emisor
Set DocID = isNull(@pDocID, DocID), Nombre = isNull(@pNombre, Nombre), QAcciones = isNull(@pQAcciones, QAcciones), PrecioInicial = isNull(@pPrecioInicial, PrecioInicial), Variacion = isNull(@pVariacion, Variacion), Comision = isNull(@pComision, Comision)
Where @pId = ID

declare @XmlDespues XML = (select * from Emisor for XML auto, type)

        exec SPC_EventoMantenimiento Emisor, 'actualizacion', null, @XmlAntes, @XmlDespues 
        
commit
end try

begin catch
    if (@@TRANCOUNT > 0)
rollback
end catch

end
go



--################################ --



-- Tabla: ClienteDeEmpresa
Create Procedure SPU_ClienteDeEmpresa
@pID int,
@pFK_Emisor int = null
as
begin
begin try
    begin tran

    declare @XmlAntes XML = (select * from ClienteDeEmpresa for XML auto, type)
    
Update  ClienteDeEmpresa
Set FK_Emisor = isNull(@pFK_Emisor, FK_Emisor)
Where @pId = ID

declare @XmlDespues XML = (select * from ClienteDeEmpresa for XML auto, type)

        exec SPC_EventoMantenimiento ClienteDeEmpresa, 'actualizacion', null, @XmlAntes, @XmlDespues 
        
commit
end try

begin catch
    if (@@TRANCOUNT > 0)
rollback
end catch

end
go



--################################ --



-- Tabla: ClienteXEmisor
Create Procedure SPU_ClienteXEmisor
@pID int,
@pFK_Emisor int = null, 
@pFK_Cliente int = null
as
begin
begin try
    begin tran

    declare @XmlAntes XML = (select * from ClienteXEmisor for XML auto, type)
    
Update  ClienteXEmisor
Set FK_Emisor = isNull(@pFK_Emisor, FK_Emisor), FK_Cliente = isNull(@pFK_Cliente, FK_Cliente)
Where @pId = ID

declare @XmlDespues XML = (select * from ClienteXEmisor for XML auto, type)

        exec SPC_EventoMantenimiento ClienteXEmisor, 'actualizacion', null, @XmlAntes, @XmlDespues 
        
commit
end try

begin catch
    if (@@TRANCOUNT > 0)
rollback
end catch

end
go



--################################ --



-- Tabla: Accion
Create Procedure SPU_Accion
@pID int,
@pFK_Emisor INT = null, 
@pNombreEmpresa VARCHAR(30) = null, 
@pCodigo INT = null, 
@pPrecioActual MONEY = null
as
begin
begin try
    begin tran

    declare @XmlAntes XML = (select * from Accion for XML auto, type)
    
Update  Accion
Set FK_Emisor = isNull(@pFK_Emisor, FK_Emisor), NombreEmpresa = isNull(@pNombreEmpresa, NombreEmpresa), Codigo = isNull(@pCodigo, Codigo), PrecioActual = isNull(@pPrecioActual, PrecioActual)
Where @pId = ID

declare @XmlDespues XML = (select * from Accion for XML auto, type)

        exec SPC_EventoMantenimiento Accion, 'actualizacion', null, @XmlAntes, @XmlDespues 
        
commit
end try

begin catch
    if (@@TRANCOUNT > 0)
rollback
end catch

end
go



--################################ --



-- Tabla: MovimientoAcciones
Alter Procedure SPU_MovimientoAcciones
@pID int,
@pFK_ClienteEmisor int = null, 
@pFK_Accion int = null, 
@pFK_Operacion int = null, 
@pCantidad int = null
as
begin
begin try
    begin tran

    declare @XmlAntes XML = (select * from MovimientoAcciones for XML auto, type)
    
Update  MovimientoAcciones
Set FK_ClienteEmisor = isNull(@pFK_ClienteEmisor, FK_ClienteEmisor), FK_Accion = isNull(@pFK_Accion, FK_Accion),FK_Operacion = isNull(@pFK_Accion, FK_Accion), Cantidad = isNull(@pCantidad, Cantidad)
Where @pId = ID

declare @XmlDespues XML = (select * from MovimientoAcciones for XML auto, type)

        exec SPC_EventoMantenimiento MovimientoAcciones, 'actualizacion', null, @XmlAntes, @XmlDespues 
        
commit
end try

begin catch
    if (@@TRANCOUNT > 0)
rollback
end catch

end
go



--################################ --



-- Tabla: Agente
Create Procedure SPU_Agente
@pID int,
@pNombre varchar(30) = null, 
@pSaldo INT = null
as
begin
begin try
    begin tran

    declare @XmlAntes XML = (select * from Agente for XML auto, type)
    
Update  Agente
Set Nombre = isNull(@pNombre, Nombre), Saldo = isNull(@pSaldo, Saldo)
Where @pId = ID

declare @XmlDespues XML = (select * from Agente for XML auto, type)

        exec SPC_EventoMantenimiento Agente, 'actualizacion', null, @XmlAntes, @XmlDespues 
        
commit
end try

begin catch
    if (@@TRANCOUNT > 0)
rollback
end catch

end
go



--################################ --



-- Tabla: TipoOperacion
Create Procedure SPU_TipoOperacion
@pID int,
@pDescripcion varchar(30) = null
as
begin
begin try
    begin tran

    declare @XmlAntes XML = (select * from TipoOperacion for XML auto, type)
    
Update  TipoOperacion
Set Descripcion = isNull(@pDescripcion, Descripcion)
Where @pId = ID

declare @XmlDespues XML = (select * from TipoOperacion for XML auto, type)

        exec SPC_EventoMantenimiento TipoOperacion, 'actualizacion', null, @XmlAntes, @XmlDespues 
        
commit
end try

begin catch
    if (@@TRANCOUNT > 0)
rollback
end catch

end
go



--################################ --



-- Tabla: Operacion
Alter Procedure SPU_Operacion
@pID int,
@pFK_TipoOperacion INT = null, 
@pFK_Agente INT = null, 
@pFK_ClienteCompra INT = null, 
@pFK_ClienteVenta INT = null, 
@pFecha DATE = null, 
@pQAcciones INT = null, 
@pTotal int = null, 
@pComision int = null, 
@pGananciaVendedor int = null
as
begin
begin try
    begin tran

    declare @XmlAntes XML = (select * from Operacion for XML auto, type)
    
Update  Operacion
Set FK_TipoOperacion = isNull(@pFK_TipoOperacion, FK_TipoOperacion), FK_Agente = isNull(@pFK_Agente, FK_Agente), FK_ClienteCompra = isNull(@pFK_ClienteCompra, FK_ClienteCompra), FK_ClienteVenta = isNull(@pFK_ClienteVenta, FK_ClienteVenta), Fecha = isNull(@pFecha, Fecha), QAcciones = isNull(@pQAcciones, QAcciones), Total = isNull(@pTotal, Total), Comision = isNull(@pComision, Comision), GananciaVendedor = isNull(@pGananciaVendedor, GananciaVendedor)
Where @pId = ID

declare @XmlDespues XML = (select * from Operacion for XML auto, type)

        exec SPC_EventoMantenimiento Operacion, 'actualizacion', null, @XmlAntes, @XmlDespues 
        
commit
end try

begin catch
    if (@@TRANCOUNT > 0)
rollback
end catch

end
go



--################################ --



-- Tabla: TipoMovimiento
Create Procedure SPU_TipoMovimiento
@pID int,
@pDescripcion varchar(30) = null
as
begin
begin try
    begin tran

    declare @XmlAntes XML = (select * from TipoMovimiento for XML auto, type)
    
Update  TipoMovimiento
Set Descripcion = isNull(@pDescripcion, Descripcion)
Where @pId = ID

declare @XmlDespues XML = (select * from TipoMovimiento for XML auto, type)

        exec SPC_EventoMantenimiento TipoMovimiento, 'actualizacion', null, @XmlAntes, @XmlDespues 
        
commit
end try

begin catch
    if (@@TRANCOUNT > 0)
rollback
end catch

end
go



--################################ --



-- Tabla: MovimientoComision
Create Procedure SPU_MovimientoComision
@pID int,
@pFK_Agente INT = null, 
@pFK_Tipo_Movimiento INT = null, 
@pFK_Operacion INT = null, 
@pFecha DATE = null, 
@pMonto MONEY = null
as
begin
begin try
    begin tran

    declare @XmlAntes XML = (select * from MovimientoComision for XML auto, type)
    
Update  MovimientoComision
Set FK_Agente = isNull(@pFK_Agente, FK_Agente), FK_Tipo_Movimiento = isNull(@pFK_Tipo_Movimiento, FK_Tipo_Movimiento), FK_Operacion = isNull(@pFK_Operacion, FK_Operacion), Fecha = isNull(@pFecha, Fecha), Monto = isNull(@pMonto, Monto)
Where @pId = ID

declare @XmlDespues XML = (select * from MovimientoComision for XML auto, type)

        exec SPC_EventoMantenimiento MovimientoComision, 'actualizacion', null, @XmlAntes, @XmlDespues 
        
commit
end try

begin catch
    if (@@TRANCOUNT > 0)
rollback
end catch

end
go



--################################ --



-- Tabla: EventoMantenimiento
Create Procedure SPU_EventoMantenimiento
@pID int,
@pTabla NVARCHAR(50) = null, 
@pAntes XML = null, 
@pDespues XML = null
as
begin
begin try
    begin tran

    declare @XmlAntes XML = (select * from EventoMantenimiento for XML auto, type)
    
Update  EventoMantenimiento
Set Tabla = isNull(@pTabla, Tabla), Antes = isNull(@pAntes, Antes), Despues = isNull(@pDespues, Despues)
Where @pId = ID

declare @XmlDespues XML = (select * from EventoMantenimiento for XML auto, type)

        exec SPC_EventoMantenimiento EventoMantenimiento, 'actualizacion', null, @XmlAntes, @XmlDespues 
        
commit
end try

begin catch
    if (@@TRANCOUNT > 0)
rollback
end catch

end
go



--################################ --



>>> 
-- Tabla: TipoCliente
Create Procedure SPC_TipoCliente
@pDescripcion varchar(30)
as
begin
begin try
    begin tran

    declare @XmlAntes XML = (select * from TipoCliente for XML auto, type)
    
insert into TipoCliente(Descripcion)
values (@pDescripcion)

declare @XmlDespues XML = (select * from TipoCliente for XML auto, type)

exec SPC_EventoMantenimiento TipoCliente, 'insertar', null, @XmlAntes, @XmlDespues 
commit

end try

begin catch
    if (@@TRANCOUNT > 0)
rollback
end catch

end
go





Create Procedure SPR_TipoCliente
@pID int = null,
@pDescripcion varchar(30) = null
as
begin
begin try
    begin tran
    
Select *
From TipoCliente
Where ID = isnull(@pID, ID)  and Descripcion = isNull(@pDescripcion, Descripcion) and Visible = 'y'
commit
end try

begin catch
    if (@@TRANCOUNT > 0)
rollback
end catch

end
go


Create Procedure SPU_TipoCliente
@pID int,
@pDescripcion varchar(30) = null
as
begin
begin try
    begin tran

    declare @XmlAntes XML = (select * from TipoCliente for XML auto, type)
    
Update  TipoCliente
Set Descripcion = isNull(@pDescripcion, Descripcion)
Where @pId = ID

declare @XmlDespues XML = (select * from TipoCliente for XML auto, type)

        exec SPC_EventoMantenimiento TipoCliente, 'actualizacion', null, @XmlAntes, @XmlDespues 
        
commit
end try

begin catch
    if (@@TRANCOUNT > 0)
rollback
end catch

end
go



--################################ --



-- Tabla: Cliente
Create Procedure SPC_Cliente
@pNombre varchar(30), 
@pDocID INT, 
@pFK_Tipo_Cliente INT
as
begin
begin try
    begin tran

    declare @XmlAntes XML = (select * from Cliente for XML auto, type)
    
insert into Cliente(Nombre, DocID, FK_Tipo_Cliente)
values (@pNombre, @pDocID, @pFK_Tipo_Cliente)

declare @XmlDespues XML = (select * from Cliente for XML auto, type)

exec SPC_EventoMantenimiento Cliente, 'insertar', null, @XmlAntes, @XmlDespues 
commit

end try

begin catch
    if (@@TRANCOUNT > 0)
rollback
end catch

end
go





Create Procedure SPR_Cliente
@pID int = null,
@pNombre varchar(30) = null, 
@pDocID INT = null, 
@pFK_Tipo_Cliente INT = null
as
begin
begin try
    begin tran
    
Select *
From Cliente
Where ID = isnull(@pID, ID)  and Nombre = isNull(@pNombre, Nombre) and DocID = isNull(@pDocID, DocID) and FK_Tipo_Cliente = isNull(@pFK_Tipo_Cliente, FK_Tipo_Cliente) and Visible = 'y'
commit
end try

begin catch
    if (@@TRANCOUNT > 0)
rollback
end catch

end
go


Create Procedure SPU_Cliente
@pID int,
@pNombre varchar(30) = null, 
@pDocID INT = null, 
@pFK_Tipo_Cliente INT = null
as
begin
begin try
    begin tran

    declare @XmlAntes XML = (select * from Cliente for XML auto, type)
    
Update  Cliente
Set Nombre = isNull(@pNombre, Nombre), DocID = isNull(@pDocID, DocID), FK_Tipo_Cliente = isNull(@pFK_Tipo_Cliente, FK_Tipo_Cliente)
Where @pId = ID

declare @XmlDespues XML = (select * from Cliente for XML auto, type)

        exec SPC_EventoMantenimiento Cliente, 'actualizacion', null, @XmlAntes, @XmlDespues 
        
commit
end try

begin catch
    if (@@TRANCOUNT > 0)
rollback
end catch

end
go



--################################ --



-- Tabla: Emisor
Create Procedure SPC_Emisor
@pDocID INT, 
@pNombre varchar(30), 
@pQAcciones INT, 
@pPrecioInicial MONEY, 
@pVariacion INT, 
@pComision INT
as
begin
begin try
    begin tran

    declare @XmlAntes XML = (select * from Emisor for XML auto, type)
    
insert into Emisor(DocID, Nombre, QAcciones, PrecioInicial, Variacion, Comision)
values (@pDocID, @pNombre, @pQAcciones, @pPrecioInicial, @pVariacion, @pComision)

declare @XmlDespues XML = (select * from Emisor for XML auto, type)

exec SPC_EventoMantenimiento Emisor, 'insertar', null, @XmlAntes, @XmlDespues 
commit

end try

begin catch
    if (@@TRANCOUNT > 0)
rollback
end catch

end
go





Create Procedure SPR_Emisor
@pID int = null,
@pDocID INT = null, 
@pNombre varchar(30) = null, 
@pQAcciones INT = null, 
@pPrecioInicial MONEY = null, 
@pVariacion INT = null, 
@pComision INT = null
as
begin
begin try
    begin tran
    
Select *
From Emisor
Where ID = isnull(@pID, ID)  and DocID = isNull(@pDocID, DocID) and Nombre = isNull(@pNombre, Nombre) and QAcciones = isNull(@pQAcciones, QAcciones) and PrecioInicial = isNull(@pPrecioInicial, PrecioInicial) and Variacion = isNull(@pVariacion, Variacion) and Comision = isNull(@pComision, Comision) and Visible = 'y'
commit
end try

begin catch
    if (@@TRANCOUNT > 0)
rollback
end catch

end
go


Create Procedure SPU_Emisor
@pID int,
@pDocID INT = null, 
@pNombre varchar(30) = null, 
@pQAcciones INT = null, 
@pPrecioInicial MONEY = null, 
@pVariacion INT = null, 
@pComision INT = null
as
begin
begin try
    begin tran

    declare @XmlAntes XML = (select * from Emisor for XML auto, type)
    
Update  Emisor
Set DocID = isNull(@pDocID, DocID), Nombre = isNull(@pNombre, Nombre), QAcciones = isNull(@pQAcciones, QAcciones), PrecioInicial = isNull(@pPrecioInicial, PrecioInicial), Variacion = isNull(@pVariacion, Variacion), Comision = isNull(@pComision, Comision)
Where @pId = ID

declare @XmlDespues XML = (select * from Emisor for XML auto, type)

        exec SPC_EventoMantenimiento Emisor, 'actualizacion', null, @XmlAntes, @XmlDespues 
        
commit
end try

begin catch
    if (@@TRANCOUNT > 0)
rollback
end catch

end
go



--################################ --



-- Tabla: ClienteDeEmpresa
Create Procedure SPC_ClienteDeEmpresa
@pFK_Emisor int
as
begin
begin try
    begin tran

    declare @XmlAntes XML = (select * from ClienteDeEmpresa for XML auto, type)
    
insert into ClienteDeEmpresa(FK_Emisor)
values (@pFK_Emisor)

declare @XmlDespues XML = (select * from ClienteDeEmpresa for XML auto, type)

exec SPC_EventoMantenimiento ClienteDeEmpresa, 'insertar', null, @XmlAntes, @XmlDespues 
commit

end try

begin catch
    if (@@TRANCOUNT > 0)
rollback
end catch

end
go





Create Procedure SPR_ClienteDeEmpresa
@pID int = null,
@pFK_Emisor int = null
as
begin
begin try
    begin tran
    
Select *
From ClienteDeEmpresa
Where ID = isnull(@pID, ID)  and FK_Emisor = isNull(@pFK_Emisor, FK_Emisor)
commit
end try

begin catch
    if (@@TRANCOUNT > 0)
rollback
end catch

end
go


Create Procedure SPU_ClienteDeEmpresa
@pID int,
@pFK_Emisor int = null
as
begin
begin try
    begin tran

    declare @XmlAntes XML = (select * from ClienteDeEmpresa for XML auto, type)
    
Update  ClienteDeEmpresa
Set FK_Emisor = isNull(@pFK_Emisor, FK_Emisor)
Where @pId = ID

declare @XmlDespues XML = (select * from ClienteDeEmpresa for XML auto, type)

        exec SPC_EventoMantenimiento ClienteDeEmpresa, 'actualizacion', null, @XmlAntes, @XmlDespues 
        
commit
end try

begin catch
    if (@@TRANCOUNT > 0)
rollback
end catch

end
go



--################################ --



-- Tabla: ClienteXEmisor
Create Procedure SPC_ClienteXEmisor
@pFK_Emisor int, 
@pFK_Cliente int
as
begin
begin try
    begin tran

    declare @XmlAntes XML = (select * from ClienteXEmisor for XML auto, type)
    
insert into ClienteXEmisor(FK_Emisor, FK_Cliente)
values (@pFK_Emisor, @pFK_Cliente)

declare @XmlDespues XML = (select * from ClienteXEmisor for XML auto, type)

exec SPC_EventoMantenimiento ClienteXEmisor, 'insertar', null, @XmlAntes, @XmlDespues 
commit

end try

begin catch
    if (@@TRANCOUNT > 0)
rollback
end catch

end
go





Create Procedure SPR_ClienteXEmisor
@pID int = null,
@pFK_Emisor int = null, 
@pFK_Cliente int = null
as
begin
begin try
    begin tran
    
Select *
From ClienteXEmisor
Where ID = isnull(@pID, ID)  and FK_Emisor = isNull(@pFK_Emisor, FK_Emisor) and FK_Cliente = isNull(@pFK_Cliente, FK_Cliente)
commit
end try

begin catch
    if (@@TRANCOUNT > 0)
rollback
end catch

end
go


Create Procedure SPU_ClienteXEmisor
@pID int,
@pFK_Emisor int = null, 
@pFK_Cliente int = null
as
begin
begin try
    begin tran

    declare @XmlAntes XML = (select * from ClienteXEmisor for XML auto, type)
    
Update  ClienteXEmisor
Set FK_Emisor = isNull(@pFK_Emisor, FK_Emisor), FK_Cliente = isNull(@pFK_Cliente, FK_Cliente)
Where @pId = ID

declare @XmlDespues XML = (select * from ClienteXEmisor for XML auto, type)

        exec SPC_EventoMantenimiento ClienteXEmisor, 'actualizacion', null, @XmlAntes, @XmlDespues 
        
commit
end try

begin catch
    if (@@TRANCOUNT > 0)
rollback
end catch

end
go



--################################ --



-- Tabla: Accion
Create Procedure SPC_Accion
@pFK_Emisor INT, 
@pNombreEmpresa VARCHAR(30), 
@pCodigo INT, 
@pPrecioActual MONEY
as
begin
begin try
    begin tran

    declare @XmlAntes XML = (select * from Accion for XML auto, type)
    
insert into Accion(FK_Emisor, NombreEmpresa, Codigo, PrecioActual)
values (@pFK_Emisor, @pNombreEmpresa, @pCodigo, @pPrecioActual)

declare @XmlDespues XML = (select * from Accion for XML auto, type)

exec SPC_EventoMantenimiento Accion, 'insertar', null, @XmlAntes, @XmlDespues 
commit

end try

begin catch
    if (@@TRANCOUNT > 0)
rollback
end catch

end
go





Create Procedure SPR_Accion
@pID int = null,
@pFK_Emisor INT = null, 
@pNombreEmpresa VARCHAR(30) = null, 
@pCodigo INT = null, 
@pPrecioActual MONEY = null
as
begin
begin try
    begin tran
    
Select *
From Accion
Where ID = isnull(@pID, ID)  and FK_Emisor = isNull(@pFK_Emisor, FK_Emisor) and NombreEmpresa = isNull(@pNombreEmpresa, NombreEmpresa) and Codigo = isNull(@pCodigo, Codigo) and PrecioActual = isNull(@pPrecioActual, PrecioActual) and Visible = 'y'
commit
end try

begin catch
    if (@@TRANCOUNT > 0)
rollback
end catch

end
go


Create Procedure SPU_Accion
@pID int,
@pFK_Emisor INT = null, 
@pNombreEmpresa VARCHAR(30) = null, 
@pCodigo INT = null, 
@pPrecioActual MONEY = null
as
begin
begin try
    begin tran

    declare @XmlAntes XML = (select * from Accion for XML auto, type)
    
Update  Accion
Set FK_Emisor = isNull(@pFK_Emisor, FK_Emisor), NombreEmpresa = isNull(@pNombreEmpresa, NombreEmpresa), Codigo = isNull(@pCodigo, Codigo), PrecioActual = isNull(@pPrecioActual, PrecioActual)
Where @pId = ID

declare @XmlDespues XML = (select * from Accion for XML auto, type)

        exec SPC_EventoMantenimiento Accion, 'actualizacion', null, @XmlAntes, @XmlDespues 
        
commit
end try

begin catch
    if (@@TRANCOUNT > 0)
rollback
end catch

end
go



--################################ --



-- Tabla: MovimientoAcciones
Alter Procedure SPC_MovimientoAcciones
@pFK_ClienteEmisor int, 
@pFK_Accion int, 
@pFK_Operacion int,
@pCantidad int
as
begin
begin try
    begin tran

    declare @XmlAntes XML = (select * from MovimientoAcciones for XML auto, type)
    
insert into MovimientoAcciones(FK_ClienteEmisor, FK_Accion,FK_Operacion, Cantidad)
values (@pFK_ClienteEmisor, @pFK_Accion, @pFK_Operacion, @pCantidad)

declare @XmlDespues XML = (select * from MovimientoAcciones for XML auto, type)

exec SPC_EventoMantenimiento MovimientoAcciones, 'insertar', null, @XmlAntes, @XmlDespues 
commit

end try

begin catch
    if (@@TRANCOUNT > 0)
rollback
end catch

end
go





Create Procedure SPR_MovimientoAcciones
@pID int = null,
@pFK_ClienteEmisor int = null, 
@pFK_Accion int = null, 
@pFK_Operacion int = null, 
@pCantidad int = null
as
begin
begin try
    begin tran
    
Select *
From MovimientoAcciones
Where ID = isnull(@pID, ID)  and FK_ClienteEmisor = isNull(@pFK_ClienteEmisor, FK_ClienteEmisor) and FK_Accion = isNull(@pFK_Accion, FK_Accion) and FK_Operacion = isNull(@pFK_Operacion, FK_Operacion) and Cantidad = isNull(@pCantidad, Cantidad)
commit
end try

begin catch
    if (@@TRANCOUNT > 0)
rollback
end catch

end
go


alter Procedure SPU_MovimientoAcciones
@pID int,
@pFK_ClienteEmisor int = null, 
@pFK_Accion int = null, 
@pFK_Operacion int = null, 
@pCantidad int = null
as
begin
begin try
    begin tran

    declare @XmlAntes XML = (select * from MovimientoAcciones for XML auto, type)
    
Update  MovimientoAcciones
Set FK_ClienteEmisor = isNull(@pFK_ClienteEmisor, FK_ClienteEmisor), FK_Accion = isNull(@pFK_Accion, FK_Accion), FK_Operacion = isNull(@pFK_Operacion, FK_Operacion), Cantidad = isNull(@pCantidad, Cantidad)
Where @pId = ID

declare @XmlDespues XML = (select * from MovimientoAcciones for XML auto, type)

        exec SPC_EventoMantenimiento MovimientoAcciones, 'actualizacion', null, @XmlAntes, @XmlDespues 
        
commit
end try

begin catch
    if (@@TRANCOUNT > 0)
rollback
end catch

end
go



--################################ --



-- Tabla: Agente
Create Procedure SPC_Agente
@pNombre varchar(30), 
@pSaldo INT
as
begin
begin try
    begin tran

    declare @XmlAntes XML = (select * from Agente for XML auto, type)
    
insert into Agente(Nombre, Saldo)
values (@pNombre, @pSaldo)

declare @XmlDespues XML = (select * from Agente for XML auto, type)

exec SPC_EventoMantenimiento Agente, 'insertar', null, @XmlAntes, @XmlDespues 
commit

end try

begin catch
    if (@@TRANCOUNT > 0)
rollback
end catch

end
go





Create Procedure SPR_Agente
@pID int = null,
@pNombre varchar(30) = null, 
@pSaldo INT = null
as
begin
begin try
    begin tran
    
Select *
From Agente
Where ID = isnull(@pID, ID)  and Nombre = isNull(@pNombre, Nombre) and Saldo = isNull(@pSaldo, Saldo) and Visible = 'y'
commit
end try

begin catch
    if (@@TRANCOUNT > 0)
rollback
end catch

end
go


Create Procedure SPU_Agente
@pID int,
@pNombre varchar(30) = null, 
@pSaldo INT = null
as
begin
begin try
    begin tran

    declare @XmlAntes XML = (select * from Agente for XML auto, type)
    
Update  Agente
Set Nombre = isNull(@pNombre, Nombre), Saldo = isNull(@pSaldo, Saldo)
Where @pId = ID

declare @XmlDespues XML = (select * from Agente for XML auto, type)

        exec SPC_EventoMantenimiento Agente, 'actualizacion', null, @XmlAntes, @XmlDespues 
        
commit
end try

begin catch
    if (@@TRANCOUNT > 0)
rollback
end catch

end
go



--################################ --



-- Tabla: TipoOperacion
Create Procedure SPC_TipoOperacion
@pDescripcion varchar(30)
as
begin
begin try
    begin tran

    declare @XmlAntes XML = (select * from TipoOperacion for XML auto, type)
    
insert into TipoOperacion(Descripcion)
values (@pDescripcion)

declare @XmlDespues XML = (select * from TipoOperacion for XML auto, type)

exec SPC_EventoMantenimiento TipoOperacion, 'insertar', null, @XmlAntes, @XmlDespues 
commit

end try

begin catch
    if (@@TRANCOUNT > 0)
rollback
end catch

end
go





Create Procedure SPR_TipoOperacion
@pID int = null,
@pDescripcion varchar(30) = null
as
begin
begin try
    begin tran
    
Select *
From TipoOperacion
Where ID = isnull(@pID, ID)  and Descripcion = isNull(@pDescripcion, Descripcion) and Visible = 'y'
commit
end try

begin catch
    if (@@TRANCOUNT > 0)
rollback
end catch

end
go


Create Procedure SPU_TipoOperacion
@pID int,
@pDescripcion varchar(30) = null
as
begin
begin try
    begin tran

    declare @XmlAntes XML = (select * from TipoOperacion for XML auto, type)
    
Update  TipoOperacion
Set Descripcion = isNull(@pDescripcion, Descripcion)
Where @pId = ID

declare @XmlDespues XML = (select * from TipoOperacion for XML auto, type)

        exec SPC_EventoMantenimiento TipoOperacion, 'actualizacion', null, @XmlAntes, @XmlDespues 
        
commit
end try

begin catch
    if (@@TRANCOUNT > 0)
rollback
end catch

end
go



--################################ --



-- Tabla: Operacion
Alter Procedure SPC_Operacion
@pFK_TipoOperacion INT, 
@pFK_Agente INT, 
@pFK_ClienteCompra INT, 
@pFK_ClienteVenta INT,  
@pFecha DATE, 
@pQAcciones INT, 
@pTotal int, 
@pComision int, 
@pGananciaVendedor int
as
begin
begin try
    begin tran

    declare @XmlAntes XML = (select * from Operacion for XML auto, type)
    
insert into Operacion(FK_TipoOperacion, FK_Agente, FK_ClienteCompra, FK_ClienteVenta, Fecha, QAcciones, Total, Comision, GananciaVendedor)
values (@pFK_TipoOperacion, @pFK_Agente, @pFK_ClienteCompra, @pFK_ClienteVenta, @pFecha, @pQAcciones, @pTotal, @pComision, @pGananciaVendedor)

declare @XmlDespues XML = (select * from Operacion for XML auto, type)

exec SPC_EventoMantenimiento Operacion, 'insertar', null, @XmlAntes, @XmlDespues 
commit

end try

begin catch
    if (@@TRANCOUNT > 0)
rollback
end catch

end
go





Alter Procedure SPR_Operacion
@pID int = null,
@pFK_TipoOperacion INT = null, 
@pFK_Agente INT = null, 
@pFK_ClienteCompra INT = null, 
@pFK_ClienteVenta INT = null, 
@pFecha DATE = null, 
@pQAcciones INT = null, 
@pTotal int = null, 
@pComision int = null, 
@pGananciaVendedor int = null
as
begin
begin try
    begin tran
    
Select *
From Operacion
Where ID = isnull(@pID, ID)  and FK_TipoOperacion = isNull(@pFK_TipoOperacion, FK_TipoOperacion) and FK_Agente = isNull(@pFK_Agente, FK_Agente) and FK_ClienteCompra = isNull(@pFK_ClienteCompra, FK_ClienteCompra) and FK_ClienteVenta = isNull(@pFK_ClienteVenta, FK_ClienteVenta) and Fecha = isNull(@pFecha, Fecha) and QAcciones = isNull(@pQAcciones, QAcciones) and Total = isNull(@pTotal, Total) and Comision = isNull(@pComision, Comision) and GananciaVendedor = isNull(@pGananciaVendedor, GananciaVendedor) and Visible = 'y'
commit
end try

begin catch
    if (@@TRANCOUNT > 0)
rollback
end catch

end
go


Alter Procedure SPU_Operacion
@pID int,
@pFK_TipoOperacion INT = null, 
@pFK_Agente INT = null, 
@pFK_ClienteCompra INT = null, 
@pFK_ClienteVenta INT = null, 
@pFecha DATE = null, 
@pQAcciones INT = null, 
@pTotal int = null, 
@pComision int = null, 
@pGananciaVendedor int = null
as
begin
begin try
    begin tran

    declare @XmlAntes XML = (select * from Operacion for XML auto, type)
    
Update  Operacion
Set FK_TipoOperacion = isNull(@pFK_TipoOperacion, FK_TipoOperacion), FK_Agente = isNull(@pFK_Agente, FK_Agente), FK_ClienteCompra = isNull(@pFK_ClienteCompra, FK_ClienteCompra), FK_ClienteVenta = isNull(@pFK_ClienteVenta, FK_ClienteVenta), Fecha = isNull(@pFecha, Fecha), QAcciones = isNull(@pQAcciones, QAcciones), Total = isNull(@pTotal, Total), Comision = isNull(@pComision, Comision), GananciaVendedor = isNull(@pGananciaVendedor, GananciaVendedor)
Where @pId = ID

declare @XmlDespues XML = (select * from Operacion for XML auto, type)

        exec SPC_EventoMantenimiento Operacion, 'actualizacion', null, @XmlAntes, @XmlDespues 
        
commit
end try

begin catch
    if (@@TRANCOUNT > 0)
rollback
end catch

end
go



--################################ --



-- Tabla: TipoMovimiento
Create Procedure SPC_TipoMovimiento
@pDescripcion varchar(30)
as
begin
begin try
    begin tran

    declare @XmlAntes XML = (select * from TipoMovimiento for XML auto, type)
    
insert into TipoMovimiento(Descripcion)
values (@pDescripcion)

declare @XmlDespues XML = (select * from TipoMovimiento for XML auto, type)

exec SPC_EventoMantenimiento TipoMovimiento, 'insertar', null, @XmlAntes, @XmlDespues 
commit

end try

begin catch
    if (@@TRANCOUNT > 0)
rollback
end catch

end
go





Create Procedure SPR_TipoMovimiento
@pID int = null,
@pDescripcion varchar(30) = null
as
begin
begin try
    begin tran
    
Select *
From TipoMovimiento
Where ID = isnull(@pID, ID)  and Descripcion = isNull(@pDescripcion, Descripcion) and Visible = 'y'
commit
end try

begin catch
    if (@@TRANCOUNT > 0)
rollback
end catch

end
go


Create Procedure SPU_TipoMovimiento
@pID int,
@pDescripcion varchar(30) = null
as
begin
begin try
    begin tran

    declare @XmlAntes XML = (select * from TipoMovimiento for XML auto, type)
    
Update  TipoMovimiento
Set Descripcion = isNull(@pDescripcion, Descripcion)
Where @pId = ID

declare @XmlDespues XML = (select * from TipoMovimiento for XML auto, type)

        exec SPC_EventoMantenimiento TipoMovimiento, 'actualizacion', null, @XmlAntes, @XmlDespues 
        
commit
end try

begin catch
    if (@@TRANCOUNT > 0)
rollback
end catch

end
go



--################################ --



-- Tabla: MovimientoComision
Create Procedure SPC_MovimientoComision
@pFK_Agente INT, 
@pFK_Tipo_Movimiento INT, 
@pFK_Operacion INT, 
@pFecha DATE, 
@pMonto MONEY
as
begin
begin try
    begin tran

    declare @XmlAntes XML = (select * from MovimientoComision for XML auto, type)
    
insert into MovimientoComision(FK_Agente, FK_Tipo_Movimiento, FK_Operacion, Fecha, Monto)
values (@pFK_Agente, @pFK_Tipo_Movimiento, @pFK_Operacion, @pFecha, @pMonto)

declare @XmlDespues XML = (select * from MovimientoComision for XML auto, type)

exec SPC_EventoMantenimiento MovimientoComision, 'insertar', null, @XmlAntes, @XmlDespues 
commit

end try

begin catch
    if (@@TRANCOUNT > 0)
rollback
end catch

end
go





Create Procedure SPR_MovimientoComision
@pID int = null,
@pFK_Agente INT = null, 
@pFK_Tipo_Movimiento INT = null, 
@pFK_Operacion INT = null, 
@pFecha DATE = null, 
@pMonto MONEY = null
as
begin
begin try
    begin tran
    
Select *
From MovimientoComision
Where ID = isnull(@pID, ID)  and FK_Agente = isNull(@pFK_Agente, FK_Agente) and FK_Tipo_Movimiento = isNull(@pFK_Tipo_Movimiento, FK_Tipo_Movimiento) and FK_Operacion = isNull(@pFK_Operacion, FK_Operacion) and Fecha = isNull(@pFecha, Fecha) and Monto = isNull(@pMonto, Monto) and Visible = 'y'
commit
end try

begin catch
    if (@@TRANCOUNT > 0)
rollback
end catch

end
go


Create Procedure SPU_MovimientoComision
@pID int,
@pFK_Agente INT = null, 
@pFK_Tipo_Movimiento INT = null, 
@pFK_Operacion INT = null, 
@pFecha DATE = null, 
@pMonto MONEY = null
as
begin
begin try
    begin tran

    declare @XmlAntes XML = (select * from MovimientoComision for XML auto, type)
    
Update  MovimientoComision
Set FK_Agente = isNull(@pFK_Agente, FK_Agente), FK_Tipo_Movimiento = isNull(@pFK_Tipo_Movimiento, FK_Tipo_Movimiento), FK_Operacion = isNull(@pFK_Operacion, FK_Operacion), Fecha = isNull(@pFecha, Fecha), Monto = isNull(@pMonto, Monto)
Where @pId = ID

declare @XmlDespues XML = (select * from MovimientoComision for XML auto, type)

        exec SPC_EventoMantenimiento MovimientoComision, 'actualizacion', null, @XmlAntes, @XmlDespues 
        
commit
end try

begin catch
    if (@@TRANCOUNT > 0)
rollback
end catch

end
go



Create Procedure SPR_EventoMantenimiento
@pID int = null,
@pTabla NVARCHAR(50) = null, 
@pAntes XML = null, 
@pDespues XML = null
as
begin
Select *From EventoMantenimiento
end
go


--################################ --


    Fuente:

     Conocimiento adquirido
     Proyectos anteriores

    No hay comentarios.:

    Publicar un comentario