SET DATEFORMAT dmy;
ALTER LOGIN syscom WITH DEFAULT_LANGUAGE = Español;


/****** Object:  StoredProcedure [dbo].[paWcfSeInsTrn_TraEspOrdenPago]    Script Date: 27/05/2024 11:00:26 ******/
DROP PROCEDURE IF EXISTS [dbo].[paWcfSeInsTrn_TraEspOrdenPago]
GO
/****** Object:  StoredProcedure [dbo].[paWcfSeInsPreFacturas]    Script Date: 27/05/2024 10:58:28 ******/
DROP PROCEDURE IF EXISTS [dbo].[paWcfSeInsPreFacturas]
GO
/****** Object:  StoredProcedure [dbo].[paWcfSeInsMsvTrn_Facturas]    Script Date: 27/05/2024 10:52:47 ******/
IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[paWcfSeInsMsvTrn_Facturas]') AND type in (N'P', N'PC'))
DROP PROCEDURE [dbo].[paWcfSeInsMsvTrn_Facturas]
GO
/****** Object:  StoredProcedure [dbo].[paWcfSeInsMsvOrdenPago]    Script Date: 27/05/2024 10:52:47 ******/
IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[paWcfSeInsMsvOrdenPago]') AND type in (N'P', N'PC'))
DROP PROCEDURE [dbo].[paWcfSeInsMsvOrdenPago]
GO
/****** Object:  StoredProcedure [dbo].[paWcfSeLisTrn_TraEspCuenta]    Script Date: 22/05/2024 11:16:11 ******/
IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[paWcfSeLisTrn_TraEspCuenta]') AND type in (N'P', N'PC'))
DROP PROCEDURE [dbo].[paWcfSeLisTrn_TraEspCuenta]
GO
/****** Object:  StoredProcedure [dbo].[paWcfSeLisTm_TraEspTempDetCons]    Script Date: 22/05/2024 11:16:11 ******/
IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[paWcfSeLisTm_TraEspTempDetCons]') AND type in (N'P', N'PC'))
DROP PROCEDURE [dbo].[paWcfSeLisTm_TraEspTempDetCons]
GO
/****** Object:  StoredProcedure [dbo].[paWcfSeLisTm_TraEspTempCargarDetCons]    Script Date: 22/05/2024 11:16:11 ******/
IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[paWcfSeLisTm_TraEspTempCargarDetCons]') AND type in (N'P', N'PC'))
DROP PROCEDURE [dbo].[paWcfSeLisTm_TraEspTempCargarDetCons]
GO
/****** Object:  StoredProcedure [dbo].[paWcfSeInsTrn_TraEspOrdenPagoGIE]    Script Date: 22/05/2024 11:16:11 ******/
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: 22/05/2024 11:16:11 ******/
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:  StoredProcedure [dbo].[paWcfSeInsTrn_Facturas]    Script Date: 22/05/2024 11:16:11 ******/
IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[paWcfSeInsTrn_Facturas]') AND type in (N'P', N'PC'))
DROP PROCEDURE [dbo].[paWcfSeInsTrn_Facturas]
GO
/****** Object:  StoredProcedure [dbo].[paWcfSeInsTrn_DevFcr]    Script Date: 22/05/2024 11:16:11 ******/
IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[paWcfSeInsTrn_DevFcr]') AND type in (N'P', N'PC'))
DROP PROCEDURE [dbo].[paWcfSeInsTrn_DevFcr]
GO
/****** Object:  StoredProcedure [dbo].[paWcfSeInsTrn_DevFco]    Script Date: 22/05/2024 11:16:11 ******/
IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[paWcfSeInsTrn_DevFco]') AND type in (N'P', N'PC'))
DROP PROCEDURE [dbo].[paWcfSeInsTrn_DevFco]
GO
/****** Object:  StoredProcedure [dbo].[paWcfSeInsMsvTrn_DevFcr]    Script Date: 22/05/2024 11:16:11 ******/
IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[paWcfSeInsMsvTrn_DevFcr]') AND type in (N'P', N'PC'))
DROP PROCEDURE [dbo].[paWcfSeInsMsvTrn_DevFcr]
GO
/****** Object:  Table [dbo].[tm_TraEsDetConc]    Script Date: 22/05/2024 11:16:11 ******/
IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[tm_TraEsDetConc]') AND type in (N'U'))
DROP TABLE [dbo].[tm_TraEsDetConc]
GO
/****** Object:  UserDefinedTableType [dbo].[wcfTempCausasionCuenta]    Script Date: 22/05/2024 11:16:11 ******/
IF  EXISTS (SELECT * FROM sys.types st JOIN sys.schemas ss ON st.schema_id = ss.schema_id WHERE st.name = N'wcfTempCausasionCuenta' AND ss.name = N'dbo')
DROP TYPE [dbo].[wcfTempCausasionCuenta]
GO
/****** Object:  UserDefinedTableType [dbo].[wcfItm_TraEsDetConc]    Script Date: 22/05/2024 11:16:11 ******/
IF  EXISTS (SELECT * FROM sys.types st JOIN sys.schemas ss ON st.schema_id = ss.schema_id WHERE st.name = N'wcfItm_TraEsDetConc' AND ss.name = N'dbo')
DROP TYPE [dbo].[wcfItm_TraEsDetConc]
GO
/****** Object:  UserDefinedTableType [dbo].[dataTypeTrn_Facturas]    Script Date: 22/05/2024 11:16:11 ******/
IF  EXISTS (SELECT * FROM sys.types st JOIN sys.schemas ss ON st.schema_id = ss.schema_id WHERE st.name = N'dataTypeTrn_Facturas' AND ss.name = N'dbo')
DROP TYPE [dbo].[dataTypeTrn_Facturas]
GO
/****** Object:  UserDefinedTableType [dbo].[dataTypeTrn_DevFcr]    Script Date: 22/05/2024 11:16:11 ******/
IF  EXISTS (SELECT * FROM sys.types st JOIN sys.schemas ss ON st.schema_id = ss.schema_id WHERE st.name = N'dataTypeTrn_DevFcr' AND ss.name = N'dbo')
DROP TYPE [dbo].[dataTypeTrn_DevFcr]
GO
/****** Object:  UserDefinedTableType [dbo].[dataTypeTrn_DevFco]    Script Date: 22/05/2024 11:16:11 ******/
IF  EXISTS (SELECT * FROM sys.types st JOIN sys.schemas ss ON st.schema_id = ss.schema_id WHERE st.name = N'dataTypeTrn_DevFco' AND ss.name = N'dbo')
DROP TYPE [dbo].[dataTypeTrn_DevFco]
GO
/****** Object:  UserDefinedTableType [dbo].[dataTypeTrn_DetCuentas]    Script Date: 22/05/2024 11:16:11 ******/
IF  EXISTS (SELECT * FROM sys.types st JOIN sys.schemas ss ON st.schema_id = ss.schema_id WHERE st.name = N'dataTypeTrn_DetCuentas' AND ss.name = N'dbo')
DROP TYPE [dbo].[dataTypeTrn_DetCuentas]
GO
/****** Object:  UserDefinedTableType [dbo].[dataTypeTrn_DetCuentas]    Script Date: 22/05/2024 11:16:11 ******/
CREATE TYPE [dbo].[dataTypeTrn_DetCuentas] AS TABLE(
	[TipDoc] [varchar](3) NULL,
	[Documento] [int] NULL,
	[IdCia] [char](2) NULL,
	[Concepto] [varchar](10) NULL,
	[Item] [int] NULL,
	[IdCuenta] [varchar](16) NULL,
	[Valor] [money] NULL,
	[Detalle] [varchar](150) NULL,
	[IdTercero] [varchar](16) NULL,
	[CodAgncia] [varchar](16) NULL,
	[CdCCosto] [varchar](16) NULL,
	[CdSubCos] [varchar](16) NULL,
	[pVehiculo] [varchar](10) NULL,
	[VrBase] [money] NULL,
	[TipFac] [varchar](3) NULL,
	[Factura] [varchar](15) NULL,
	[IdCiaFac] [char](2) NULL,
	[ItemFac] [int] NULL,
	[FecVence] [smalldatetime] NULL,
	[Cheque] [varchar](20) NULL,
	[CiuOrigen] [varchar](8) NULL,
	[Referencia] [varchar](50) NULL,
	[VrTarifa] [decimal](14, 4) NULL,
	[TipoTarif] [char](1) NULL,
	[CodConc] [varchar](4) NULL,
	[CodTarif] [varchar](4) NULL
)
GO
/****** Object:  UserDefinedTableType [dbo].[dataTypeTrn_DevFco]    Script Date: 22/05/2024 11:16:11 ******/
CREATE TYPE [dbo].[dataTypeTrn_DevFco] AS TABLE(
	[TipDev] [varchar](3) NULL,
	[Devolucion] [int] NULL,
	[IdCia] [char](2) NULL,
	[Fecha] [smalldatetime] NULL,
	[IdConcepto] [varchar](4) NULL,
	[TipDoc] [varchar](3) NULL,
	[Factura] [int] NULL,
	[IdCiaDoc] [char](2) NULL,
	[FecDoc] [smalldatetime] NULL,
	[nClieCon] [varchar](16) NULL,
	[VrSubTotal] [money] NULL,
	[VrDescuento] [money] NULL,
	[VrImpuesto] [money] NULL,
	[VrRetencion] [money] NULL,
	[VrReteICA] [money] NULL,
	[VrReteIVA] [money] NULL,
	[VrFletes] [money] NULL,
	[VrCargos] [money] NULL,
	[VrOtrDcto] [money] NULL,
	[VrCostos] [money] NULL,
	[VrNeto] [money] NULL,
	[VrEfectivo] [money] NULL,
	[VrPagosOtr] [money] NULL,
	[Cantidad] [decimal](14, 4) NULL,
	[CantPuntos] [decimal](14, 4) NULL,
	[BaseImp] [money] NULL,
	[BaseRet] [money] NULL,
	[IdCajero] [varchar](11) NULL,
	[IdVend] [varchar](16) NULL,
	[TarifaCom] [decimal](14, 4) NULL,
	[CodTarCom] [varchar](4) NULL,
	[NitCliente] [varchar](16) NULL,
	[CdAgencia] [varchar](16) NULL,
	[IdCCosto] [varchar](16) NULL,
	[IdSubCos] [varchar](16) NULL,
	[IdLocal] [varchar](8) NULL,
	[EnEfectivo] [bit] NULL,
	[Pedido] [int] NULL,
	[IdCiaPed] [char](2) NULL,
	[Remision] [int] NULL,
	[IdCiaRem] [char](2) NULL,
	[FecPedido] [smalldatetime] NULL,
	[Modalidad] [varchar](10) NULL,
	[ModdDev] [varchar](10) NULL,
	[NumAutoriza] [int] NULL,
	[PlacaVehic] [varchar](10) NULL,
	[KmtVehic] [int] NULL,
	[OrigenAdd] [varchar](10) NULL,
	[TipCom] [varchar](3) NULL,
	[Comprobante] [int] NULL,
	[IdCiaCom] [char](2) NULL,
	[Observacion] [varchar](250) NULL,
	[IdEstado] [varchar](4) NULL,
	[TimeSys] [smalldatetime] NULL,
	[FecUpdate] [smalldatetime] NULL,
	[IdCiaCrea] [char](2) NULL,
	[IdUsuario] [varchar](11) NULL,
	[VrImpCons] [money] NULL,
	[VrReteCREE] [money] NULL,
	[TarifaRtc] [decimal](14, 4) NULL,
	[CodTarRtc] [varchar](4) NULL,
	[BaseIvaObsq] [money] NULL,
	[VrIvaObsequio] [money] NULL
)
GO
/****** Object:  UserDefinedTableType [dbo].[dataTypeTrn_DevFcr]    Script Date: 22/05/2024 11:16:11 ******/
CREATE TYPE [dbo].[dataTypeTrn_DevFcr] AS TABLE(
	[TipDev] [varchar](3) NOT NULL,
	[Devolucion] [int] NOT NULL,
	[IdCia] [char](2) NOT NULL,
	[Fecha] [smalldatetime] NOT NULL,
	[IdConcepto] [varchar](4) NOT NULL,
	[TipDoc] [varchar](3) NOT NULL,
	[Factura] [int] NOT NULL,
	[IdCiaDoc] [char](2) NOT NULL,
	[FecDoc] [smalldatetime] NOT NULL,
	[IdCliente] [varchar](16) NOT NULL,
	[IdAgencia] [varchar](16) NOT NULL,
	[VrSubTotal] [money] NOT NULL,
	[VrDescuento] [money] NOT NULL,
	[VrImpuesto] [money] NOT NULL,
	[VrRetencion] [money] NOT NULL,
	[VrReteICA] [money] NOT NULL,
	[VrReteIVA] [money] NOT NULL,
	[VrFletes] [money] NOT NULL,
	[VrOtros] [money] NOT NULL,
	[VrCargos] [money] NOT NULL,
	[VrOtrDcto] [money] NOT NULL,
	[VrCostos] [money] NOT NULL,
	[VrSobretasa] [money] NOT NULL,
	[VrImpGlobal] [money] NOT NULL,
	[VrFaltantes] [money] NOT NULL,
	[VrAnticipos] [money] NOT NULL,
	[VrNeto] [money] NOT NULL,
	[Cantidad] [decimal](14, 4) NOT NULL,
	[CantPuntos] [decimal](14, 4) NOT NULL,
	[BaseImp] [money] NOT NULL,
	[BaseRet] [money] NOT NULL,
	[IdCCosto] [varchar](16) NOT NULL,
	[IdSubCos] [varchar](16) NOT NULL,
	[IdVend] [varchar](16) NOT NULL,
	[TarifaCom] [decimal](14, 4) NOT NULL,
	[CodTarCom] [varchar](4) NULL,
	[IdLocEnv] [varchar](8) NOT NULL,
	[Pedido] [int] NOT NULL,
	[IdCiaPed] [char](2) NOT NULL,
	[Remision] [int] NOT NULL,
	[IdCiaRem] [char](2) NOT NULL,
	[Cotizacion] [int] NOT NULL,
	[IdCiaCot] [char](2) NOT NULL,
	[FecPedido] [smalldatetime] NULL,
	[Modalidad] [varchar](10) NOT NULL,
	[ModdDev] [varchar](10) NOT NULL,
	[PlacaVehic] [varchar](10) NULL,
	[KmtVehic] [int] NOT NULL,
	[ZonaFrontera] [int] NOT NULL,
	[OrigenAdd] [varchar](10) NOT NULL,
	[TipCom] [varchar](3) NOT NULL,
	[Comprobante] [int] NOT NULL,
	[IdCiaCom] [char](2) NOT NULL,
	[Observacion] [varchar](250) NULL,
	[IdEstado] [varchar](4) NOT NULL,
	[TimeSys] [smalldatetime] NOT NULL,
	[FecUpdate] [smalldatetime] NULL,
	[IdCiaCrea] [char](2) NOT NULL,
	[IdUsuario] [varchar](11) NOT NULL,
	[VrImpCons] [money] NOT NULL,
	[VrReteCREE] [money] NOT NULL,
	[TarifaRtc] [decimal](14, 4) NOT NULL,
	[CodTarRtc] [varchar](4) NULL,
	[BaseIvaObsq] [money] NOT NULL,
	[VrIvaObsequio] [money] NOT NULL,
	[VrImpCarbono] [money] NOT NULL,
	[DevMasivo] [int] NOT NULL,
	[NumRecibo] [int] NOT NULL,
	[CdCiaRec] [char](2) NULL,
	[CdMotDev] [varchar](4) NULL,
	[BaseIvaIgp] [money] NOT NULL,
	[VrIvaIngProd] [money] NOT NULL,
	[TarifaArf] [decimal](14, 4) NOT NULL,
	[VrAutRetFte] [money] NOT NULL,
	[TarifaAri] [decimal](14, 4) NOT NULL,
	[VrAutRetIca] [money] NOT NULL,
	[VrImpuBA] [money] NOT NULL,
	[VrImpuCUP] [money] NOT NULL,
	[ImpAviTab] [money] NULL,
	[TarifaAvta] [decimal](14, 4) NULL,
	[VrBomberil] [money] NULL,
	[TarifaBom] [decimal](14, 4) NULL,
	[VrAutRetIat] [money] NULL,
	[VrAutRetBom] [money] NULL
)
GO
/****** Object:  UserDefinedTableType [dbo].[dataTypeTrn_Facturas]    Script Date: 22/05/2024 11:16:11 ******/
CREATE TYPE [dbo].[dataTypeTrn_Facturas] AS TABLE(
	[TipDoc] [varchar](3) NULL,
	[Factura] [int] NULL,
	[IdCia] [char](2) NULL,
	[Fecha] [smalldatetime] NULL,
	[IdConcepto] [varchar](4) NULL,
	[IdCliente] [varchar](16) NULL,
	[IdAgencia] [varchar](16) NULL,
	[FechaVence] [smalldatetime] NULL,
	[VrSubTotal] [money] NULL,
	[VrDescuento] [money] NULL,
	[VrImpuesto] [money] NULL,
	[VrRetencion] [money] NULL,
	[VrReteICA] [money] NULL,
	[VrReteIVA] [money] NULL,
	[VrFletes] [money] NULL,
	[VrOtros] [money] NULL,
	[VrCargos] [money] NULL,
	[VrOtrDcto] [money] NULL,
	[VrCostos] [money] NULL,
	[VrSobretasa] [money] NULL,
	[VrImpGlobal] [money] NULL,
	[VrFaltantes] [money] NULL,
	[VrAnticipos] [money] NULL,
	[VrNeto] [money] NULL,
	[VrAplicado] [money] NULL,
	[Cantidad] [decimal](14, 4) NULL,
	[CantPuntos] [decimal](14, 4) NULL,
	[PuntosAcum] [decimal](14, 4) NULL,
	[BaseImp] [money] NULL,
	[BaseRet] [money] NULL,
	[BaseIca] [money] NULL,
	[BaseRiv] [money] NULL,
	[TarifaIva] [decimal](14, 4) NULL,
	[TarifaRet] [decimal](14, 4) NULL,
	[TarifaIca] [decimal](14, 4) NULL,
	[TarifaRiv] [decimal](14, 4) NULL,
	[CodTarIva] [varchar](4) NULL,
	[CodTarRet] [varchar](4) NULL,
	[CodTarIca] [varchar](4) NULL,
	[CodTarRiv] [varchar](4) NULL,
	[IdCCosto] [varchar](16) NULL,
	[IdSubCos] [varchar](16) NULL,
	[IdVend] [varchar](16) NULL,
	[TarifaCom] [decimal](14, 4) NULL,
	[CodTarCom] [varchar](4) NULL,
	[DirEnvio] [varchar](250) NULL,
	[IdLocEnv] [varchar](8) NULL,
	[DiasEntraga] [int] NULL,
	[NitContac] [varchar](16) NULL,
	[NomContac] [varchar](150) NULL,
	[TelContac] [varchar](20) NULL,
	[emlContac] [varchar](100) NULL,
	[CargoContac] [varchar](50) NULL,
	[IdForma] [varchar](4) NULL,
	[DetallePago] [varchar](100) NULL,
	[MulPlazos] [bit] NULL,
	[IdPlazo] [varchar](4) NULL,
	[CdMney] [varchar](5) NULL,
	[NitEmpTrans] [varchar](16) NULL,
	[EmpTrans] [varchar](150) NULL,
	[pVehiculo] [varchar](10) NULL,
	[CdConductor] [varchar](16) NULL,
	[CdRuta] [varchar](4) NULL,
	[TipPed] [varchar](3) NULL,
	[Pedido] [int] NULL,
	[IdCiaPed] [char](2) NULL,
	[TipRem] [varchar](3) NULL,
	[Remision] [int] NULL,
	[IdCiaRem] [char](2) NULL,
	[TipCot] [varchar](3) NULL,
	[Cotizacion] [int] NULL,
	[IdCiaCot] [char](2) NULL,
	[FecPedido] [smalldatetime] NULL,
	[AutzaMora] [int] NULL,
	[AutzaCupo] [int] NULL,
	[Modalidad] [varchar](10) NULL,
	[KmtVehic] [int] NULL,
	[ZonaFrontera] [int] NULL,
	[PesoTotal] [decimal](14, 4) NULL,
	[UnidTotal] [decimal](14, 4) NULL,
	[VolTotal] [decimal](14, 4) NULL,
	[CantFalt] [decimal](14, 4) NULL,
	[VrCostoRem] [money] NULL,
	[VrCostoAfi] [money] NULL,
	[CodAutoRet] [varchar](4) NULL,
	[OrigenAdd] [varchar](10) NULL,
	[TipCom] [varchar](3) NULL,
	[Comprobante] [int] NULL,
	[IdCiaCom] [char](2) NULL,
	[Anulado] [bit] NULL,
	[NumDev] [int] NULL,
	[FecDev] [smalldatetime] NULL,
	[Observacion] [varchar](250) NULL,
	[IdEstado] [varchar](4) NULL,
	[TimeSys] [smalldatetime] NULL,
	[FecUpdate] [smalldatetime] NULL,
	[IdCiaCrea] [char](2) NULL,
	[IdUsuario] [varchar](11) NULL,
	[VrImpCons] [money] NULL,
	[VrReteCREE] [money] NULL,
	[TarifaRtc] [decimal](14, 4) NULL,
	[CodTarRtc] [varchar](4) NULL,
	[Parqueadero] [bit] NULL,
	[FecCuotaParq] [smalldatetime] NULL,
	[BaseIvaObsq] [money] NULL,
	[VrIvaObsequio] [money] NULL,
	[VrImpCarbono] [money] NULL,
	[TipoFE] [varchar](3) NULL,
	[FechaFE] [smalldatetime] NULL,
	[BaseIvaIgp] [money] NULL,
	[VrIvaIngProd] [money] NULL,
	[CodTarArf] [varchar](4) NULL,
	[TarifaArf] [decimal](14, 4) NOT NULL,
	[VrAutRetFte] [money] NOT NULL,
	[CodTarAri] [varchar](4) NULL,
	[TarifaAri] [decimal](14, 4) NOT NULL,
	[VrAutRetIca] [money] NOT NULL,
	[CodigoPreFact] [varchar](3) NULL
)
GO
/****** Object:  UserDefinedTableType [dbo].[wcfItm_TraEsDetConc]    Script Date: 22/05/2024 11:16:11 ******/
CREATE TYPE [dbo].[wcfItm_TraEsDetConc] AS TABLE(
	[TipDoc] [varchar](50) NULL,
	[Causacion] [varchar](50) NULL,
	[IdCia] [varchar](50) NULL,
	[Item] [varchar](50) NULL,
	[IdConcepto] [varchar](50) NULL,
	[Descripcion] [varchar](255) NULL,
	[TipoConc] [varchar](50) NULL,
	[VrDebito] [varchar](50) NULL,
	[VrCredito] [varchar](50) NULL,
	[CdCuenta] [varchar](50) NULL,
	[NitTercero] [varchar](50) NULL,
	[RazonSocial] [varchar](255) NULL,
	[CdCCosto] [varchar](50) NULL,
	[CCosto] [varchar](255) NULL,
	[CdSubCos] [varchar](50) NULL,
	[SubCosto] [varchar](255) NULL,
	[pVehiculo] [varchar](50) NULL,
	[NumVeh] [varchar](50) NULL,
	[ClaseMat] [varchar](50) NULL,
	[TipoAfiVehic] [varchar](50) NULL,
	[VrBase] [varchar](50) NULL,
	[TarifBase] [varchar](50) NULL,
	[Referencia] [varchar](50) NULL,
	[TipDocRef] [varchar](50) NULL,
	[DocRef] [varchar](50) NULL,
	[TipFac] [varchar](50) NULL,
	[Factura] [varchar](50) NULL,
	[IdCiaFac] [varchar](50) NULL,
	[ItemFac] [varchar](50) NULL,
	[FecVence] [datetime] NULL,
	[EstadoReg] [varchar](50) NULL,
	[TipoLiq] [varchar](50) NULL,
	[NumLiquida] [varchar](50) NULL,
	[CiaLiquida] [varchar](50) NULL,
	[VrAbonado] [varchar](50) NULL,
	[TmNumero] [varchar](10) NULL
)
GO
/****** Object:  UserDefinedTableType [dbo].[wcfTempCausasionCuenta]    Script Date: 22/05/2024 11:16:11 ******/
CREATE TYPE [dbo].[wcfTempCausasionCuenta] AS TABLE(
	[TipDoc] [varchar](3) NOT NULL,
	[Causacion] [int] NOT NULL,
	[IdCia] [char](2) NOT NULL,
	[Item] [int] NOT NULL,
	[IdConcepto] [varchar](4) NOT NULL,
	[Descripcion] [varchar](250) NOT NULL,
	[TipoConc] [varchar](10) NOT NULL,
	[VrDebito] [money] NOT NULL,
	[VrCredito] [money] NOT NULL,
	[CdCuenta] [varchar](16) NOT NULL,
	[NitTercero] [varchar](16) NOT NULL,
	[CdCCosto] [varchar](16) NULL,
	[CdSubCos] [varchar](16) NULL,
	[pVehiculo] [varchar](10) NULL,
	[TipoAfiVehic] [varchar](10) NOT NULL,
	[VrBase] [money] NOT NULL,
	[TarifBase] [decimal](14, 4) NOT NULL,
	[Referencia] [varchar](50) NULL,
	[TipDocRef] [varchar](3) NULL,
	[DocRef] [int] NOT NULL,
	[TipFac] [varchar](3) NULL,
	[Factura] [varchar](15) NULL,
	[IdCiaFac] [char](2) NULL,
	[ItemFac] [int] NOT NULL,
	[FecVence] [smalldatetime] NOT NULL,
	[EstadoReg] [int] NOT NULL,
	[TipoLiq] [varchar](3) NULL,
	[NumLiquida] [int] NOT NULL,
	[CiaLiquida] [char](2) NULL,
	[VrAbonado] [money] NOT NULL
)
GO
/****** Object:  Table [dbo].[tm_TraEsDetConc]    Script Date: 22/05/2024 11:16:11 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[tm_TraEsDetConc](
	[TmNumero] [varchar](5) NULL,
	[TipDoc] [varchar](50) NULL,
	[Causacion] [int] NULL,
	[IdCia] [varchar](50) NULL,
	[Item] [int] NULL,
	[IdConcepto] [varchar](50) NULL,
	[Descripcion] [varchar](255) NULL,
	[TipoConc] [varchar](50) NULL,
	[VrDebito] [decimal](18, 4) NULL,
	[VrCredito] [decimal](18, 4) NULL,
	[CdCuenta] [varchar](50) NULL,
	[NitTercero] [varchar](50) NULL,
	[RazonSocial] [varchar](255) NULL,
	[CdCCosto] [varchar](50) NULL,
	[CCosto] [varchar](255) NULL,
	[CdSubCos] [varchar](50) NULL,
	[SubCosto] [varchar](255) NULL,
	[pVehiculo] [varchar](50) NULL,
	[NumVeh] [varchar](50) NULL,
	[ClaseMat] [varchar](50) NULL,
	[TipoAfiVehic] [varchar](50) NULL,
	[VrBase] [decimal](18, 4) NULL,
	[TarifBase] [decimal](18, 4) NULL,
	[Referencia] [varchar](50) NULL,
	[TipDocRef] [varchar](50) NULL,
	[DocRef] [int] NULL,
	[TipFac] [varchar](50) NULL,
	[Factura] [varchar](50) NULL,
	[IdCiaFac] [varchar](50) NULL,
	[ItemFac] [int] NULL,
	[FecVence] [datetime] NULL,
	[EstadoReg] [int] NULL,
	[TipoLiq] [varchar](50) NULL,
	[NumLiquida] [int] NULL,
	[CiaLiquida] [varchar](50) NULL,
	[VrAbonado] [decimal](18, 4) NULL
) ON [PRIMARY]
GO
/****** Object:  StoredProcedure [dbo].[paWcfSeInsMsvTrn_DevFcr]    Script Date: 22/05/2024 11:16:12 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[paWcfSeInsMsvTrn_DevFcr]
	@Trn_DevFcr [dbo].[dataTypeTrn_DevFcr] READONLY,
	@Trn_TraEspFacReservas [dbo].[dataTypeTrn_TraEspFacReservas] READONLY,
	@Trn_RecAfavor [dbo].[dataTypeTrn_RecAfavor] READONLY,
	@Trn_VencAbonos [dbo].[dataTypeTrn_VencAbonos] READONLY,
	@Trn_DocMemo [dbo].[dataTypeTrn_DocMemo] READONLY,
	@Trn_DetCuentas [dbo].[dataTypeTrn_DetCuentas] READONLY,
	@Trn_Comprobantes [dbo].[dataTypeTrn_Comprobantes] READONLY,
	@Trn_ComDetalle [dbo].[dataTypeTrn_ComDetalle] READONLY,
	@Trn_NiifComp [dbo].[dataTypeNiifComp] READONLY,
	@Trn_NiifDetalle [dbo].[dataTypeNiifDetalle] READONLY,
	@operacion [varchar](1)
WITH EXECUTE AS CALLER
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
	BEGIN TRAN
		BEGIN TRY		 
			
			CREATE TABLE #LogTraEspFacturas(
			Numero int NOT NULL DEFAULT ((0)),
			Fecha smalldatetime NOT NULL,
			EstadoProc int NOT NULL DEFAULT ((0)),
			Observacion varchar(250) NULL,
			TimeSys smalldatetime NOT NULL,
			IdUsuario varchar(11) NOT NULL,
			Nombre varchar(50) NOT NULL,
			Tipo varchar(10) NOT NULL
			)	
			
			CREATE TABLE #LogTraEspFacReservas(
			Numero int NOT NULL,
			Item int NOT NULL,
			TipFac varchar(3) NOT NULL,
			Factura int NOT NULL,
			IdCia char(2) NOT NULL,
			TipoReg int NOT NULL DEFAULT ((0)),
			FechaFact smalldatetime NOT NULL,
			TipRes varchar(3) NOT NULL DEFAULT ('RES'),
			Reserva int NOT NULL DEFAULT ((0)),
			IdCiaRes char(2) NOT NULL DEFAULT ('01'),
			ItemRes int NOT NULL DEFAULT ((0)),
			FecReserva smalldatetime NOT NULL,
			Descripcion varchar(250) NOT NULL,
			Cantidad decimal(14, 4) NOT NULL DEFAULT ((0)),
			VrServicio money NOT NULL DEFAULT ((0)),
			VrUnitario money NOT NULL DEFAULT ((0)),
			VrCosto money NOT NULL DEFAULT ((0)),
			TarifaIva decimal(14, 4) NOT NULL DEFAULT ((0)),
			VrImpuesto money NOT NULL DEFAULT ((0)),
			TarifaDct decimal(14, 4) NOT NULL DEFAULT ((0)),
			VrDescuento money NOT NULL DEFAULT ((0)),
			DocCliente varchar(30) NOT NULL,
			Referencia1 varchar(50) NULL,
			Referencia2 varchar(50) NULL,
			Referencia3 varchar(50) NULL,
			CdConcepto varchar(4) NOT NULL,
			CdCCosto varchar(16) NULL,
			CdSubCos varchar(16) NULL,
			NitTercero varchar(16) NOT NULL DEFAULT ('0'),
			CdAgencia varchar(16) NOT NULL DEFAULT ('0'),
			pVehiculo varchar(10) NOT NULL DEFAULT ('0'),
			TipoAfiVehic varchar(10) NOT NULL DEFAULT ('TERCEROS'),
			IdOrigen varchar(8) NOT NULL,
			IdDestino varchar(8) NOT NULL,
			Anulado int NOT NULL DEFAULT ((0)),
			TipDocRef varchar(3) NULL,
			NumDocRef int NOT NULL DEFAULT ((0)),
			IdCiaRef char(2) NULL DEFAULT ('01'),
			FecDocRef smalldatetime NULL,
			CodTarDct varchar(4) NULL,
			CodTarRet varchar(4) NULL,
			CodTarIca varchar(4) NULL,
			TarifaRet decimal(14, 4) NOT NULL,
			VrRetencion money NOT NULL,
			TarifaIca decimal(14, 4) NOT NULL,
			VrReteIca money NOT NULL,
			Comentarios varchar(max) NULL
			) 

			declare @NumProc int = 1
			declare @ItemProc int = 1
			declare @TipDev varchar(3)
			declare @Devolucion INT
			declare @IdCia varchar(2)
			declare @TipFac varchar(3)
			declare @Factura INT
			declare @IdCiaDoc varchar(2)
			declare @Fecha datetime
			declare @observ varchar(250)
			declare @IdCliente varchar(16)
			declare @VrNeto money
			DECLARE @modalidad varchar(10)
			declare @fecdev smalldatetime

			DECLARE dvfactcursor CURSOR
			FOR SELECT TipDev,Devolucion,IdCia,TipDoc,Factura,IdCiaDoc,Fecha,IdCliente,VrNeto,Modalidad FROM @Trn_DevFcr
			OPEN dvfactcursor
			FETCH NEXT FROM dvfactcursor INTO @TipDev,@Devolucion,@IdCia, @TipFac,@Factura,@IdCiaDoc,@fecdev,@IdCliente,@VrNeto,@modalidad
			WHILE @@FETCH_STATUS = 0
			BEGIN

				IF(@operacion = 'i')
				begin
			
					SELECT TOP 1 @TipDoc = @TipDev, @Cia = @IdCia, @IdCiaComp = @IdCia, @IdCiaCompNiif = @IdCia, @IdCiaCompFis = @IdCia
					
					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_DevFcr))
					BEGIN
					INSERT INTO Trn_DevFcr(
					TipDev,
					Devolucion,
					IdCia,
					Fecha,
					IdConcepto,
					TipDoc,
					Factura,
					IdCiaDoc,
					FecDoc,
					IdCliente,
					IdAgencia,
					VrSubTotal,
					VrDescuento,
					VrImpuesto,
					VrRetencion,
					VrReteICA,
					VrReteIVA,
					VrFletes,
					VrOtros,
					VrCargos,
					VrOtrDcto,
					VrCostos,
					VrSobretasa,
					VrImpGlobal,
					VrFaltantes,
					VrAnticipos,
					VrNeto,
					Cantidad,
					CantPuntos,
					BaseImp,
					BaseRet,
					IdCCosto,
					IdSubCos,
					IdVend,
					TarifaCom,
					CodTarCom,
					IdLocEnv,
					Pedido,
					IdCiaPed,
					Remision,
					IdCiaRem,
					Cotizacion,
					IdCiaCot,
					FecPedido,
					Modalidad,
					ModdDev,
					PlacaVehic,
					KmtVehic,
					ZonaFrontera,
					OrigenAdd,
					TipCom,
					Comprobante,
					IdCiaCom,
					Observacion,
					IdEstado,
					TimeSys,
					FecUpdate,
					IdCiaCrea,
					IdUsuario,
					VrImpCons,
					VrReteCREE,
					TarifaRtc,
					CodTarRtc,
					BaseIvaObsq,
					VrIvaObsequio,
					VrImpCarbono,
					DevMasivo,
					NumRecibo,
					CdCiaRec,
					CdMotDev,
					BaseIvaIgp,
					VrIvaIngProd,
					TarifaArf,
					VrAutRetFte,
					TarifaAri,
					VrAutRetIca,
					VrImpuBA,
					VrImpuCUP
					)
					SELECT 
					@TipDoc,
					@Numero,
					@Cia,
					Fecha,
					IdConcepto,
					TipDoc,
					Factura,
					IdCiaDoc,
					FecDoc,
					IdCliente,
					IdAgencia,
					VrSubTotal,
					VrDescuento,
					VrImpuesto,
					VrRetencion,VrReteICA,VrReteIVA,VrFletes,VrOtros,VrCargos,VrOtrDcto,VrCostos,VrSobretasa,VrImpGlobal,VrFaltantes,VrAnticipos,
					VrNeto,Cantidad,CantPuntos,BaseImp,BaseRet,IdCCosto,IdSubCos,IdVend,TarifaCom,CodTarCom,IdLocEnv,Pedido,IdCiaPed,Remision,
					IdCiaRem,Cotizacion,IdCiaCot,FecPedido,Modalidad,ModdDev,PlacaVehic,KmtVehic,ZonaFrontera,OrigenAdd,@TipComp,@Comprobante,@IdCiaComp,
					Observacion,IdEstado,TimeSys,FecUpdate,IdCiaCrea,IdUsuario,VrImpCons,VrReteCREE,TarifaRtc,CodTarRtc,BaseIvaObsq,VrIvaObsequio,
					VrImpCarbono,DevMasivo,NumRecibo,CdCiaRec,CdMotDev,BaseIvaIgp,VrIvaIngProd,TarifaArf,VrAutRetFte,TarifaAri,VrAutRetIca,
					VrImpuBA,VrImpuCUP
					FROM @Trn_DevFcr df WHERE df.TipDev = @TipDev and df.Devolucion = @Devolucion and df.IdCia = @IdCia
					END 

					IF(EXISTS(SELECT * FROM @Trn_TraEspFacReservas))
					BEGIN
					INSERT INTO Trn_TraEspFacReservas(
					TipDoc,Factura,IdCia,Item,TipoReg,FechaFact,TipRes,Reserva,IdCiaRes,ItemRes,FecReserva,Descripcion,Cantidad,VrServicio,VrUnitario,VrCosto,
					TarifaIva,VrImpuesto,TarifaDct,VrDescuento,DocCliente,Referencia1,Referencia2,Referencia3,CdConcepto,CdCCosto,CdSubCos,NitTercero,CdAgencia,
					pVehiculo,TipoAfiVehic,IdOrigen,IdDestino,Anulado,TipDocRef,NumDocRef,IdCiaRef,FecDocRef,CodTarDct,CodTarRet,CodTarIca,TarifaRet,VrRetencion,
					TarifaIca,VrReteIca,EstadoItem
					)
					SELECT 
					@TipDoc,@Numero,@Cia,Item,TipoReg,FechaFact,TipRes,Reserva,IdCiaRes,ItemRes,FecReserva,Descripcion,Cantidad,VrServicio,VrUnitario,VrCosto,
					TarifaIva,VrImpuesto,TarifaDct,VrDescuento,DocCliente,Referencia1,Referencia2,Referencia3,CdConcepto,CdCCosto,CdSubCos,NitTercero,CdAgencia,
					pVehiculo,TipoAfiVehic,IdOrigen,IdDestino,Anulado,TipDocRef,NumDocRef,IdCiaRef,FecDocRef,CodTarDct,CodTarRet,CodTarIca,TarifaRet,VrRetencion,
					TarifaIca,VrReteIca,EstadoItem
					FROM @Trn_TraEspFacReservas dfr WHERE dfr.TipDoc = @TipDev and dfr.Factura = @Devolucion and dfr.IdCia = @IdCia
					END

					IF(EXISTS(SELECT * FROM @Trn_RecAFavor))
					BEGIN
					INSERT INTO Trn_RecAFavor(
					TipDoc,Recibo,IdCia,Fecha,VrAFavor,VrOtrosDb,VrAbono,IdCliente,IdAgencia,IdVend
					)
					SELECT
					@TipDev,@Devolucion,@IdCia,Fecha,VrAFavor,VrOtrosDb,VrAbono,IdCliente,IdAgencia,IdVend
					FROM @Trn_RecAFavor ra WHERE ra.TipDoc = @TipDev and ra.Recibo = @Devolucion and ra.IdCia = @IdCia
					END

					IF(EXISTS(SELECT * FROM @Trn_VencAbonos))
					BEGIN
						declare @tiprec varchar(3)
						declare @recibo int
						declare @idciarec varchar(2)
						declare @item int 
						SELECT TOP 1 @tiprec = TipRec, @idciarec = IdCia, @recibo = Recibo FROM @Trn_VencAbonos va where va.TipDoc = @TipFac and va.Factura = @Factura and va.IdCiaFac = @IdCiaDoc
						select @item =  isnull(MAX(Item),0) from Trn_VencAbonos where TipRec = @tiprec and Recibo = @recibo and IdCia = @idciarec

						INSERT INTO Trn_VencAbonos(
						TipRec,Recibo,IdCia,Item,Fecha,TipDoc,Factura,IdCiaFac,ItemFac,VrAbono,VrDescto,
						VrBaseCms,IdCliente,IdAgencia,IdVend,Comision,Detalle,FecPago,TipoAplica,TimeSys
						)
						SELECT 
						@TipDoc,@Numero,@Cia,(@item + ROW_NUMBER() OVER(ORDER BY Item ASC)),Fecha,TipDoc,Factura,IdCiaFac,ItemFac,VrAbono,VrDescto,
						VrBaseCms,IdCliente,IdAgencia,IdVend,Comision,Detalle,FecPago,TipoAplica,TimeSys
						FROM @Trn_VencAbonos
					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 dc WHERE dc.TipDoc = @TipDev and dc.Documento = @Devolucion and dc.IdCia = @IdCia
					END

					IF(EXISTS(SELECT * FROM @Trn_DocMemo))
					BEGIN
					INSERT INTO Trn_DocMemo(
					TipDoc,Documento,IdCia,Comentarios,Nota1,Nota2,Nota3,CantImp,ArchivoImg
					)
					SELECT 
					@TipDoc,@Numero,@Cia,Comentarios,Nota1,Nota2,Nota3,CantImp,ArchivoImg
					FROM @Trn_DocMemo dm WHERE dm.TipDoc = @TipDev and dm.Documento = @Devolucion and dm.IdCia = @IdCia
					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 cp WHERE cp.TipDoc = @TipDev and cp.Documento = @Devolucion and cp.IdCiaDoc = @IdCia
					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, Referncia, TipDocRef, DocRef, IdCiaRef, TimeSys, FecUpdate, IdCiaCrea, 
					IdUsuario, CdConcTrib, CdTarifTrib, NumEstablec, PtoEmision, Num_Autoriza, FechAutoriza,CdCuentaNiif
					FROM @Trn_ComDetalle cd WHERE cd.TipDoc = @TipDev and cd.Documento = @Devolucion and cd.IdCia = @IdCia
					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
					where C.TipDoc = @TipDev and C.Documento = @Devolucion and C.IdCia = @IdCia
					      and N.TipDoc = @TipDev and N.Documento = @Devolucion and N.IdCiaDoc = @IdCia
					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, 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 and NC.TipDoc = @TipDev and NC.Documento = @Devolucion and NC.IdCiaDoc = @IdCia
					where N.TipDoc = @TipDev and N.Documento = @Devolucion and N.IdCiaDoc = @IdCia		
					END

				end	

				IF(@operacion = 'i')
				begin
				  --actualiza los items de las reservas con los que se relacionan en el tipo de datos nuevo de las facturasreservas
				  UPDATE Trn_TraEspResDetalle
				  SET  Factura = 0, IdCiaFac = '00', FechaFac = null, EstadoItem = r.EstadoItem
				  FROM Trn_TraEspResDetalle d, @Trn_TraEspFacReservas r 
				  WHERE d.TipDoc = r.TipRes  and d.Reserva = r.Reserva and d.IdCia = r.IdCia and d.Item = r.ItemRes

				  --ACTUALIZAR FACTURA
				  IF(UPPER(@modalidad) = 'TOTAL')
				  BEGIN 
					  UPDATE Trn_Facturas
					  SET Anulado = 1,NumDev = @Numero,FecDev = @fecdev
					  FROM Trn_Facturas F, @Trn_DevFcr DF
					  WHERE F.TipDoc = DF.TipDoc AND F.Factura = DF.Factura AND F.IdCia = DF.IdCiaDoc
				  END

				  --actualiza el cliente
				  UPDATE TercCliente
				  SET  VrSaldo = c.VrSaldo - f.VrNeto
				  FROM TercCliente c, @Trn_DevFcr f
				  WHERE c.IdClie = f.IdCliente

				  --actualizar vencimientos,cuando es necesario
				  IF(EXISTS(SELECT * FROM @Trn_VencAbonos))
				  BEGIN 
					 UPDATE Trn_Vencimientos
					 SET  VrAbonado = v.VrAbonado + dv.VrAbono
					 FROM Trn_Vencimientos v, @Trn_VencAbonos dv
					 WHERE v.TipDoc = dv.TipDoc and v.Factura = dv.Factura and v.IdCia = dv.IdCiaFac
				  END

				end

				IF(@NumProc = @ItemProc)
				BEGIN
					select top 1 @observ = Observacion FROM @Trn_DevFcr  WHERE TipDoc = @TipDev and Devolucion = @Devolucion and IdCia = @IdCia
					INSERT INTO #LogTraEspFacturas(
					Numero,Fecha,EstadoProc,Observacion,TimeSys,IdUsuario,Nombre,Tipo
					)
					SELECT 
					@NumProc,t1.Fecha,1,@observ,t1.TimeSys,t1.IdUsuario,u.Usuario,'DEVOLUCION'
					FROM @Trn_DevFcr as t1
					left join adm_Usuarios u on u.IdUsuario = t1.IdUsuario
					WHERE t1.TipDev = @TipDev and t1.Devolucion = @Devolucion and t1.IdCia = @IdCia
				END

				SELECT @ItemProc = @ItemProc + 1
				
				INSERT INTO #LogTraEspFacReservas(
				Numero,Item,TipFac,Factura,IdCia,Item,TipoReg,FechaFact,TipRes,Reserva,IdCiaRes,ItemRes,FecReserva,Descripcion,Cantidad,VrServicio,VrUnitario,VrCosto,
				TarifaIva,VrImpuesto,TarifaDct,VrDescuento,DocCliente,Referencia1,Referencia2,Referencia3,CdConcepto,CdCCosto,CdSubCos,NitTercero,CdAgencia,
				pVehiculo,TipoAfiVehic,IdOrigen,IdDestino,Anulado,TipDocRef,NumDocRef,IdCiaRef,FecDocRef,CodTarDct,CodTarRet,CodTarIca,TarifaRet,VrRetencion,
				TarifaIca,VrReteIca,Comentarios
				)
				SELECT
				@NumProc,@item,TipDoc,Factura,IdCia,Item,TipoReg,FechaFact,TipRes,Reserva,IdCiaRes,ItemRes,FecReserva,Descripcion,Cantidad,VrServicio,VrUnitario,VrCosto,
				TarifaIva,VrImpuesto,TarifaDct,VrDescuento,DocCliente,Referencia1,Referencia2,Referencia3,CdConcepto,CdCCosto,CdSubCos,NitTercero,CdAgencia,
				pVehiculo,TipoAfiVehic,IdOrigen,IdDestino,Anulado,TipDocRef,NumDocRef,IdCiaRef,FecDocRef,CodTarDct,CodTarRet,CodTarIca,TarifaRet,VrRetencion,
				TarifaIca,VrReteIca,EstadoItem
				FROM Trn_TRaEspFAcReservas where TipDoc = @TipDoc and Factura = @Factura and IdCia = @IdCia

			FETCH NEXT FROM dvfactcursor INTO @TipDev,@Devolucion,@IdCia, @TipFac,@Factura,@IdCiaDoc,@fecdev,@IdCliente,@VrNeto,@modalidad
			END
			CLOSE dvfactcursor
			DEALLOCATE dvfactcursor
			
			SELECT * FROM #LogTraEspFacturas
			SELECT * FROM #LogTraEspFacReservas

			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_DevFco]    Script Date: 22/05/2024 11:16:12 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[paWcfSeInsTrn_DevFco]
WITH EXECUTE AS CALLER
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
	BEGIN TRAN
		BEGIN TRY		 
			
			--SELECT TOP 1 @TipDoc = TipDoc, @Cia = IdCia, @IdCiaComp = IdCia, @IdCiaCompNiif = IdCia, @IdCiaCompFis = IdCia FROM @Trn_DevFco
			--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)
			--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)
			--	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)
			--	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)
			--	END
			--END
			
			--IF(@operacion = 'i')
			--begin
			--	IF(EXISTS(SELECT * FROM @Trn_DevFco))
			--	BEGIN
			--	INSERT INTO Trn_DevFco(
			--	TipDev,Devolucion,IdCia,Fecha,IdConcepto,TipDoc,Factura,IdCiaDoc,FecDoc,nClieCon,VrSubTotal,VrDescuento,VrImpuesto,VrRetencion,
			--	VrReteICA,VrReteIVA,VrFletes,VrCargos,VrOtrDcto,VrCostos,VrNeto,VrEfectivo,VrPagosOtr,Cantidad,CantPuntos,BaseImp,BaseRet,IdCajero,
			--	IdVend,TarifaCom,CodTarCom,NitCliente,CdAgencia,IdCCosto,IdSubCos,IdLocal,EnEfectivo,Pedido,IdCiaPed,Remision,IdCiaRem,FecPedido,
			--	Modalidad,ModdDev,NumAutoriza,PlacaVehic,KmtVehic,OrigenAdd,TipCom,Comprobante,IdCiaCom,Observacion,IdEstado,TimeSys,FecUpdate,
			--	IdCiaCrea,IdUsuario,VrImpCons,VrReteCREE,TarifaRtc,CodTarRtc,BaseIvaObsq,VrIvaObsequio
			--	)
			--	SELECT 
			--	@TipDoc,@Numero,@Cia,Fecha,IdConcepto,TipDoc,Factura,IdCiaDoc,FecDoc,nClieCon,VrSubTotal,VrDescuento,VrImpuesto,VrRetencion,
			--	VrReteICA,VrReteIVA,VrFletes,VrCargos,VrOtrDcto,VrCostos,VrNeto,VrEfectivo,VrPagosOtr,Cantidad,CantPuntos,BaseImp,BaseRet,IdCajero,
			--	IdVend,TarifaCom,CodTarCom,NitCliente,CdAgencia,IdCCosto,IdSubCos,IdLocal,EnEfectivo,Pedido,IdCiaPed,Remision,IdCiaRem,FecPedido,
			--	Modalidad,ModdDev,NumAutoriza,PlacaVehic,KmtVehic,OrigenAdd,TipCom,Comprobante,IdCiaCom,Observacion,IdEstado,TimeSys,FecUpdate,
			--	IdCiaCrea,IdUsuario,VrImpCons,VrReteCREE,TarifaRtc,CodTarRtc,BaseIvaObsq,VrIvaObsequio
			--	FROM @Trn_DevFco
			--	END 

			--	IF(EXISTS(SELECT * FROM @Trn_FacReservas))
			--	BEGIN
			--	INSERT INTO Trn_TraEspFacReservas(
			--	TipDoc,Factura,IdCia,Item,FechaFact,TipRes,Reserva,IdCiaRes,ItemRes,FecReserva,Descripcion,Cantidad,VrServicio,VrUnitario,VrCosto,UndTarifa,
			--	TarifaIva,VrImpuesto,TarifaDct,VrDescuento,DocCliente,Referencia1,Referencia2,Referencia3,CdConcepto,CdCCosto,CdSubCos,NitTercero,CdAgencia,
			--	pVehiculo,TipoAfiVehic,IdOrigen,IdDestino,Anulado,TipDocRef,NumDocRef,IdCiaRef,FecDocRef,CodTarDct
			--	)
			--	SELECT 
			--	@TipDoc,@Numero,@Cia,Item,FechaFact,TipRes,Reserva,IdCiaRes,ItemRes,FecReserva,Descripcion,Cantidad,VrServicio,VrUnitario,VrCosto,UndTarifa,
			--	TarifaIva,VrImpuesto,TarifaDct,VrDescuento,DocCliente,Referencia1,Referencia2,Referencia3,CdConcepto,CdCCosto,CdSubCos,NitTercero,CdAgencia,
			--	pVehiculo,TipoAfiVehic,IdOrigen,IdDestino,Anulado,TipDocRef,NumDocRef,IdCiaRef,FecDocRef,CodTarDct
			--	FROM @Trn_FacReservas
			--	END 

			--	IF(EXISTS(SELECT * FROM @Trn_Kardex))
			--	BEGIN
			--	INSERT INTO Trn_Kardex(
			--	TipDoc,Documento,IdCia,Item,Fecha,IdProducto,IdBodega,CdTanque,Entradas,Salidas,IdUnd,VrUnitario,VrPrecio,VrCostProm,
			--	TarifaIva,VrIvaEnt,VrIvaSal,TarifaDct,VrDctoEnt,VrDctoSal,VrCostoEnt,VrCostoSal,TarifaRet,VrReteEnt,VrReteSal,TarifaIca,
			--	VrIcaEnt,VrIcaSal,VrBruto,CdUbic,NumLote,FechLote,IdConcepto,IdTercero,CdAgencia,CdCCosto,CdSubCos,CdLocal,CdSzona,pVehiculo,
			--	IdVend,Comision,CdOperario,ComisnOper,Referencia,Descripcion,Comptmntos,CdProdEquiv,TipOrd,NumOrden,IdCiaOrd,Cotizacion,
			--	IdCiaCot,Remision,IdCiaRem,Factura,TipDocDev,NumDocDev,CdMngra,NumInicial,NumFinal,Sobretasa,TasaNac,TasaDep,TasaMun,Soldicom,
			--	ImpGlobal,OtroImpto,Unidades,ItemCombo,Servcios,NoVentas,EsCombo,EsProdBase,CodTarDct,CodTarIva,CodTarIca,CodTarRet,CodTarCom,
			--	CodTarCmc,ListaPrec,VrBase,CdMoneda,VrTasaCamb,VrDivisa1,VrDivisa2,VrDivisa3,Referencia2,FecOrden,galsbruto,galsneto,
			--	Temperatura,UmTemp,Densidad,TimeSys,IdUsuario,Rec_Costo,MgenCont,VrImvCosto,TarifaIco,VrImpCon,CantObseq,VrIvaObseq
			--	)
			--	SELECT 
			--	@TipDoc,@Numero,@Cia,Item,Fecha,IdProducto,IdBodega,CdTanque,Entradas,Salidas,IdUnd,VrUnitario,VrPrecio,VrCostProm,
			--	TarifaIva,VrIvaEnt,VrIvaSal,TarifaDct,VrDctoEnt,VrDctoSal,VrCostoEnt,VrCostoSal,TarifaRet,VrReteEnt,VrReteSal,TarifaIca,
			--	VrIcaEnt,VrIcaSal,VrBruto,CdUbic,NumLote,FechLote,IdConcepto,IdTercero,CdAgencia,CdCCosto,CdSubCos,CdLocal,CdSzona,pVehiculo,
			--	IdVend,Comision,CdOperario,ComisnOper,Referencia,Descripcion,Comptmntos,CdProdEquiv,TipOrd,NumOrden,IdCiaOrd,Cotizacion,
			--	IdCiaCot,Remision,IdCiaRem,Factura,TipDocDev,NumDocDev,CdMngra,NumInicial,NumFinal,Sobretasa,TasaNac,TasaDep,TasaMun,Soldicom,
			--	ImpGlobal,OtroImpto,Unidades,ItemCombo,Servcios,NoVentas,EsCombo,EsProdBase,CodTarDct,CodTarIva,CodTarIca,CodTarRet,CodTarCom,
			--	CodTarCmc,ListaPrec,VrBase,CdMoneda,VrTasaCamb,VrDivisa1,VrDivisa2,VrDivisa3,Referencia2,FecOrden,galsbruto,galsneto,
			--	Temperatura,UmTemp,Densidad,TimeSys,IdUsuario,Rec_Costo,MgenCont,VrImvCosto,TarifaIco,VrImpCon,CantObseq,VrIvaObseq
			--	FROM @Trn_Kardex
			--	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
			--	)
			--	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
			--	FROM @Trn_Pagos
			--	END

			--	IF(EXISTS(SELECT * FROM @Trn_DocMemo))
			--	BEGIN
			--	INSERT INTO Trn_DocMemo(
			--	TipDoc,Documento,IdCia,Comentarios,Nota1,Nota2,Nota3,CantImp
			--	)
			--	SELECT 
			--	@TipDoc,@Numero,@Cia,Comentarios,Nota1,Nota2,Nota3,CantImp
			--	FROM @Trn_DocMemo
			--	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
			--	)
			--	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
			--	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, 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, CASE N.TipoNiif WHEN 'NIIF' THEN @IdCiaCompNiif ELSE @IdCiaCompFis END, 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, CASE NC.TipoNiif WHEN 'NIIF' THEN @IdCiaCompNiif ELSE @IdCiaCompFis END, N.Item, C.Fecha, N.IdCuenta, N.Detalle,
			--	N.VrDebito, N.VrCredito, N.IdTercero, N.IdVehiculo, N.IdCCosto, N.IdSubCos,
			--	C.VrBase, C.TarifaBase, @TipDoc, @Numero, @Cia, C.CodConce,
			--	C.NitDoc, C.TipFac, C.Factura, C.IdCiaFac, C.ItemFac, C.FecVence, C.CodCta, 
			--	C.NumCheque, C.Integrado, C.TipoAplica, C.Consolida, C.CodCargo, C.NitOtros,
			--	C.CodSubgpo, C.CiuOrigen, C.CodAgncia, C.VehPropio, N.Referncia, C.TipDocRef,
			--	C.DocRef, C.IdCiaRef, C.TimeSys, C.FecUpdate, C.IdCiaCrea, C.IdUsuario,
			--	C.CdConcTrib, C.CdTarifTrib, C.NumEstablec,C.PtoEmision, C.Num_Autoriza,
			--	C.FechAutoriza, C.IdCuenta
			--	FROM @Trn_ComDetalle AS C JOIN @Trn_NiifDetalle AS N ON C.TipCom = N.TipComCont AND C.Comprobante = N.ComprobanteCont AND C.Item = N.Item JOIN @Trn_NiifComp AS NC ON N.TipCom = NC.TipCom AND N.Comprobante = NC.Comprobante
			--	END
			--end

			----IF(@operacion = 'i')
			----begin
			----  --actualiza los items de un contrato con los que se relacionan en el tipo de datos nuevo
			----  UPDATE Trn_TraEspResDetalle
			----  SET  EstadoItem = 'FACTURADA'
			----  FROM Trn_TraEspResDetalle d, @Trn_FacReservas r 
			----  WHERE d.TipDoc = r.TipRes  and d.Reserva = r.Reserva and d.IdCia = r.IdCia and d.Item = r.ItemRes
			----end
						
			--SELECT @Numero

			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_DevFcr]    Script Date: 22/05/2024 11:16:12 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[paWcfSeInsTrn_DevFcr]
	@Trn_DevFcr [dbo].[dataTypeTrn_DevFcr] READONLY,
	@Trn_TraEspFacReservas [dbo].[dataTypeTrn_TraEspFacReservas] READONLY,
	@Trn_RecAfavor [dbo].[dataTypeTrn_RecAfavor] READONLY,
	@Trn_VencAbonos [dbo].[dataTypeTrn_VencAbonos] READONLY,
	@Trn_DocMemo [dbo].[dataTypeTrn_DocMemo] READONLY,
	@Trn_DetCuentas [dbo].[dataTypeTrn_DetCuentas] READONLY,
	@Trn_Comprobantes [dbo].[dataTypeTrn_Comprobantes] READONLY,
	@Trn_ComDetalle [dbo].[dataTypeTrn_ComDetalle] READONLY,
	@Trn_NiifComp [dbo].[dataTypeTrn_NiifComp] READONLY,
	@Trn_NiifDetalle [dbo].[dataTypeNiifDetalle] READONLY,
	@operacion [varchar](1)
WITH EXECUTE AS CALLER
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
	BEGIN TRAN
		BEGIN TRY		 
			
			declare @fecdev smalldatetime
			DECLARE @modalidad varchar(10)

			IF(@operacion = 'i')
			begin
			
				SELECT TOP 1 @TipDoc = TipDev, @Cia = IdCia,@fecdev = Fecha,@modalidad = ModdDev, @IdCiaComp = IdCia, @IdCiaCompNiif = IdCia, @IdCiaCompFis = IdCia FROM @Trn_DevFcr
				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_DevFcr))
				BEGIN
				INSERT INTO Trn_DevFcr(
				TipDev,Devolucion,IdCia,Fecha,IdConcepto,TipDoc,Factura,IdCiaDoc,FecDoc,IdCliente,IdAgencia,VrSubTotal,VrDescuento,VrImpuesto,
				VrRetencion,VrReteICA,VrReteIVA,VrFletes,VrOtros,VrCargos,VrOtrDcto,VrCostos,VrSobretasa,VrImpGlobal,VrFaltantes,VrAnticipos,
				VrNeto,Cantidad,CantPuntos,BaseImp,BaseRet,IdCCosto,IdSubCos,IdVend,TarifaCom,CodTarCom,IdLocEnv,Pedido,IdCiaPed,Remision,
				IdCiaRem,Cotizacion,IdCiaCot,FecPedido,Modalidad,ModdDev,PlacaVehic,KmtVehic,ZonaFrontera,OrigenAdd,TipCom,Comprobante,IdCiaCom,
				Observacion,IdEstado,TimeSys,FecUpdate,IdCiaCrea,IdUsuario,VrImpCons,VrReteCREE,TarifaRtc,CodTarRtc,BaseIvaObsq,VrIvaObsequio,
				VrImpCarbono,DevMasivo,NumRecibo,CdCiaRec,CdMotDev,BaseIvaIgp,VrIvaIngProd,TarifaArf,VrAutRetFte,TarifaAri,VrAutRetIca,VrImpuBA,VrImpuCUP
				)
				SELECT 
				@TipDoc,@Numero,@Cia,Fecha,IdConcepto,TipDoc,Factura,IdCiaDoc,FecDoc,IdCliente,IdAgencia,VrSubTotal,VrDescuento,VrImpuesto,
				VrRetencion,VrReteICA,VrReteIVA,VrFletes,VrOtros,VrCargos,VrOtrDcto,VrCostos,VrSobretasa,VrImpGlobal,VrFaltantes,VrAnticipos,
				VrNeto,Cantidad,CantPuntos,BaseImp,BaseRet,IdCCosto,IdSubCos,IdVend,TarifaCom,CodTarCom,IdLocEnv,Pedido,IdCiaPed,Remision,
				IdCiaRem,Cotizacion,IdCiaCot,FecPedido,Modalidad,ModdDev,PlacaVehic,KmtVehic,ZonaFrontera,OrigenAdd,@TipComp,@Comprobante,@IdCiaComp,
				Observacion,IdEstado,TimeSys,FecUpdate,IdCiaCrea,IdUsuario,VrImpCons,VrReteCREE,TarifaRtc,CodTarRtc,BaseIvaObsq,VrIvaObsequio,
				VrImpCarbono,DevMasivo,NumRecibo,CdCiaRec,CdMotDev,BaseIvaIgp,VrIvaIngProd,TarifaArf,VrAutRetFte,TarifaAri,VrAutRetIca,VrImpuBA,VrImpuCUP
				FROM @Trn_DevFcr
				END 

				IF(EXISTS(SELECT * FROM @Trn_TraEspFacReservas))
				BEGIN
				INSERT INTO Trn_TraEspFacReservas(
				TipDoc,Factura,IdCia,Item,TipoReg,FechaFact,TipRes,Reserva,IdCiaRes,ItemRes,FecReserva,Descripcion,Cantidad,VrServicio,VrUnitario,VrCosto,
				TarifaIva,VrImpuesto,TarifaDct,VrDescuento,DocCliente,Referencia1,Referencia2,Referencia3,CdConcepto,CdCCosto,CdSubCos,NitTercero,CdAgencia,
				pVehiculo,TipoAfiVehic,IdOrigen,IdDestino,Anulado,TipDocRef,NumDocRef,IdCiaRef,FecDocRef,CodTarDct,CodTarRet,CodTarIca,TarifaRet,VrRetencion,
				TarifaIca,VrReteIca,EstadoItem
				)
				SELECT 
				@TipDoc,@Numero,@Cia,Item,TipoReg,FechaFact,TipRes,Reserva,IdCiaRes,ItemRes,FecReserva,Descripcion,Cantidad,VrServicio,VrUnitario,VrCosto,
				TarifaIva,VrImpuesto,TarifaDct,VrDescuento,DocCliente,Referencia1,Referencia2,Referencia3,CdConcepto,CdCCosto,CdSubCos,NitTercero,CdAgencia,
				pVehiculo,TipoAfiVehic,IdOrigen,IdDestino,Anulado,TipDocRef,NumDocRef,IdCiaRef,FecDocRef,CodTarDct,CodTarRet,CodTarIca,TarifaRet,VrRetencion,
				TarifaIca,VrReteIca,EstadoItem
				FROM @Trn_TraEspFacReservas
				END

				IF(EXISTS(SELECT * FROM @Trn_RecAFavor))
				BEGIN
					INSERT INTO Trn_RecAFavor(
					TipDoc,	Recibo,	IdCia,	Fecha,	VrAFavor,	VrOtrosDb,	VrAbono,	IdCliente,	IdAgencia,	IdVend
					)
					SELECT
					@TipDoc, @Numero, @Cia,	Fecha,	VrAFavor,	VrOtrosDb,	VrAbono,	IdCliente,	IdAgencia,	IdVend
					FROM @Trn_RecAFavor
				END

				IF(EXISTS(SELECT * FROM @Trn_VencAbonos))
				BEGIN
					declare @tiprec varchar(3)
					declare @recibo int
					declare @idciarec varchar(2)
					declare @item int 
					SELECT TOP 1 @tiprec = TipRec, @idciarec = IdCia, @recibo = Recibo FROM @Trn_VencAbonos
					select @item =  isnull(MAX(Item),0) from Trn_VencAbonos where TipRec = @tiprec and Recibo = @recibo and IdCia = @idciarec

					INSERT INTO Trn_VencAbonos(
					TipRec,Recibo,IdCia,Item,Fecha,TipDoc,Factura,IdCiaFac,ItemFac,VrAbono,VrDescto,
					VrBaseCms,IdCliente,IdAgencia,IdVend,Comision,Detalle,FecPago,TipoAplica,TimeSys
					)
					SELECT 
					@TipDoc,@Numero,@Cia,(@item + ROW_NUMBER() OVER(ORDER BY Item ASC)),Fecha,TipDoc,Factura,IdCiaFac,ItemFac,VrAbono,VrDescto,
					VrBaseCms,IdCliente,IdAgencia,IdVend,Comision,Detalle,FecPago,TipoAplica,TimeSys
					FROM @Trn_VencAbonos
				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_DocMemo))
				BEGIN
				INSERT INTO Trn_DocMemo(
				TipDoc,Documento,IdCia,Comentarios,Nota1,Nota2,Nota3,CantImp,ArchivoImg
				)
				SELECT 
				@TipDoc,@Numero,@Cia,Comentarios,Nota1,Nota2,Nota3,CantImp,ArchivoImg
				FROM @Trn_DocMemo
				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, C.Item, Fecha, IdCuenta, Detalle, VrDebito, VrCredito,
				CASE WHEN IdVehiculo = '0' THEN IdTercero
						ELSE 
						ISNULL((SELECt CD.IDTERCERO FROM @Trn_DetCuentas DE
						INNER JOIN  Trn_ComDetalle CD  ON DE.TIPDOC = CD.TIPCOM AND DE.DOCUMENTO = CD.COMPROBANTE AND DE.IDCIA = CD.IDCIA and cd.IdVehiculo = de.pVehiculo
									WHERE CD.ITEM = C.ITEM),(						
						SELECT F.NitTercero FROM @Trn_TraEspFacReservas F WHERE 						
						F.pVehiculo = C.IdVehiculo AND F.TipDocRef = 'RES'))
						END , 

				--IdVehiculo, 
				CASE WHEN IdVehiculo = '0' THEN IdVehiculo
						ELSE 
						ISNULL((SELECt CD.IdVehiculo FROM @Trn_DetCuentas DE
						INNER JOIN Trn_ComDetalle CD ON DE.TIPDOC = CD.TIPCOM AND DE.DOCUMENTO = CD.COMPROBANTE AND DE.IDCIA = CD.IDCIA and cd.IdVehiculo = de.pVehiculo
									WHERE CD.ITEM = C.ITEM),
									(SELECT F.pVehiculo FROM @Trn_TraEspFacReservas F WHERE 						
						F.pVehiculo = C.IdVehiculo AND F.TipDocRef = 'RES'))
						END , 
				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, Referncia, TipDocRef, DocRef, IdCiaRef, TimeSys, FecUpdate, IdCiaCrea, 
				IdUsuario, CdConcTrib, CdTarifTrib, NumEstablec, PtoEmision, Num_Autoriza, FechAutoriza,CdCuentaNiif
				FROM @Trn_ComDetalle c
				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, 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
				--esto antes de la versiÃ³n 5048 estaba desuÃ©s del cursor ahora no para poder buscar solo las factruas activas
				--ACTUALIZAR FACTURA
				IF(UPPER(@modalidad) = 'TOTAL')
				BEGIN 
					UPDATE Trn_Facturas
					SET Anulado = 1,NumDev = @Numero,FecDev = @fecdev
					FROM Trn_Facturas F, @Trn_DevFcr DF
					WHERE F.TipDoc = DF.TipDoc AND F.Factura = DF.Factura AND F.IdCia = DF.IdCiaDoc
				END
				--actualiza los items de las reservas con los que se relacionan en el tipo de datos nuevo de las facturasreservas
				--Antes de la versiÃ³n 48 esto hacÃ­a Joe
				--UPDATE Trn_TraEspResDetalle
				--SET  Factura = 0, IdCiaFac = '00', FechaFac = null, EstadoItem = r.EstadoItem
				--FROM Trn_TraEspResDetalle d, @Trn_TraEspFacReservas r 
				--WHERE d.TipDoc = r.TipRes  and d.Reserva = r.Reserva and d.IdCia = r.IdCiaRes and d.Item = r.ItemRes
				--VersiÃ³n 48 se debe buscar si la opciÃ³n FRM estÃ¡ activa y si estÃ¡ activa debe colocar la Ãºltima factura que no estÃ© anulada de la reserva (Con este parÃ¡metro se puede factrar muchas veces la reserva)
				--Si la factrua que se anula es menor a la Ãºltima se debe seguir dejando la Ãºltima factura, ejemplo: si la Ãºltima factura de esa reserva es la 3 y se anula la factrua 2 correspondiente a esa reserva
				--Se sigue dejando la 3
				IF((SELECT ISNULL(Valor, '0') FROM adm_Opciones where IdOpc ='FRM') = '1')
				BEGIN
				DECLARE @TipRes VARCHAR(3)
				DECLARE @TipDocFacDev VARCHAR(3)
				DECLARE @TipDocFacActual VARCHAR(3)
				DECLARE @TipDocFac VARCHAR(3) 
				DECLARE @CiaRes VARCHAR(2) 
				DECLARE @CiaFac VARCHAR(2)
				DECLARE @CiaFacDev VARCHAR(2)
				DECLARE @CiaFacActual VARCHAR(2)
				DECLARE @NumRes INT
				DECLARE @NumFacDev INT 
				DECLARE @NumFacActual INT 
				DECLARE @NumFac INT 
				DECLARE @ItemRes INT 
				DECLARE @reserva Int = 0 
				DECLARE @cantres Int = 0 
				DECLARE @cantresfact Int = 0
				DECLARE @FechaFac datetime
				DECLARE @asingadofa BIT = 0
				SELECT TOP (1) @TipDocFacDev = TipDoc, @NumFacDev = Factura, @CiaFacDev = IdCiaDoc  FROM @Trn_DevFcr
				DECLARE faccursor CURSOR
				--Verificar todas las reservas que viene en la devoluciÃ³n, tenga facturas
				FOR SELECT TipRes,Reserva,IdCiaRes,ItemRes FROM @Trn_TraEspFacReservas 
				OPEN faccursor
				FETCH NEXT FROM faccursor INTO @TipRes,@NumRes,@CiaRes,@ItemRes
				WHILE @@FETCH_STATUS = 0
				BEGIN
					SELECT @TipDocFacActual = TipFac,  @NumFacActual = Factura, @CiaFacActual = IdCiaFac FROM Trn_TraEspResDetalle WHERE TipDoc = @TipRes and Reserva = @NumRes and IdCia = @CiaRes and Item = @ItemRes
					IF(@TipDocFacActual = @TipDocFacDev and  @NumFacActual = @NumFacDev and @CiaFacActual = @CiaFacDev)
					BEGIN
						IF(EXISTS(SELECT TOP(1) fd.Factura FROM Trn_TraEspFacReservas AS fd 
						JOIN Trn_Facturas AS f ON fd.TipDoc = f.TipDoc AND fd.Factura = f.Factura AND fd.IdCia = f.IdCia 
						WHERE fd.TipRes = @TipRes AND fd.Reserva = @NumRes AND fd.IdCia = @CiaRes AND fd.Item = @ItemRes AND f.Anulado = 0 and fd.TipDoc = @TipDocFacDev and fd.Factura  < @NumFacDev and fd.IdCia = @CiaFacDev and  fd.Factura <> @NumFacDev  order by fd.Factura desc))
						BEGIN
							SELECT TOP(1) @TipDocFac = fd.TipDoc, @NumFac = fd.Factura,  @CiaFac = fd.IdCia, @FechaFac = f.Fecha FROM Trn_TraEspFacReservas AS fd JOIN Trn_Facturas AS f ON fd.TipDoc = f.TipDoc AND fd.Factura = f.Factura AND fd.IdCia = f.IdCia WHERE fd.TipRes = @TipRes AND fd.Reserva = @NumRes AND fd.IdCia = @CiaRes AND fd.Item = @ItemRes AND f.Anulado = 0 and fd.TipDoc = @TipDocFacDev and fd.Factura < @NumFacDev and fd.IdCia = @CiaFacDev  and fd.Factura <> @NumFacDev  order by Fd.Factura desc
							UPDATE d
							SET  d.Factura = @NumFac, d.IdCiaFac = @CiaFac, d.FechaFac = @FechaFac, d.EstadoItem = r.EstadoItem
							FROM Trn_TraEspResDetalle AS d 
							JOIN @Trn_TraEspFacReservas AS r  ON d.TipDoc = r.TipRes  and d.Reserva = r.Reserva and d.IdCia = r.IdCiaRes
							WHERE d.TipDoc = @TipRes and d.Reserva = @NumRes and d.IdCia = @CiaRes and d.Item = @ItemRes
							--DECLARE facupdatecursor CURSOR
							--FOR SELECT fd.TipDoc, fd.Factura, fd.IdCia, f.Fecha FROM Trn_TraEspFacReservas AS fd JOIN Trn_Facturas AS f ON fd.TipDoc = f.TipDoc AND fd.Factura = f.Factura AND fd.IdCia = f.IdCia  WHERE fd.TipRes = @TipRes AND fd.Reserva = @NumRes AND fd.IdCia = @CiaRes AND fd.Item = @ItemRes AND f.Anulado = 0
							--OPEN facupdatecursor
							--FETCH NEXT FROM facupdatecursor INTO @TipDocFac,@NumFac,@CiaFac,@FechaFac
							--WHILE @@FETCH_STATUS = 0 
							----OR @asingadofa = 0
							--BEGIN
							--	--La factura actual de la reserva debe ser menor
							--	IF((SELECT Factura FROM Trn_TraEspResDetalle WHERE TipDoc = @TipRes and Reserva = @NumRes and IdCia = @CiaRes and @ItemRes = Item) = @NumFac) -- AND @asingadofa = 0
							--	begin
							--		UPDATE d
							--		SET  d.Factura = @NumFac, d.IdCiaFac = @CiaFac, d.FechaFac = @FechaFac, d.EstadoItem = r.EstadoItem
							--		FROM Trn_TraEspResDetalle AS d 
							--		JOIN @Trn_TraEspFacReservas AS r  ON d.TipDoc = r.TipRes  and d.Reserva = r.Reserva and d.IdCia = r.IdCiaRes
							--		WHERE d.TipDoc = @TipRes and d.Reserva = @NumRes and d.IdCia = @CiaRes and d.Item = @ItemRes
							--		--set @asingadofa = 1
							--		BREAK
							--	end
							--FETCH NEXT FROM facupdatecursor INTO @TipDocFac,@NumFac,@CiaFac,@FechaFac
							--END
							--CLOSE facupdatecursor
							--DEALLOCATE facupdatecursor
						END
						ELSE
						BEGIN
							UPDATE Trn_TraEspResDetalle
							SET  Factura = 0, IdCiaFac = '00', FechaFac = null, EstadoItem = r.EstadoItem
							FROM Trn_TraEspResDetalle d, @Trn_TraEspFacReservas r 
							WHERE d.TipDoc = r.TipRes  and d.Reserva = r.Reserva and d.IdCia = r.IdCiaRes and d.Item = r.ItemRes
						END
					END
				FETCH NEXT FROM faccursor INTO @TipRes,@NumRes,@CiaRes,@ItemRes
				END
				CLOSE faccursor
				DEALLOCATE faccursor
				END
				ELSE
				BEGIN
				UPDATE Trn_TraEspResDetalle
					SET  Factura = 0, IdCiaFac = '00', FechaFac = null, EstadoItem = r.EstadoItem
					FROM Trn_TraEspResDetalle d, @Trn_TraEspFacReservas r 
					WHERE d.TipDoc = r.TipRes  and d.Reserva = r.Reserva and d.IdCia = r.IdCiaRes and d.Item = r.ItemRes
				END

			  --actualiza el cliente
			  UPDATE TercCliente
			  SET  VrSaldo = c.VrSaldo - f.VrNeto
			  FROM TercCliente c, @Trn_DevFcr f
			  WHERE c.IdClie = f.IdCliente

			  --actualizar vencimientos,cuando es necesario
			  IF(EXISTS(SELECT * FROM @Trn_VencAbonos))
			  BEGIN 
				 UPDATE Trn_Vencimientos
				 SET  VrAbonado = v.VrAbonado + dv.VrAbono
				 FROM Trn_Vencimientos v, @Trn_VencAbonos dv
				 WHERE v.TipDoc = dv.TipDoc and v.Factura = dv.Factura and v.IdCia = dv.IdCiaFac
			  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_Facturas]    Script Date: 22/05/2024 11:16:12 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[paWcfSeInsTrn_Facturas]
	@Trn_Facturas [dbo].[dataTypeTrn_Facturas] READONLY,
	@Trn_TraEspFacReservas [dbo].[dataTypeTrn_TraEspFacReservas] READONLY,
	@Trn_TraEspFacResVehiculos [dbo].[dataTypeTrn_TraEspFacResVehiculos] READONLY,
	@Trn_DocMemo [dbo].[dataTypeTrn_DocMemo] READONLY,
	@Trn_TraEspAuxFactura [dbo].[dataTypeTrn_TraEspAuxFactura] READONLY,
	@Trn_RecAfavor [dbo].[dataTypeTrn_RecAfavor] READONLY,
	@Trn_VencAbonos [dbo].[dataTypeTrn_VencAbonos] READONLY,
	@Trn_Vencimientos [dbo].[dataTypeTrn_Vencimientos] READONLY,
	@Trn_DetCuentas [dbo].[dataTypeTrn_DetCuentas] READONLY,
	@Trn_Comprobantes [dbo].[dataTypeTrn_Comprobantes] READONLY,
	@Trn_ComDetalle [dbo].[dataTypeTrn_ComDetalle] READONLY,
	@Trn_NiifComp [dbo].[dataTypeTrn_NiifComp] READONLY,
	@Trn_NiifDetalle [dbo].[dataTypeNiifDetalle] READONLY,
	@operacion [varchar](1)
WITH EXECUTE AS CALLER
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 @CodigoPre VARCHAR(3)
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
declare @FechaFac smalldatetime
	BEGIN TRAN
		BEGIN TRY		 
			
			IF(@operacion = 'i')
			BEGIN
				SELECT TOP 1 @TipDoc = TipDoc,@CodigoPre = CodigoPreFact, @Cia = IdCia, @IdCiaComp = IdCia, @IdCiaCompNiif = IdCia, @IdCiaCompFis = IdCia, @FechaFac = Fecha FROM @Trn_Facturas
				
				IF(@CodigoPre is not null or @CodigoPre <> '')
				 select @Numero = (SELECT TOP 1 Factura FROM @Trn_Facturas)
				ELSE
				BEGIN
					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
				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(@CompFis <> '')
						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_Facturas))
				BEGIN
					INSERT INTO Trn_Facturas(
					TipDoc,Factura,IdCia,Fecha,IdConcepto,IdCliente,IdAgencia,FechaVence,VrSubTotal,VrDescuento,VrImpuesto,VrRetencion,VrReteICA,
					VrReteIVA,VrFletes,VrOtros,VrCargos,VrOtrDcto,VrCostos,VrSobretasa,VrImpGlobal,VrFaltantes,VrAnticipos,VrNeto,VrAplicado,Cantidad,
					CantPuntos,PuntosAcum,BaseImp,BaseRet,BaseIca,BaseRiv,TarifaIva,TarifaRet,TarifaIca,TarifaRiv,CodTarIva,CodTarRet,CodTarIca,
					CodTarRiv,IdCCosto,IdSubCos,IdVend,TarifaCom,CodTarCom,DirEnvio,IdLocEnv,DiasEntraga,NitContac,NomContac,TelContac,emlContac,
					CargoContac,IdForma,DetallePago,MulPlazos,IdPlazo,CdMney,NitEmpTrans,EmpTrans,pVehiculo,CdConductor,CdRuta,TipPed,Pedido,IdCiaPed,
					TipRem,Remision,IdCiaRem,TipCot,Cotizacion,IdCiaCot,FecPedido,AutzaMora,AutzaCupo,Modalidad,KmtVehic,ZonaFrontera,PesoTotal,
					UnidTotal,VolTotal,CantFalt,VrCostoRem,VrCostoAfi,CodAutoRet,OrigenAdd,TipCom,Comprobante,IdCiaCom,Anulado,NumDev,FecDev,Observacion,
					IdEstado,TimeSys,FecUpdate,IdCiaCrea,IdUsuario,VrImpCons,VrReteCREE,TarifaRtc,CodTarRtc,Parqueadero,FecCuotaParq,BaseIvaObsq,VrIvaObsequio,
					VrImpCarbono,TipoFE,FechaFE,BaseIvaIgp,VrIvaIngProd,CodTarArf,TarifaArf,VrAutRetFte,CodTarAri,TarifaAri,VrAutRetIca
					)
					SELECT 
					@TipDoc,@Numero,@Cia,Fecha,IdConcepto,IdCliente,IdAgencia,FechaVence,VrSubTotal,VrDescuento,VrImpuesto,VrRetencion,VrReteICA,
					VrReteIVA,VrFletes,VrOtros,VrCargos,VrOtrDcto,VrCostos,VrSobretasa,VrImpGlobal,VrFaltantes,VrAnticipos,VrNeto,VrAplicado,Cantidad,
					CantPuntos,PuntosAcum,BaseImp,BaseRet,BaseIca,BaseRiv,TarifaIva,TarifaRet,TarifaIca,TarifaRiv,CodTarIva,CodTarRet,CodTarIca,
					CodTarRiv,IdCCosto,IdSubCos,IdVend,TarifaCom,CodTarCom,DirEnvio,IdLocEnv,DiasEntraga,NitContac,NomContac,TelContac,emlContac,
					CargoContac,IdForma,DetallePago,MulPlazos,IdPlazo,CdMney,NitEmpTrans,EmpTrans,pVehiculo,CdConductor,CdRuta,TipPed,Pedido,IdCiaPed,
					TipRem,Remision,IdCiaRem,TipCot,Cotizacion,IdCiaCot,FecPedido,AutzaMora,AutzaCupo,Modalidad,KmtVehic,ZonaFrontera,PesoTotal,
					UnidTotal,VolTotal,CantFalt,VrCostoRem,VrCostoAfi,CodAutoRet,OrigenAdd,@TipComp,@Comprobante,@IdCiaComp,Anulado,NumDev,FecDev,Observacion,
					IdEstado,TimeSys,FecUpdate,IdCiaCrea,IdUsuario,VrImpCons,VrReteCREE,TarifaRtc,CodTarRtc,Parqueadero,FecCuotaParq,BaseIvaObsq,VrIvaObsequio,
					VrImpCarbono,TipoFE,FechaFE,BaseIvaIgp,VrIvaIngProd,CodTarArf,TarifaArf,VrAutRetFte,CodTarAri,TarifaAri,VrAutRetIca
					FROM @Trn_Facturas
				END 

				IF(EXISTS(SELECT * FROM @Trn_TraEspFacReservas))
				BEGIN
					INSERT INTO Trn_TraEspFacReservas(
					TipDoc,Factura,IdCia,Item,TipoReg,FechaFact,TipRes,Reserva,IdCiaRes,ItemRes,FecReserva,Descripcion,Cantidad,VrServicio,VrUnitario,VrCosto,
					TarifaIva,VrImpuesto,TarifaDct,VrDescuento,DocCliente,Referencia1,Referencia2,Referencia3,CdConcepto,CdCCosto,CdSubCos,NitTercero,CdAgencia,
					pVehiculo,TipoAfiVehic,IdOrigen,IdDestino,Anulado,TipDocRef,NumDocRef,IdCiaRef,FecDocRef,CodTarDct,CodTarRet,CodTarIca,TarifaRet,VrRetencion,
					TarifaIca,VrReteIca,EstadoItem
					)
					SELECT 
					@TipDoc,@Numero,@Cia,Item,TipoReg,FechaFact,TipRes,Reserva,IdCiaRes,ItemRes,FecReserva,Descripcion,Cantidad,VrServicio,VrUnitario,VrCosto,
					TarifaIva,VrImpuesto,TarifaDct,VrDescuento,DocCliente,Referencia1,Referencia2,Referencia3,CdConcepto,CdCCosto,CdSubCos,NitTercero,CdAgencia,
					pVehiculo,TipoAfiVehic,IdOrigen,IdDestino,Anulado,TipDocRef,NumDocRef,IdCiaRef,FecDocRef,CodTarDct,CodTarRet,CodTarIca,TarifaRet,VrRetencion,
					TarifaIca,VrReteIca,EstadoItem
					FROM @Trn_TraEspFacReservas
				END

				IF(EXISTS(SELECT * FROM @Trn_TraEspFacResVehiculos))
				BEGIN
					INSERT INTO Trn_TraEspFacResVehiculos(
					TipDoc,Factura,IdCIa,Item,TipRes,Reserva,IdCIaRes,ItemRes,IdVehiculo,TipoAfil,VrRecorrido
					)
					SELECT
					@TipDoc,@Numero,@Cia,Item,TipRes,Reserva,IdCIaRes,ItemRes,IdVehiculo,TipoAfil,VrRecorrido
					FROM @Trn_TraEspFacResVehiculos
				END

				IF(EXISTS(SELECT * FROM @Trn_Vencimientos))
				BEGIN
					INSERT INTO Trn_Vencimientos(
					TipDoc,Factura,IdCia,Item,Fecha,FechaVence,VrFactura,VrAbonado,IdCliente,IdAgencia,IdVend,Comision,TarifDcto,
					TipoDcto,TipoBase,FecLmtDcto,IdConcepto,Referencia,Detalle,TipRef,DocRef,IdCiaRef,FecUltPago,NumNota,IdCiaNot,
					TarifInt,FecLiqMora,FecPlazoCal
					)
					SELECT 
					@TipDoc,@Numero,@Cia,Item,Fecha,FechaVence,VrFactura,VrAbonado,IdCliente,IdAgencia,IdVend,Comision,TarifDcto,
					TipoDcto,TipoBase,FecLmtDcto,IdConcepto,Referencia,Detalle,TipRef,DocRef,IdCiaRef,FecUltPago,NumNota,IdCiaNot,
					TarifInt,FecLiqMora,FecPlazoCal
					FROM @Trn_Vencimientos
				END

				IF(EXISTS(SELECT * FROM @Trn_DocMemo))
					BEGIN
					INSERT INTO Trn_DocMemo(
					TipDoc,Documento,IdCia,Comentarios,Nota1,Nota2,Nota3,CantImp,ArchivoImg
					)
					SELECT 
					@TipDoc,@Numero,@Cia,Comentarios,Nota1,Nota2,Nota3,CantImp,ArchivoImg
					FROM @Trn_DocMemo
				END 

				IF(EXISTS(SELECT * FROM @Trn_TraEspAuxFactura))
				BEGIN
					INSERT INTO Trn_TraEspAuxFactura(
					TipFac,Factura,IdCiaFac,Resolucion,Rango,FechaResl,Prefijo,TipDocPf,PreFactura,IdCiaPf,CodigoPreFact
					)
					SELECT 
					@TipDoc,@Numero,@Cia,Resolucion,Rango,FechaResl,Prefijo,TipDocPf,PreFactura,IdCiaPf,CodigoPreFact
					FROM @Trn_TraEspAuxFactura
				END 

				IF(EXISTS(SELECT * FROM @Trn_RecAfavor))
				BEGIN
					update Trn_RecAfavor
					set VrAbono = t1.VrAbono + t2.VrAbono
					from Trn_RecAfavor t1, @Trn_RecAfavor t2
					where t1.TipDoc = t2.TipDoc and t1.Recibo = t2.Recibo and t1.IdCia = t2.IdCia and t1.IdCliente = t2.IdCliente and t1.IdAgencia = t2.IdAgencia and t1.IdVend = t2.IdVend
				END 

				IF(EXISTS(SELECT * FROM @Trn_VencAbonos))
				BEGIN
					declare @tiprec varchar(3)
					declare @recibo int
					declare @idciarec varchar(2)
					declare @item int 
					SELECT TOP 1 @tiprec = TipRec, @idciarec = IdCia, @recibo = Recibo FROM @Trn_VencAbonos
					select @item =  isnull(MAX(Item),0) from Trn_VencAbonos where TipRec = @tiprec and Recibo = @recibo and IdCia = @idciarec

					INSERT INTO Trn_VencAbonos(
					TipRec,Recibo,IdCia,Item,Fecha,TipDoc,Factura,IdCiaFac,ItemFac,VrAbono,VrDescto,
					VrBaseCms,IdCliente,IdAgencia,IdVend,Comision,Detalle,FecPago,TipoAplica,TimeSys
					)
					SELECT 
					TipRec,Recibo,IdCia,(@item + ROW_NUMBER() OVER(ORDER BY Item ASC)),Fecha,@TipDoc,@Numero,@Cia,ItemFac,VrAbono,VrDescto,
					VrBaseCms,IdCliente,IdAgencia,IdVend,Comision,Detalle,FecPago,TipoAplica,TimeSys
					FROM @Trn_VencAbonos
				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_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
					--FUNCION PARA AGREGAR EL NIT APORPIADO AL IDVEHICULO
					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, 
					CASE WHEN IdVehiculo = '0' THEN IdTercero
						ELSE isnull((SELECT F.NitTercero FROM @Trn_TraEspFacReservas F WHERE 						
						F.pVehiculo = C.IdVehiculo AND F.TipDocRef = 'RES'), IdTercero)
						END ,
						C.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, Referncia, TipDocRef, DocRef, IdCiaRef, TimeSys, FecUpdate, IdCiaCrea, 
					IdUsuario, CdConcTrib, CdTarifTrib, NumEstablec, PtoEmision, Num_Autoriza, FechAutoriza,CdCuentaNiif
					FROM @Trn_ComDetalle C
				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
					---------------factura una
				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, 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
			 IF(UPPER((SELECT TipDoc FROM @Trn_Facturas)) <> 'PFE')
			 BEGIN
				  --actualiza los items de las reservas con los que se relacionan en el tipo de datos nuevo de las facturasreservas
				  DECLARE @TipRes VARCHAR(3) 
				  DECLARE @CiaRes VARCHAR(2) 
				  DECLARE @NumRes INT 
				  DECLARE @ItemRes INT 
				  DECLARE @reserva Int = 0 
				  DECLARE @cantres Int = 0 
				  DECLARE @cantresfact Int = 0 

				  DECLARE faccursor CURSOR
				  FOR SELECT TipRes,Reserva,IdCiaRes,ItemRes FROM @Trn_TraEspFacReservas
				  OPEN faccursor
				  FETCH NEXT FROM faccursor INTO @TipRes,@NumRes,@CiaRes,@ItemRes
				  WHILE @@FETCH_STATUS = 0
				  BEGIN

					  UPDATE Trn_TraEspResDetalle
					  SET  TipFac = @TipDoc, Factura = @Numero, IdCiaFac = @Cia, FechaFac = @FechaFac, EstadoItem = 'FACTURADA'
					  FROM Trn_TraEspResDetalle d
					  WHERE d.TipDoc = @TipRes  and d.Reserva = @NumRes and d.IdCia = @CiaRes and d.Item = @ItemRes

					  --se agrega 11/04/2018 para sacar este codigo de la aplicaciÃ³n
					  IF (@NumRes <> @reserva)
					  BEGIN
						SET @reserva = @NumRes
						
						SELECT @cantres = count(*)
						FROM Trn_TraEspResDetalle AS rd
						WHERE rd.TipDoc = @TipRes  and rd.Reserva = @NumRes and rd.IdCia = @CiaRes

						SELECT @cantresfact = count(*)
						FROM Trn_TraEspResDetalle AS rd
						WHERE rd.TipDoc = @TipRes  and rd.Reserva = @NumRes and rd.IdCia = @CiaRes and rd.EstadoItem = 'FACTURADA'
						
						IF (@cantresfact = @cantres)
						BEGIN
							UPDATE Trn_TraEspReservas 
							SET EstadoRes = 'FACTURADA' 
							WHERE TipDoc = @TipRes  and Reserva = @NumRes and IdCia = @CiaRes                     
						END

					  END
					  -------------------------------------------------------------
				  
				  FETCH NEXT FROM faccursor INTO @TipRes,@NumRes,@CiaRes,@ItemRes
			      END
				  CLOSE faccursor
				  DEALLOCATE faccursor

				  --actualiza el cliente
				  UPDATE TercCliente
				  SET  VrSaldo = c.VrSaldo + f.VrNeto
				  FROM TercCliente c, @Trn_Facturas f
				  WHERE c.IdClie = f.IdCliente
			  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_TraEspDevOdpGIE]    Script Date: 22/05/2024 11:16:12 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[paWcfSeInsTrn_TraEspDevOdpGIE]
	@Trn_TraEspDevOdp [dbo].[dataTypeTrn_TraEspDevOdp] READONLY,
	@Trn_EgrFactura [dbo].[dataTypeTrn_EgrFactura] READONLY,
	@Trn_TraEspAntAbonos [dbo].[dataTypeTrn_TraEspAntAbonos] READONLY,
	@Trn_Pagos [dbo].[dataTypeTrn_Pagos] READONLY,
	@Trn_TraEspOrdenReservas [dbo].[dataTypeTrn_TraEspOrdenReservas] READONLY,
	@Trn_Comprobantes [dbo].[dataTypeTrn_Comprobantes] READONLY,
	@Trn_ComDetalle [dbo].[dataTypeTrn_ComDetalle] READONLY,
	@Trn_NiifComp [dbo].[dataTypeTrn_NiifComp] READONLY,
	@Trn_NiifDetalle [dbo].[dataTypeNiifDetalle] READONLY,
	@operacion [varchar](1)
WITH EXECUTE AS CALLER
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, 
				ConsCP, CodCueCons, PrecioPub, RefVehiculo, RefNumVeh
				)
				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, 
				ConsCP, CodCueCons, PrecioPub, RefVehiculo, RefNumVeh
				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, 
					CASE 
				WHEN Detalle = 'RETENCION EN LA FUENTE' THEN 
					(SELECT DISTINCT T.IdCuenta FROM @Trn_TraEspOrdenReservas O INNER JOIN TarifCuentas T ON T.IdTarifa = O.CodTarRet AND T.TipDoc = 'OPE')
				WHEN Detalle = 'RETENCION ICA' THEN 
					(SELECT DISTINCT T.IdCuenta FROM @Trn_TraEspOrdenReservas O INNER JOIN TarifCuentas T ON T.IdTarifa = O.CodTarIca AND T.TipDoc = 'OPE')
				ELSE IdCuenta END 
				AS 
				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: 22/05/2024 11:16:12 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[paWcfSeInsTrn_TraEspOrdenPagoGIE]
	@Trn_TraEspOrdenPago [dbo].[dataTypeTrn_TraEspOrdenPago] READONLY,
	@Trn_TraEspOrdenReservas [dbo].[dataTypeTrn_TraEspOrdenReservas] READONLY,
	@Trn_TraEspOrdenProg [dbo].[dataTypeTrn_TraEspOrdenProg] READONLY,
	@Trn_TraEspConceptos [dbo].[dataTypeTrn_TraEspConceptos] READONLY,
	@Trn_TraEspAntAbonos [dbo].[dataTypeTrn_TraEspAntAbonos] READONLY,
	@Trn_DetCuentas [dbo].[dataTypeTrn_DetCuentas] READONLY,
	@Trn_ComFactura [dbo].[dataTypeTrn_ComFactura] READONLY,
	@Trn_Pagos [dbo].[dataTypeTrn_Pagos] READONLY,
	@Trn_Comprobantes [dbo].[dataTypeTrn_Comprobantes] READONLY,
	@Trn_ComDetalle [dbo].[dataTypeTrn_ComDetalle] READONLY,
	@Trn_NiifComp [dbo].[dataTypeNiifComp] READONLY,
	@Trn_NiifDetalle [dbo].[dataTypeNiifDetalle] READONLY,
	@operacion [varchar](1)
WITH EXECUTE AS CALLER
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, 
				ConsCP, CodCueCons, PrecioPub, RefVehiculo, RefNumVeh
				)
				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, 
				ConsCP, CodCueCons, PrecioPub, RefVehiculo, RefNumVeh
				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, 
					CASE 
				WHEN Detalle = 'RETENCION EN LA FUENTE' THEN 
					(SELECT DISTINCT T.IdCuenta FROM @Trn_TraEspOrdenReservas O INNER JOIN TarifCuentas T ON T.IdTarifa = O.CodTarRet AND T.TipDoc = 'OPE')
				WHEN Detalle = 'RETENCION ICA' THEN 
					(SELECT DISTINCT T.IdCuenta FROM @Trn_TraEspOrdenReservas O INNER JOIN TarifCuentas T ON T.IdTarifa = O.CodTarIca AND T.TipDoc = 'OPE')
				ELSE IdCuenta END 
				AS 
				IdCuenta
				,CASE 
					WHEN D.Detalle = 'CUENTA POR PAGAR' 
					 THEN 
						CASE 
							WHEN EXISTS (SELECT 1 FROM @Trn_TraEspOrdenReservas WHERE Referencia != '') 
							THEN 'CUENTA POR PAGAR-REF:' + (SELECT Referencia FROM @Trn_TraEspOrdenReservas WHERE Referencia != '')
							ELSE 'CUENTA POR PAGAR' 
						END
					ELSE D.Detalle 
				END AS 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 D
				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].[paWcfSeLisTm_TraEspTempCargarDetCons]    Script Date: 22/05/2024 11:16:12 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:		Cesar Fernando Carre?o 
-- Create date: 04/01/2024
-- Description:	Metodo para cargar tabla temporal 
-- =============================================
CREATE PROCEDURE [dbo].[paWcfSeLisTm_TraEspTempCargarDetCons]	
	@Usuario varchar(20)
AS
set @Usuario = (select 'CCD' + IdEstacion as Estacion from adm_Usuarios where IdUsuario = @Usuario)


BEGIN
		select [TipDoc]
      ,[Causacion]
      ,[IdCia]
      ,[Item]
      ,[IdConcepto]
      ,[Descripcion]
      ,[TipoConc]
      ,[VrDebito]
      ,[VrCredito]
      ,[CdCuenta]
      ,[NitTercero]
      ,[RazonSocial]
      ,[CdCCosto]
      ,[CCosto]
      ,[CdSubCos]
      ,[SubCosto]
      ,[pVehiculo]
      ,[NumVeh]
      ,[ClaseMat]
      ,[TipoAfiVehic]
      ,[VrBase]
      ,[TarifBase]
      ,[Referencia]
      ,[TipDocRef]
      ,[DocRef]
      ,[TipFac]
      ,[Factura]
      ,[IdCiaFac]
      ,[ItemFac]
      ,[FecVence]
      ,[EstadoReg]
      ,[TipoLiq]
      ,[NumLiquida]
      ,[CiaLiquida]
      ,[VrAbonado] from tm_TraEsDetConc where TmNumero = @Usuario
	 
	 DELETE FROM [dbo].[tm_TraEsDetConc]
      WHERE TmNumero = @Usuario

	 END
GO
/****** Object:  StoredProcedure [dbo].[paWcfSeLisTm_TraEspTempDetCons]    Script Date: 22/05/2024 11:16:12 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:		Cesar Fernando Carre?o 
-- Create date: 04/01/2024
-- Description:	Metodo para cargar tabla temporal 
-- =============================================
CREATE PROCEDURE [dbo].[paWcfSeLisTm_TraEspTempDetCons]    
   @temp dbo.wcfItm_TraEsDetConc READONLY,
	@Usuario varchar(20)
AS

BEGIN
set @Usuario = (select 'CCD' + IdEstacion as Estacion from adm_Usuarios where IdUsuario = @Usuario)

INSERT INTO [dbo].[tm_TraEsDetConc]
          ([TmNumero]
           ,[TipDoc]
           ,[Causacion]
           ,[IdCia]
           ,[Item]
           ,[IdConcepto]
           ,[Descripcion]
           ,[TipoConc]
           ,[VrDebito]
           ,[VrCredito]
           ,[CdCuenta]
           ,[NitTercero]
           ,[RazonSocial]
           ,[CdCCosto]
           ,[CCosto]
           ,[CdSubCos]
           ,[SubCosto]
           ,[pVehiculo]
           ,[NumVeh]
           ,[ClaseMat]
           ,[TipoAfiVehic]
           ,[VrBase]
           ,[TarifBase]
           ,[Referencia]
           ,[TipDocRef]
           ,[DocRef]
           ,[TipFac]
           ,[Factura]
           ,[IdCiaFac]
           ,[ItemFac]
           ,[FecVence]
           ,[EstadoReg]
           ,[TipoLiq]
           ,[NumLiquida]
           ,[CiaLiquida]
           ,[VrAbonado])
     SELECT @Usuario           
           ,TipDoc
           ,0 
           ,[IdCia]
           ,CAST(Item AS INT)
		   --,0
           ,[IdConcepto]
           ,[Descripcion]
           ,[TipoConc]
           ,CAST(VrDebito AS decimal(18, 4))
           ,CAST(VrCredito AS decimal(18, 4))
		   --,0
		   --,0
           ,[CdCuenta]
           ,[NitTercero]
           ,[RazonSocial]
           ,[CdCCosto]
           ,[CCosto]
           ,[CdSubCos]
           ,[SubCosto]
           ,[pVehiculo]
           ,[NumVeh]
           ,[ClaseMat]
           ,[TipoAfiVehic]
           --,CAST(VrBase AS decimal(18, 4))
           --,CAST(TarifBase AS decimal(18, 4))
		   ,0
		   ,0
           ,[Referencia]
           ,[TipDocRef]
           ,CAST(DocRef AS INT)
		   --,0
           ,[TipFac]
           ,[Factura]
           ,[IdCiaFac]
           ,CAST(ItemFac AS INT)
		   --,0
           ,[FecVence]
		   --,null
           ,0
           ,[TipoLiq]
           ,0
           ,[CiaLiquida]
           ,0
		   FROM @temp
		   			 
END
GO
/****** Object:  StoredProcedure [dbo].[paWcfSeLisTrn_TraEspCuenta]    Script Date: 22/05/2024 11:16:12 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:		Cesar Fernando Carre?o 
-- Create date: 04/01/2024
-- Description:	Metodo para tarifa cuenta
-- =============================================
CREATE PROCEDURE [dbo].[paWcfSeLisTrn_TraEspCuenta]	
		@Operacion varchar(10),
		@IdTarifa varchar(5),
		@TipDoc varchar(5),
		@IdCuenta varchar(20),
		@ClaseTarif Varchar(5),
		@CdCueOtr varchar(20),		
		@AntIdTarifa varchar(5),
		@AntTipDoc varchar(5),
		@AntIdCuenta varchar(20),
		@AntClaseTarif Varchar(5),
		@AntCdCueOtr varchar(20)
AS
begin
    SET @IdTarifa = CASE WHEN @IdTarifa = null THEN '' ELSE @IdTarifa END;
    SET @TipDoc = CASE WHEN @TipDoc = null THEN '' ELSE @TipDoc END;
    SET @IdCuenta = CASE WHEN @IdCuenta = null THEN '' ELSE @IdCuenta END;
    SET @ClaseTarif = CASE WHEN @ClaseTarif = null THEN '' ELSE @ClaseTarif END;
    SET @CdCueOtr = CASE WHEN @CdCueOtr = null THEN '' ELSE @CdCueOtr END;
    
    SET @AntIdTarifa = CASE WHEN @AntIdTarifa = null THEN '' ELSE @AntIdTarifa END;
    SET @AntTipDoc = CASE WHEN @AntTipDoc = null THEN '' ELSE @AntTipDoc END;
    SET @AntIdCuenta = CASE WHEN @AntIdCuenta = null THEN '' ELSE @AntIdCuenta END;
    SET @AntClaseTarif = CASE WHEN @AntClaseTarif = null THEN '' ELSE @AntClaseTarif END;
    SET @AntCdCueOtr = CASE WHEN @AntCdCueOtr = null THEN '' ELSE @AntCdCueOtr END;

	IF(@Operacion = 'GUARDAR')
		BEGIN		
		--select 'gua' 'gua'
		INSERT INTO [dbo].[TarifCuentas]
           ([IdTarifa]
           ,[TipDoc]
           ,[IdCuenta]
           ,[ClaseTarif]
           ,[CdCueOtr])
        VALUES
           (@IdTarifa
           ,@TipDoc
           ,@IdCuenta
           ,@ClaseTarif
           ,@CdCueOtr)        				
		END

	IF(@Operacion = 'EDITAR')
		BEGIN		
		UPDATE [dbo].[TarifCuentas]
   SET [IdTarifa] = @IdTarifa
      ,[TipDoc] = @TipDoc
      ,[IdCuenta] = @IdCuenta
      ,[ClaseTarif] = @ClaseTarif
      ,[CdCueOtr] = @CdCueOtr
   WHERE IdTarifa = @AntIdTarifa AND
      TipDoc = @AntTipDoc AND
      IdCuenta = @AntIdCuenta AND
      ClaseTarif = @AntClaseTarif AND
      ISNULL(CdCueOtr, '') = ISNULL(@AntCdCueOtr, '');

    
		END

	IF(@Operacion = 'ELIMINAR')
		BEGIN
		--select 'elei' 'elil'
		DELETE FROM [dbo].[TarifCuentas]
      WHERE IdTarifa = @AntIdTarifa AND
      TipDoc = @AntTipDoc AND
      IdCuenta = @AntIdCuenta AND
      ClaseTarif = @AntClaseTarif AND
      CdCueOtr = @AntCdCueOtr
		END
	
end

BEGIN
	--tabla para mostrar los datos de clases de tarifa 
select IdDoc, TipoDoc from Sys_TiposDoc where IdDoc in ('FC1', 'OPE', 'DF1', 'DF2', 'DFC', 'DFO', 'DOE', 'FCR', 'FCE', 'DFE') AND Inactivo = 0;


--Mostrar las clases de tarifa
select IdClase, NomClase from ClaseTar where IdClase in ('ICA', 'BOM', 'IAT', 'RET', 'RTC') AND Inactivo = 0;

--Mostrar Codigos De Tarifa
select IdTarifa, Tarifa, Simbolo, Descripcion from TablaPor where IdClase in ('ICA', 'BOM', 'IAT', 'RET', 'RTC') AND Inactivo = 0;


--Mostrar Tabla Cuentas
select IdCuenta, NomCuenta from PUC where Movimiento = 1 and Inactivo = 0;

--Datos ya guardados
select * from TarifCuentas where ClaseTarif in ('ICA', 'BOM', 'IAT', 'RET', 'RTC') AND TipDoc in ('FC1', 'OPE', 'DF1', 'DF2', 'DFC', 'DFO', 'DOE', 'FCR', 'FCE', 'DFE')

END
GO

/****** Object:  StoredProcedure [dbo].[paWcfSeInsMsvOrdenPago]    Script Date: 27/05/2024 10:52:47 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[paWcfSeInsMsvOrdenPago]
	@Trn_TraEspOrdenPago [dbo].[dataTypeTrn_TraEspOrdenPago] READONLY,
	@Trn_TraEspOrdenReservas [dbo].[dataTypeTrn_TraEspOrdenReservas] READONLY,
	@Trn_TraEspOrdenProg [dbo].[dataTypeTrn_TraEspOrdenProg] READONLY,
	@Trn_TraEspConceptos [dbo].[dataTypeTrn_TraEspConceptos] READONLY,
	@Trn_TraEspAntAbonos [dbo].[dataTypeTrn_TraEspAntAbonos] READONLY,
	@Trn_DetCuentas [dbo].[dataTypeTrn_DetCuentas] READONLY,
	@Trn_ComFactura [dbo].[dataTypeTrn_ComFactura] READONLY,
	@Trn_Pagos [dbo].[dataTypeTrn_Pagos] READONLY,
	@Trn_Comprobantes [dbo].[dataTypeTrn_Comprobantes] READONLY,
	@Trn_ComDetalle [dbo].[dataTypeTrn_ComDetalle] READONLY,
	@Trn_NiifComp [dbo].[dataTypeNiifComp] READONLY,
	@Trn_NiifDetalle [dbo].[dataTypeNiifDetalle] READONLY,
	@operacion [varchar](1)
WITH EXECUTE AS CALLER
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
	BEGIN TRAN
		BEGIN TRY
			
			 CREATE TABLE #LogOrden(
			 Numero int NOT NULL,
			 Fecha smalldatetime NOT NULL,
			 EstadoProc int NOT NULL,
			 Observacion varchar(1000) NULL,
			 TimeSys smalldatetime NOT NULL,
			 IdUsuario varchar(11) NOT NULL,
			 Nombre varchar(50) NOT NULL
			 )

			 CREATE TABLE #LogOrdenDet(
			 Numero int NOT NULL,
			 Item int NOT NULL,
			 TipDoc varchar(3) NOT NULL,
			 Orden int NOT NULL,
			 IdCia char(2) NOT NULL,
			 Fecha smalldatetime NOT NULL,
			 IdConcepto varchar(4) NOT NULL,
			 TipoCom varchar(3) NULL,
			 Comprobante int NOT NULL,
			 TipRes varchar(3) NOT NULL,
			 Reserva int NOT NULL,
			 IdCiaRes char(2) NOT NULL,
			 ItemRes int NOT NULL,
			 IdOrigen varchar(8) NOT NULL,
			 CiuOrigen varchar(50) NULL,
			 IdDestino varchar(8) NOT NULL,
			 CiuDestino varchar(50) NULL,
			 IdRuta varchar(4) NOT NULL,
			 Ruta varchar(100) NULL,
			 IdVehiculo varchar(10) NOT NULL,
			 IdConductor varchar(16) NOT NULL,
			 IdPropietario varchar(16) NOT NULL,
			 IdPoseedor varchar(16) NOT NULL,
			 Cumplido int NOT NULL,
			 IdCiaCum varchar(2) NOT NULL,
			 EstadoReg int NOT NULL,
			 VrServicio money NOT NULL,
			 VrDescuento money NOT NULL,
			 VrRetencion money NOT NULL,
			 VrReteIca money NOT NULL,
			 VrReteCREE money NOT NULL,
			 VrAnticipos money NOT NULL,
			 VrOtrosDctos money NOT NULL,
			 VrImpuestos money NOT NULL,
			 VrOtrosPagos money NOT NULL,
			 VrNeto money NOT NULL,
			 TarifaRet decimal(14, 4) NOT NULL,
			 TarifaIca decimal(14, 4) NOT NULL,
			 TarifaRtc decimal(14, 4) NOT NULL,
			 CodTarRet varchar(4) NULL,
			 CodTarIca varchar(4) NULL,
			 CodTarRtc varchar(4) NULL,
			 VrConcPagos money NOT NULL,
			 VrConcDctos money NOT NULL,
			 VrConcFondo money NOT NULL,
			 VrConcSeguro money NOT NULL,
			 VrConcAporte money NOT NULL,
			 VrConcImpuesto money NOT NULL,
			 VrRecCaja money NOT NULL,
			 CdForma varchar(4) NULL,
			 IdCCosto varchar(16) NULL,
			 IdSubCos varchar(16) NULL,
			 VrSeguros money NOT NULL,
			 VrFondos money NOT NULL,
			 VrAportes money NOT NULL,
			 Comentarios varchar(1000) NULL		 
			 )

			declare @TipDocu varchar(3)
			declare @Orden int
			declare @IdCia CHAR(2)		
			DECLARE @Reserva INT --Esta variable guarda el número de reserva
			DECLARE @IdCiaRes CHAR(2)  --Esta variable guarda la compañia de la reserva
			DECLARE @ItemRes INT --Esta variable guarda el número de ítem de 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)
			declare @NumProc int = 1
			declare @ItemProc int = 1

			DECLARE ordencursor CURSOR
			FOR SELECT TipDoc,OrdPago,IdCia FROM @Trn_TraEspOrdenPago
			OPEN ordencursor
			FETCH NEXT FROM ordencursor INTO @TipDocu,@Orden,@IdCia
			WHILE @@FETCH_STATUS = 0
			BEGIN
				
					IF(@operacion = 'i')
					begin					
						SELECT @TipDoc = @TipDocu, @Cia = @IdCia, @IdCiaComp = @IdCia, @IdCiaCompNiif = @IdCia, @IdCiaCompFis = @IdCia
						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 where TipDoc = @TipDocu and Documento = @Orden and  IdCiaDoc = @IdCia
							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' and TipDoc = @TipDocu and Documento = @Orden and  IdCiaDoc = @IdCia
							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' and TipDoc = @TipDocu and Documento = @Orden and  IdCiaDoc = @IdCia
							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 where TipDoc = @TipDocu and OrdPago = @Orden and IdCia = @IdCia
						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 where TipDoc = @TipDocu and OrdPago = @Orden and IdCia = @IdCia
						END 

						IF(EXISTS(SELECT * FROM @Trn_TraEspOrdenProg))
						BEGIN
						INSERT INTO Trn_TraEspOrdenProg(
						TipDoc,OrdPago,IdCia,Item,TipRes,Reserva,IdCiaRes,ItemRes,TipPgr,Programa,IdCiaPgr,ItemPgr,VrRecorrido
						)
						SELECT 
						@TipDoc,@Numero,@Cia,Item,TipRes,Reserva,IdCiaRes,ItemRes,TipPgr,Programa,IdCiaPgr,ItemPgr,VrRecorrido
						FROM @Trn_TraEspOrdenProg where TipDoc = @TipDocu and OrdPago = @Orden and IdCia = @IdCia
						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 where TipDoc = @TipDocu and Documento = @Orden and IdCia = @IdCia
						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 where TipDoc = @TipDocu and Documento = @Orden and IdCia = @IdCia
						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 where TipDoc = @TipDocu and Documento = @Orden and IdCia = @IdCia
						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  where TipDoc = @TipDocu and Documento = @Orden and IdCiaDoc = @IdCia
						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, 
						ConsCP, CodCueCons, PrecioPub, RefVehiculo, RefNumVeh
						)
						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, 
						ConsCP, CodCueCons, PrecioPub, RefVehiculo, RefNumVeh
						FROM @Trn_Pagos where TipDoc = @TipDocu and Documento = @Orden and IdCia = @IdCia
						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 where TipDoc = @TipDocu and Documento = @Orden and IdCia = @IdCia
						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, Referncia, TipDocRef, DocRef, IdCiaRef, TimeSys, FecUpdate, IdCiaCrea, 
						IdUsuario, CdConcTrib, CdTarifTrib, NumEstablec, PtoEmision, Num_Autoriza, FechAutoriza,CdCuentaNiif
						FROM @Trn_ComDetalle where TipDoc = @TipDocu and Documento = @Orden and IdCia = @IdCia
						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 
						where C.TipDoc = @TipDocu and C.Documento = @Orden and C.IdCia = @IdCia
							  and N.TipDoc = @TipDocu and N.Documento = @Orden and N.IdCiaDoc = @IdCia
						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, 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 and NC.TipDoc = @TipDocu and NC.Documento = @Orden and NC.IdCiaDoc = @IdCia
						where N.TipDoc = @TipDocu and N.Documento = @Orden and N.IdCia = @IdCia
						END
					end	

					IF(@operacion = 'i')
					begin					
						--actualiza los items de la programnación detalle de cada reserva agregada en la Orden de Pago
						UPDATE Trn_TraEspProgramaDet
						SET TipDocOdp = 'OPE',NumOdp = @Numero, IdCiaOdp = @Cia, FechaOdp = t3.Fecha
						FROM Trn_TraEspProgramaDet t1 
						,(Select TipRes,Reserva,IdCiaRes,ItemRes,TipPgr,Programa,IdCiaPgr,ItemPgr from Trn_TraEspOrdenProg where TipDoc = 'OPE' and OrdPago = @Numero and IdCia = @Cia) as t2
						,(Select Fecha from Trn_TraEspOrdenPago where TipDoc = 'OPE' and OrdPago = @Numero and IdCia = @Cia) as t3					 
						WHERE t1.TipDocRes = t2.TipRes and t1.Reserva = t2.Reserva and t1.IdCiaRes = t2.IdCiaRes and t1.ItemRes = t2.ItemRes and t1.TipDoc = t2.TipPgr and t1.Programa = t2.Programa and t1.IdCia = t2.IdCiaPgr and t1.Item = t2.ItemPgr 

						--actualización de la resdetalle
						Select @Reserva = Reserva, @IdCiaRes = IdCiaRes, @ItemRes = ItemRes from @Trn_TraEspOrdenReservas where TipDoc = @TipDocu and OrdPago = @Orden and IdCia = @IdCia
										
						SELECT @TipoTarifa = TipoTarifa FROM Trn_TraEspResDetalle WHERE Reserva = @Reserva AND IdCia = @IdCiaRes AND Item = @ItemRes

						SELECT @VrTotalPagosaRES = ISNULL(SUM(R.VrServicio),0) 
						FROM Trn_TraEspOrdenReservas R
						LEFT JOIN Trn_TraEspOrdenPago AS OP ON R.TipDoc = OP.TipDoc AND  R.OrdPago = OP.OrdPago AND  R.IdCia = OP.IdCia
						WHERE R.Reserva = @Reserva AND R.IdCiaRes = @IdCiaRes AND R.ItemRes = @ItemRes AND OP.Anulado = 0
						
						IF(upper(@TipoTarifa) <> 'DIA')
						BEGIN
							SELECT @VrPagos = VrPagos FROM Trn_TraEspResDetalle WHERE Reserva = @Reserva AND IdCia = @IdCiaRes AND Item = @ItemRes

							IF(@VrTotalPagosaRES >= @VrPagos)
							BEGIN
								UPDATE Trn_TraEspResDetalle
								SET EstadoItem ='LIQUIDADA'
								WHERE Reserva = @Reserva AND IdCia = @IdCiaRes AND Item = @ItemRes
							END
							ELSE -- revisar que la cant de veh se vayan a liquidar(programados no novedad) ya hayan sido liquidados(pasan de xliquidar a liquidado) y que la reserva no se haya vencido
							BEGIN
							  declare @cantveh int= 0, @cantord int = 0, @fechares date, @fechasys date,@idveh varchar(10)

							  select @cantveh = count(*) from trn_traespprogramadet where Reserva = @Reserva AND IdCiaRes = @IdCiaRes AND ItemRes = @ItemRes and IdNovedad = '0' and IdVehiculo <>'0'
							  select @fechares = fechafin from trn_traespreservas where Reserva = @Reserva AND IdCia = @IdCiaRes
							  select @fechasys = FechaActual from companias where IdCia = @IdCiaRes

							  --selecciono  los progdetalle de esos vehiculos
							  declare @Trn_TraEspProgramaDet dataTypeTrn_TraEspProgramaDet 
							  INSERT INTO @Trn_TraEspProgramaDet(
							  TipDoc,Programa,IdCia,Item,FechaInicio,FechaFin,TipDocRes,Reserva,IdCiaRes,ItemRes,
							  IdOrigen,IdDestino,IdVehiculo,CdTipVeh,IdConductor,NumPasajeros,TipDocFuec,NumFuec,
							  IdCiaFuec,TipDocOdp,NumOdp,IdCiaOdp,FechaOdp,IdNovedad,Novedad,Cumplido,FecIniCump,FecFinCump,VrCobro,VrPagos,DiasDisp,Parada,
							  CdTipServicio,DirOrigen,DirDestino,IdRuta,CdTipRuta,PesoNeto,EstadoItem,VrMonitor,CantMonitor,VrRecorrido,Observacion
							  ) 
							  SELECT 
							  TipDoc,Programa,IdCia,Item,FechaInicio,FechaFin,TipDocRes,Reserva,IdCiaRes,ItemRes,
							  IdOrigen,IdDestino,IdVehiculo,CdTipVeh,IdConductor,NumPasajeros,TipDocFuec,NumFuec,
							  IdCiaFuec,TipDocOdp,NumOdp,IdCiaOdp,FechaOdp,IdNovedad,Novedad,Cumplido,FecIniCump,FecFinCump,VrCobro,VrPagos,DiasDisp,Parada,
							  CdTipServicio,DirOrigen,DirDestino,IdRuta,CdTipRuta,PesoNeto,EstadoItem,VrMonitor,CantMonitor,VrRecorrido,Observacion
							  FROM Trn_TraEspProgramaDet  where Reserva = @Reserva AND IdCiaRes = @IdCiaRes AND ItemRes = @ItemRes and IdNovedad = '0' and IdVehiculo <>'0'
					  
							  --cursor para verififcar si los vehiculos fueron pagados en ordenes de pago					   
							  DECLARE verificar CURSOR
							  FOR SELECT IdVehiculo  FROM @Trn_TraEspProgramaDet
							  OPEN verificar
							  FETCH NEXT FROM verificar INTO @idveh
							  WHILE @@FETCH_STATUS = 0
							  BEGIN

							  --verifico la cantidad que ya fueron liquidados(tine encuenta la actual)
							   if (exists(select * from Trn_TraEspOrdenReservas where Reserva = @Reserva AND IdCiaRes = @IdCiaRes AND ItemRes = @ItemRes and IdVehiculo = @idveh))
								select @cantord = @cantord + 1

								FETCH NEXT FROM verificar INTO @idveh 
							  END
							  CLOSE verificar
							  DEALLOCATE verificar

							  --se verifica que cumpal para colocar la resrva a liquidada
							  IF((@cantord >= @cantveh) AND (@fechasys  >= @fechares))
							  BEGIN 
								UPDATE Trn_TraEspResDetalle
								SET EstadoItem ='LIQUIDADA'
								WHERE Reserva = @Reserva AND IdCia = @IdCiaRes AND Item = @ItemRes
							  END

							END

						END
						ELSE
						BEGIN 
							SELECT @VrPagos = ISNULL(SUM(VrPagos),0)  FROM Trn_TraEspProgramaDet WHERE Reserva = @Reserva AND IdCiaRes = @IdCiaRes AND ItemRes = @ItemRes and IdNovedad = '0' and IdVehiculo <>'0'

							IF(@VrTotalPagosaRES >= @VrPagos)
							BEGIN
								UPDATE Trn_TraEspResDetalle
								SET EstadoItem ='LIQUIDADA'
								WHERE Reserva = @Reserva AND IdCia = @IdCiaRes AND Item = @ItemRes
							END
						END

						--actualiza los anticipos
						UPDATE Trn_TraEspAnticipos
						SET VrAbonado = t2.VrAbono + VrAbonado
						FROM Trn_TraEspAnticipos t1
						,(Select TipAnt,Anticipo,IdCiaAnt,VrAbono from @Trn_TraEspAntAbonos where TipDoc = @TipDocu and Documento = @Orden and IdCia = @IdCia) as t2
						WHERE t1.TipDoc = t2.TipAnt and t1.Anticipo = t2.Anticipo and t1.IdCia = t2.IdCiaAnt 
						  
					end

					IF(@NumProc = @ItemProc)
					BEGIN
						INSERT INTO #LogOrden(
						Numero,Fecha,EstadoProc,Observacion,TimeSys,IdUsuario,Nombre
						)
						SELECT 
						@NumProc,t1.Fecha,1,t1.Observacion,t1.TimeSys,t1.IdUsuario,u.Usuario
						FROM @Trn_TraEspOrdenPago as t1
						left join adm_Usuarios u on u.IdUsuario = t1.IdUsuario
						WHERE t1.TipDoc = @TipDocu and t1.OrdPago = @Orden and t1.IdCia = @IdCia
					END

					INSERT INTO #LogOrdenDet(
					Numero,Item,TipDoc,Orden,IdCia,Fecha,IdConcepto,TipoCom,Comprobante,TipRes,Reserva,IdCiaRes,
					ItemRes,IdOrigen,CiuOrigen,IdDestino,CiuDestino,IdRuta,Ruta,IdVehiculo,IdConductor,IdPropietario,
					IdPoseedor,Cumplido,IdCiaCum,EstadoReg,VrServicio,VrDescuento,VrRetencion,VrReteIca,VrReteCREE,VrAnticipos,VrOtrosDctos,VrImpuestos,
					VrOtrosPagos,VrNeto,TarifaRet,TarifaIca,TarifaRtc,CodTarRet,CodTarIca,CodTarRtc,VrConcPagos,VrConcDctos,
					VrConcFondo,VrConcSeguro,VrConcAporte,VrConcImpuesto,VrRecCaja,CdForma,IdCCosto,IdSubCos,VrSeguros,VrFondos,
					VrAportes,Comentarios
					)
					SELECT 
					@NumProc,@ItemProc,@TipDoc,@Numero,@Cia,t1.Fecha,t1.IdConcepto,@TipComp,@Comprobante,t2.TipRes,t2.Reserva,t2.IdCiaRes,
					t2.ItemRes,t3.CdCiuOrigen,t3.CiuOrigen,t3.CdCiuDestino,t3.CiuDestino,t3.IdRuta,t3.Ruta,t2.IdVehiculo,t2.IdConductor,t2.IdPropietario,
					t2.IdPoseedor,t3.Cumplido,t3.IdCiaCum,1,t2.VrServicio,t2.VrDescuento,t2.VrRetencion,t2.VrReteIca,t2.VrReteCREE,t2.VrAnticipos,t2.VrOtrosDctos,t2.VrImpuestos,
					t2.VrOtrosPagos,t2.VrNeto,t2.TarifaRet,t2.TarifaIca,t2.TarifaRtc,t2.CodTarRet,t2.CodTarIca,t2.CodTarRtc,t2.VrConcPagos,t2.VrConcDctos,
					t2.VrConcFondo,t2.VrConcSeguro,t2.VrConcAporte,t2.VrConcImpuesto,t2.VrRecCaja,t2.CdForma,t2.CdCenCosto,t2.CdSubCenCos,t2.VrSeguros,t2.VrFondos,
					t2.VrAportes,'Se guarda correctamente'
					FROM (SELECT * FROM @Trn_TraEspOrdenPago WHERE TipDoc = @TipDocu and OrdPago = @Orden and IdCia = @IdCia) AS t1,
					(SELECT * FROM @Trn_TraEspOrdenReservas WHERE TipDoc = @TipDocu and OrdPago = @Orden and IdCia = @IdCia) AS t2,
					(SELECT r.IdRuta,rt.Ruta,r.CdCiuOrigen,lo.Localidad AS CiuOrigen,r.CdCiuDestino, ld.Localidad AS CiuDestino,r.Cumplido,r.IdCiaCum 
					 FROM @Trn_TraEspOrdenReservas AS ord 
					 join Trn_TraEspResDetalle r ON r.TipDoc = ord.TipRes and r.Reserva = ord.Reserva and r.IdCia = ord.IdCiaRes and r.Item = ord.ItemRes
					 left join Rutas rt ON rt.IdRuta = r.IdRuta 
					 left join Localidades lo ON lo.IdLocal = r.CdCiuOrigen 
					 left join Localidades ld ON ld.IdLocal = r.CdCiuDestino
					 WHERE ord.TipDoc = @TipDocu and ord.OrdPago = @Orden and ord.IdCia = @IdCia) AS t3

					SELECT @ItemProc = @ItemProc + 1
				
			FETCH NEXT FROM ordencursor INTO @TipDocu,@Orden,@IdCia
			END
			CLOSE ordencursor
			DEALLOCATE ordencursor

			SELECT * FROM #LogOrden
			SELECT * FROM #LogOrdenDet

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

			SELECT 
			@ErrorMessage = Convert(varchar(10),ERROR_LINE()) +' '+ ERROR_MESSAGE(),
			@ErrorSeverity = ERROR_SEVERITY(),
			@ErrorState = ERROR_STATE();
			RAISERROR(
			@ErrorMessage, -- Message text.
			@ErrorSeverity, -- Severity.
			@ErrorState -- State.
			);
		END CATCH
RETURN 0
GO
/****** Object:  StoredProcedure [dbo].[paWcfSeInsMsvTrn_Facturas]    Script Date: 27/05/2024 10:52:47 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[paWcfSeInsMsvTrn_Facturas]
	@Trn_Facturas [dbo].[dataTypeTrn_Facturas] READONLY,
	@Trn_TraEspFacReservas [dbo].[dataTypeTrn_TraEspFacReservas] READONLY,
	@Trn_TraEspFacResVehiculos [dbo].[dataTypeTrn_TraEspFacResVehiculos] READONLY,
	@Trn_DocMemo [dbo].[dataTypeTrn_DocMemo] READONLY,
	@Trn_TraEspAuxFactura [dbo].[dataTypeTrn_TraEspAuxFactura] READONLY,
	@Trn_RecAfavor [dbo].[dataTypeTrn_RecAfavor] READONLY,
	@Trn_VencAbonos [dbo].[dataTypeTrn_VencAbonos] READONLY,
	@Trn_Vencimientos [dbo].[dataTypeTrn_Vencimientos] READONLY,
	@Trn_DetCuentas [dbo].[dataTypeTrn_DetCuentas] READONLY,
	@Trn_Comprobantes [dbo].[dataTypeTrn_Comprobantes] READONLY,
	@Trn_ComDetalle [dbo].[dataTypeTrn_ComDetalle] READONLY,
	@Trn_NiifComp [dbo].[dataTypeTrn_NiifCompFMsv] READONLY,
	@Trn_NiifDetalle [dbo].[dataTypeNiifDetalle] READONLY,
	@operacion [varchar](1)
WITH EXECUTE AS CALLER
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 CHAR(2) = '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 CHAR(2) = '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 @CodigoPre VARCHAR(3)
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
declare @FechaFac smalldatetime
	BEGIN TRAN
		BEGIN TRY	
		
			--CREATE TABLE #LogTraEspFacturas(
			--Numero int NOT NULL DEFAULT ((0)),
			--Fecha smalldatetime NOT NULL,
			--EstadoProc int NOT NULL DEFAULT ((0)),
			--Observacion varchar(250) NULL,
			--TimeSys smalldatetime NOT NULL,
			--IdUsuario varchar(11) NOT NULL,
			--Nombre varchar(50) NOT NULL,
			--Tipo varchar(10) NOT NULL
			--)	
			
			CREATE TABLE #LogTraEspFacReservas(
			NewTipFac varchar(3) NOT NULL,
			NewFactura int NOT NULL,
			NewIdCiaFac char(2) NOT NULL,
			OldTipFac varchar(3) NOT NULL,
			OldFactura int NOT NULL,
			OldIdCiaFac char(2) NOT NULL,
			) 

			declare @NumProc int = 1
			declare @ItemProc int = 1
			declare @TipFac varchar(3)
			declare @Factura INT
			declare @IdCia varchar(2)
			declare @Fecha datetime
			declare @observ varchar(250)
			declare @IdCliente varchar(16)
			declare @VrNeto money

			DECLARE factcursor CURSOR
			FOR SELECT TipDoc,Factura,IdCia,Fecha,IdCliente,VrNeto FROM @Trn_Facturas
			OPEN factcursor
			FETCH NEXT FROM factcursor INTO @TipFac,@Factura,@IdCia,@Fecha,@IdCliente,@VrNeto
			WHILE @@FETCH_STATUS = 0
			BEGIN
				IF(@operacion = 'i')
				BEGIN
					SET @TipDoc = @TipFac
					SET @Cia = @IdCia
					SET @IdCiaComp = @IdCia
					SET @IdCiaCompNiif = @IdCia
					SET @IdCiaCompFis = @IdCia
					SET @FechaFac = @Fecha 
				
					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' AND Documento = @Factura))
					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 > 0)
						BEGIN
							--declare @bcpCommand varchar(255), @Result int
							--declare @FileName varchar(255)
							--set @FileName ='D:\hola.txt'
							--set @bcpCommand = 'bcp "Select 1 as a" queryout "' + @FileName + '" -c -t, -T -S '

							--exec @Result = master..xp_cmdshell @bcpCommand, no_output
							UPDATE TiposComCons SET Numero = @CompNiif WHERE IdCom = @TipCompNiif and IdCia = @IdCiaCompNiif
						END
						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' AND Documento = @Factura))
					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(@CompFis > 0)
						BEGIN
							UPDATE TiposComCons SET Numero = @CompFis WHERE IdCom = @TipCompFis and IdCia = @IdCiaCompFis
						END
						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
	
					IF(EXISTS(SELECT * FROM @Trn_Facturas))
					BEGIN
						INSERT INTO Trn_Facturas(
						TipDoc, Factura, IdCia, Fecha, IdConcepto, IdCliente, IdAgencia, FechaVence, VrSubTotal, VrDescuento, VrImpuesto, VrRetencion, VrReteICA, VrReteIVA, VrFletes, VrOtros, 
						VrCargos, VrOtrDcto, VrCostos, VrSobretasa, VrImpGlobal, VrFaltantes, VrAnticipos, VrNeto, VrAplicado, Cantidad, CantPuntos, PuntosAcum, BaseImp, BaseRet, BaseIca, 
						BaseRiv, TarifaIva, TarifaRet, TarifaIca, TarifaRiv, CodTarIva, CodTarRet, CodTarIca, CodTarRiv, IdCCosto, IdSubCos, IdVend, TarifaCom, CodTarCom, DirEnvio, IdLocEnv, 
						DiasEntraga, NitContac, NomContac, TelContac, emlContac, CargoContac, IdForma, DetallePago, MulPlazos, IdPlazo, CdMney, NitEmpTrans, EmpTrans, pVehiculo, CdConductor, 
						CdRuta, TipPed, Pedido, IdCiaPed, TipRem, Remision, IdCiaRem, TipCot, Cotizacion, IdCiaCot, FecPedido, AutzaMora, AutzaCupo, Modalidad, KmtVehic, ZonaFrontera, PesoTotal, 
						UnidTotal, VolTotal, CantFalt, VrCostoRem, VrCostoAfi, CodAutoRet, OrigenAdd, TipCom, Comprobante, IdCiaCom, Anulado, NumDev, FecDev, Observacion, IdEstado, TimeSys, 
						FecUpdate, IdCiaCrea, IdUsuario, VrImpCons, VrReteCREE, TarifaRtc, CodTarRtc, Parqueadero, FecCuotaParq, BaseIvaObsq, VrIvaObsequio, VrImpCarbono, TipoFE, FechaFE, 
						BaseIvaIgp,VrIvaIngProd,CodTarArf,TarifaArf,VrAutRetFte,CodTarAri,TarifaAri,VrAutRetIca
						)
						SELECT 
						@TipDoc,@Numero,@Cia,Fecha,IdConcepto,IdCliente,IdAgencia,FechaVence,VrSubTotal,VrDescuento,VrImpuesto,VrRetencion,VrReteICA,VrReteIVA,VrFletes,VrOtros,
						VrCargos,VrOtrDcto,VrCostos,VrSobretasa,VrImpGlobal,VrFaltantes,VrAnticipos,VrNeto,VrAplicado,Cantidad,CantPuntos,PuntosAcum,BaseImp,BaseRet,BaseIca,
						BaseRiv,TarifaIva,TarifaRet,TarifaIca,TarifaRiv,CodTarIva,CodTarRet,CodTarIca,CodTarRiv,IdCCosto,IdSubCos,IdVend,TarifaCom,CodTarCom,DirEnvio,IdLocEnv,
						DiasEntraga,NitContac,NomContac,TelContac,emlContac,CargoContac,IdForma,DetallePago,MulPlazos,IdPlazo,CdMney,NitEmpTrans,EmpTrans,pVehiculo,CdConductor,
						CdRuta,TipPed,Pedido,IdCiaPed,TipRem,Remision,IdCiaRem,TipCot,Cotizacion,IdCiaCot,FecPedido,AutzaMora,AutzaCupo,Modalidad,KmtVehic,ZonaFrontera,PesoTotal,
						UnidTotal,VolTotal,CantFalt,VrCostoRem,VrCostoAfi,CodAutoRet,OrigenAdd,@TipComp,@Comprobante,@IdCiaComp,Anulado,NumDev,FecDev,Observacion,IdEstado,TimeSys,
						FecUpdate,IdCiaCrea,IdUsuario,VrImpCons,VrReteCREE,TarifaRtc,CodTarRtc,Parqueadero,FecCuotaParq,BaseIvaObsq,VrIvaObsequio,VrImpCarbono,TipoFE,FechaFE,
						BaseIvaIgp,VrIvaIngProd,CodTarArf,TarifaArf,VrAutRetFte,CodTarAri,TarifaAri,VrAutRetIca
						FROM @Trn_Facturas p WHERE p.TipDoc = @TipFac and p.Factura = @Factura and p.IdCia = @IdCia
					END
					 
					IF(EXISTS(SELECT * FROM @Trn_TraEspFacReservas))
					BEGIN
						INSERT INTO Trn_TraEspFacReservas(
						TipDoc,Factura,IdCia,Item,TipoReg,FechaFact,TipRes,Reserva,IdCiaRes,ItemRes,FecReserva,Descripcion,Cantidad,VrServicio,VrUnitario,VrCosto,
						TarifaIva,VrImpuesto,TarifaDct,VrDescuento,DocCliente,Referencia1,Referencia2,Referencia3,CdConcepto,CdCCosto,CdSubCos,NitTercero,CdAgencia,
						pVehiculo,TipoAfiVehic,IdOrigen,IdDestino,Anulado,TipDocRef,NumDocRef,IdCiaRef,FecDocRef,CodTarDct,CodTarRet,CodTarIca,TarifaRet,VrRetencion,
						TarifaIca,VrReteIca,EstadoItem
						)
						SELECT 
						@TipDoc,@Numero,@Cia,Item,TipoReg,FechaFact,TipRes,Reserva,IdCiaRes,ItemRes,FecReserva,Descripcion,Cantidad,VrServicio,VrUnitario,VrCosto,
						TarifaIva,VrImpuesto,TarifaDct,VrDescuento,DocCliente,Referencia1,Referencia2,Referencia3,CdConcepto,CdCCosto,CdSubCos,NitTercero,CdAgencia,
						pVehiculo,TipoAfiVehic,IdOrigen,IdDestino,Anulado,TipDocRef,NumDocRef,IdCiaRef,FecDocRef,CodTarDct,CodTarRet,CodTarIca,TarifaRet,VrRetencion,
						TarifaIca,VrReteIca,EstadoItem
						FROM @Trn_TraEspFacReservas p WHERE p.TipDoc = @TipFac and p.Factura = @Factura and p.IdCia = @IdCia
					END

					IF(EXISTS(SELECT * FROM @Trn_TraEspFacResVehiculos))
					BEGIN
						INSERT INTO Trn_TraEspFacResVehiculos(
						TipDoc,Factura,IdCIa,Item,TipRes,Reserva,IdCIaRes,ItemRes,IdVehiculo,TipoAfil,VrRecorrido
						)
						SELECT
						@TipDoc,@Numero,@Cia,Item,TipRes,Reserva,IdCIaRes,ItemRes,IdVehiculo,TipoAfil,VrRecorrido
						FROM @Trn_TraEspFacResVehiculos p WHERE p.TipDoc = @TipFac and p.Factura = @Factura and p.IdCia = @IdCia 
					END

					IF(EXISTS(SELECT * FROM @Trn_Vencimientos))
					BEGIN
						INSERT INTO Trn_Vencimientos(
						TipDoc,Factura,IdCia,Item,Fecha,FechaVence,VrFactura,VrAbonado,IdCliente,IdAgencia,IdVend,Comision,TarifDcto,
						TipoDcto,TipoBase,FecLmtDcto,IdConcepto,Referencia,Detalle,TipRef,DocRef,IdCiaRef,FecUltPago,NumNota,IdCiaNot,
						TarifInt,FecLiqMora,FecPlazoCal
						)
						SELECT 
						@TipDoc,@Numero,@Cia,Item,Fecha,FechaVence,VrFactura,VrAbonado,IdCliente,IdAgencia,IdVend,Comision,TarifDcto,
						TipoDcto,TipoBase,FecLmtDcto,IdConcepto,Referencia,Detalle,TipRef,DocRef,IdCiaRef,FecUltPago,NumNota,IdCiaNot,
						TarifInt,FecLiqMora,FecPlazoCal
						FROM @Trn_Vencimientos p WHERE p.TipDoc = @TipFac and p.Factura = @Factura and p.IdCia = @IdCia
					END

					IF(EXISTS(SELECT * FROM @Trn_DocMemo))
					BEGIN
					INSERT INTO Trn_DocMemo(
						TipDoc,Documento,IdCia,Comentarios,Nota1,Nota2,Nota3,CantImp,ArchivoImg
						)
						SELECT 
						@TipDoc,@Numero,@Cia,Comentarios,Nota1,Nota2,Nota3,CantImp,ArchivoImg
						FROM @Trn_DocMemo p WHERE p.TipDoc = @TipFac and p.Documento = @Factura and p.IdCia = @IdCia
					END 

					IF(EXISTS(SELECT * FROM @Trn_TraEspAuxFactura))
					BEGIN
						INSERT INTO Trn_TraEspAuxFactura(
						TipFac,Factura,IdCiaFac,Resolucion,Rango,FechaResl,Prefijo,TipDocPf,PreFactura,IdCiaPf,CodigoPreFact
						)
						SELECT 
						@TipDoc,@Numero,@Cia,Resolucion,Rango,FechaResl,Prefijo,TipDocPf,PreFactura,IdCiaPf,CodigoPreFact
						FROM @Trn_TraEspAuxFactura p WHERE p.TipFac = @TipFac and p.Factura = @Factura and p.IdCiaFac = @IdCia
					END 

					IF(EXISTS(SELECT * FROM @Trn_RecAfavor))
					BEGIN
						update Trn_RecAfavor
						set VrAbono = t1.VrAbono + t2.VrAbono
						from Trn_RecAfavor t1, @Trn_RecAfavor t2
						where t1.TipDoc = t2.TipDoc and t1.Recibo = t2.Recibo and t1.IdCia = t2.IdCia and t1.IdCliente = t2.IdCliente and t1.IdAgencia = t2.IdAgencia and t1.IdVend = t2.IdVend
							--and TipDoc = @TipDoc and t1.Factura = @Factura and t1.IdCia = @IdCia
					END 

					IF(EXISTS(SELECT * FROM @Trn_VencAbonos))
					BEGIN
						declare @tiprec varchar(3)
						declare @recibo int
						declare @idciarec varchar(2)
						declare @item int 
						SELECT TOP 1 @tiprec = TipRec, @idciarec = IdCia, @recibo = Recibo FROM @Trn_VencAbonos WHERE TipDoc = @TipFac and Factura = @Factura and IdCiaFac = @IdCia
						
						if((@tiprec <> null and @tiprec <> '') and @recibo > 0)
						BEGIN
							SELECT @item =  isnull(MAX(Item),0) FROM Trn_VencAbonos WHERE TipRec = @tiprec and Recibo = @recibo and IdCia = @idciarec

							INSERT INTO Trn_VencAbonos(
							TipRec,Recibo,IdCia,Item,Fecha,TipDoc,Factura,IdCiaFac,ItemFac,VrAbono,VrDescto,
							VrBaseCms,IdCliente,IdAgencia,IdVend,Comision,Detalle,FecPago,TipoAplica,TimeSys
							)
							SELECT 
							TipRec,Recibo,IdCia,(@item + ROW_NUMBER() OVER(ORDER BY Item ASC)),Fecha,@TipDoc,@Numero,@Cia,ItemFac,VrAbono,VrDescto,
							VrBaseCms,IdCliente,IdAgencia,IdVend,Comision,Detalle,FecPago,TipoAplica,TimeSys
							FROM @Trn_VencAbonos WHERE TipDoc = @TipFac and Factura = @Factura and IdCiaFac = @IdCia

							IF(EXISTS(SELECT * FROM @Trn_RecAfavor))
							BEGIN
								UPDATE Trn_RecAfavor
								SET VrAbono = t1.VrAbono + t2.VrAbono
								FROM Trn_RecAfavor t1
								JOIN(SELECT ra.TipDoc,ra.Recibo,ra.IdCia,ra.Fecha,ra.VrAFavor,ra.VrOtrosDb,ra.VrAbono,ra.IdCliente,ra.IdAgencia,ra.IdVend FROM @Trn_RecAfavor ra
										JOIN @Trn_VencAbonos va on ra.TipDoc = va.TipRec and ra. Recibo = va.Recibo and ra.IdCia = va.IdCia
										WHERE va.TipDoc = @TipFac and va.Factura = @Factura and va.IdCiaFac = @IdCia) AS t2
								ON t1.TipDoc = t2.TipDoc and t1.Recibo = t2.Recibo and t1.IdCia = t2.IdCia and t1.IdCliente = t2.IdCliente and t1.IdAgencia = t2.IdAgencia and t1.IdVend = t2.IdVend
							END
						END
					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 where TipDoc = @TipFac and Documento = @Factura and IdCia = @IdCia
					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 where TipDoc = @TipFac and Documento = @Factura and IdCia = @IdCia
					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, Referncia, TipDocRef, DocRef, IdCiaRef, TimeSys, FecUpdate, IdCiaCrea, 
						IdUsuario, CdConcTrib, CdTarifTrib, NumEstablec, PtoEmision, Num_Autoriza, FechAutoriza,CdCuentaNiif
						FROM @Trn_ComDetalle where TipDoc = @TipFac and Documento = @Factura and IdCia = @IdCia
					END

					IF(EXISTS(SELECT * FROM @Trn_NiifComp WHERE TipoNiif = 'NIIF' AND Documento = @Factura))
					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 
						@TipCompNiif, @CompNiif, @IdCia,C.Fecha, C.IdTercero, C.VrTotal, C.IdCta,
						C.EnEfectivo, C.NumCheque, C.FecCheque, @TipDoc, @Numero, @IdCia, 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, @TipCompNiif, @CompNiif, NULL, 0
						FROM @Trn_NiifComp  AS N 
						JOIN  @Trn_Comprobantes AS C ON C.TipCom = N.TipComCont AND C.Comprobante = N.ComprobanteCont
						WHERE C.Documento = N.Documento AND N.Documento = @Factura AND N.TipoNiif = 'NIIF'

						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 
							@TipCompNiif, @CompNiif, @IdCia, 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,@IdCia, 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_NiifComp  as NC
							JOIN @Trn_NiifDetalle AS N ON N.Comprobante = NC.ComprobanteCont  AND N.TipCom = @TipCompNiif
							--AND NC.TipoNiif = 'NIIF' 
							where N.Documento = @Factura  AND N.Documento = NC.Documento AND NC.TipoNiif = 'NIIF' 
						END
					END

					IF(EXISTS(SELECT * FROM @Trn_NiifComp WHERE TipoNiif = 'FISCAL' AND Documento = @Factura))
					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 
						@TipCompFis, @CompFis, @IdCia,C.Fecha, C.IdTercero, C.VrTotal, C.IdCta,
						C.EnEfectivo, C.NumCheque, C.FecCheque, @TipDoc, @Numero, @IdCia, 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, @TipCompFis, @CompFis, NULL, 0
						FROM @Trn_NiifComp  AS N 
						JOIN  @Trn_Comprobantes AS C ON C.TipCom = N.TipComCont AND C.Comprobante = N.ComprobanteCont
						WHERE C.Documento = N.Documento AND N.Documento = @Factura AND N.TipoNiif = 'FISCAL'

						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 
							@TipCompFis, @CompFis, @IdCia, 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,@IdCia, 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_NiifComp as NC
							JOIN @Trn_NiifDetalle AS N ON N.Comprobante = NC.ComprobanteCont  AND N.TipCom = @TipCompFis
							--AND NC.TipoNiif = 'FISCAL' 
							where N.Documento = @Factura AND N.Documento = NC.Documento AND NC.TipoNiif = 'FISCAL' 
						END
					END
					
					--actualiza los items de las reservas con los que se relacionan en el tipo de datos nuevo de las facturasreservas
					DECLARE @TipRes VARCHAR(3) 
					DECLARE @CiaRes VARCHAR(2) 
					DECLARE @NumRes INT 
					DECLARE @ItemRes INT
					DECLARE @Ref VARCHAR(50) 
					DECLARE @reserva Int = 0 
					DECLARE @cantres Int = 0 
					DECLARE @cantresfact Int = 0 

					DECLARE faccursor CURSOR
					FOR SELECT TipRes,Reserva,IdCiaRes,ItemRes, Referencia1 FROM @Trn_TraEspFacReservas where TipDoc = @TipFac and Factura = @Factura and IdCia = @IdCia
					OPEN faccursor
					FETCH NEXT FROM faccursor INTO @TipRes,@NumRes,@CiaRes,@ItemRes, @Ref
					WHILE @@FETCH_STATUS = 0
					BEGIN
						IF(@Ref = 'CLIENTE')
						BEGIN
							UPDATE Trn_TraEspResDetalle
							SET  TipFac = @TipDoc, Factura = @Numero, IdCiaFac = @IdCia, FechaFac = @FechaFac, EstadoItem = 'FACTURADA'
							FROM Trn_TraEspResDetalle d
							WHERE d.TipDoc = @TipRes  and d.Reserva = @NumRes and d.IdCia = @CiaRes and d.Item = @ItemRes
						END
						IF (@NumRes <> @reserva)
						BEGIN
						SET @reserva = @NumRes
						
						SELECT @cantres = count(*)
						FROM Trn_TraEspResDetalle AS rd
						WHERE rd.TipDoc = @TipRes  and rd.Reserva = @NumRes and rd.IdCia = @CiaRes

						SELECT @cantresfact = count(*)
						FROM Trn_TraEspResDetalle AS rd
						WHERE rd.TipDoc = @TipRes  and rd.Reserva = @NumRes and rd.IdCia = @CiaRes and rd.EstadoItem = 'FACTURADA'
						
						IF (@cantresfact = @cantres)
						BEGIN
							UPDATE Trn_TraEspReservas 
							SET EstadoRes = 'FACTURADA' 
							WHERE TipDoc = @TipRes  and Reserva = @NumRes and IdCia = @CiaRes                     
						END
						END
				  
					FETCH NEXT FROM faccursor INTO @TipRes,@NumRes,@CiaRes,@ItemRes,@Ref
					END
					CLOSE faccursor
					DEALLOCATE faccursor

					--actualizar el cliente de cada factura
					UPDATE TercCliente
					SET  VrSaldo = c.VrSaldo + @VrNeto
					FROM TercCliente c
					WHERE c.IdClie = @IdCliente

					--Tabla a Deovler para los nuevos numeros de factura
					INSERT INTO #LogTraEspFacReservas(NewTipFac,NewFactura,NewIdCiaFac,OldTipFac,OldFactura,OldIdCiaFac)
					SELECT @TipDoc,@Numero,@Cia,@TipFac, @Factura, @IdCia
				END
			FETCH NEXT FROM factcursor INTO @TipFac,@Factura,@IdCia,@Fecha,@IdCliente,@VrNeto
			END
			CLOSE factcursor
			DEALLOCATE factcursor

			--SELECT * FROM #LogTraEspFacturas
			SELECT * FROM #LogTraEspFacReservas
			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].[paWcfSeInsPreFacturas]    Script Date: 27/05/2024 10:58:28 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[paWcfSeInsPreFacturas]
	@Trn_Facturas [dbo].[dataTypeTrn_Facturas] READONLY,
	@Trn_TraEspFacReservas [dbo].[dataTypeTrn_TraEspFacReservas] READONLY,
	@Trn_TraEspFacResVehiculos [dbo].[dataTypeTrn_TraEspFacResVehiculos] READONLY,
	@Trn_DocMemo [dbo].[dataTypeTrn_DocMemo] READONLY,
	@Trn_TraEspAuxFactura [dbo].[dataTypeTrn_TraEspAuxFactura] READONLY,
	@Trn_RecAfavor [dbo].[dataTypeTrn_RecAfavor] READONLY,
	@Trn_VencAbonos [dbo].[dataTypeTrn_VencAbonos] READONLY,
	@Trn_Vencimientos [dbo].[dataTypeTrn_Vencimientos] READONLY,
	@Trn_DetCuentas [dbo].[dataTypeTrn_DetCuentas] READONLY,
	@Trn_Comprobantes [dbo].[dataTypeTrn_Comprobantes] READONLY,
	@Trn_ComDetalle [dbo].[dataTypeTrn_ComDetalle] READONLY,
	@Trn_NiifComp [dbo].[dataTypeTrn_NiifComp] READONLY,
	@Trn_NiifDetalle [dbo].[dataTypeNiifDetalle] READONLY,
	@operacion [varchar](1)
WITH EXECUTE AS CALLER
AS
DECLARE @TipDocPre VARCHAR(3)
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
declare @FechaFac smalldatetime
declare @OpcUco VARCHAR
	BEGIN TRAN
		BEGIN TRY		 
			
			IF(@operacion = 'i')
			BEGIN
				--OPCION DE UNIFICAR CONSECUTIVOS DE PREFACTURAS CON LAS FACTURAS
				SELECT @OpcUco  = Valor FROM adm_Opciones WHERE IdOpc = 'UCO' 
				IF(@OpcUco = '1')
					SELECT @TipDocPre = TipDoc, @TipDoc = CodigoPreFact FROM @Trn_Facturas
				ELSE 
					SELECT @TipDocPre = TipDoc, @TipDoc = TipDoc FROM @Trn_Facturas
				----

				SELECT TOP 1  @Cia = IdCia, @FechaFac = Fecha FROM @Trn_Facturas
				SELECT @Numero = Numero + 1  FROM TiposDocCons where IdDoc = @TipDoc AND IdCia = @Cia

				IF(@Numero > 0)
				BEGIN
					IF(@OpcUco = '1')
					begin
						UPDATE TiposDocCons SET Numero = @Numero WHERE IdDoc = @TipDoc AND IdCia = @Cia
						UPDATE TiposDocCons SET Numero = @Numero WHERE IdDoc = @TipDocPre AND IdCia = @Cia
					end
					else
						UPDATE TiposDocCons SET Numero = @Numero WHERE IdDoc = @TipDocPre AND IdCia = @Cia
				END
				ELSE
				BEGIN
					SELECT @Numero = 1
					IF(@OpcUco = '1')
					begin
						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)
						INSERT INTO TiposDocCons VALUES (@TipDocPre,@Cia,0,0,0,0,NULL,'',@Numero,0,0,'','',1,1,1,0,1,CURRENT_TIMESTAMP,null,null,null,null)
					end
					else
						INSERT INTO TiposDocCons VALUES (@TipDocPre,@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_Facturas))
				BEGIN
				INSERT INTO Trn_Facturas(
				TipDoc,Factura,IdCia,Fecha,IdConcepto,IdCliente,IdAgencia,FechaVence,VrSubTotal,VrDescuento,VrImpuesto,VrRetencion,VrReteICA,
				VrReteIVA,VrFletes,VrOtros,VrCargos,VrOtrDcto,VrCostos,VrSobretasa,VrImpGlobal,VrFaltantes,VrAnticipos,VrNeto,VrAplicado,Cantidad,
				CantPuntos,PuntosAcum,BaseImp,BaseRet,BaseIca,BaseRiv,TarifaIva,TarifaRet,TarifaIca,TarifaRiv,CodTarIva,CodTarRet,CodTarIca,
				CodTarRiv,IdCCosto,IdSubCos,IdVend,TarifaCom,CodTarCom,DirEnvio,IdLocEnv,DiasEntraga,NitContac,NomContac,TelContac,emlContac,
				CargoContac,IdForma,DetallePago,MulPlazos,IdPlazo,CdMney,NitEmpTrans,EmpTrans,pVehiculo,CdConductor,CdRuta,TipPed,Pedido,IdCiaPed,
				TipRem,Remision,IdCiaRem,TipCot,Cotizacion,IdCiaCot,FecPedido,AutzaMora,AutzaCupo,Modalidad,KmtVehic,ZonaFrontera,PesoTotal,
				UnidTotal,VolTotal,CantFalt,VrCostoRem,VrCostoAfi,CodAutoRet,OrigenAdd,TipCom,Comprobante,IdCiaCom,Anulado,NumDev,FecDev,Observacion,
				IdEstado,TimeSys,FecUpdate,IdCiaCrea,IdUsuario,VrImpCons,VrReteCREE,TarifaRtc,CodTarRtc,Parqueadero,FecCuotaParq,BaseIvaObsq,VrIvaObsequio,
				VrImpCarbono,TipoFE,FechaFE,BaseIvaIgp,VrIvaIngProd,CodTarArf,TarifaArf,VrAutRetFte,CodTarAri,TarifaAri,VrAutRetIca
				)
				SELECT
				@TipDocPre,@Numero,@Cia,Fecha,IdConcepto,IdCliente,IdAgencia,FechaVence,VrSubTotal,VrDescuento,VrImpuesto,VrRetencion,VrReteICA,
				VrReteIVA,VrFletes,VrOtros,VrCargos,VrOtrDcto,VrCostos,VrSobretasa,VrImpGlobal,VrFaltantes,VrAnticipos,VrNeto,VrAplicado,Cantidad,
				CantPuntos,PuntosAcum,BaseImp,BaseRet,BaseIca,BaseRiv,TarifaIva,TarifaRet,TarifaIca,TarifaRiv,CodTarIva,CodTarRet,CodTarIca,
				CodTarRiv,IdCCosto,IdSubCos,IdVend,TarifaCom,CodTarCom,DirEnvio,IdLocEnv,DiasEntraga,NitContac,NomContac,TelContac,emlContac,
				CargoContac,IdForma,DetallePago,MulPlazos,IdPlazo,CdMney,NitEmpTrans,EmpTrans,pVehiculo,CdConductor,CdRuta,TipPed,Pedido,IdCiaPed,
				TipRem,Remision,IdCiaRem,TipCot,Cotizacion,IdCiaCot,FecPedido,AutzaMora,AutzaCupo,Modalidad,KmtVehic,ZonaFrontera,PesoTotal,
				UnidTotal,VolTotal,CantFalt,VrCostoRem,VrCostoAfi,CodAutoRet,OrigenAdd,TipCom,Comprobante,IdCiaCom,Anulado,NumDev,FecDev,Observacion,
				IdEstado,TimeSys,FecUpdate,IdCiaCrea,IdUsuario,VrImpCons,VrReteCREE,TarifaRtc,CodTarRtc,Parqueadero,FecCuotaParq,BaseIvaObsq,VrIvaObsequio,
				VrImpCarbono,TipoFE,FechaFE,BaseIvaIgp,VrIvaIngProd,CodTarArf,TarifaArf,VrAutRetFte,CodTarAri,TarifaAri,VrAutRetIca
				FROM @Trn_Facturas
				END 

				IF(EXISTS(SELECT * FROM @Trn_TraEspFacReservas))
				BEGIN
				INSERT INTO Trn_TraEspFacReservas(
				TipDoc,Factura,IdCia,Item,TipoReg,FechaFact,TipRes,Reserva,IdCiaRes,ItemRes,FecReserva,Descripcion,Cantidad,VrServicio,VrUnitario,VrCosto,
				TarifaIva,VrImpuesto,TarifaDct,VrDescuento,DocCliente,Referencia1,Referencia2,Referencia3,CdConcepto,CdCCosto,CdSubCos,NitTercero,CdAgencia,
				pVehiculo,TipoAfiVehic,IdOrigen,IdDestino,Anulado,TipDocRef,NumDocRef,IdCiaRef,FecDocRef,CodTarDct,CodTarRet,CodTarIca,TarifaRet,VrRetencion,
				TarifaIca,VrReteIca,EstadoItem
				)
				SELECT 
				@TipDocPre,@Numero,@Cia,Item,TipoReg,FechaFact,TipRes,Reserva,IdCiaRes,ItemRes,FecReserva,Descripcion,Cantidad,VrServicio,VrUnitario,VrCosto,
				TarifaIva,VrImpuesto,TarifaDct,VrDescuento,DocCliente,Referencia1,Referencia2,Referencia3,CdConcepto,CdCCosto,CdSubCos,NitTercero,CdAgencia,
				pVehiculo,TipoAfiVehic,IdOrigen,IdDestino,Anulado,TipDocRef,NumDocRef,IdCiaRef,FecDocRef,CodTarDct,CodTarRet,CodTarIca,TarifaRet,VrRetencion,
				TarifaIca,VrReteIca,EstadoItem
				FROM @Trn_TraEspFacReservas
				END

				IF(EXISTS(SELECT * FROM @Trn_TraEspFacResVehiculos))
				BEGIN
				INSERT INTO Trn_TraEspFacResVehiculos(
				TipDoc,Factura,IdCIa,Item,TipRes,Reserva,IdCIaRes,ItemRes,IdVehiculo,TipoAfil,VrRecorrido
				)
				SELECT
				@TipDocPre,@Numero,@Cia,Item,TipRes,Reserva,IdCIaRes,ItemRes,IdVehiculo,TipoAfil,VrRecorrido
				FROM @Trn_TraEspFacResVehiculos
				END

				IF(EXISTS(SELECT * FROM @Trn_TraEspAuxFactura))
				BEGIN
				INSERT INTO Trn_TraEspAuxFactura(
				TipFac,Factura,IdCiaFac,Resolucion,Rango,FechaResl,Prefijo,TipDocPf,PreFactura,IdCiaPf,CodigoPreFact
				)
				SELECT 
				@TipDocPre,@Numero,@Cia,Resolucion,Rango,FechaResl,Prefijo,TipDocPf,PreFactura,IdCiaPf,CodigoPreFact
				FROM @Trn_TraEspAuxFactura
				END 
			END	

			SELECT @Numero

			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_TraEspOrdenPago]    Script Date: 27/05/2024 11:00:26 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[paWcfSeInsTrn_TraEspOrdenPago]
	@Trn_TraEspOrdenPago [dbo].[dataTypeTrn_TraEspOrdenPago] READONLY,
	@Trn_TraEspOrdenReservas [dbo].[dataTypeTrn_TraEspOrdenReservas] READONLY,
	@Trn_TraEspOrdenProg [dbo].[dataTypeTrn_TraEspOrdenProg] READONLY,
	@Trn_TraEspConceptos [dbo].[dataTypeTrn_TraEspConceptos] READONLY,
	@Trn_TraEspAntAbonos [dbo].[dataTypeTrn_TraEspAntAbonos] READONLY,
	@Trn_DetCuentas [dbo].[dataTypeTrn_DetCuentas] READONLY,
	@Trn_ComFactura [dbo].[dataTypeTrn_ComFactura] READONLY,
	@Trn_Pagos [dbo].[dataTypeTrn_Pagos] READONLY,
	@Trn_Comprobantes [dbo].[dataTypeTrn_Comprobantes] READONLY,
	@Trn_ComDetalle [dbo].[dataTypeTrn_ComDetalle] READONLY,
	@Trn_NiifComp [dbo].[dataTypeNiifComp] READONLY,
	@Trn_NiifDetalle [dbo].[dataTypeNiifDetalle] READONLY,
	@operacion [varchar](1)
WITH EXECUTE AS CALLER
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_TraEspOrdenProg))
				BEGIN
				INSERT INTO Trn_TraEspOrdenProg(
				TipDoc,OrdPago,IdCia,Item,TipRes,Reserva,IdCiaRes,ItemRes,TipPgr,Programa,IdCiaPgr,ItemPgr,VrRecorrido
				)
				SELECT 
				@TipDoc,@Numero,@Cia,Item,TipRes,Reserva,IdCiaRes,ItemRes,TipPgr,Programa,IdCiaPgr,ItemPgr,VrRecorrido
				FROM @Trn_TraEspOrdenProg
				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, 
				ConsCP, CodCueCons, PrecioPub, RefVehiculo, RefNumVeh
				)
				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, 
				ConsCP, CodCueCons, PrecioPub, RefVehiculo, RefNumVeh
				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
			end	

			IF(@operacion = 'i')
			begin
				--actualiza los items de la programación detalle de cada reserva agregada en la Orden de Pago
				UPDATE Trn_TraEspProgramaDet
				SET TipDocOdp = 'OPE',NumOdp = @Numero, IdCiaOdp = t3.IdCia, FechaOdp = t3.Fecha
				FROM Trn_TraEspProgramaDet t1, @Trn_TraEspOrdenProg t2, @Trn_TraEspOrdenPago t3
				WHERE t1.TipDoc = t2.TipPgr and t1.Programa = t2.Programa and t1.IdCia = t2.IdCiaPgr and t1.Item = t2.ItemPgr and t1.TipDocRes = t2.TipRes and t1.Reserva = t2.Reserva and t1.IdCiaRes = t2.IdCiaRes and t1.ItemRes = t2.ItemRes

				--JHON ROA-->Nuevo línea de código actualizar el estado de la reserva cuando ya se cumpla el valor total de la reserva
				--11/12/2017 Se cambia para tener en cuenta cuando TipoTarifa de la reserva es diaria.
				SELECT @TipoTarifa = TipoTarifa FROM Trn_TraEspResDetalle WHERE Reserva = @Reserva AND IdCia = @IdCiaRes AND Item = @ItemRes
				
				--No se necesita traer la actual reserva, poque ya fue insertada arriba en este procedimiento
				SELECT @VrTotalPagosaRES = ROUND(ISNULL(SUM(R.VrServicio),0), 1) 
				FROM Trn_TraEspOrdenReservas R
				LEFT JOIN Trn_TraEspOrdenPago AS OP ON R.TipDoc = OP.TipDoc AND  R.OrdPago = OP.OrdPago AND  R.IdCia = OP.IdCia
				WHERE R.Reserva = @Reserva AND R.IdCiaRes = @IdCiaRes AND R.ItemRes = @ItemRes AND OP.Anulado = 0;

				IF(upper(@TipoTarifa) <> 'DIA')
				BEGIN
					SELECT @VrPagos = VrPagos FROM Trn_TraEspResDetalle WHERE Reserva = @Reserva AND IdCia = @IdCiaRes AND Item = @ItemRes

					IF(@VrTotalPagosaRES >= @VrPagos)
					BEGIN
						UPDATE Trn_TraEspResDetalle
						SET EstadoItem ='LIQUIDADA'
						WHERE Reserva = @Reserva AND IdCia = @IdCiaRes AND Item = @ItemRes
					END
					ELSE -- revisar que la cant de veh que se vayan a liquidar(programados no novedad) ya hayan sido liquidados(pasan de xliquidar a liquidado) y que la reserva no se haya vencido
					BEGIN
					  declare @cantveh int= 0, @cantord int = 0, @fechares date, @fechasys date,@idveh varchar(10)

					  select @cantveh = count(*) from trn_traespprogramadet where Reserva = @Reserva AND IdCiaRes = @IdCiaRes AND ItemRes = @ItemRes and IdNovedad = '0' and IdVehiculo <>'0'
					  select @fechares = fechafin from trn_traespreservas where Reserva = @Reserva AND IdCia = @IdCiaRes
					  select @fechasys = FechaActual from companias where IdCia = @IdCiaRes

					  --selecciono  los progdetalle de esos vehiculos
					  declare @Trn_TraEspProgramaDet dataTypeTrn_TraEspProgramaDet 
					  INSERT INTO @Trn_TraEspProgramaDet(
					  TipDoc,Programa,IdCia,Item,FechaInicio,FechaFin,TipDocRes,Reserva,IdCiaRes,ItemRes,
					  IdOrigen,IdDestino,IdVehiculo,CdTipVeh,IdConductor,NumPasajeros,TipDocFuec,NumFuec,
					  IdCiaFuec,TipDocOdp,NumOdp,IdCiaOdp,FechaOdp,IdNovedad,Novedad,Cumplido,FecIniCump,FecFinCump,VrCobro,VrPagos,DiasDisp,Parada,
					  CdTipServicio,DirOrigen,DirDestino,IdRuta,CdTipRuta,PesoNeto,EstadoItem,VrMonitor,CantMonitor,VrRecorrido,Observacion
					  ) 
					  SELECT 
					  TipDoc,Programa,IdCia,Item,FechaInicio,FechaFin,TipDocRes,Reserva,IdCiaRes,ItemRes,
					  IdOrigen,IdDestino,IdVehiculo,CdTipVeh,IdConductor,NumPasajeros,TipDocFuec,NumFuec,
					  IdCiaFuec,TipDocOdp,NumOdp,IdCiaOdp,FechaOdp,IdNovedad,Novedad,Cumplido,FecIniCump,FecFinCump,VrCobro,VrPagos,DiasDisp,Parada,
					  CdTipServicio,DirOrigen,DirDestino,IdRuta,CdTipRuta,PesoNeto,EstadoItem,VrMonitor,CantMonitor,VrRecorrido,Observacion
					  FROM Trn_TraEspProgramaDet  where Reserva = @Reserva AND IdCiaRes = @IdCiaRes AND ItemRes = @ItemRes and IdNovedad = '0' and IdVehiculo <>'0'
					  
					  --cursor para verififcar si los vehiculos fueron pagados en ordenes de pago					   
					  DECLARE verificar CURSOR
					  FOR SELECT IdVehiculo  FROM @Trn_TraEspProgramaDet
					  OPEN verificar
					  FETCH NEXT FROM verificar INTO @idveh
					  WHILE @@FETCH_STATUS = 0
					  BEGIN

					  --verifico la cantidad que ya fueron liquidados(tiene en cuenta la actual)
					   if (exists(select * from Trn_TraEspOrdenReservas where Reserva = @Reserva AND IdCiaRes = @IdCiaRes AND ItemRes = @ItemRes and IdVehiculo = @idveh))
						select @cantord = @cantord + 1

						FETCH NEXT FROM verificar INTO @idveh 
					  END
					  CLOSE verificar
					  DEALLOCATE verificar

					  --se verifica que cumpal para colocar la resrva a liquidada
					  IF((@cantord >= @cantveh) AND (@fechasys  >= @fechares))
					  BEGIN 
						UPDATE Trn_TraEspResDetalle
						SET EstadoItem ='LIQUIDADA'
						WHERE Reserva = @Reserva AND IdCia = @IdCiaRes AND Item = @ItemRes
					  END

					END

				END
				ELSE
				BEGIN
					SELECT @VrPagos = ISNULL(SUM(VrPagos),0)  FROM Trn_TraEspProgramaDet AS PD JOIN Trn_TraEspPrograma  AS P ON P.TipDoc = PD.TipDoc AND P.Programa = PD.Programa AND P.IdCia = PD.IdCia WHERE Reserva = @Reserva AND IdCiaRes = @IdCiaRes AND ItemRes = @ItemRes and IdNovedad = '0' and IdVehiculo <>'0' and p.Anulado = 0

					IF(@VrTotalPagosaRES >= @VrPagos)
					BEGIN
						UPDATE Trn_TraEspResDetalle
						SET EstadoItem ='LIQUIDADA'
						WHERE Reserva = @Reserva AND IdCia = @IdCiaRes AND Item = @ItemRes
					END
				END

				--actualiza los anticipos
				UPDATE Trn_TraEspAnticipos
				SET VrAbonado = VrAbonado + t2.VrAbono
				FROM Trn_TraEspAnticipos t1, @Trn_TraEspAntAbonos t2
				WHERE t1.TipDoc = t2.TipAnt and t1.Anticipo = t2.Anticipo and t1.IdCia = t2.IdCiaAnt
			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

