Buenas en esta ocasion veremos el uso de la variable tipo TABLE , conbinandose con otras sentencias dentro del Transact SQL.
/*
Autor : Martin Cox R.
*/
CREATE PROC [FINANZAS].[PA_ESTADOCUENTA_CLIENTES] --1, 24,1 , '21/01/2013','21/08/2013'
@IDCompania numeric ,
@IDCliente numeric ,
@IDMoneda numeric ,
@FechaInicio datetime ,
@FechaFinal datetime
AS
declare @FechaRegistro DateTime
declare @NumeroComprobante varchar(100)
declare @TipoDocumento varchar(100)
declare @Total decimal(18,4)
declare @Flag char(1)
declare @Contador numeric = 1
declare @Saldo decimal(18,4)= 0
declare @RazonSocial varchar(200)=''
declare @Ruc varchar(15)=''
DECLARE @tempEstadoCuentaFinal table(
FechaRegistro DateTime ,
NumeroComprobante varchar(100),
TipoDocumento varchar(100),
Debito decimal(18,4),
Credito decimal(18,4),
Saldo decimal(18,4) ,
RazonSocial varchar(200) ,
Ruc varchar(15)
)
select
FechaEmision as FechaRegistro ,NumeroDocumento as NumeroComprobante ,
tipDoc_cNombreTipoDocumento as TipoDocumento ,
Total , 'H' AS Flag , RazonSocial , Ruc
into #tempDoc from MAESTROS.VIEW_DOCUMENTOSCOBRAR_LISTAR
where MAESTROS.VIEW_DOCUMENTOSCOBRAR_LISTAR.FormaPago = 2
and IDPersona =@IDCliente and IDMonedaDocumento = @IDMoneda
Union All
SELECT FINANZAS.COMPROBANTECAJA.FechaRegistro, FINANZAS.COMPROBANTECAJADOCUMENTOCOBRARPAGAR.NumeroComprobante,
FINANZAS.COMPROBANTECAJADOCUMENTOCOBRARPAGAR.TipoDocumento, FINANZAS.COMPROBANTECAJADOCUMENTOCOBRARPAGAR.ImportePagar AS Total,
'D' AS Flag , MAESTROS.MAE_CLIENTES.cli_cNombreCompletoCliente as RazonSocial ,MAESTROS.MAE_CLIENTES.cli_cRucCliente as Ruc
FROM FINANZAS.COMPROBANTECAJADOCUMENTOCOBRARPAGAR
INNER JOIN FINANZAS.COMPROBANTEENTRADACAJA ON FINANZAS.COMPROBANTECAJADOCUMENTOCOBRARPAGAR.IDCompania = FINANZAS.COMPROBANTEENTRADACAJA.IDCompania AND FINANZAS.COMPROBANTECAJADOCUMENTOCOBRARPAGAR.IDTipoDocumento = FINANZAS.COMPROBANTEENTRADACAJA.IDTipoDocumento AND
FINANZAS.COMPROBANTECAJADOCUMENTOCOBRARPAGAR.IDSede = FINANZAS.COMPROBANTEENTRADACAJA.IDSede AND
FINANZAS.COMPROBANTECAJADOCUMENTOCOBRARPAGAR.IDCentroFinanciero = FINANZAS.COMPROBANTEENTRADACAJA.IDCentroFinanciero AND
FINANZAS.COMPROBANTECAJADOCUMENTOCOBRARPAGAR.NumeroComprobanteCaja = FINANZAS.COMPROBANTEENTRADACAJA.NumeroComprobante AND
FINANZAS.COMPROBANTECAJADOCUMENTOCOBRARPAGAR.NumeroSerieCaja = FINANZAS.COMPROBANTEENTRADACAJA.NumeroSerie
INNER JOIN FINANZAS.COMPROBANTECAJA ON FINANZAS.COMPROBANTEENTRADACAJA.IDCompania = FINANZAS.COMPROBANTECAJA.IDCompania AND
FINANZAS.COMPROBANTEENTRADACAJA.IDTipoDocumento = FINANZAS.COMPROBANTECAJA.IDTipoDocumento AND
FINANZAS.COMPROBANTEENTRADACAJA.IDSede = FINANZAS.COMPROBANTECAJA.IDSede AND
FINANZAS.COMPROBANTEENTRADACAJA.IDCentroFinanciero = FINANZAS.COMPROBANTECAJA.IDCentroFinanciero AND
FINANZAS.COMPROBANTEENTRADACAJA.NumeroComprobante = FINANZAS.COMPROBANTECAJA.NumeroComprobante AND
FINANZAS.COMPROBANTEENTRADACAJA.NumeroSerie = FINANZAS.COMPROBANTECAJA.NumeroSerie
inner join MAESTROS.MAE_CLIENTES on FINANZAS.COMPROBANTEENTRADACAJA.IDCliente =MAESTROS.MAE_CLIENTES.cli_nCodigoCliente
WHERE (FINANZAS.COMPROBANTECAJADOCUMENTOCOBRARPAGAR.FormaPago = 'CREDITO') and (FINANZAS.COMPROBANTEENTRADACAJA.IDCliente = @IDCliente)
and FINANZAS.COMPROBANTECAJA.IDMoneda = @IDMoneda and RTRIM( FINANZAS.COMPROBANTECAJA.EstadoEntrega) != 'ANULADO'
DECLARE CursorEstadoCuenta CURSOR
FOR
select * from #tempDoc
--where FechaRegistro between CONVERT(CHAR(10),@FechaInicio,103) and CONVERT(CHAR(10),@FechaFinal ,103)
where CONVERT(CHAR(10),FechaRegistro,103) between CONVERT(CHAR(10),@FechaInicio,103) and CONVERT(CHAR(10),@FechaFinal ,103)
OPEN CursorEstadoCuenta
FETCH CursorEstadoCuenta
INTO @FechaRegistro ,@NumeroComprobante ,@TipoDocumento ,@Total ,@Flag ,@RazonSocial ,@Ruc
WHILE (@@FETCH_STATUS = 0)
begin
if(@Flag = 'D')
begin
set @Saldo = @Saldo - @Total - 0 ;
insert into @tempEstadoCuentaFinal values (@FechaRegistro ,@NumeroComprobante ,
@TipoDocumento ,@Total ,0,@Saldo,rtrim(@RazonSocial) ,@Ruc )
end
else if(@Flag = 'H')
begin
set @Saldo = @Saldo + @Total - 0 ;
insert into @tempEstadoCuentaFinal values (@FechaRegistro ,@NumeroComprobante ,
@TipoDocumento ,0 ,@Total,@Saldo ,RTRIM( @RazonSocial),@Ruc)
end
FETCH CursorEstadoCuenta INTO @FechaRegistro ,@NumeroComprobante ,@TipoDocumento ,@Total ,@Flag ,@RazonSocial
,@Ruc
set @Contador =@Contador +1;
END -- end loop while
CLOSE CursorEstadoCuenta
DEALLOCATE CursorEstadoCuenta
select * from @tempEstadoCuentaFinal
drop table #tempDoc
Este comentario ha sido eliminado por un administrador del blog.
ResponderEliminar