/****** Object:  StoredProcedure [dbo].[paWcfSeInsTrn_TraEspReservas]    Script Date: 30/06/2021 7:56:07 ******/
IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[paWcfSeInsTrn_TraEspReservas]') AND type in (N'P', N'PC'))
DROP PROCEDURE [dbo].[paWcfSeInsTrn_TraEspReservas]
GO
/****** Object:  StoredProcedure [dbo].[paWcfSeInsTrn_TraEspOrdenPagoGIE]    Script Date: 30/06/2021 7:56:07 ******/
IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[paWcfSeInsTrn_TraEspOrdenPagoGIE]') AND type in (N'P', N'PC'))
DROP PROCEDURE [dbo].[paWcfSeInsTrn_TraEspOrdenPagoGIE]
GO
/****** Object:  StoredProcedure [dbo].[paWcfSeInsTrn_TraEspDevOdpGIE]    Script Date: 30/06/2021 7:56:07 ******/
IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[paWcfSeInsTrn_TraEspDevOdpGIE]') AND type in (N'P', N'PC'))
DROP PROCEDURE [dbo].[paWcfSeInsTrn_TraEspDevOdpGIE]
GO
/****** Object:  UserDefinedTableType [dbo].[dataTypeTrn_TraEspReservas]    Script Date: 30/06/2021 7:56:07 ******/
IF  EXISTS (SELECT * FROM sys.types st JOIN sys.schemas ss ON st.schema_id = ss.schema_id WHERE st.name = N'dataTypeTrn_TraEspReservas' AND ss.name = N'dbo')
DROP TYPE [dbo].[dataTypeTrn_TraEspReservas]
GO
/****** Object:  UserDefinedTableType [dbo].[dataTypeTrn_TraEspResDetalle]    Script Date: 30/06/2021 7:56:07 ******/
IF  EXISTS (SELECT * FROM sys.types st JOIN sys.schemas ss ON st.schema_id = ss.schema_id WHERE st.name = N'dataTypeTrn_TraEspResDetalle' AND ss.name = N'dbo')
DROP TYPE [dbo].[dataTypeTrn_TraEspResDetalle]
GO
/****** Object:  UserDefinedTableType [dbo].[dataTypeTrn_TraEspResAnexo]    Script Date: 30/06/2021 7:56:07 ******/
IF  EXISTS (SELECT * FROM sys.types st JOIN sys.schemas ss ON st.schema_id = ss.schema_id WHERE st.name = N'dataTypeTrn_TraEspResAnexo' AND ss.name = N'dbo')
DROP TYPE [dbo].[dataTypeTrn_TraEspResAnexo]
GO
/****** Object:  UserDefinedTableType [dbo].[dataTypeTrn_TraEspResAnexo]    Script Date: 30/06/2021 7:56:07 ******/
CREATE TYPE [dbo].[dataTypeTrn_TraEspResAnexo] AS TABLE(
	[TipDoc] [varchar](3) NULL,
	[Reserva] [int] NULL,
	[IdCia] [char](2) NULL,
	[NomCliente] [varchar](250) NULL,
	[TelCliente] [varchar](100) NULL,
	[emlCliente] [varchar](150) NULL,
	[DireccionCli] [varchar](100) NULL,
	[Observacion] [varchar](1000) NULL,
	[NombArchivo] [varchar](100) NULL,
	[DescripCarga] [varchar](250) NULL,
	[Clausulas] [varchar](2500) NULL,
	[Responsable] [varchar](100) NULL
)
GO
/****** Object:  UserDefinedTableType [dbo].[dataTypeTrn_TraEspResDetalle]    Script Date: 30/06/2021 7:56:07 ******/
CREATE TYPE [dbo].[dataTypeTrn_TraEspResDetalle] AS TABLE(
	[TipDoc] [varchar](3) NULL,
	[Reserva] [int] NULL,
	[IdCia] [char](2) NULL,
	[Item] [int] NULL,
	[ItemCnt] [int] NULL,
	[IdVehiculo] [varchar](10) NULL,
	[CdTipVeh] [varchar](4) NULL,
	[IdConductor] [varchar](16) NULL,
	[IdRuta] [varchar](4) NULL,
	[CdTipRuta] [varchar](15) NULL,
	[NumPasajeros] [int] NULL,
	[PesoNeto] [decimal](12, 4) NULL,
	[VrCobro] [money] NULL,
	[VrPagos] [money] NULL,
	[Referencia1] [varchar](50) NULL,
	[Referencia2] [varchar](50) NULL,
	[Referencia3] [varchar](50) NULL,
	[EsRutaCliente] [bit] NULL,
	[CdCiuOrigen] [varchar](8) NULL,
	[DirOrigen] [varchar](max) NULL,
	[FecOrigen] [datetime] NULL,
	[CdCiuDestino] [varchar](8) NULL,
	[DirDestino] [varchar](max) NULL,
	[FecDestino] [datetime] NULL,
	[DiasDisp] [int] NULL,
	[VrDia] [money] NULL,
	[Parada] [varchar](10) NULL,
	[CdTipServicio] [varchar](20) NULL,
	[EstadoItem] [varchar](20) NULL,
	[VrMonitor] [decimal](14, 4) NULL,
	[CantMonitor] [int] NULL,
	[VrRecorrido] [decimal](14, 4) NULL,
	[NumDias] [int] NULL,
	[TipoTarifa] [varchar](10) NULL,
	[IdColegio] [varchar](4) NULL,
	[TipFac] [varchar](3) NULL,
	[Factura] [int] NULL,
	[IdCiaFac] [char](2) NULL,
	[FechaFac] [smalldatetime] NULL,
	[TipCum] [varchar](3) NULL,
	[Cumplido] [int] NULL,
	[IdCiaCum] [char](2) NULL,
	[FechaCum] [smalldatetime] NULL,
	[Codigo] [varchar](3) NULL,
	[Itinerario] [varchar](1000) NULL,
	[VLargo] [bit] NULL,
	[IdOtroSi] [int] NULL,
	[EsItemPME] [bit] NULL
)
GO
/****** Object:  UserDefinedTableType [dbo].[dataTypeTrn_TraEspReservas]    Script Date: 30/06/2021 7:56:07 ******/
CREATE TYPE [dbo].[dataTypeTrn_TraEspReservas] AS TABLE(
	[TipDoc] [varchar](3) NULL DEFAULT ('RES'),
	[Reserva] [int] NULL DEFAULT ((0)),
	[IdCia] [char](2) NULL DEFAULT ('01'),
	[Fecha] [datetime] NULL,
	[FechaInicio] [datetime] NULL,
	[FechaFin] [datetime] NULL,
	[TipDocCnt] [varchar](3) NULL,
	[Contrato] [int] NULL,
	[IdCiaCnt] [char](2) NULL,
	[EstadoRes] [varchar](20) NULL,
	[IdCliente] [varchar](16) NULL,
	[IdAgencia] [varchar](16) NULL DEFAULT ('0'),
	[IdMneda] [varchar](5) NULL DEFAULT ('COP'),
	[CdCarga] [varchar](15) NULL,
	[Modalidad] [varchar](10) NULL,
	[TipoLiquid] [varchar](8) NULL,
	[TipFac] [varchar](3) NULL,
	[Factura] [int] NULL DEFAULT ((0)),
	[IdCiaFac] [char](2) NULL DEFAULT ('00'),
	[FechaFac] [smalldatetime] NULL,
	[TipFuec] [varchar](3) NULL,
	[NumFuec] [int] NULL DEFAULT ((0)),
	[IdCiaFuec] [char](2) NULL DEFAULT ('00'),
	[VrCobro] [money] NULL DEFAULT ((0)),
	[VrPagos] [money] NULL DEFAULT ((0)),
	[OrigenAdd] [varchar](10) NULL,
	[Anulado] [bit] NULL DEFAULT ((0)),
	[FecDev] [smalldatetime] NULL,
	[IdEstado] [varchar](4) NULL,
	[TimeSys] [smalldatetime] NULL,
	[FecUpdate] [smalldatetime] NULL,
	[IdCiaCrea] [char](2) NULL DEFAULT ('01'),
	[IdUsuario] [varchar](11) NULL,
	[IdGrupo] [varchar](4) NULL,
	[IdRutaG] [varchar](4) NULL,
	[NoRequiereGIE] [bit] NULL DEFAULT ((0))
)
GO
/****** Object:  StoredProcedure [dbo].[paWcfSeInsTrn_TraEspDevOdpGIE]    Script Date: 30/06/2021 7:56:09 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:	Heiman Daza Tamayo
-- Create date(dd/MM/yyyy): 24/06/2021
-- Description:	Insertar Trn_TraEspDevOdp sin Generacion de ingresos
-- =============================================
CREATE PROCEDURE [dbo].[paWcfSeInsTrn_TraEspDevOdpGIE]
	@Trn_TraEspDevOdp dataTypeTrn_TraEspDevOdp READONLY, --Tipo de dato definido por el usuario que representa la tabla Trn_TraEspDevOdp
	@Trn_EgrFactura dataTypeTrn_EgrFactura READONLY, --Tipo de dato definido por el usuario que representa la tabla Trn_EgrFactura
	@Trn_TraEspAntAbonos dataTypeTrn_TraEspAntAbonos READONLY, --Tipo de dato definido por el usuario que representa la tabla Trn_TraEspAntAbonos
	@Trn_Pagos dataTypeTrn_Pagos READONLY, --Tipo de dato definido por el usuario que representa la tabla Trn_Pagos
	@Trn_TraEspOrdenReservas dataTypeTrn_TraEspOrdenReservas READONLY, --Tipo de dato definido por el usuario que representa la tabla Trn_TraEspOrdenReservas

	@Trn_Comprobantes dataTypeTrn_Comprobantes READONLY, --Tipo de dato definido por el usuario que representa la tabla Trn_Comprobantes
	@Trn_ComDetalle dataTypeTrn_ComDetalle READONLY, --Tipo de dato definido por el usuario que representa la tabla Trn_ComDetalle
	@Trn_NiifComp dataTypeTrn_NiifComp READONLY, --Tipo de dato definido por el usuario que representa la tabla Trn_NiifComp
	@Trn_NiifDetalle dataTypeNiifDetalle READONLY, --Tipo de dato definido por el usuario que representa la tabla Trn_NiifDetalle

	@operacion varchar(1)
AS
DECLARE @Comprobante INT = 0 --Esta variable guarda el número consecutivo del comprobante
DECLARE @TipComp VARCHAR(3) = '0' --Esta variable guarda el tipo de comprobante
DECLARE @IdCiaComp VARCHAR(4) = '00' --Esta variable guarda la compañia del comprobante

DECLARE @CompNiif INT = 0 --Esta variable guarda el número consecutivo del comprobante Niif
DECLARE @TipCompNiif VARCHAR(3) = '0' --Esta variable guarda el tipo de comprobante Niif
DECLARE @IdCiaCompNiif VARCHAR(4) = '00'--Esta variable guarda la compañia del comprobante Niif

DECLARE @CompFis INT = 0 --Esta variable guarda el número consecutivo de comprobante Fiscal
DECLARE @TipCompFis VARCHAR(3)  = '0' --Esta variable guarda el tipo de comprobante Fiscal
DECLARE @IdCiaCompFis VARCHAR(4) = '00' --Esta variable guarda la compañia del comprobante Fiscal

DECLARE @TipDev VARCHAR(3) --En esta variable se guarda el consecutivo del documento aprobación
DECLARE @CiaDev VARCHAR(2) --En esta variable se guarda el consecutivo del documento aprobación
DECLARE @Dev INT --En esta variable se guarda el consecutivo del documento aprobación

DECLARE @TipDoc VARCHAR(3) --En esta variable se guarda el consecutivo del documento aprobación
DECLARE @Cia VARCHAR(2) --En esta variable se guarda el consecutivo del documento aprobación
	BEGIN TRAN
		BEGIN TRY		 
			declare @fecdev smalldatetime

			IF(@operacion = 'i')
			begin
				
				SELECT TOP 1 @TipDev = TipDev, @CiaDev = IdCia,@TipDoc = TipDoc, @Cia = IdCiaDoc,@fecdev = Fecha, @IdCiaComp = IdCia, @IdCiaCompNiif = IdCia, @IdCiaCompFis = IdCia FROM @Trn_TraEspDevOdp
				
				SELECT @Dev = Numero + 1  FROM TiposDocCons where IdDoc = @TipDev AND IdCia = @CiaDev
				IF(@Dev > 0)
					UPDATE TiposDocCons SET Numero = @Dev WHERE IdDoc = @TipDev AND IdCia = @CiaDev
				ELSE
				BEGIN
					SELECT @Dev = 1
					INSERT INTO TiposDocCons VALUES (@TipDev,@CiaDev,0,0,0,0,NULL,'',@Dev,0,0,'','',1,1,1,0,1,CURRENT_TIMESTAMP,null,null,null,null)
				END
				--John Roa--DIEGO ROMERO DICE QUE SI NO EXISTE EL COMPROBANTE CON ELMISMO NOMBRE DE DOC DEVOLUCIÓN INSERTA UN COMPROBANTE CON EL  TIPCOM SEA IIGUAL AL TIPDEV, en la tabla TiposCom(tipos de comprobantes)
				--es INACTIVO = 1, PARA PODER INSERTAR EN EGRFACTURA ESTE TIPCOM
				IF(NOT EXISTS(SELECT IdCom FROM TiposCom where IdCom = @TipDev))
				BEGIN
					INSERT INTO TiposCom VALUES (@TipDev,'DEVOLUCION DE ORDEN DE PAGO ESPECIAL',0,0,0,1,CURRENT_TIMESTAMP,NULL,NULL,null)
				END
				--
				IF(EXISTS(SELECT * FROM @Trn_Comprobantes))
				BEGIN
					SELECT TOP 1 @TipComp = TipCom FROM @Trn_Comprobantes
					SELECT @Comprobante = Numero + 1  FROM TiposComCons where IdCom  = @TipComp AND IdCia = @IdCiaComp
					--UPDATE TiposComCons SET Numero = @Comprobante WHERE IdCom = @TipComp AND IdCia = @IdCiaComp
					IF(@Comprobante <> '')
						UPDATE TiposComCons SET Numero = @Comprobante WHERE IdCom = @TipComp and IdCia = @IdCiaComp
					ELSE
					BEGIN
						SELECT @Comprobante = 1
						INSERT INTO TiposComCons VALUES (@TipComp,@IdCiaComp,0,0,@Comprobante,0,'','',1,1,1,0,1,CURRENT_TIMESTAMP,null,null)
					END
				END

				IF(EXISTS(SELECT * FROM @Trn_NiifComp WHERE TipoNiif = 'NIIF'))
				BEGIN
					SELECT TOP 1 @TipCompNiif = TipCom FROM @Trn_NiifComp WHERE TipoNiif = 'NIIF'
					SELECT @CompNiif = Numero + 1  FROM TiposComCons where IdCom  = @TipCompNiif AND IdCia = @IdCiaCompNiif
					--UPDATE TiposComCons SET Numero = @CompNiif WHERE IdCom = @TipCompNiif AND IdCia = @IdCiaCompNiif
					IF(@CompNiif <> '')
						UPDATE TiposComCons SET Numero = @CompNiif WHERE IdCom = @TipCompNiif and IdCia = @IdCiaCompNiif
					ELSE
					BEGIN
						SELECT @CompNiif = 1
						INSERT INTO TiposComCons VALUES (@TipCompNiif,@IdCiaCompNiif,0,0,@CompNiif,0,'','',1,1,1,0,1,CURRENT_TIMESTAMP,null,null)
					END
				END

				IF(EXISTS(SELECT * FROM @Trn_NiifComp WHERE TipoNiif = 'FISCAL'))
				BEGIN
					SELECT TOP 1 @TipCompFis = TipCom FROM @Trn_NiifComp WHERE TipoNiif = 'FISCAL'
					SELECT @CompFis = Numero + 1  FROM TiposComCons where IdCom  = @TipCompFis AND IdCia = @IdCiaCompFis
					--UPDATE TiposComCons SET Numero = @CompFis WHERE IdCom = @TipCompFis AND IdCia = @IdCiaCompFis
					IF(@CompNiif <> '')
						UPDATE TiposComCons SET Numero = @CompFis WHERE IdCom = @TipCompFis and IdCia = @IdCiaCompFis
					ELSE
					BEGIN
						SELECT @CompFis = 1
						INSERT INTO TiposComCons VALUES (@TipCompFis,@IdCiaCompFis,0,0,@CompFis,0,'','',1,1,1,0,1,CURRENT_TIMESTAMP,null,null)
					END
				END
			end
			
			IF(@operacion = 'i')
			begin
				IF(EXISTS(SELECT * FROM @Trn_TraEspDevOdp))
				BEGIN
				INSERT INTO Trn_TraEspDevOdp(
				TipDev,Devolucion,IdCia,Fecha,IdConcepto,TipDoc,OrdPago,IdCiaDoc,FecDoc,IdVehiculo,IdPoseedor,IdConductor,CxPagar,ModdDev,TipCom,Comprobante,
				IdCiaCom,Observacion,IdEstado,OrigenAdd,TimeSys,FecUpdate,IdCiaCrea,IdUsuario
				)
				SELECT 
				@TipDev,@Dev,@CiaDev,Fecha,IdConcepto,TipDoc,OrdPago,IdCiaDoc,FecDoc,IdVehiculo,IdPoseedor,IdConductor,CxPagar,ModdDev,@TipComp, @Comprobante,
				@IdCiaComp,Observacion,IdEstado,OrigenAdd,TimeSys,FecUpdate,IdCiaCrea,IdUsuario
				FROM @Trn_TraEspDevOdp
				END 

				IF(EXISTS(SELECT * FROM @Trn_EgrFactura))
				BEGIN
				INSERT INTO Trn_EgrFactura(
				TipCom,Comprobante,IdCia,Item,Fecha,TipFac,Factura,IdCiaFac,
				ItemFac,IdProveedor,IdCuenta,VrAbono,EsEgreso,ItemCom,pVehiculo,
				VehPropio,TipDev,NumDev,DetAbono
				)
				SELECT 
				@TipDev,@Dev,@CiaDev,Item,Fecha,TipFac,Factura,IdCiaFac,
				ItemFac,IdProveedor,IdCuenta,VrAbono,EsEgreso,ItemCom,pVehiculo,
				VehPropio,@TipDev,@Dev,DetAbono
				FROM @Trn_EgrFactura
				END 

				IF(EXISTS(SELECT * FROM @Trn_TraEspAntAbonos))
				BEGIN
				INSERT INTO Trn_TraEspAntAbonos(
				TipDoc,Documento,IdCia,Item,Fecha,TipAnt,Anticipo,IdCiaAnt,VrAbono,TipoAplica,Detalle,CdCuentaAnt
				)
				SELECT 
				@TipDev,@Dev,@CiaDev,Item,Fecha,TipAnt,Anticipo,IdCiaAnt,(-VrAbono),TipoAplica,Detalle,CdCuentaAnt
				FROM @Trn_TraEspAntAbonos
				END

				IF(EXISTS(SELECT * FROM @Trn_Pagos))
				BEGIN
				INSERT INTO Trn_Pagos(
				TipDoc, Documento, IdCia, Item, Fecha, IdForma, Detalle, VrPagado,
				VrCambio, EsCaja, IdBanco, NitCliente, CdAgencia, NumForma, FecForma, 
				CtaForma, Beneficiario, Referncia1, Referncia2, CdLocal, NumAutoriza, 
				VrDenom, Cantidad, TipDenom, TipRef, DocRef, IdCiaRef, ItemDoc, CdCta, IdUsuario,
				CdProducto,FE_Ticket,Cant_Gals,PrecioBase,PrecioUnit
				)
				SELECT 
				@TipDev, @Dev, @CiaDev, Item, Fecha, IdForma, Detalle, VrPagado,
				VrCambio, EsCaja, IdBanco, NitCliente, CdAgencia, NumForma, FecForma, 
				CtaForma, Beneficiario, Referncia1, Referncia2, CdLocal, NumAutoriza, 
				VrDenom, Cantidad, TipDenom, TipRef, DocRef, IdCiaRef, ItemDoc, CdCta, IdUsuario,
				CdProducto, FE_Ticket, Cant_Gals, PrecioBase, PrecioUnit
				FROM @Trn_Pagos
				END

				IF(EXISTS(SELECT * FROM @Trn_Comprobantes))
				BEGIN
				INSERT INTO Trn_Comprobantes(
				TipCom, Comprobante, IdCia, Fecha, IdTercero, VrTotal, IdCta, EnEfectivo,
				NumCheque, FecCheque, TipDoc, Documento, IdCiaDoc, Anulado, NumDev, FecDev,
				TipEgr, NEgreso, pVehiculo, VehPropio, CedCondtor, CodConce, Beneficiario, VrDivisa1,
				VrDivisa2, VrDivisa3, PermEditar, Integrado, EsEgreso, Anticipo, Observacion, IdEstado,
				Propddes, TimeSys, FecUpdate, IdCiaCrea, IdUsuario, CdSustento, Tipo_Pago, Establec,
				PEmision, Autorizac, FechaAut, NiifTipo, NiifNumero, FisTipo, FisNumero, DocSoporte,
				CodRes, DescServicio
				)
				SELECT 
				@TipComp, @Comprobante, @IdCiaComp, Fecha, IdTercero, VrTotal, IdCta, EnEfectivo,
				NumCheque, FecCheque, @TipDev, @Dev, @CiaDev, Anulado, NumDev, FecDev,
				TipEgr, NEgreso, pVehiculo, VehPropio, CedCondtor, CodConce, Beneficiario, VrDivisa1,
				VrDivisa2, VrDivisa3, PermEditar, Integrado, EsEgreso, Anticipo, Observacion, IdEstado,
				Propddes, TimeSys, FecUpdate, IdCiaCrea, IdUsuario, CdSustento, Tipo_Pago, Establec,
				PEmision, Autorizac, FechaAut, @TipCompNiif, @CompNiif, @TipCompFis, @CompFis, DocSoporte,
				CodRes, DescServicio
				FROM @Trn_Comprobantes
				END

				IF(EXISTS(SELECT * FROM @Trn_ComDetalle))
				BEGIN
				INSERT INTO Trn_ComDetalle(
				TipCom, Comprobante, IdCia, Item, Fecha, IdCuenta, Detalle, VrDebito, VrCredito,
				IdTercero, IdVehiculo, IdCCosto, IdSubCos, VrBase, TarifaBase, TipDoc, Documento,
				IdCiaDoc, CodConce, NitDoc, TipFac, Factura, IdCiaFac, ItemFac, FecVence, CodCta,
				NumCheque, Integrado, TipoAplica, Consolida, CodCargo, NitOtros, CodSubgpo, CiuOrigen, 
				CodAgncia, VehPropio, Referncia, TipDocRef, DocRef, IdCiaRef, TimeSys, FecUpdate, IdCiaCrea, 
				IdUsuario, CdConcTrib, CdTarifTrib, NumEstablec, PtoEmision, Num_Autoriza, FechAutoriza,CdCuentaNiif
				)
				SELECT 
				@TipComp,@Comprobante,@IdCiaComp, Item, Fecha, IdCuenta, Detalle, VrDebito, VrCredito,
				IdTercero, IdVehiculo, IdCCosto, IdSubCos, VrBase, TarifaBase, @TipDev, @Dev, @CiaDev,
				CodConce, NitDoc, TipFac, Factura, IdCiaFac, ItemFac, FecVence, CodCta,
				NumCheque, Integrado, TipoAplica, Consolida, CodCargo, NitOtros, CodSubgpo, CiuOrigen, 
				CodAgncia, VehPropio, Referncia, TipDocRef, DocRef, IdCiaRef, TimeSys, FecUpdate, IdCiaCrea, 
				IdUsuario, CdConcTrib, CdTarifTrib, NumEstablec, PtoEmision, Num_Autoriza, FechAutoriza,CdCuentaNiif
				FROM @Trn_ComDetalle
				END

				IF(EXISTS(SELECT * FROM @Trn_NiifComp))
				BEGIN
				INSERT INTO Trn_NiifComp(
				TipCom, Comprobante, IdCia, Fecha, IdTercero, VrTotal, IdCta,
				EnEfectivo, NumCheque, FecCheque, TipDoc, Documento, IdCiaDoc, Anulado, NumDev,
				FecDev, TipEgr, NEgreso, pVehiculo, VehPropio, CedCondtor, CodConce, Beneficiario,
				VrDivisa1, VrDivisa2, VrDivisa3, PermEditar, Integrado, EsEgreso, Anticipo, Observacion,
				IdEstado, Propddes, TimeSys, FecUpdate, IdCiaCrea, IdUsuario, TipoNiif, CdSustento,
				Tipo_Pago, Establec, PEmision, Autorizac,FechaAut,
				CtbTipo, CtbNumero,
				FisTipo, FisNumero 
				)
				SELECT 
				CASE N.TipoNiif WHEN 'NIIF' THEN @TipCompNiif ELSE @TipCompFis END, 
				CASE N.TipoNiif WHEN 'NIIF' THEN @CompNiif ELSE @CompFis END, 
				@CiaDev, 
				C.Fecha, C.IdTercero, C.VrTotal, C.IdCta,
				C.EnEfectivo, C.NumCheque, C.FecCheque, @TipDev, @Dev, @CiaDev, C.Anulado, C.NumDev,
				C.FecDev, C.TipEgr, C.NEgreso, C.pVehiculo, C.VehPropio, C.CedCondtor, C.CodConce, C.Beneficiario,
				C.VrDivisa1, C.VrDivisa2, C.VrDivisa3, C.PermEditar, C.Integrado, C.EsEgreso, C.Anticipo, C.Observacion,
				C.IdEstado, C.Propddes, C.TimeSys, C.FecUpdate, C.IdCiaCrea, C.IdUsuario, N.TipoNiif, C.CdSustento,
				C.Tipo_Pago, C.Establec, C.PEmision, C.Autorizac, C.FechaAut,
				CASE N.TipoNiif WHEN 'NIIF' THEN @TipCompNiif ELSE NULL END, CASE N.TipoNiif WHEN 'NIIF' THEN @CompNiif ELSE 0 END,
				CASE N.TipoNiif WHEN 'FISCAL' THEN @TipCompFis ELSE NULL END, CASE N.TipoNiif WHEN 'FISCAL' THEN @CompFis ELSE 0 END
				FROM @Trn_Comprobantes AS C JOIN @Trn_NiifComp AS N ON C.TipCom = N.TipComCont AND C.Comprobante = N.ComprobanteCont
				END

				IF(EXISTS(SELECT * FROM @Trn_NiifDetalle))
				BEGIN
				INSERT INTO Trn_NiifDetalle(
				TipCom, Comprobante, IdCia, Item, Fecha, IdCuenta, Detalle,
				VrDebito, VrCredito, IdTercero, IdVehiculo,IdCCosto, IdSubCos,
				VrBase, TarifaBase, TipDoc, Documento, IdCiaDoc, CodConce,
				NitDoc, TipFac, Factura, IdCiaFac, ItemFac, FecVence, CodCta, 
				NumCheque, Integrado, TipoAplica, Consolida, CodCargo, NitOtros,
				CodSubgpo, CiuOrigen, CodAgncia, VehPropio, Referncia, TipDocRef,
				DocRef, IdCiaRef, TimeSys, FecUpdate, IdCiaCrea, IdUsuario,
				CdConcTrib, CdTarifTrib, NumEstablec, PtoEmision, Num_Autoriza,
				FechAutoriza, CodCuentaCG
				)
				SELECT 
				CASE NC.TipoNiif WHEN 'NIIF' THEN @TipCompNiif ELSE @TipCompFis END, 
				CASE NC.TipoNiif WHEN 'NIIF' THEN @CompNiif ELSE @CompFis END, 
				@CiaDev,
				N.Item, N.Fecha, N.IdCuenta, N.Detalle,
				N.VrDebito, N.VrCredito, N.IdTercero, N.IdVehiculo,N.IdCCosto, N.IdSubCos,
				N.VrBase, N.TarifaBase, @TipDev, @Dev, @CiaDev, N.CodConce,
				N.NitDoc, N.TipFac, N.Factura, N.IdCiaFac, N.ItemFac, N.FecVence, N.CodCta, 
				N.NumCheque, N.Integrado, N.TipoAplica, N.Consolida, N.CodCargo, N.NitOtros,
				N.CodSubgpo, N.CiuOrigen, N.CodAgncia, N.VehPropio, N.Referncia, N.TipDocRef,
				N.DocRef, N.IdCiaRef, N.TimeSys, N.FecUpdate, N.IdCiaCrea, N.IdUsuario,
				N.CdConcTrib, N.CdTarifTrib, N.NumEstablec, N.PtoEmision ,N.Num_Autoriza,
				N.FechAutoriza, N.CodCuentaCG
				FROM @Trn_NiifDetalle as N
				JOIN @Trn_NiifComp AS NC ON N.TipCom = NC.TipCom AND N.Comprobante = NC.Comprobante
				END
			end	

			IF(@operacion = 'i')
			begin
			  --Se actualiza la orden de pago con los datos de la devolución
			  update Trn_TraEspOrdenPago 
			  set NumDev = @Dev, FecDev = @fecdev,Anulado = 1  
			  from Trn_TraEspOrdenPago t1, @Trn_TraEspDevOdp t2
			  where t1.TipDoc = t2.TipDoc and t1.OrdPago = t2.OrdPago and t1.IdCia = t2.IdCiaDoc 
			  
			  --se actualiza la Trn_Comfactura
			  update Trn_ComFactura 
			  set VrAbonado =  t1.VrAbonado + t2.VrAbono 
			  from Trn_ComFactura t1, @Trn_EgrFactura t2
			  where t1.TipFac = t2.TipFac and t1.Factura = t2.Factura and t1.IdCia = t2.Idcia and t1.Item = t2.ItemFac and t1.IdProveedor = t2.IdProveedor

			  --Actualizar item de Reservas al estado en el que se encontraba antes de cuando le realizaron la Orden de Pago
			  UPDATE Trn_TraEspResDetalle
			  SET EstadoItem = t.EstadoItem
			  FROM Trn_TraEspResDetalle r, @Trn_TraEspOrdenReservas t
			  WHERE r.TipDoc = t.TipRes and r.Reserva = t.Reserva and r.IdCia = t.IdCiaRes and r.Item = t.ItemRes

			  --actualiza los anticipos(restar) para que quede como estaba antes de hacer la Orden de Pago
			  UPDATE Trn_TraEspAnticipos
			  SET VrAbonado = t2.VrAbono - VrAbonado
			  FROM Trn_TraEspAnticipos t1, @Trn_TraEspAntAbonos t2
			  WHERE t1.TipDoc = t2.TipAnt and t1.Anticipo = t2.Anticipo and t1.IdCia = t2.IdCiaAnt

			end

			SELECT @Dev,@Comprobante

			COMMIT TRAN
		END TRY
        BEGIN CATCH
			ROLLBACK TRAN
			DECLARE @ErrorMessage NVARCHAR(4000);
			DECLARE @ErrorSeverity INT;
			DECLARE @ErrorState INT;

			SELECT 
			@ErrorMessage = ERROR_MESSAGE(),
			@ErrorSeverity = ERROR_SEVERITY(),
			@ErrorState = ERROR_STATE();
			RAISERROR(
			@ErrorMessage, -- Message text.
			@ErrorSeverity, -- Severity.
			@ErrorState -- State.
			);
		END CATCH
RETURN 0
GO
/****** Object:  StoredProcedure [dbo].[paWcfSeInsTrn_TraEspOrdenPagoGIE]    Script Date: 30/06/2021 7:56:09 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:	Heiman Daza Tamayo
-- Create date(dd/MM/yyyy): 24/06/2021
-- Description:	Insertar Trn_TraEspOrdenPago para fincas Santur
-- =============================================
CREATE PROCEDURE [dbo].[paWcfSeInsTrn_TraEspOrdenPagoGIE]
	@Trn_TraEspOrdenPago dataTypeTrn_TraEspOrdenPago READONLY, --Tipo de dato definido por el usuario que representa la tabla Trn_TraEspOrdenPago
	@Trn_TraEspOrdenReservas dataTypeTrn_TraEspOrdenReservas READONLY, --Tipo de dato definido por el usuario que representa la tabla Trn_TraEspOrdenReservas
	@Trn_TraEspOrdenProg dataTypeTrn_TraEspOrdenProg READONLY, --Tipo de dato definido por el usuario que representa la tabla Trn_TraEspOrdenProg
	@Trn_TraEspConceptos dataTypeTrn_TraEspConceptos READONLY, --Tipo de dato definido por el usuario que representa la tabla Trn_TraEspConceptos
	@Trn_TraEspAntAbonos dataTypeTrn_TraEspAntAbonos READONLY, --Tipo de dato definido por el usuario que representa la tabla Trn_TraEspAntAbonos
	@Trn_DetCuentas dataTypeTrn_DetCuentas READONLY, --Tipo de dato definido por el usuario que representa la tabla Trn_DetCuentas
	@Trn_ComFactura dataTypeTrn_ComFactura READONLY, --Tipo de dato definido por el usuario que representa la tabla Trn_ComFactura
	@Trn_Pagos dataTypeTrn_Pagos READONLY, --Tipo de dato definido por el usuario que representa la tabla Trn_Pagos
	@Trn_Comprobantes dataTypeTrn_Comprobantes READONLY, --Tipo de dato definido por el usuario que representa la tabla Trn_Comprobantes
	@Trn_ComDetalle dataTypeTrn_ComDetalle READONLY, --Tipo de dato definido por el usuario que representa la tabla Trn_ComDetalle
	--16-01-2020.Yaqueline Lizarazo Diaz.Se cambia por el tipo de dato que se utiliza en el masivo de ordenes de pago, modificación que se realizo despues de dejar la contabilización en la misma clase.
	--@Trn_NiifComp dataTypeTrn_NiifComp READONLY, --Tipo de dato definido por el usuario que representa la tabla Trn_NiifComp
	@Trn_NiifComp dataTypeNiifComp READONLY, --Tipo de dato definido por el usuario que representa la tabla Trn_NiifComp
	@Trn_NiifDetalle dataTypeNiifDetalle READONLY, --Tipo de dato definido por el usuario que representa la tabla Trn_NiifDetalle

	@operacion varchar(1)
AS
DECLARE @Comprobante INT = 0 --Esta variable guarda el número consecutivo del comprobante
DECLARE @TipComp VARCHAR(3) = '0' --Esta variable guarda el tipo de comprobante
DECLARE @IdCiaComp VARCHAR(4) = '00' --Esta variable guarda la compañia del comprobante

DECLARE @CompNiif INT = 0 --Esta variable guarda el número consecutivo del comprobante Niif
DECLARE @TipCompNiif VARCHAR(3) = '0' --Esta variable guarda el tipo de comprobante Niif
DECLARE @IdCiaCompNiif VARCHAR(4) = '00'--Esta variable guarda la compañia del comprobante Niif

DECLARE @CompFis INT = 0 --Esta variable guarda el número consecutivo de comprobante Fiscal
DECLARE @TipCompFis VARCHAR(3)  = '0' --Esta variable guarda el tipo de comprobante Fiscal
DECLARE @IdCiaCompFis VARCHAR(4) = '00' --Esta variable guarda la compañia del comprobante Fiscal

DECLARE @TipDoc VARCHAR(3) --En esta variable se guarda el consecutivo del documento aprobación
DECLARE @Cia VARCHAR(2) --En esta variable se guarda el consecutivo del documento aprobación
DECLARE @Numero INT --En esta variable se guarda el consecutivo del documento aprobación
--Nuevas variables
DECLARE @Reserva INT = (SELECT  TOP 1 Reserva FROM @Trn_TraEspOrdenReservas) --Esta variable guarda el número de reserva
DECLARE @ItemRes INT = (SELECT  TOP 1 ItemRes FROM @Trn_TraEspOrdenReservas) --Esta variable guarda el número de ítem de reserva
DECLARE @IdCiaRes CHAR(2) = (SELECT  TOP 1 IdCiaRes FROM @Trn_TraEspOrdenReservas)  --Esta variable guarda la compañia de la reserva
DECLARE @VrPagos MONEY = 0 --En esta variable va guarda el valor de pago real de la reserva
DECLARE @VrTotalPagosaRES MONEY = 0 --En esta variable va guarda el valor de pagos hechas a la reserva por ordenes de pago
DECLARE @TipoTarifa varchar(20)
	BEGIN TRAN
		BEGIN TRY		 
			
			IF(@operacion = 'i')
			begin
				SELECT TOP 1 @TipDoc = TipDoc, @Cia = IdCia, @IdCiaComp = IdCia, @IdCiaCompNiif = IdCia, @IdCiaCompFis = IdCia FROM @Trn_TraEspOrdenPago
				SELECT @Numero = Numero + 1  FROM TiposDocCons where IdDoc = @TipDoc AND IdCia = @Cia

				IF(@Numero > 0)
					UPDATE TiposDocCons SET Numero = @Numero WHERE IdDoc = @TipDoc AND IdCia = @Cia
				ELSE
				BEGIN
					SELECT @Numero = 1
					INSERT INTO TiposDocCons VALUES (@TipDoc,@Cia,0,0,0,0,NULL,'',@Numero,0,0,'','',1,1,1,0,1,CURRENT_TIMESTAMP,null,null,null,null)
				END

				IF(EXISTS(SELECT * FROM @Trn_Comprobantes))
				BEGIN
					SELECT TOP 1 @TipComp = TipCom FROM @Trn_Comprobantes
					SELECT @Comprobante = Numero + 1  FROM TiposComCons where IdCom  = @TipComp AND IdCia = @IdCiaComp
					--UPDATE TiposComCons SET Numero = @Comprobante WHERE IdCom = @TipComp AND IdCia = @IdCiaComp
					IF(@Comprobante <> '')
						UPDATE TiposComCons SET Numero = @Comprobante WHERE IdCom = @TipComp and IdCia = @IdCiaComp
					ELSE
					BEGIN
						SELECT @Comprobante = 1
						INSERT INTO TiposComCons VALUES (@TipComp,@IdCiaComp,0,0,@Comprobante,0,'','',1,1,1,0,1,CURRENT_TIMESTAMP,null,null)
					END
				END

				IF(EXISTS(SELECT * FROM @Trn_NiifComp WHERE TipoNiif = 'NIIF'))
				BEGIN
					SELECT TOP 1 @TipCompNiif = TipCom FROM @Trn_NiifComp WHERE TipoNiif = 'NIIF'
					SELECT @CompNiif = Numero + 1  FROM TiposComCons where IdCom  = @TipCompNiif AND IdCia = @IdCiaCompNiif
					--UPDATE TiposComCons SET Numero = @CompNiif WHERE IdCom = @TipCompNiif AND IdCia = @IdCiaCompNiif
					IF(@CompNiif <> '')
						UPDATE TiposComCons SET Numero = @CompNiif WHERE IdCom = @TipCompNiif and IdCia = @IdCiaCompNiif
					ELSE
					BEGIN
						SELECT @CompNiif = 1
						INSERT INTO TiposComCons VALUES (@TipCompNiif,@IdCiaCompNiif,0,0,@CompNiif,0,'','',1,1,1,0,1,CURRENT_TIMESTAMP,null,null)
					END
				END

				IF(EXISTS(SELECT * FROM @Trn_NiifComp WHERE TipoNiif = 'FISCAL'))
				BEGIN
					SELECT TOP 1 @TipCompFis = TipCom FROM @Trn_NiifComp WHERE TipoNiif = 'FISCAL'
					SELECT @CompFis = Numero + 1  FROM TiposComCons where IdCom  = @TipCompFis AND IdCia = @IdCiaCompFis
					--UPDATE TiposComCons SET Numero = @CompFis WHERE IdCom = @TipCompFis AND IdCia = @IdCiaCompFis
					IF(@CompNiif <> '')
						UPDATE TiposComCons SET Numero = @CompFis WHERE IdCom = @TipCompFis and IdCia = @IdCiaCompFis
					ELSE
					BEGIN
						SELECT @CompFis = 1
						INSERT INTO TiposComCons VALUES (@TipCompFis,@IdCiaCompFis,0,0,@CompFis,0,'','',1,1,1,0,1,CURRENT_TIMESTAMP,null,null)
					END
				END
			end

			IF(@operacion = 'i')
			begin
				IF(EXISTS(SELECT * FROM @Trn_TraEspOrdenPago))
				BEGIN
				INSERT INTO Trn_TraEspOrdenPago(
				TipDoc,OrdPago,IdCia,Fecha,TipRes,Reserva,IdCiaRes,IdConcepto,Cantidad,Modalidad,LiqReservas,CxPagar,MulPlazos,IdPlazo,FechaVence,
				TipCom,Comprobante,IdCiaCom,Anulado,NumDev,FecDev,Observacion,IdEstado,OrigenAdd,TimeSys,FecUpdate,IdCiaCrea,IdUsuario
				)
				SELECT 
				@TipDoc,@Numero,@Cia,Fecha,TipRes,Reserva,IdCiaRes,IdConcepto,Cantidad,Modalidad,LiqReservas,CxPagar,MulPlazos,IdPlazo,FechaVence,
				@TipComp,@Comprobante,@IdCiaComp,Anulado,NumDev,FecDev,Observacion,IdEstado,OrigenAdd,TimeSys,FecUpdate,IdCiaCrea,IdUsuario
				FROM @Trn_TraEspOrdenPago
				END 

				IF(EXISTS(SELECT * FROM @Trn_TraEspOrdenReservas))
				BEGIN
				INSERT INTO Trn_TraEspOrdenReservas(
				TipDoc,OrdPago,IdCia,Item,Fecha,TipRes,Reserva,IdCiaRes,ItemRes,IdVehiculo,IdConductor,IdPropietario,IdPoseedor,VrServicio,VrDescuento,VrRetencion,
				VrReteIca,VrReteCREE,VrAnticipos,VrOtrosDctos,VrImpuestos,VrOtrosPagos,VrNeto,BaseRet,BaseIca,BaseCree,TarifaRet,TarifaIca,TarifaRtc,CodTarRet,
				CodTarIca,CodTarRtc,TipEgr,Egreso,IdCiaEgr,FechaEgr,NumCheque,Referencia,VrConcPagos,VrConcDctos,VrConcFondo,VrConcSeguro,VrConcAporte,VrConcImpuesto,
				VrRecCaja,CdForma,CdCenCosto,CdSubCenCos,VrSeguros,VrFondos,VrAportes,EdoLiqCausac,EstadoItem
				)
				SELECT 
				@TipDoc,@Numero,@Cia,Item,Fecha,TipRes,Reserva,IdCiaRes,ItemRes,IdVehiculo,IdConductor,IdPropietario,IdPoseedor,VrServicio,VrDescuento,VrRetencion,
				VrReteIca,VrReteCREE,VrAnticipos,VrOtrosDctos,VrImpuestos,VrOtrosPagos,VrNeto,BaseRet,BaseIca,BaseCree,TarifaRet,TarifaIca,TarifaRtc,CodTarRet,
				CodTarIca,CodTarRtc,TipEgr,Egreso,IdCiaEgr,FechaEgr,NumCheque,Referencia,VrConcPagos,VrConcDctos,VrConcFondo,VrConcSeguro,VrConcAporte,VrConcImpuesto,
				VrRecCaja,CdForma,CdCenCosto,CdSubCenCos,VrSeguros,VrFondos,VrAportes,EdoLiqCausac,EstadoItem
				FROM @Trn_TraEspOrdenReservas
				END

				IF(EXISTS(SELECT * FROM @Trn_TraEspConceptos))
				BEGIN
				INSERT INTO Trn_TraEspConceptos(
				TipDoc,Documento,IdCia,Item,Descripcion,Tarifa,TipoConc,RubroConcep,Cantidad,VrUnitario,TarifIva,IdConcepto,CdCuenta,NitTercero,
				CdTipoEsc,FechaNov,VrBase,TipoTarif,RefConc,Fijos,IncBaseRet,Referencia2,Referencia3,Cliente,Conductor,Vehiculo,ItemDoc,IdVehiculo
				)
				SELECT 
				@TipDoc,@Numero,@Cia,Item,Descripcion,Tarifa,TipoConc,RubroConcep,Cantidad,VrUnitario,TarifIva,IdConcepto,CdCuenta,NitTercero,
				CdTipoEsc,FechaNov,VrBase,TipoTarif,RefConc,Fijos,IncBaseRet,Referencia2,Referencia3,Cliente,Conductor,Vehiculo,ItemDoc,IdVehiculo
				FROM @Trn_TraEspConceptos
				END

				IF(EXISTS(SELECT * FROM @Trn_TraEspAntAbonos))
				BEGIN
				INSERT INTO Trn_TraEspAntAbonos(
				TipDoc,Documento,IdCia,Item,Fecha,TipAnt,Anticipo,IdCiaAnt,VrAbono,TipoAplica,Detalle,CdCuentaAnt
				)
				SELECT 
				@TipDoc,@Numero,@Cia,Item,Fecha,TipAnt,Anticipo,IdCiaAnt,VrAbono,TipoAplica,Detalle,CdCuentaAnt
				FROM @Trn_TraEspAntAbonos
				END

				IF(EXISTS(SELECT * FROM @Trn_DetCuentas))
				BEGIN
				INSERT INTO Trn_DetCuentas(
				TipDoc,Documento,IdCia,Concepto,Item,IdCuenta,Valor,Detalle,IdTercero,CodAgncia,CdCCosto,CdSubCos,pVehiculo,
				VrBase,TipFac,Factura,IdCiaFac,ItemFac,FecVence,Cheque,CiuOrigen,Referencia,VrTarifa,TipoTarif,CodConc,CodTarif
				)
				SELECT 
				@TipDoc,@Numero,@Cia,Concepto,Item,IdCuenta,Valor,Detalle,IdTercero,CodAgncia,CdCCosto,CdSubCos,pVehiculo,
				VrBase,TipFac,Factura,IdCiaFac,ItemFac,FecVence,Cheque,CiuOrigen,Referencia,VrTarifa,TipoTarif,CodConc,CodTarif
				FROM @Trn_DetCuentas
				END

				IF(EXISTS(SELECT * FROM @Trn_ComFactura))
				BEGIN
				INSERT INTO Trn_ComFactura(
				TipFac,Factura,IdCia,Item,IdProveedor,IdCuenta,TipDoc,Documento,IdCiaDoc,FecEmision,FecVence,VrFactura,VrAbonado,TipCom,Comprobante,ItemCom,
				Referencia,Detalle,pVehiculo,VehPropio,TipRef,DocRef,IdCiaRef,EstadoApr,MontoAprob
				)
				SELECT 
				@TipDoc,@Numero,@Cia,Item,IdProveedor,IdCuenta,@TipDoc,@Numero,@Cia,FecEmision,FecVence,VrFactura,VrAbonado,@TipComp,@Comprobante,ItemCom,
				Referencia,Detalle,pVehiculo,VehPropio,TipRef,DocRef,IdCiaRef,EstadoApr,MontoAprob
				FROM @Trn_ComFactura
				END 

				IF(EXISTS(SELECT * FROM @Trn_Pagos))
				BEGIN
				INSERT INTO Trn_Pagos(
				TipDoc, Documento, IdCia, Item, Fecha, IdForma, Detalle, VrPagado,
				VrCambio, EsCaja, IdBanco, NitCliente, CdAgencia, NumForma, FecForma, 
				CtaForma, Beneficiario, Referncia1, Referncia2, CdLocal, NumAutoriza, 
				VrDenom, Cantidad, TipDenom, TipRef, DocRef, IdCiaRef, ItemDoc, CdCta, IdUsuario,
				CdProducto, FE_Ticket, Cant_Gals, PrecioBase, PrecioUnit
				)
				SELECT 
				@TipDoc, @Numero, @Cia, Item, Fecha, IdForma, Detalle, VrPagado,
				VrCambio, EsCaja, IdBanco, NitCliente, CdAgencia, NumForma, FecForma, 
				CtaForma, Beneficiario, Referncia1, Referncia2, CdLocal, NumAutoriza, 
				VrDenom, Cantidad, TipDenom, TipRef, DocRef, IdCiaRef, ItemDoc, CdCta, IdUsuario,
				CdProducto, FE_Ticket, Cant_Gals, PrecioBase, PrecioUnit
				FROM @Trn_Pagos
				END

				IF(EXISTS(SELECT * FROM @Trn_Comprobantes))
				BEGIN
				INSERT INTO Trn_Comprobantes(
				TipCom, Comprobante, IdCia, Fecha, IdTercero, VrTotal, IdCta, EnEfectivo,
				NumCheque, FecCheque, TipDoc, Documento, IdCiaDoc, Anulado, NumDev, FecDev,
				TipEgr, NEgreso, pVehiculo, VehPropio, CedCondtor, CodConce, Beneficiario, VrDivisa1,
				VrDivisa2, VrDivisa3, PermEditar, Integrado, EsEgreso, Anticipo, Observacion, IdEstado,
				Propddes, TimeSys, FecUpdate, IdCiaCrea, IdUsuario, CdSustento, Tipo_Pago, Establec,
				PEmision, Autorizac, FechaAut, NiifTipo, NiifNumero, FisTipo, FisNumero, DocSoporte,
				CodRes, DescServicio
				)
				SELECT 
				@TipComp, @Comprobante, @IdCiaComp, Fecha, IdTercero, VrTotal, IdCta, EnEfectivo,
				NumCheque, FecCheque, @TipDoc, @Numero, @Cia, Anulado, NumDev, FecDev,
				TipEgr, NEgreso, pVehiculo, VehPropio, CedCondtor, CodConce, Beneficiario, VrDivisa1,
				VrDivisa2, VrDivisa3, PermEditar, Integrado, EsEgreso, Anticipo, Observacion, IdEstado,
				Propddes, TimeSys, FecUpdate, IdCiaCrea, IdUsuario, CdSustento, Tipo_Pago, Establec,
				PEmision, Autorizac, FechaAut, @TipCompNiif, @CompNiif, @TipCompFis, @CompFis, DocSoporte,
				CodRes, DescServicio
				FROM @Trn_Comprobantes
				END

				IF(EXISTS(SELECT * FROM @Trn_ComDetalle))
				BEGIN
				INSERT INTO Trn_ComDetalle(
				TipCom, Comprobante, IdCia, Item, Fecha, IdCuenta, Detalle, VrDebito, VrCredito,
				IdTercero, IdVehiculo, IdCCosto, IdSubCos, VrBase, TarifaBase, TipDoc, Documento,
				IdCiaDoc, CodConce, NitDoc, TipFac, Factura, IdCiaFac, ItemFac, FecVence, CodCta,
				NumCheque, Integrado, TipoAplica, Consolida, CodCargo, NitOtros, CodSubgpo, CiuOrigen, 
				CodAgncia, VehPropio, Referncia, TipDocRef, DocRef, IdCiaRef, TimeSys, FecUpdate, IdCiaCrea, 
				IdUsuario, CdConcTrib, CdTarifTrib, NumEstablec, PtoEmision, Num_Autoriza, FechAutoriza,CdCuentaNiif
				)
				SELECT 
				@TipComp, @Comprobante, @IdCiaComp, Item, Fecha, IdCuenta, Detalle, VrDebito, VrCredito,
				IdTercero, IdVehiculo, IdCCosto, IdSubCos, VrBase, TarifaBase, @TipDoc, @Numero, @Cia,
				CodConce, NitDoc, TipFac, Factura, IdCiaFac, ItemFac, FecVence, CodCta,
				NumCheque, Integrado, TipoAplica, Consolida, CodCargo, NitOtros, CodSubgpo, CiuOrigen, 
				CodAgncia, VehPropio, SUBSTRING(Referncia, 0, 50), TipDocRef, DocRef, IdCiaRef, TimeSys, FecUpdate, IdCiaCrea, 
				IdUsuario, CdConcTrib, CdTarifTrib, NumEstablec, PtoEmision, Num_Autoriza, FechAutoriza,CdCuentaNiif
				FROM @Trn_ComDetalle
				END

				IF(EXISTS(SELECT * FROM @Trn_NiifComp))
				BEGIN
				INSERT INTO Trn_NiifComp(
				TipCom, Comprobante, IdCia, Fecha, IdTercero, VrTotal, IdCta,
				EnEfectivo, NumCheque, FecCheque, TipDoc, Documento, IdCiaDoc, Anulado, NumDev,
				FecDev, TipEgr, NEgreso, pVehiculo, VehPropio, CedCondtor, CodConce, Beneficiario,
				VrDivisa1, VrDivisa2, VrDivisa3, PermEditar, Integrado, EsEgreso, Anticipo, Observacion,
				IdEstado, Propddes, TimeSys, FecUpdate, IdCiaCrea, IdUsuario, TipoNiif, CdSustento,
				Tipo_Pago, Establec, PEmision, Autorizac,FechaAut,
				CtbTipo, CtbNumero,
				FisTipo, FisNumero 
				)
				SELECT 
				CASE N.TipoNiif WHEN 'NIIF' THEN @TipCompNiif ELSE @TipCompFis END, 
				CASE N.TipoNiif WHEN 'NIIF' THEN @CompNiif ELSE @CompFis END, 
				@Cia, 
				C.Fecha, C.IdTercero, C.VrTotal, C.IdCta,
				C.EnEfectivo, C.NumCheque, C.FecCheque, @TipDoc, @Numero, @Cia, C.Anulado, C.NumDev,
				C.FecDev, C.TipEgr, C.NEgreso, C.pVehiculo, C.VehPropio, C.CedCondtor, C.CodConce, C.Beneficiario,
				C.VrDivisa1, C.VrDivisa2, C.VrDivisa3, C.PermEditar, C.Integrado, C.EsEgreso, C.Anticipo, C.Observacion,
				C.IdEstado, C.Propddes, C.TimeSys, C.FecUpdate, C.IdCiaCrea, C.IdUsuario, N.TipoNiif, C.CdSustento,
				C.Tipo_Pago, C.Establec, C.PEmision, C.Autorizac, C.FechaAut,
				CASE N.TipoNiif WHEN 'NIIF' THEN @TipCompNiif ELSE NULL END, CASE N.TipoNiif WHEN 'NIIF' THEN @CompNiif ELSE 0 END,
				CASE N.TipoNiif WHEN 'FISCAL' THEN @TipCompFis ELSE NULL END, CASE N.TipoNiif WHEN 'FISCAL' THEN @CompFis ELSE 0 END
				FROM @Trn_Comprobantes AS C JOIN @Trn_NiifComp AS N ON C.TipCom = N.TipComCont AND C.Comprobante = N.ComprobanteCont
				END

				IF(EXISTS(SELECT * FROM @Trn_NiifDetalle))
				BEGIN
				INSERT INTO Trn_NiifDetalle(
				TipCom, Comprobante, IdCia, Item, Fecha, IdCuenta, Detalle,
				VrDebito, VrCredito, IdTercero, IdVehiculo,IdCCosto, IdSubCos,
				VrBase, TarifaBase, TipDoc, Documento, IdCiaDoc, CodConce,
				NitDoc, TipFac, Factura, IdCiaFac, ItemFac, FecVence, CodCta, 
				NumCheque, Integrado, TipoAplica, Consolida, CodCargo, NitOtros,
				CodSubgpo, CiuOrigen, CodAgncia, VehPropio, Referncia, TipDocRef,
				DocRef, IdCiaRef, TimeSys, FecUpdate, IdCiaCrea, IdUsuario,
				CdConcTrib, CdTarifTrib, NumEstablec, PtoEmision, Num_Autoriza,
				FechAutoriza, CodCuentaCG
				)
				SELECT 
				CASE NC.TipoNiif WHEN 'NIIF' THEN @TipCompNiif ELSE @TipCompFis END, 
				CASE NC.TipoNiif WHEN 'NIIF' THEN @CompNiif ELSE @CompFis END, 
				@Cia,
				N.Item, N.Fecha, N.IdCuenta, N.Detalle,
				N.VrDebito, N.VrCredito, N.IdTercero, N.IdVehiculo,N.IdCCosto, N.IdSubCos,
				N.VrBase, N.TarifaBase, @TipDoc, @Numero, @Cia, N.CodConce,
				N.NitDoc, N.TipFac, N.Factura, N.IdCiaFac, N.ItemFac, N.FecVence, N.CodCta, 
				N.NumCheque, N.Integrado, N.TipoAplica, N.Consolida, N.CodCargo, N.NitOtros,
				N.CodSubgpo, N.CiuOrigen, N.CodAgncia, N.VehPropio, SUBSTRING(N.Referncia,0,50), N.TipDocRef,
				N.DocRef, N.IdCiaRef, N.TimeSys, N.FecUpdate, N.IdCiaCrea, N.IdUsuario,
				N.CdConcTrib, N.CdTarifTrib, N.NumEstablec, N.PtoEmision ,N.Num_Autoriza,
				N.FechAutoriza, N.CodCuentaCG
				FROM @Trn_NiifDetalle as N
				JOIN @Trn_NiifComp AS NC ON N.TipCom = NC.TipCom AND N.Comprobante = NC.Comprobante
				END

				BEGIN 
					UPDATE Trn_TraEspResDetalle
					SET EstadoItem ='LIQUIDADA'
					WHERE Reserva = @Reserva AND IdCia = @IdCiaRes AND Item = @ItemRes
				END
			end	

			SELECT @Numero,@Comprobante

			COMMIT TRAN
		END TRY
        BEGIN CATCH
			ROLLBACK TRAN
			DECLARE @ErrorMessage NVARCHAR(4000);
			DECLARE @ErrorSeverity INT;
			DECLARE @ErrorState INT;

			SELECT 
			@ErrorMessage = ERROR_MESSAGE(),
			@ErrorSeverity = ERROR_SEVERITY(),
			@ErrorState = ERROR_STATE();
			RAISERROR(
			@ErrorMessage, -- Message text.
			@ErrorSeverity, -- Severity.
			@ErrorState -- State.
			);
		END CATCH
RETURN 0
GO
/****** Object:  StoredProcedure [dbo].[paWcfSeInsTrn_TraEspReservas]    Script Date: 30/06/2021 7:56:09 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:	Joe Alexander Núñez Yaguna
-- Create date(dd/MM/yyy): 21/10/2016
-- Description:	Insertar CRUD Rerservas.
				--Se actualiza procedimiento para agregar campo de reservas NoRequiereGIE 24/06/2021
-- =============================================
CREATE PROCEDURE [dbo].[paWcfSeInsTrn_TraEspReservas]
	@Trn_TraEspReservas dataTypeTrn_TraEspReservas READONLY,--Tipo de dato definido por el usuario que representa la tabla Trn_TraEspReservas
	@Trn_TraEspResAnexo dataTypeTrn_TraEspResAnexo READONLY,--Tipo de dato definido por el usuario que representa la tabla Trn_TraEspEspAnexo
	@Trn_TraEspResDetalle dataTypeTrn_TraEspResDetalle READONLY,--Tipo de dato definido por el usuario que representa la tabla Trn_TraEspEspDetalle
	@operacion varchar(1)
AS
DECLARE @Documento INT --Esta variable guarda el número de consecutivo del Reserva/Cotización
DECLARE @TipDoc VARCHAR(3) --Esta variable guarda el tipo de documento del Reserva/Cotización
DECLARE @IdCia VARCHAR(4) --Esta variable guarda la compañia del Reserva/Cotización
declare @item int
declare @vranterior money
DECLARE @Detalle dataTypeTrn_TraEspResDetalle --Tipo de dato definido por el usuario que representa la tabla Trn_TraEspEspDetalle

	BEGIN TRAN
		BEGIN TRY

			--Seleccionar Variables
			IF(@operacion = 'i')
			begin
				SELECT TOP 1 @TipDoc = TipDoc, @IdCia = IdCia FROM @Trn_TraEspReservas
				SELECT @Documento = Numero + 1  FROM TiposDocCons where IdDoc = @TipDoc AND IdCia = @IdCia

				IF(@Documento <> '')
					UPDATE TiposDocCons SET Numero = @Documento WHERE IdDoc = @TipDoc and IdCia = @IdCia
				ELSE
				BEGIN
					SELECT @Documento = 1
					INSERT INTO TiposDocCons VALUES (@TipDoc,@IdCia,0,0,0,0,NULL,'',@Documento,0,0,'','',1,1,1,0,1,CURRENT_TIMESTAMP,null,null,null,null)
				END
			end

			--UPDATE SI-EXISTE RECORDS
			IF(@operacion = 'u')
			BEGIN
			   SELECT TOP 1 @TipDoc = TipDoc, @IdCia = IdCia, @Documento = Reserva FROM @Trn_TraEspResDetalle

			    --captura el valor de cobro para ver si cambia o no cambia para actualizarlo en el contrato
			   select @vranterior = VrCobro from Trn_TraEspReservas where TipDoc = (select TipDoc from @Trn_TraEspReservas) and IdCia = (select IdCia from @Trn_TraEspReservas) and Reserva = (select Reserva from @Trn_TraEspReservas)
			   
			   INSERT INTO @Detalle(
			   TipDoc,Reserva,IdCia,Item,ItemCnt,IdVehiculo,CdTipVeh,IdConductor,IdRuta,CdTipRuta,NumPasajeros,PesoNeto,VrCobro,VrPagos,Referencia1,
			   Referencia2,Referencia3,EsRutaCliente,CdCiuOrigen,DirOrigen,FecOrigen,CdCiuDestino,DirDestino,FecDestino,DiasDisp,VrDia,
			   Parada,CdTipServicio,EstadoItem,VrMonitor,CantMonitor,VrRecorrido,NumDias,TipoTarifa,IdColegio,TipFac,Factura,IdCiaFac,FechaFac,
			   TipCum,Cumplido,IdCiaCum,FechaCum,Codigo,Itinerario,VLargo,IdOtroSi,EsItemPME)
			   SELECT 
			   TipDoc,Reserva,IdCia,Item,ItemCnt,IdVehiculo,CdTipVeh,IdConductor,IdRuta,CdTipRuta,NumPasajeros,PesoNeto,VrCobro,VrPagos,Referencia1,
			   Referencia2,Referencia3,EsRutaCliente,CdCiuOrigen,DirOrigen,FecOrigen,CdCiuDestino,DirDestino,FecDestino,DiasDisp,VrDia,
			   Parada,CdTipServicio,EstadoItem,VrMonitor,CantMonitor,VrRecorrido,NumDias,TipoTarifa,IdColegio,TipFac,Factura,IdCiaFac,FechaFac,
			   TipCum,Cumplido,IdCiaCum,FechaCum,Codigo,Itinerario,VLargo,IdOtroSi,EsItemPME
			   FROM Trn_TraEspResDetalle WHERE TipDoc = @TipDoc and Reserva = @Documento and IdCia = @IdCia

			   if(EXISTS(SELECT * FROM @Trn_TraEspReservas))
			   begin
			   UPDATE Trn_TraEspReservas
			   SET 
			   TipDoc = t2.TipDoc,Reserva = t2.Reserva,IdCia = t2.IdCia,Fecha = t2.Fecha,FechaInicio = t2.FechaInicio,FechaFin = t2.FechaFin,
			   TipDocCnt = t2.TipDocCnt,Contrato = t2.Contrato,IdCiaCnt = t2.IdCiaCnt,EstadoRes = t2.EstadoRes,IdCliente = t2.IdCliente,
			   IdAgencia = t2.IdAgencia,IdMneda = t2.IdMneda,CdCarga = t2.CdCarga,Modalidad = t2.Modalidad,TipoLiquid = t2.TipoLiquid,
			   TipFac = t2.TipFac,Factura = t2.Factura,IdCiaFac = t2.IdCiaFac,FechaFac = t2.FechaFac,
			   TipFuec = t2.TipFuec,NumFuec = t2.NumFuec,IdCiaFuec = t2.IdCiaFuec,
			   VrCobro = t2.VrCobro,VrPagos = t2.VrPagos,OrigenAdd = t2.OrigenAdd,Anulado = t2.Anulado,FecDev = t2.FecDev,
			   IdEstado = t2.IdEstado,TimeSys = t2.TimeSys,FecUpdate = t2.FecUpdate,IdCiaCrea = t2.IdCiaCrea,IdUsuario = t2.IdUsuario,
			   IdGrupo = t2.IdGrupo, IdRutaG = t2.IdRutaG, NoRequiereGIE = t2.NoRequiereGIE
		       FROM Trn_TraEspReservas t1
			   JOIN @Trn_TraEspReservas t2 ON t1.TipDoc = t2.TipDoc and t1.Reserva = t2.Reserva and t1.IdCia = t2.IdCia
			   end

			   if(EXISTS(SELECT * FROM @Trn_TraEspResAnexo))
			   begin
			   UPDATE Trn_TraEspResAnexo
			   SET 
			   TipDoc = t2.TipDoc,Reserva = t2.Reserva,IdCia = t2.IdCia,NomCliente = t2.NomCliente,TelCliente = t2.TelCliente,
			   emlCliente = t2.emlCliente,DireccionCli = t2.DireccionCli,Observacion = t2.Observacion,NombArchivo = t2.NombArchivo,
			   DescripCarga = t2.DescripCarga,Clausulas = t2.Clausulas,Responsable = t2.Responsable
		       FROM Trn_TraEspResAnexo t1
			   JOIN @Trn_TraEspResAnexo t2 ON t1.TipDoc = t2.TipDoc and t1.Reserva = t2.Reserva and t1.IdCia = t2.IdCia
			   end

			   if(EXISTS(SELECT * FROM @Trn_TraEspResDetalle))
			   begin
			   select @item =  isnull(MAX(Item),0) from Trn_TraEspResDetalle where TipDoc = @TipDoc and Reserva = @Documento and IdCia = @IdCia

			   --actualizar los que vienen en el tipo de datos y coincida con los que estan en la tabla
			   UPDATE Trn_TraEspResDetalle
			   SET 
			   TipDoc = t2.TipDoc,Reserva = t2.Reserva,IdCia = t2.IdCia,Item = t2.Item,ItemCnt = t2.ItemCnt,IdVehiculo = t2.IdVehiculo,
			   CdTipVeh = t2.CdTipVeh,IdConductor = t2.IdConductor,IdRuta = t2.IdRuta,CdTipRuta = t2.CdTipRuta,NumPasajeros = t2.NumPasajeros,
			   PesoNeto = t2.PesoNeto,VrCobro = t2.VrCobro,VrPagos = t2.VrPagos,Referencia1 = t2.Referencia1,Referencia2 = t2.Referencia2,
			   Referencia3 = t2.Referencia3,EsRutaCliente = t2.EsRutaCliente,CdCiuOrigen = t2.CdCiuOrigen,DirOrigen = t2.DirOrigen,
			   FecOrigen = t2.FecOrigen,CdCiuDestino = t2.CdCiuDestino,DirDestino = t2.DirDestino,FecDestino = t2.FecDestino,DiasDisp = t2.DiasDisp,
			   VrDia = t2.VrDia,Parada = t2.Parada,CdTipServicio = t2.CdTipServicio,EstadoItem = t2.EstadoItem,VrMonitor = t2.VrMonitor,CantMonitor = t2.CantMonitor,
			   VrRecorrido = t2.VrRecorrido,NumDias=t2.NumDias,TipoTarifa=t2.TipoTarifa,IdColegio = t2.IdColegio,
			   TipFac = t2.TipFac,Factura = t2.Factura,IdCiaFac = t2.IdCiaFac,FechaFac = t2.FechaFac,
			   TipCum = t2.TipCum,Cumplido = t2.Cumplido,IdCiaCum = t2.IdCiaCum,FechaCum = t2.FechaCum,Codigo=t2.Codigo, Itinerario=t2.Itinerario,VLargo = t2.VLargo,
			   IdOtroSi = t2.IdOtroSi, EsItemPME = t2.EsItemPME
		       FROM Trn_TraEspResDetalle t1
			   JOIN @Trn_TraEspResDetalle t2 ON t1.TipDoc = t2.TipDoc and t1.Reserva = t2.Reserva and t1.IdCia = t2.IdCia and t1.Item = t2.Item
			   WHERE t1.TipDoc = t2.TipDoc and t1.Reserva = t2.Reserva and t1.IdCia = t2.IdCia and t1.Item = t2.Item
			   --Inserta los que no existen
			   INSERT INTO Trn_TraEspResDetalle(
			   TipDoc,Reserva,IdCia,Item,ItemCnt,IdVehiculo,CdTipVeh,IdConductor,IdRuta,CdTipRuta,NumPasajeros,PesoNeto,VrCobro,VrPagos,Referencia1,
			   Referencia2,Referencia3,EsRutaCliente,CdCiuOrigen,DirOrigen,FecOrigen,CdCiuDestino,DirDestino,FecDestino,DiasDisp,VrDia,Parada,CdTipServicio,EstadoItem,
			   VrMonitor,CantMonitor,VrRecorrido,NumDias,TipoTarifa,IdColegio,TipFac,Factura,IdCiaFac,FechaFac,TipCum,Cumplido,IdCiaCum,FechaCum,Codigo,Itinerario,VLargo,
			   IdOtroSi,EsItemPME
	           ) 
			   SELECT 
			   @TipDoc,@Documento,@IdCia,(@Item + ROW_NUMBER() OVER(ORDER BY Item ASC))
			   ,ItemCnt,IdVehiculo,CdTipVeh,IdConductor,IdRuta,CdTipRuta,NumPasajeros,PesoNeto,VrCobro,VrPagos,Referencia1,
			   Referencia2,Referencia3,EsRutaCliente,CdCiuOrigen,DirOrigen,FecOrigen,CdCiuDestino,DirDestino,FecDestino,DiasDisp,VrDia,Parada,CdTipServicio,EstadoItem
			   ,VrMonitor,CantMonitor,VrRecorrido,NumDias,TipoTarifa,IdColegio,TipFac,Factura,IdCiaFac,FechaFac,TipCum,Cumplido,IdCiaCum,FechaCum,isnull(Codigo,null),
			   Itinerario,VLargo,IdOtroSi,EsItemPME
			   FROM @Trn_TraEspResDetalle
			   WHERE (TipDoc + Convert(varchar,Reserva)+IdCia+Convert(varchar,Item)) NOT IN(SELECT(TipDoc + Convert(varchar,Reserva)+IdCia+Convert(varchar,Item)) FROM Trn_TraEspResDetalle)
			   --Eliminar los que no existen en el tipo de dato
			   delete from Trn_TraEspResDetalle
			   WHERE TipDoc = @TipDoc and Reserva = @Documento and IdCia = @IdCia and Item NOT IN(SELECT Item FROM @Trn_TraEspResDetalle)
			   end
			END

		    --INSERT NO-EXISTE RECORDS
			IF(@operacion = 'i')
			 BEGIN

				IF(EXISTS(SELECT * FROM @Trn_TraEspReservas))
				begin
				INSERT INTO Trn_TraEspReservas(
				TipDoc,Reserva,IdCia,Fecha,FechaInicio,FechaFin,TipDocCnt,Contrato,IdCiaCnt,EstadoRes,IdCliente,IdAgencia,IdMneda,CdCarga,Modalidad,TipoLiquid,
				TipFac,Factura,IdCiaFac,FechaFac,TipFuec,NumFuec,IdCiaFuec,VrCobro,VrPagos,OrigenAdd,Anulado,FecDev,IdEstado,
				TimeSys,FecUpdate,IdCiaCrea,IdUsuario,IdGrupo,IdRutaG,NoRequiereGIE
				)
				SELECT 
				@TipDoc,@Documento,@IdCia,Fecha,FechaInicio,FechaFin,TipDocCnt,Contrato,IdCiaCnt,EstadoRes,IdCliente,IdAgencia,IdMneda,CdCarga,Modalidad,TipoLiquid,
				TipFac,Factura,IdCiaFac,FechaFac,TipFuec,NumFuec,IdCiaFuec,VrCobro,VrPagos,OrigenAdd,Anulado,FecDev,IdEstado,
				TimeSys,FecUpdate,IdCiaCrea,IdUsuario,IdGrupo,IdRutaG,NoRequiereGIE
				FROM @Trn_TraEspReservas
				end

				IF(EXISTS(SELECT * FROM @Trn_TraEspResAnexo))
				begin
				INSERT INTO Trn_TraEspResAnexo(
				TipDoc,Reserva,IdCia,NomCliente,TelCliente,emlCliente,DireccionCli,Observacion,
				NombArchivo,DescripCarga,Clausulas,Responsable
				)
				SELECT 
				@TipDoc,@Documento,@IdCia,NomCliente,TelCliente,emlCliente,DireccionCli,Observacion,
				NombArchivo,DescripCarga,Clausulas,Responsable
				FROM @Trn_TraEspResAnexo
				end

				IF(EXISTS(SELECT * FROM @Trn_TraEspResDetalle))
				begin
				INSERT INTO Trn_TraEspResDetalle(
			    TipDoc,Reserva,IdCia,Item,ItemCnt,IdVehiculo,CdTipVeh,IdConductor,IdRuta,CdTipRuta,NumPasajeros,PesoNeto,VrCobro,VrPagos,Referencia1,
			    Referencia2,Referencia3,EsRutaCliente,CdCiuOrigen,DirOrigen,FecOrigen,CdCiuDestino,DirDestino,FecDestino,DiasDisp,VrDia,Parada,CdTipServicio,EstadoItem,
				VrMonitor,CantMonitor,VrRecorrido,NumDias,TipoTarifa,IdColegio,TipFac,Factura,IdCiaFac,FechaFac,TipCum,Cumplido,IdCiaCum,FechaCum,Codigo,Itinerario,VLargo,
				IdOtroSi,EsItemPME
	            ) 
			    SELECT 
			    @TipDoc,@Documento,@IdCia,Item,ItemCnt,IdVehiculo,CdTipVeh,IdConductor,IdRuta,CdTipRuta,NumPasajeros,PesoNeto,VrCobro,VrPagos,Referencia1,
			    Referencia2,Referencia3,EsRutaCliente,CdCiuOrigen,DirOrigen,FecOrigen,CdCiuDestino,DirDestino,FecDestino,DiasDisp,VrDia,Parada,CdTipServicio,EstadoItem,
				VrMonitor,CantMonitor,VrRecorrido,NumDias,TipoTarifa,IdColegio,TipFac,Factura,IdCiaFac,FechaFac,TipCum,Cumplido,IdCiaCum,FechaCum,isnull(Codigo, null),
				Itinerario,VLargo,IdOtroSi,EsItemPME
			    FROM @Trn_TraEspResDetalle
				end

			 END

			--DELETE RECORDS
			IF(@operacion = 'd')
			BEGIN
			 declare @Reserva int
			 select @TipDoc = TipDoc, @IdCia = IdCia,  @Reserva = Reserva from @Trn_TraEspReservas
				 DELETE FROM Trn_TraEspResDetalle WHERE TipDoc = @TipDoc and Reserva = @Reserva and IdCia = @IdCia
				 DELETE FROM Trn_TraEspResAnexo WHERE TipDoc = @TipDoc and Reserva = @Reserva and IdCia = @IdCia
				 DELETE FROM Trn_TraEspReservas WHERE TipDoc = @TipDoc and Reserva = @Reserva and IdCia = @IdCia
			END

			--ANULAR RECORDS
			IF(@operacion = 'a')
			BEGIN
				declare @FecDev smalldatetime 
			  select @TipDoc = TipDoc, @IdCia = IdCia,  @Documento = Reserva, @FecDev = FecDev from @Trn_TraEspReservas
			  UPDATE Trn_TraEspReservas SET IdEstado = '9999',Anulado = '1', FecDev = @FecDev  WHERE TipDoc = @TipDoc and Reserva = @Documento and IdCia = @IdCia

			  UPDATE Trn_TraEspContratoDet
			  SET TipRes = 'RES', NumRes = 0, IdCiaRes = '00',ItemRes = 0
			  FROM Trn_TraEspContratoDet cd
			  WHERE cd.TipRes = @TipDoc  and cd.NumRes = @Documento and cd.IdCiaRes = @IdCia

			  --actualizar el valor de presupuesto del contrato cuando se anula una reserva
			  UPDATE Trn_TraEspContratos
			  SET VrSaldoPresup = p.VrSaldoPresup + r.VrCobro
			  FROM Trn_TraEspContratos p 
			  JOIN Trn_TraEspReservas r on r.TipDoc = @TipDoc and r.Reserva = @Documento and r.IdCia = @IdCia
			  WHERE p.TipDoc = r.TipDocCnt  and p.Contrato = r.Contrato and p.IdCia = r.IdCiaCnt

			  UPDATE Trn_TraEspContratos
			  SET IdEstado = '0001'
			  FROM Trn_TraEspContratos p
			  JOIN Trn_TraEspReservas r on r.TipDoc = @TipDoc and r.Reserva = @Documento and r.IdCia = @IdCia
			  WHERE p.TipDoc = r.TipDocCnt  and p.Contrato = r.Contrato and p.IdCia = r.IdCiaCnt and p.VrSaldoPresup > 0 and p.IdEstado = '9998'
			  ------------------------------------
			END

			--ACTUALIZAR DETALLES DE CONTRATOS
			IF(@operacion = 'i')
			BEGIN
			  UPDATE Trn_TraEspContratoDet
			  SET TipRes = @TipDoc, NumRes = @Documento, IdCiaRes = @IdCia,ItemRes = d.Item
			  FROM Trn_TraEspContratoDet cd, @Trn_TraEspResDetalle d, @Trn_TraEspReservas r 
			  WHERE cd.TipDoc = r.TipDocCnt  and cd.Contrato = r.Contrato and cd.IdCia = r.IdCiaCnt and cd.Item = d.ItemCnt

			  --actualizar el valor de presupuestro del contrato, luego de insertar una reserva
			  UPDATE Trn_TraEspContratos
			  SET VrSaldoPresup = p.VrSaldoPresup - r.VrCobro
			  FROM Trn_TraEspContratos p, @Trn_TraEspReservas r 
			  WHERE p.TipDoc = r.TipDocCnt  and p.Contrato = r.Contrato and p.IdCia = r.IdCiaCnt

			  UPDATE Trn_TraEspContratos
			  SET IdEstado = '9998'
			  FROM Trn_TraEspContratos p, @Trn_TraEspReservas r 
			  WHERE p.TipDoc = r.TipDocCnt  and p.Contrato = r.Contrato and p.IdCia = r.IdCiaCnt and p.VrSaldoPresup = 0
			  ----------------------------------------
			END

			IF(@operacion = 'u')
			BEGIN

			--actualiza los items de un contrato con los que se relacionan en el tipo de datos nuevo
			  UPDATE Trn_TraEspContratoDet
			  SET TipRes = 'RES', NumRes = 0, IdCiaRes = '00',ItemRes = 0
			  FROM Trn_TraEspContratoDet cd, @Detalle d, @Trn_TraEspReservas r 
			  WHERE cd.TipDoc = r.TipDocCnt  and cd.Contrato = r.Contrato and cd.IdCia = r.IdCiaCnt and cd.Item = d.ItemCnt

			  UPDATE Trn_TraEspContratoDet
			  SET TipRes = @TipDoc, NumRes = @Documento, IdCiaRes = @IdCia,ItemRes = d.Item
			  FROM Trn_TraEspContratoDet cd, @Trn_TraEspResDetalle d, @Trn_TraEspReservas r 
			  WHERE cd.TipDoc = r.TipDocCnt  and cd.Contrato = r.Contrato and cd.IdCia = r.IdCiaCnt and cd.Item = d.ItemCnt

			  --actualizar el valor de presupuestro del contrato
			  if(@vranterior <> (select VrCobro from @Trn_TraEspReservas))
			  begin
				  UPDATE Trn_TraEspContratos
				  SET VrSaldoPresup = (p.VrSaldoPresup + @vranterior) - r.VrCobro
				  FROM Trn_TraEspContratos p, @Trn_TraEspReservas r 
				  WHERE p.TipDoc = r.TipDocCnt  and p.Contrato = r.Contrato and p.IdCia = r.IdCiaCnt
			  end 

			  UPDATE Trn_TraEspContratos
			  SET IdEstado = '9998'
			  FROM Trn_TraEspContratos p, @Trn_TraEspReservas r 
			  WHERE p.TipDoc = r.TipDocCnt  and p.Contrato = r.Contrato and p.IdCia = r.IdCiaCnt and p.VrSaldoPresup = 0


			END

			SELECT @Documento

			COMMIT TRAN
		END TRY
		BEGIN CATCH
			ROLLBACK TRAN
			DECLARE @ErrorMessage NVARCHAR(4000);
			DECLARE @ErrorSeverity INT;
			DECLARE @ErrorState INT;

			SELECT 
			@ErrorMessage = ERROR_MESSAGE(),
			@ErrorSeverity = ERROR_SEVERITY(),
			@ErrorState = ERROR_STATE();
			RAISERROR(
			@ErrorMessage, -- Message text.
			@ErrorSeverity, -- Severity.
			@ErrorState -- State.
			);
		END CATCH
RETURN 0
GO
