A query, I have a procedure with transaction handling, in which several INSERT must be executed, as I do to know in which INSERT I failed the procedure in such a way that I can show in the RAISERROR
message something like "error to insert the document XXXXXXXXX in the JOURNAL "
I have ignored the declaration of variables, etc., etc. in order to graph what is intended to achieve.
ALTER procedure PROCESA_FACTURA
(@PROVEEDOR VARCHAR(20),
@DOCUMENTO VARCHAR(50),
@TIPO VARCHAR(3))
AS
BEGIN
SET NOCOUNT ON;
SET LANGUAGE SPANISH;
BEGIN TRANSACTION
BEGIN TRY
-- ASIENTO_DE_DIARIO
INSERT INTO ASIENTO_DE_DIARIO
(ASIENTO,PAQUETE,TIPO_ASIENTO,FECHA,CONTABILIDAD,ORIGEN,CLASE_ASIENTO,
TOTAL_DEBITO_LOC,TOTAL_DEBITO_DOL,TOTAL_CREDITO_LOC,TOTAL_CREDITO_DOL,
ULTIMO_USUARIO,FECHA_ULT_MODIF,MARCADO,NOTAS,TOTAL_CONTROL_LOC,TOTAL_CONTROL_DOL,
USUARIO_CREACION,FECHA_CREACION,DEPENDENCIA)
SELECT
@ASIENTO, @PAQUETE, @TIPO_ASIENTO, @FECHA, @CONTABILIDAD, @ORIGEN, @CLASE_ASIENTO,
@TOTAL_DEBITO_LOC, @TOTAL_DEBITO_DOL, @TOTAL_CREDITO_LOC, @TOTAL_CREDITO_DOL,
@ULTIMO_USUARIO, @FECHA_ULT_MODIF, @MARCADO, @NOTAS_TEMP, @TOTAL_CONTROL_LOC, @TOTAL_CONTROL_DOL,
@USUARIO_CREACION, @FECHA_CREACION, @DEPENDENCIA;
-- DIARIO
INSERT INTO DIARIO
(ASIENTO,CONSECUTIVO,NIT,CENTRO_COSTO,CUENTA_CONTABLE,FUENTE,REFERENCIA,
DEBITO_LOCAL,DEBITO_DOLAR,CREDITO_LOCAL,CREDITO_DOLAR,DEBITO_UNIDADES,CREDITO_UNIDADES,
TIPO_CAMBIO,BASE_LOCAL,BASE_DOLAR,PROYECTO,FASE,PROCESO_REBATE)
SELECT
@ASIENTO,@CONSECUTIVO,@NIT,@CENTRO_COSTO,@CUENTA_CONTABLE,@FUENTE,@REFERENCIA,
@DEBITO_LOCAL,@DEBITO_DOLAR,@CREDITO_LOCAL,@CREDITO_DOLAR,@DEBITO_UNIDADES,@CREDITO_UNIDADES,
@TIPO_CAMBIO,@BASE_LOCAL,@BASE_DOLAR,@PROYECTO,@FASE,@PROCESO_REBATE;
-- DIARIO2
INSERT INTO DIARIO2
(ASIENTO,CONSECUTIVO,NIT,CENTRO_COSTO,CUENTA_CONTABLE,FUENTE,REFERENCIA,
DEBITO_LOCAL,DEBITO_DOLAR,CREDITO_LOCAL,CREDITO_DOLAR,DEBITO_UNIDADES,CREDITO_UNIDADES,
TIPO_CAMBIO,BASE_LOCAL,BASE_DOLAR,PROYECTO,FASE,PROCESO_REBATE)
SELECT
@ASIENTO,@CONSECUTIVO,@NIT,@CENTRO_COSTO,@CUENTA_CONTABLE,@FUENTE,@REFERENCIA,
@DEBITO_LOCAL,@DEBITO_DOLAR,@CREDITO_LOCAL,@CREDITO_DOLAR,@DEBITO_UNIDADES,@CREDITO_UNIDADES,
@TIPO_CAMBIO,@BASE_LOCAL,@BASE_DOLAR,@PROYECTO,@FASE,@PROCESO_REBATE;
-- MAYOR
INSERT INTO MAYOR
(ASIENTO,CONSECUTIVO,NIT,CENTRO_COSTO,CUENTA_CONTABLE,FUENTE,REFERENCIA,
DEBITO_LOCAL,DEBITO_DOLAR,CREDITO_LOCAL,CREDITO_DOLAR,DEBITO_UNIDADES,CREDITO_UNIDADES,
TIPO_CAMBIO,BASE_LOCAL,BASE_DOLAR,PROYECTO,FASE,PROCESO_REBATE)
SELECT
@ASIENTO,@CONSECUTIVO,@NIT,@CENTRO_COSTO,@CUENTA_CONTABLE,@FUENTE,@REFERENCIA,
@DEBITO_LOCAL,@DEBITO_DOLAR,@CREDITO_LOCAL,@CREDITO_DOLAR,@DEBITO_UNIDADES,@CREDITO_UNIDADES,
@TIPO_CAMBIO,@BASE_LOCAL,@BASE_DOLAR,@PROYECTO,@FASE,@PROCESO_REBATE;
--END
-- GRABA BITACORA
INSERT INTO BITACORA
(TIPO_CARGA,PROVEEDOR,FECHA_DOCUMENTO,TIPO_DOCUMENTO,DOCUMENTO,CONDICION_PAGO,SUBTOTAL,IMPUESTO,
MONTO,MONEDA,TIPO_CAMB_DOCUM,TIPO_CAMB_TVTA,TIPO_CAMB_TCOM,MONTO_RETENCION,MONTO_DETRACCION,FECHA_PROCESO)
SELECT
'CARGA_XML',@PROVEEDOR,@FECHA_DOCUMENTO,@TIPO,@DOCUMENTO,@CONDICION_PAGO,@SUBTOTAL,@IMPUESTO1,
@MONTO,@MONEDA,@TVTA,@TVTA,@TCOM,@MONTO_RETENCION, @MONTO_DETRACCION,GETDATE();
COMMIT TRANSACTION
END TRY
BEGIN CATCH
SET @strMsg = 'CARGA_XML_PROVEEDORES. Se ha producido un error!. No se pudo Grabar la información. '
+'Tipo Documento: '+ @DOCUMENTO + ' '
+'Documento: '+ @TIPO + ' '
RAISERROR (@strMsg,16,1);
END CATCH
END