IF EXISTS ( SELECT * 
            FROM   sysobjects 
            WHERE  id = object_id(N'dbo.sp_generar_asiento_Factura') 
                   and OBJECTPROPERTY(id, N'IsProcedure') = 1 )
BEGIN
    DROP PROCEDURE dbo.[sp_generar_asiento_Factura]
END
GO
CREATE PROCEDURE [dbo].[sp_generar_asiento_Factura] @ID_TRANS INT
       AS 
---          execute SP_generar_stock @ID_TRANS
          IF ((SELECT Id_Estado_Cbte FROM CBTES WHERE ID_TRANS = @ID_TRANS) = 3) 
		      RETURN
          IF ((SELECT Id_Cond_Pago FROM CBTES WHERE ID_TRANS = @ID_TRANS) = 1) 
		      RETURN
	      BEGIN TRAN

   	            DECLARE @ID_cliente INTEGER
				DECLARE @ALIAS INTEGER
				Declare @id_producto varchar(15)
				Declare @Importe decimal(12,2)
				Declare @DEBE decimal(12,2)	
				Declare @HABER decimal(12,2)
                declare @id_cta_contable integer
	        	declare @fecha_mov datetime
			  	declare @FECHA_QA datetime
                declare @id_CENTRO_COSTO varchar(5)
                declare @ITEM INTEGER
				Declare @Imp_Gravado decimal(12,2)
				Declare @Imp_Iva decimal(12,2)

    	SET @fecha_mov = (SELECT fecha from cbtes where id_trans = @ID_TRANS) 

        ----------------------------- Primero los insert ----------------------------------

        SELECT * INTO #CBTES_CTAS_CONTABLES_aux_sp FROM CBTES_CTAS_CONTABLES WHERE ID_TRANS = @ID_TRANS
		DELETE #CBTES_CTAS_CONTABLES_aux_sp

        Declare MicursorAsiento cursor for select id_producto,ID_CLIENTE,FECHA_QA,Imp_Final,Imp_Gravado,Imp_Iva from CBTES_ITEMS WHERE ID_TRANS = @ID_TRANS

               Open MicursorAsiento
                    Fetch next from MicursorAsiento into @id_producto,@Id_Cliente,@FECHA_QA,@Importe,@Imp_Gravado,@Imp_Iva
                    While @@fetch_status = 0 
                    begin
				        -- Genero Asiento en el Debe
						SET @Alias = (SELECT isnull(Id_Alias_Cta_Deudores,0) from Productos where id_producto = @ID_Producto) 
						If @Alias = 0
						   SET @Alias = (SELECT isnull(Id_Alias_Cta_Cont_Venta,0) from Clientes where Id_Cliente = @ID_CLIENTE)

                        set @id_cta_contable =  DBO.SF_Cta_Cont(@Alias,@fecha_mov) 
						    
                        INSERT into #CBTES_CTAS_CONTABLES_aux_sp (
								Id_Trans,
								Item,
								Id_Cta_Contable,
								Fecha,                     
								Debe,
								Haber,
								Alias,
								Id_Centro_Costo)
								VALUES (@ID_TRANS,1,@id_cta_contable,@fecha_mov,@importe,0,@ALIAS,'')						    
                                  
						-- Genero Aiento en el Haber
						IF @ID_PRODUCTO = 'CS'
						   BEGIN
						     SET @Id_producto = DBO.SF_Prod(@id_cliente,@fecha_mov) 
					         IF @FECHA_QA <= @fecha_mov
					              SET @Alias = (SELECT isnull(Id_Alias_Cta_Cont,0) from Productos where Id_producto = @ID_PRODUCTO) 
						      ELSE
					              SET @Alias = (SELECT isnull(Id_Alias_Cta_Vtas_Anticip,0) from Productos where Id_producto = @ID_PRODUCTO) 
                           END
                          ELSE
						   BEGIN 
							  IF @FECHA_QA <= @fecha_mov
							      BEGIN
					    	      SET @Alias = (SELECT isnull(Id_Alias_Cta_Cont,0) from Productos where id_producto = @ID_Producto)
								  PRINT(@Alias)
								  END
								ELSE
								  BEGIN
							        SET @Alias = (SELECT isnull(Id_Alias_Cta_Vtas_Anticip,0) from Productos where id_producto = @ID_Producto)
                                    IF @Alias = 0
							           SET @Alias = (SELECT isnull(Id_Alias_Cta_Cont,0) from Productos where id_producto = @ID_Producto)
                                  END
					       END
                           set @id_cta_contable =  DBO.SF_Cta_Cont(@Alias,@fecha_mov)
          		  	       SET @id_CENTRO_COSTO = (SELECT ID_CENTRO_COSTO from PRODUCTOS where id_producto = @ID_PRODUCTO) 
						    
                           INSERT into #CBTES_CTAS_CONTABLES_aux_sp (
								Id_Trans,
								Item,
								Id_Cta_Contable,
								Fecha,                     
								Debe,
								Haber,
								Alias,
								Id_Centro_Costo)
								VALUES (@ID_TRANS,1,@id_cta_contable,@fecha_mov,0,@imp_Gravado,@ALIAS,@id_CENTRO_COSTO)
									
                           IF @imp_Iva <> 0
						      BEGIN
							    Set @Alias =  (select Valor_Integer from xParametros where setDatos= 1 and idParametro ='Iva_Debito_Fiscal')
                                set @id_cta_contable =  DBO.SF_Cta_Cont(@Alias,@fecha_mov)
          		  	            SET @id_CENTRO_COSTO = '' 
						    
								   INSERT into #CBTES_CTAS_CONTABLES_aux_sp (
										Id_Trans,
										Item,
										Id_Cta_Contable,
										Fecha,                     
										Debe,
										Haber,
										Alias,
										Id_Centro_Costo)
										VALUES (@ID_TRANS,1,@id_cta_contable,@fecha_mov,0,@imp_Iva,@ALIAS,@id_CENTRO_COSTO)	
						      END
													    
                          Fetch next from MicursorAsiento into @id_producto,@Id_Cliente,@FECHA_QA,@Importe,@Imp_Gravado,@Imp_Iva
                    End       
               Close MicursorAsiento
               Deallocate MicursorAsiento
         
        SELECT ID_TRANS,ID_CTA_CONTABLE,FECHA,ALIAS,ID_CENTRO_COSTO,SUM(DEBE) DEBE,SUM(HABER) HABER INTO #CBTES_CTAS_CONTABLES_RESUMEN
                       FROM #CBTES_CTAS_CONTABLES_aux_sp GROUP BY ID_TRANS,ID_CTA_CONTABLE,FECHA,ALIAS,ID_CENTRO_COSTO 
        DELETE #CBTES_CTAS_CONTABLES_aux_sp

        SET @ITEM = 0
        Declare MicursorAsientoResumen cursor for select ID_TRANS,ID_CTA_CONTABLE,FECHA,ALIAS,ID_CENTRO_COSTO,DEBE,HABER from  #CBTES_CTAS_CONTABLES_RESUMEN WHERE ID_TRANS = @ID_TRANS ORDER BY HABER

               Open MicursorAsientoResumen
                    Fetch next from MicursorAsientoResumen into @ID_TRANS,@ID_CTA_CONTABLE,@fecha_mov,@ALIAS,@ID_CENTRO_COSTO,@DEBE,@HABER
                    While @@fetch_status = 0 
                    begin	
					      SET @ITEM = @ITEM + 1
                          INSERT into #CBTES_CTAS_CONTABLES_aux_sp (
								Id_Trans,
								Item,
								Id_Cta_Contable,
								Fecha,                     
								Debe,
								Haber,
								Alias,
								Id_Centro_Costo)
								VALUES (@ID_TRANS,@ITEM,@id_cta_contable,@fecha_mov,@debe,@haber,@ALIAS,@id_CENTRO_COSTO)						    
                
                         Fetch next from MicursorAsientoResumen into @ID_TRANS,@ID_CTA_CONTABLE,@fecha_mov,@ALIAS,@ID_CENTRO_COSTO,@DEBE,@HABER
                    End       

			   DELETE CBTES_CTAS_CONTABLES WHERE ID_TRANS = @ID_TRANS

			   INSERT INTO CBTES_CTAS_CONTABLES 
			          SELECT * FROM #CBTES_CTAS_CONTABLES_aux_sp

               Close MicursorAsientoResumen
               Deallocate MicursorAsientoResumen

         DROP TABLE #CBTES_CTAS_CONTABLES_aux_sp
		 DROP TABLE #CBTES_CTAS_CONTABLES_RESUMEN

         IF (@@ERROR = 0)
		     COMMIT TRAN
	     ELSE
		     ROLLBACK




----exec sp_generar_asiento_Factura 103855



---select * from cbtes_ctas_contables where id_trans = 158723

