IF EXISTS ( SELECT * 
            FROM   sysobjects 
            WHERE  id = object_id(N'[dbo].[CP_Productos_Cobros]') 
                   and OBJECTPROPERTY(id, N'IsProcedure') = 1 )
BEGIN
    DROP PROCEDURE [dbo].[CP_Productos_Cobros] 
END
GO

CREATE PROCEDURE [dbo].[CP_Productos_Cobros](
     @pUsuario    INT
   , @pEquate  SMALLINT
   , @pFechaDesde DATETIME
   , @pFechaHasta DATETIME
   , @GenerarLiquidacion TINYINT
   , @Id_Periodo_Caja INT
   )
AS
  CREATE TABLE #Trans (Id_Trans INT)

  IF @pEquate = 0
     RETURN

  DECLARE @Id_Producto Varchar(14)
  ,@Id_Proveedor Int
  ,@Razon_Social VarChar(100)
  ,@Cuit Varchar(13)
  ,@Id_Iva Char(3)
  ,@Id_Alias_Cta_Cont Int
  ,@Id_Cta_Contable_H Int
  ,@Porc_Comision_Prov Decimal(7,2) 
  ,@Importe Decimal(12,2) 
  ,@IMPORTE_CREDITO Decimal(12,2) 
  ,@ID_TIPO_CBTE CHAR(4) 
  ,@FECHA DATETIME
  ,@Imp_prod_siva  Decimal(12,2) 
  ,@TRANS INT
  ,@Id_Cliente_Externo VARCHAR(14)
  ,@Id_Cta_Banco INT
  ,@Id_Cliente INT

  SET @FECHA = (SELECT CAST(GETDATE() AS DATE))

  SELECT (i.Imp_Gravado * F.Cotizacion) as Imp_Gravado_Item     --1
  ,(i.Imp_Final * F.Cotizacion) as Imp_Final_Item               --2
  ,f.Id_trans as Id_Trans_Fac                                   --3
  ,(f.Imp_Gravado + f.Imp_Gravado2 + f.Imp_Gravado3 + f.Imp_Exento) * F.Cotizacion as Importe_Fac   --4
  ,f.Imp_total * F.Cotizacion as Imp_total_Fac   --5
  ,r.Id_trans as Id_Trans_Rec                    --6
  ,a.Importe  as Importe_Aplicado                --7
  ,i.Fecha_QA                                    --8
  ,i.Fecha_Venc                                  --9
  ,i.Id_cliente                                  --10
  ,C.Nombre_Fantasia                             --11
  ,C.Id_Cliente_Externo                          --12
  ,C.Razon_Social                                --13
  ,C.Id_Tipo_Cli                                 --14
  ,dbo.CF_Cbte_Descrip(f.id_trans) as Desc_Factura    --15
  ,F.Fecha                                            --16
  ,dbo.CF_Cbte_Descrip(R.id_trans) as Desc_Recibo     --17
  ,R.Fecha as Fecha_Rec								  --18
  ,R.Imp_Total as Imp_Total_Rec					      --19
  ,R.Id_Estado_Cbte									  --20
  ,R.Cotizacion as Cotizacion_Rec                     --21
  ,F.Cotizacion as Cotizacion_Fac                     --22
  ,F.Porc_Bonificacion								  --23
  ,F.Id_Cobrador								      --24
  ,I.Id_Producto									  --25
  ,P.Descripcion_Detallada						      --26
  ,P.Id_Familia										  --27
  ,FP.Descripcion as Descripcion_Familia              --28
  ,(a.Importe / f.Imp_total) * 100 as porc_aplicado   --29
  ,(i.Imp_Final *  F.Cotizacion )  * ( a.Importe / f.Imp_total) * (1 -(F.Porc_Bonificacion / 100)) as imp_prod_civa --30
  ,(i.Imp_Gravado * F.Cotizacion ) * ( a.Importe / f.Imp_total) * (1 -(F.Porc_Bonificacion / 100)) as imp_prod_siva --31
  ,V.DESCRIPCION AS NOMBRE_COBRADOR                                               --32
  ,[dbo].[SF_Cli_Categ_Mes](i.Id_cliente, isnull(i.Fecha_QA,F.Fecha)) as Tipo_Cli --33
  ,CT.DESCRIPCION                                                                 --34
  ,isnull(c.id_cliente_ref,0) as id_cliente_ref                                   --35
  INTO #Reporte
  FROM cbtes_items i,cbtes f,cbtes_aplica a,cbtes r, cbtes_tipos tr, Cbtes_Tipos TF, Clientes C,TagFilePos_ TAG, Productos P,Prod_Familias FP, Vendedores V, Clientes_Tipos CT
  WHERE r.id_tipo_cbte = tr.id_tipo_cbte
  AND tr.compromete_recibos in (1,-1)
        AND r.id_cliente = c.id_Cliente
        AND (i.id_producto = TAG.POS AND TAG.TBL = @pEquate AND TAG.USR = @pUsuario)
        AND a.id_trans_d = r.id_trans 
        AND f.id_trans = a.id_trans 
        AND f.id_estado_cbte in (1,2,4) 
        AND r.id_estado_cbte in (2,4)
        AND i.id_trans = f.id_trans 
        AND f.id_tipo_cbte = TF.id_tipo_cbte 
        AND I.Id_Producto = P.Id_Producto
        AND ISNULL(P.Id_Familia,0) = ISNULL(FP.Id_Familia,0)
        AND r.Fecha >= @pFechaDesde
        AND r.Fecha <  @pFechaHasta+1
		AND F.Imp_total <> 0
        AND TF.Compromete_Factura = 1 
		AND ISNULL(F.Id_Cobrador,'''') = ISNULL(V.Id_Vendedor,'''')
 		AND ISNULL(CT.ID_TIPO_CLI,0) = ISNULL([dbo].[SF_Cli_Categ_Mes](i.Id_cliente, isnull(i.Fecha_QA,F.Fecha)),0)

 -- SELECT * FROM #Reporte

  IF @GenerarLiquidacion = 1
	  BEGIN
	  DECLARE CUR_GENERAR CURSOR FOR

	  SELECT R.Id_Producto,P.Id_Proveedor,O.Razon_Social,O.Cuit,O.Id_Iva,P.Id_Alias_Cta_Cont,O.Id_Cta_Contable_H,P.Porc_Comision_Prov,P.Id_Cta_Banco,SUM(R.imp_prod_siva) 
              FROM #Reporte R, Productos P, Proveedores O		
			  Where R.Id_Producto = P.Id_Producto And P.Id_Proveedor = O.Id_Proveedor
			  And (Isnull(P.Id_Proveedor,0) <> 0
			  Or Isnull(P.Id_Cta_Banco,0) <> 0)
			  Group by R.Id_Producto,P.Id_Proveedor,O.Razon_Social,O.Cuit,O.Id_Iva,P.Id_Alias_Cta_Cont,O.Id_Cta_Contable_H,P.Porc_Comision_Prov,P.Id_Cta_Banco

	  OPEN CUR_GENERAR
	  FETCH NEXT FROM CUR_GENERAR INTO  @Id_Producto,@Id_Proveedor,@Razon_Social,@Cuit,@Id_Iva,@Id_Alias_Cta_Cont,@Id_Cta_Contable_H,@Porc_Comision_Prov,@Id_Cta_Banco,@Importe
	  WHILE @@FETCH_STATUS = 0
	      BEGIN
		         DELETE #Trans
                 IF @Id_Proveedor > 0
				    BEGIN
						 SET @ID_TIPO_CBTE =  (select Valor_String from xParametros where setDatos= 1 and idParametro ='T_Cbte_Deb_Liq_Ter')

						 INSERT INTO #Trans
							 EXEC dbo.CP_Cbtes_Cpra_Generar  @Id_Proveedor,@Razon_Social,@Importe,1,@FECHA,@ID_TIPO_CBTE,'',1,10,100,@trans OUTPUT
                    END
				   ELSE
				    BEGIN
						 SET @ID_TIPO_CBTE =  (select Valor_String from xParametros where setDatos= 1 and idParametro ='T_Cbte_Dep_Cta_Prom')

						 INSERT INTO #Trans
							 EXEC dbo.CP_Cbtes_Deposito_Generar  @Id_Cta_Banco,@Razon_Social,@Importe,1,@FECHA,@ID_TIPO_CBTE,'',2,10,100,@Id_Periodo_Caja,@trans OUTPUT

						 SET @ID_TIPO_CBTE =  (select Valor_String from xParametros where setDatos= 1 and idParametro ='T_Cbte_OP_Prom')

							 EXEC dbo.CP_Cbtes_OP_Varia_Generar  @Id_Cta_Banco,@Razon_Social,@Importe,1,@FECHA,@ID_TIPO_CBTE,'',2,10,100,@Id_Periodo_Caja,@trans OUTPUT

						 SET @trans = 0
					END

				 If @trans > 0
				    Begin
						 DECLARE CUR_GENERAR_ITEMS CURSOR FOR

						 SELECT R.Razon_Social,R.Imp_prod_siva,R.Id_Cliente_Externo 
								  FROM #Reporte R	
								  Where R.Id_Producto = @Id_Producto

						 OPEN CUR_GENERAR_ITEMS
						 FETCH NEXT FROM CUR_GENERAR_ITEMS INTO  @Razon_Social,@Imp_prod_siva,@Id_Cliente_Externo
						 WHILE @@FETCH_STATUS = 0
						 BEGIN
				              SET @Razon_Social = LTRIM(RTRIM(@Id_Cliente_Externo)) +' '+ LTRIM(RTRIM(@Razon_Social))
							  SET @Id_Cliente = 0
							  SET @Id_Cta_Banco = 0
							  EXEC dbo.SP_CbteItem_Agr   @Id_Producto,@trans,1,@Imp_prod_siva,@fecha,'',@Razon_Social,@ID_Cliente,@Id_Cta_Banco
                     
							  FETCH NEXT FROM CUR_GENERAR_ITEMS INTO  @Razon_Social,@Imp_prod_siva,@Id_Cliente_Externo 	
						 END  
						 CLOSE CUR_GENERAR_ITEMS
					     DEALLOCATE CUR_GENERAR_ITEMS
                 END
			 	 IF @Porc_Comision_Prov > 0
				    BEGIN
					    SET @Razon_Social = (SELECT RAZON_SOCIAL FROM PROVEEDORES WHERE ID_PROVEEDOR = @Id_Proveedor)
				        SET @ID_TIPO_CBTE =  (select Valor_String from xParametros where setDatos= 1 and idParametro ='T_Cbte_Cred_Liq_Ter')
				        SET @IMPORTE_CREDITO = (@Importe * (@Porc_Comision_Prov/100)) * -1
			        	EXEC dbo.CP_Cbtes_Cpra_Generar @Id_Proveedor,@Razon_Social,@IMPORTE_CREDITO,1,@FECHA,@ID_TIPO_CBTE,'PRUEBA',1,10,100,@Trans OUTPUT
		 		    END

	      FETCH NEXT FROM CUR_GENERAR INTO  @Id_Producto,@Id_Proveedor,@Razon_Social,@Cuit,@Id_Iva,@Id_Alias_Cta_Cont,@Id_Cta_Contable_H,@Porc_Comision_Prov,@Id_Cta_Banco,@Importe
	 END  
	 CLOSE CUR_GENERAR
	 DEALLOCATE CUR_GENERAR 
  
  END

  SELECT * FROM #Reporte
  DROP TABLE #Reporte

--  exec dbo.CP_Productos_Cobros -1,90,'20170101','20170331',2,26