Drop Procedure If Exists SadSpSIUCatCuentas;
CREATE PROCEDURE SadSpSIUCatCuentas
(
PVMenu VarChar(25), -- Define el bloque a ejecutar
PVUSuario Varchar(15), -- Usuario con que se relacionará la cuenta
PNCntId Decimal(6,0), -- Id de la cuenta bancaria
PCEstado Char(1), -- Id de estado de la cuenta
PNBncid Decimal(6,0), -- Id del banco al que pertenece la cuenta
PNTCnid Decimal(6,0), -- Id del tipo de cuenta
PVumCuenta VarChar(12), -- Número de cuenta bancaria
PVObs VarChar(250) -- Observaciones
)
BEGIN
DECLARE EXIT HANDLER FOR SQLEXCEPTION
BEGIN
Rollback;
SELECT 'Ocurrió un problema al ejecutar la operación en la base de datos' AS Mensaje;
END;
If PvMenu = 'AgregaCuenta' then
Start Transaction;
Select IFNULL(Max(Cnt_Nid),0) + 1 InTo @SigIdCta
From Sad_TcatCuentas;
Insert
InTo Sad_TcatCuentas
(Cnt_NId, Bnc_Nid, TCn_Nid, Cnt_VNumCuenta, Cnt_VObs, Est_CId,
Cnt_DFecAlta, Cnt_VUsuAlta, Cnt_DFecUltMod, Cnt_VUsuUltMod)
Values (@SigIdCta, PNBncid, PNTCnid, PVumCuenta, PVObs, 'A',
Now(), PVUsuario, Now(),PVUsuario);
COMMIT;
SELECT 'Nada' As Mensaje;
End if;
If PVMenu = 'DamCtasDispUsuario' then
Select Cuentas.Cnt_Nid,
TpoCuenta.Tcn_VDescrip,
Case
When Cuentas.Cnt_VNumCuenta <= 1 Then ''
Else Concat(' - ',Cuentas.Cnt_VNumCuenta,CatBancos.Bnc_VNombre)
End As InfBancaria,
Cuentas.Cnt_VObs
From Sad_TCatCuentas As Cuentas
Left Join sad_trelusuctasasgn As CtasAsgn
On CtasAsgn.Usr_Clave = PVUSuario And
Cuentas.Cnt_NId = CtasAsgn.Cnt_Nid
Left Join Sad_TCatTpoCuentas As TpoCuenta
On Cuentas.Tcn_NId = TpoCuenta.Tcn_Nid
Left Join Sad_TCatBancos As CatBancos
On Cuentas.Bnc_Nid = CatBancos.Bnc_Nid
Where CtasAsgn.Cnt_NId is null;
End If;
If PvMenu = 'AsignaCuenta' then
Start Transaction;
Insert
InTo sad_trelusuctasasgn
(Usr_Clave,Cnt_Nid)
Values (PVUSuario,PNCntId);
Commit;
SELECT 'Nada' AS Mensaje;
End if;
If PvMenu = 'QuitaCuenta' then
Start Transaction;
Delete From sad_trelusuctasasgn
Where Usr_clave = PVUSuario And
Cnt_Nid = PNCntId;
Commit;
SELECT 'Nada' AS Mensaje;
End if;
If PvMenu = 'DameTposCuenta' then
Select Tcn_NId, Tcn_VDescrip
From sad_tcattpocuentas;
End if;
If PvMenu = 'DameCuentasCat' then
Select CatCuenta.Cnt_Nid As Cuenta,
TpoCta.Tcn_VDescrip,
Case CatCuenta.Bnc_Nid
When 1 Then ''
Else Concat_Ws(' - ',CatBanco.Bnc_VNombre,CatCuenta.Cnt_VNumCuenta)
End As InfoBanc,
CatCuenta.Cnt_VObs,
ifnull(Importes.Capital,0) As Capital,
IfNull(Importes.Transito,0) As Transito
From Sad_TCatCuentas As CatCuenta
Inner Join Sad_TRelUsuCtasAsgn As CtasAsgn
On CtasAsgn.Usr_Clave = PVUSuario And
CtasAsgn.Cnt_Nid = CatCuenta.Cnt_Nid
Left Join Sad_TCatTpoCuentas As TpoCta
On CatCuenta.TCn_Nid = TpoCta.TCn_Nid
Left Join Sad_TCatBancos As CatBanco
On CatCuenta.Bnc_Nid = CatBanco.Bnc_Nid
Left Join (
Select MovtoCta.Cnt_Nid,
Sum(Case MovtoCta.Mvt_CEstado
When 'P' Then MovtoCta.Mvt_NImporte
Else 0
End) As Capital,
Sum(Case MovtoCta.Mvt_CEstado
When 'T' Then MovtoCta.Mvt_NImporte
Else 0
End) As Transito
From Sad_TRegMovtosCtas As MovtoCta
Inner Join Sad_TRelUsuCtasAsgn As CtasAsgn
On CtasAsgn.Usr_Clave = PVUSuario And
MovtoCta.Cnt_Nid = CtasAsgn.Cnt_Nid
Group By MovtoCta.Cnt_Nid
) As Importes
On CatCuenta.Cnt_Nid = Importes.Cnt_Nid
Where CatCuenta.Est_CId = PCEstado;
End if;
If PvMenu = 'DameCuentasAsig' then
Select CatCuenta.Cnt_Nid As Cuenta,
TpoCta.Tcn_VDescrip,
Case CatCuenta.Bnc_Nid
When 1 Then ''
Else Concat_Ws(' - ',CatBanco.Bnc_VNombre,CatCuenta.Cnt_VNumCuenta)
End As InfoBanc,
CatCuenta.Cnt_VObs
From Sad_TCatCuentas As CatCuenta
Inner Join Sad_TRelUsuCtasAsgn As CtasAsgn
On CtasAsgn.Usr_Clave = PVUSuario And
CtasAsgn.Cnt_Nid = CatCuenta.Cnt_Nid
Left Join Sad_TCatTpoCuentas As TpoCta
On CatCuenta.TCn_Nid = TpoCta.TCn_Nid
Left Join Sad_TCatBancos As CatBanco
On CatCuenta.Bnc_Nid = CatBanco.Bnc_Nid;
End if;
End;