REALIZAR BACKUP ANTES DE EJECTURAR ESTE SCRIPT

REALIZAR BACKUP ANTES DE EJECTURAR ESTE SCRIPT

REALIZAR BACKUP ANTES DE EJECTURAR ESTE SCRIPT

REALIZAR BACKUP ANTES DE EJECTURAR ESTE SCRIPT

REALIZAR BACKUP ANTES DE EJECTURAR ESTE SCRIPT

REALIZAR BACKUP ANTES DE EJECTURAR ESTE SCRIPT


ESTE SCRIPT ESTA PENSADO PARA PASAR SALDOS DE STOCK DE UNA BASE A OTRA EN UNA MISMA INSTANCIA SQL Y LA BASE DE DESTINO TIENE QUE SER UNA BASE NUEVA, SIN MOVIMIENTOS DE SALDOS DE STOCK .


EN EL SCRIPT SE DEFINEN EN CADA PASO LAS VARIABLES PARA NO TENER QUE TOCAR EL CODIGO YA PROBADO.

LAS VARIABLES SON PARA DEFINIR LA BASE DE ORIGEN, LA BASE DE DESTINO, EL DEPOSITO DE DESTINO Y LA FECHA DEL SALDO.

 



/* =========================================================

   PROCEDIMIENTO PARA VOLCAR SALDOS DE STOCK ENTRE BASES

   USANDO VARIABLES PARA ORIGEN, DESTINO, DEPÓSITO Y FECHA

   ========================================================= */


-- 1) DEFINICIÓN DE VARIABLES

DECLARE @BaseOrigen NVARCHAR(128) = N'BASE_ORIGEN';   -- <<CAMBIAR AQUI>>

DECLARE @BaseDestino NVARCHAR(128) = N'BASE DESTINO';  -- <<CAMBIAR AQUI>>

DECLARE @Deposito NVARCHAR(10) = N'01';               -- <<CAMBIAR SI CORRESPONDE>>

DECLARE @FechaAnt DATETIME = '2025-10-01 00:00:00.000'; -- <<CAMBIAR SI CORRESPONDE>>


/* =========================================================

   3) PREVIEW DE LOS DATOS A INSERTAR ( MUESTRA LOS DATOS QUE SE VAN A INSERTAR EN LA BASE DESTINO)

   ========================================================= */

-- 1) DEFINICIÓN DE VARIABLES

DECLARE @BaseOrigen NVARCHAR(128) = N'WEYREUTER_LIBERTADOR';   -- <<CAMBIAR AQUI>>

DECLARE @BaseDestino NVARCHAR(128) = N'WEYREUTER_LIBERTADOR_SRL';  -- <<CAMBIAR AQUI>>

DECLARE @Deposito NVARCHAR(10) = N'01';               -- <<CAMBIAR SI CORRESPONDE>>

DECLARE @FechaAnt DATETIME = '2025-10-01 00:00:00.000'; -- <<CAMBIAR SI CORRESPONDE>>



DECLARE @SqlPreview NVARCHAR(MAX);


SET @SqlPreview = '

SELECT TOP 100

    D.COD_ARTICU,

    ''' + @Deposito + ''' AS COD_DEPOSI,

    ''' + CONVERT(NVARCHAR(30), @FechaAnt, 120) + ''' AS FECHA_ANT,

    O.CANT_STOCK AS SALDO_ANT

FROM [' + @BaseDestino + '].dbo.STA11 D

INNER JOIN [' + @BaseOrigen + '].dbo.STA19 O

    ON D.COD_ARTICU = O.COD_ARTICU COLLATE Latin1_General_BIN

';


EXEC sp_executesql @SqlPreview;



/* =========================================================



   4) INSERTAR SALDOS EN STA19 DE DESTINO 


   ========================================================= */

DECLARE @BaseOrigen NVARCHAR(128) = N'WEYREUTER_LIBERTADOR';   -- <<CAMBIAR AQUI>>

DECLARE @BaseDestino NVARCHAR(128) = N'WEYREUTER_LIBERTADOR_SRL';  -- <<CAMBIAR AQUI>>

DECLARE @Deposito NVARCHAR(10) = N'01';               -- <<CAMBIAR SI CORRESPONDE>>

DECLARE @FechaAnt DATETIME = '2025-10-01 00:00:00.000'; -- <<CAMBIAR SI CORRESPONDE>>


DECLARE @SqlInsert NVARCHAR(MAX);


SET @SqlInsert = '

INSERT INTO [' + @BaseDestino + '].dbo.STA19 (COD_ARTICU, COD_DEPOSI, FECHA_ANT, SALDO_ANT)

SELECT 

    D.COD_ARTICU,

    ''' + @Deposito + ''' AS COD_DEPOSI,

    ''' + CONVERT(NVARCHAR(30), @FechaAnt, 120) + ''' AS FECHA_ANT,

    O.CANT_STOCK AS SALDO_ANT

FROM [' + @BaseDestino + '].dbo.STA11 D

INNER JOIN [' + @BaseOrigen + '].dbo.STA19 O

    ON D.COD_ARTICU = O.COD_ARTICU COLLATE Latin1_General_BIN

';


BEGIN TRY

    BEGIN TRAN;

    EXEC sp_executesql @SqlInsert;

    COMMIT TRAN;

    PRINT 'Insert finalizado correctamente.';

END TRY

BEGIN CATCH

    ROLLBACK TRAN;

    SELECT ERROR_NUMBER() AS ErrNumero, ERROR_MESSAGE() AS ErrMensaje;

END CATCH;



/* =========================================================

   5) VALIDACIÓN POSTERIOR ( COMPARAR RESULTADOS, SI SON IGUALES SE SUPONE QUE EL PROCESO FUE EXITOSO

   ========================================================= */

DECLARE @BaseOrigen NVARCHAR(128) = N'WEYREUTER_LIBERTADOR';   -- <<CAMBIAR AQUI>>

DECLARE @BaseDestino NVARCHAR(128) = N'WEYREUTER_LIBERTADOR_SRL';  -- <<CAMBIAR AQUI>>

DECLARE @Deposito NVARCHAR(10) = N'01';               -- <<CAMBIAR SI CORRESPONDE>>

DECLARE @FechaAnt DATETIME = '2025-10-01 00:00:00.000'; -- <<CAMBIAR SI CORRESPONDE>>


DECLARE @SqlValidacion NVARCHAR(MAX);


SET @SqlValidacion = '

SELECT 

    (SELECT COUNT(*) FROM [' + @BaseOrigen + '].dbo.STA19) AS Count_Origen,

    (SELECT SUM(CANT_STOCK) FROM [' + @BaseOrigen + '].dbo.STA19) AS Sum_Origen;


SELECT 

    (SELECT COUNT(*) FROM [' + @BaseDestino + '].dbo.STA19) AS Count_Destino,

    (SELECT SUM(SALDO_ANT) FROM [' + @BaseDestino + '].dbo.STA19) AS Sum_Destino;

';


EXEC sp_executesql @SqlValidacion;