ALTER PROCEDURE [dbo].[sp_invGrabar_Detalle_A]
(
@enc_coddoc int,
@enc_numinv int,
@enc_loging varchar(15) ,
@enc_fecing datetime ,
@enc_logmod varchar(15) ,
@enc_fecmod datetime,
@enc_codbod int ,
@enc_boddes int ,
@det_numlin 	int,
@det_codfam 	varchar(30),
@det_codsub 	varchar(30),
@det_codart 	varchar(30),
@det_nomart 	varchar(100),
@det_codbus 	varchar(30),
@det_coduni 	int,
@det_cantidad 	decimal(18, 4),
@det_salcan 	decimal(18, 4),
@det_unialt 	int,
@det_canalt 	decimal(18, 4),
@det_preuni 	decimal(18, 4),
@det_pretot 	decimal(18, 4)=0,
@det_codbod 	int,
@det_boddes 	int,
@det_glolin 	varchar(1000),
@det_costo 	decimal(18, 4),
@det_fecent 	datetime,
@det_fecdoc 	datetime,
@det_numlinorden int =0,
@det_porcdescuento decimal(18,4)=0.000,
@det_descuento int =0,
@det_tip_impadi int  =0,
@det_porcadicional int =0,
@det_adicional int =0,
@det_codcen int =0,
@det_codana int =0,
@det_item int =0,
@preuniadi DECIMAL(18,4)=0,
@pretotadi DECIMAL(18,4)=0,
@saldoGral DECIMAL(18,4)=0 ,
@stockGral DECIMAL(18,4)=0 ,
@det_fechacosto DATETIME = '01-01-1900' ,
@costoBodega DECIMAL(18,4)=0,
@stockBodega DECIMAL(18,4)=0,
@stockBodegaOrigen DECIMAL(18,4)=0,
@stockBodegaDes DECIMAL(18,4)=0,
@stockGnralOrigen DECIMAL(18,4)=0,
@stockGnralDestino DECIMAL(18,4)=0,
@nuevo int = 1,
@idLinea Varchar(20)
)

AS 

DECLARE @cStock INT = COALESCE((SELECT TOP(1) controlStock FROM invFamilia WHERE codfam = @det_codfam),0)
IF @det_glolin <> 'APERTURA' AND @cStock = 1
BEGIN
	--aumentamos en tabla articulos
	UPDATE invArticulos 
	SET    stogen = stogen + @det_cantidad
	WHERE  codbus = @det_codbus
END

--insertamos en tabla detalle
INSERT INTO invDetalle 
(	coddoc, numinv, numlin, codfam, codsub, codart, nomart, codbus,
	coduni, cantidad,
	--salcan,
	unialt, canalt, preuni, pretot, 
	codbod, boddes, glolin, costo, fecent, fecdoc,
	loging, fecing, logmod, fecmod, numlinorden,
	porcdescuento,descuento, tip_impadi, porcadicional, adicional,codcen,codana,item,
	preuniadi,pretotadi,saldoGral,stockGral,fechacosto,
	costobodega,stockBodega,stockBodegaOrigen,stockBodegaDes,stockGralOrigen,stockGralDestino, idLinea)
VALUES (
	@enc_coddoc, @enc_numinv, @det_numlin, @det_codfam, @det_codsub, @det_codart, @det_nomart, @det_codbus,
	@det_coduni, @det_cantidad,
	--@det_salcan,
	 @det_unialt, @det_canalt, @det_preuni,@det_pretot, --ROUND(@det_cantidad * @det_preuni,0), 
	@det_codbod, @det_boddes, @det_glolin, @det_costo , @det_fecent, @det_fecdoc, 
	@enc_loging, GETDATE(), @enc_logmod,  GETDATE(), @det_numlinorden,
	@det_porcdescuento,@det_descuento, @det_tip_impadi, @det_porcadicional, @det_adicional,@det_codcen,@det_codana,@det_item,
	@preuniadi,@pretotadi,@saldoGral,@stockGral,@det_fechacosto,
	@costobodega,@stockBodega,@stockBodegaOrigen,@stockBodegaDes,@stockGnralOrigen,@stockGnralDestino, @idLinea)

IF @det_glolin <> 'APERTURA' AND @cStock = 1
BEGIN
	--actualizo costo desde tabla Articulos
		--UPDATE invDetalle 
	--SET costo = invArticulos.costo
	--FROM invDetalle, invArticulos
	--WHERE invDetalle.codbus = invArticulos.codbus
	--AND @enc_coddoc = invDetalle.coddoc
	--AND @enc_numinv = invDetalle.numinv
		--aumentamos en tabla stock
	IF exists(SELECT 1 
		  FROM   invStock 
		  WHERE  codbus = @det_codbus
		  AND    codbod = @enc_codbod) 
	BEGIN
		UPDATE invStock 
		SET    saltot = saltot + @det_cantidad
		WHERE  codbus = @det_codbus
		AND    codbod = @enc_codbod
	
	END 
	ELSE 
	BEGIN
		IF exists(SELECT 1 
			  FROM invArticulos 
			  WHERE codbus = @det_codbus) 
		BEGIN
			INSERT INTO invStock (codbod, codbus, salini, saltot, stofis, fectom, loging, fecing, logmod, fecmod)
			VALUES 	  ( @enc_codbod, @det_codbus, 0, @det_cantidad, 0, GETDATE(), @enc_loging, @enc_fecing, @enc_logmod, GETDATE())	
		END
	END
	
	END
	--actualizo total en Encabezado desde tabla Detalle
	
	UPDATE    invEncabezado
	SET    total =
          (SELECT     SUM(pretot) AS Expr1
            FROM          invDetalle
            WHERE      (invDetalle.coddoc = @enc_coddoc) AND (invDetalle.numinv = @enc_numinv))
    WHERE  (invEncabezado.coddoc = @enc_coddoc) AND (invEncabezado.numinv = @enc_numinv)