Procediment emmagatzemat que cridat des del SP_PostTransactionNotice permet modificar el camp d’usuari U_INTRX_SII_Concepto creat als documents i als assentaments, i que posteriorment, amb els EFM correctes, permet enviar el SII amb el concepte d’operació personalitzat
CREATE PROC [dbo].[SII_SP_PostTransactionNotice]
@object_type nvarchar(30),
@transaction_type nchar(1),
@num_of_cols_in_key int,
@list_of_key_cols_tab_del nvarchar(255),
@list_of_cols_val_tab_del nvarchar(255),
@error int output,
@error_message nvarchar (200) output
AS
BEGIN
declare @concepteSII nvarchar(60) = 'Indefinit'
declare @concepte nvarchar(60) = ''
declare @sqlCrearCursor nvarchar(4000)
declare @sqlUpdate nvarchar(4000)
-- Al crear un assentament que no està relacionat amb cap document, posar el concepte del SII segons les comptes que hi intervenen
-- Autor: David Martí
-- Data: 27/8/2019
if @object_type='30' and (@transaction_type='A' or @transaction_type='U')
begin
declare @tipus nvarchar(20)
select @tipus=TransType,@concepte=COALESCE(U_INTRX_SII_Concepto,'') from OJDT where TransId=@list_of_cols_val_tab_del
if @tipus='30'
begin
if (@concepte='')
begin
set @sqlCrearCursor = 'declare linies cursor for
select C.U_INTRX_SII_Concepto
from JDT1 L
join OACT C on C.AcctCode=L.Account
where (L.Account like ''6%'' or L.Account like ''7%'') and (LEN(C.U_INTRX_SII_Concepto)>0) and (L.TransId='+@list_of_cols_val_tab_del+')'
exec sp_executesql @sqlCrearCursor
open linies
fetch next from linies into @concepte
if len(@concepte)>0 set @concepteSII=@concepte
while @@FETCH_STATUS=0
begin
fetch next from linies into @concepte
if len(@concepte)>0 set @concepteSII=@concepte
end
close linies
deallocate linies
set @sqlUpdate = 'update OJDT set U_INTRX_SII_Concepto=''' + @concepteSII + ''' where TransId=' + @list_of_cols_val_tab_del
exec sp_executesql @sqlUpdate
end
end -- Assentament no pot estar vinculat amb un document
end
-- Al crear documents de compres o vendes, omplir el concepte del SII segons:
-- 1. Si el document es un document d'articles, amb el concepte genéric
-- 2. Si es un document de serveis, revisar la comptes i agafar el concepte del pla de comptes
-- Autor: David Marti
-- Data: 27/8/2019
if @object_type in ('13','14','18','19') and (@transaction_type='A' or @transaction_type='U')
begin
declare @taula0 nvarchar(20)
declare @taula1 nvarchar(20)
if @object_type='13'
begin
set @concepteSII='Venta de mercancias'
set @taula0='OINV'
set @taula1='INV1'
end
if @object_type='14'
begin
set @concepteSII='Abono de mercancias'
set @taula0='ORIN'
set @taula1='RIN1'
end
if @object_type='18'
begin
set @concepteSII='Compra de mercancias'
set @taula0='OPCH'
set @taula1='PCH1'
end
if @object_type='19'
begin
set @concepteSII='Abono de compra de mercancias'
set @taula0='ORPC'
set @taula1='RPC1'
end
if (@transaction_type='U')
begin
declare @sqlConsultaConcepte nvarchar(4000)= 'select @concepteOUT=COALESCE(U_INTRX_SII_Concepto,'''') from '+@taula0+' where DocEntry='+@list_of_cols_val_tab_del
declare @sqlParams nvarchar(100)
set @sqlParams= N'@concepteOUT nvarchar(60) OUTPUT'
exec sp_executeSql @sqlConsultaConcepte, @sqlParams, @concepteOUT=@concepte OUTPUT
end
if (@concepte='')
begin
-- Cercar el concepte segons les comptes que intervenen al document
set @sqlCrearCursor= 'declare linies cursor for
select C.U_INTRX_SII_Concepto
from '+@taula1+' L
join OACT C on C.AcctCode=L.AcctCode
where (L.AcctCode like ''6%'' or L.AcctCode like ''7%'') and (LEN(C.U_INTRX_SII_Concepto)>0) and (L.DocEntry='+@list_of_cols_val_tab_del+')'
exec sp_executesql @sqlCrearCursor
open linies
fetch next from linies into @concepte
if len(@concepte)>0 set @concepteSII=@concepte
while @@FETCH_STATUS=0
begin
fetch next from linies into @concepte
if len(@concepte)>0 set @concepteSII=@concepte
end
close linies
deallocate linies
set @sqlUpdate = 'update ' + @taula0 + ' set U_INTRX_SII_Concepto=''' + @concepteSII + ''' where DocEntry=' + @list_of_cols_val_tab_del
exec sp_executesql @sqlUpdate
end
end
END
-- Proceso del documentos SII (Concepto) -- Autor: David Marti -- Fecha: 28/8/2019 EXEC SII_SP_PostTransactionNotice @object_type,@transaction_type,@num_of_cols_in_key,@list_of_key_cols_tab_del,@list_of_cols_val_tab_del,@error output, @error_message output