Gustavo Que pena. tenes razon, si vas a ayudar, debes
conocer todo el problema, de pronto peque de superficial.
si tienes una sugerencia que hacerme en cuanto a la forma
de montar Procedimientos almacenados mas optima que esta,
con gusto te las acepto.
CREATE procedure mpsp_constancia @cedul varchar(11),@doc
varchar(15),@usuario varchar(15),@campana varchar(6)
As
/*Declare @numdoc varchar(10)*/
Declare @skucons varchar(5)
/*Declare @campana varchar(6)*/
Declare @nivel int
Declare @cantidad int
Declare @Qpremio varchar(1)
Declare @prg int
Declare @Nrocamp int
Declare @combo int
Declare @codcombo varchar(5)
Declare @strcodlin varchar(5)
Declare @cant int
Declare @ubc varchar(5)
Declare @reg varchar(10)
exec mpsp_procesaConstanciaR @cedul,@Qpremio output,@prg
output,@Nrocamp output
/*select @campana=strcampanaActualpedidos from
tblparametros*/
if @Qpremio='0'
Begin
select @skucons=strcodpremio,@combo=intcombo
from mpv_codigoconstancia where intprograma=@prg
and intconscampa=@Nrocamp
if (select sum(intconjunto) from tbl_peddet where
strnumdoc=@doc and strtipdoc='PD')>0
Begin
insert into tbl_pdc_segConstancia
(strcodter,strcamgen,strnumdoc,intnivel,strcodlin,lngcan,ln
gcanent)
values
(@cedul,@campana,@doc,@Nrocamp,@skucons,1,0)
select @reg=id from tbl_pdc_segConstancia
where strcodter=@cedul and
strcamgen=@campana
and strcodlin=@skucons
if @combo=2
Begin
Declare Cursorcombo cursor scroll
for
select
strcodcombo,strcodlin,intcan,strubicacionp
from mpv_combocampana
where strcodcombo=@combo and
strcampana=@campana
Open cursorcombo
fetch first from cursorcombo into
@codcombo,@strcodlin,@cant,@ubc
While (@@fetch_status<>-1)
Begin
if(select count(strcodlin)
from tbl_peddet where strcodlin=@strcodlin and
stratributo='T' and strnumdoc=@doc)=0
INSERT into tbl_PedDet(
strTipDoc,
strNumDoc,
strCodCombo,
strCodLin,
lngCan,
lngCanAsg,
strUbcA,
curPrecio,
strAtributo,
strReg,
strUsuario,
strUbcB,
intconjunto,
lngcandev)
VALUES ('PD',
@doc,
@CodCombo,
@strcodlin,
@cant,
0,
@ubc,
0,
'T',
@Reg,
@Usuario,
'Combo',
0,
0)
Fetch next from
cursorcombo into @codcombo,@strcodlin,@cant
IF @@ERROR <> 0
BEGIN
/*PRINT "Un Error
Ocurrio Recuperando una Fila del Cursor"*/
Raiserror ('Un Error
Ocurrio Recuperando una Fila del Cursor',16,1)
RETURN(99)
END
End
Close cursorcombo
Deallocate cursorcombo
End
Else
Begin
Set @CodCombo=''
Select @ubc=strubicacionp from
mpv_sku where strcodlin=@skucons
if(select count(strcodlin) from
tbl_peddet where strcodlin=@skucons and stratributo='T'
and strnumdoc=@doc)=0
INSERT into tbl_PedDet(
strTipDoc,
strNumDoc,
strCodCombo,
strCodLin,
lngCan,
lngCanAsg,
strUbcA,
curPrecio,
strAtributo,
strReg,
strUsuario,
strUbcB,
intconjunto,
lngcandev)
VALUES ('PD',
@doc,
@CodCombo,
@skucons,
1,
0,
@ubc,
0,
'T',
@Reg,
@Usuario,
'NoCom',
0,
0)
End
End
End
GO
CREATE PROCEDURE mpsp_ProcesaConstanciaR @cedula Varchar
(11),@RQueAccion varchar(1) output,@Rprmprg int
output,@Rnrocamp int output
AS
Declare @CmpAct varchar(6)
Declare @CampaNomb varchar(6)
Declare @prmprg int
Declare @nrocamp int
Declare @QueAccion varchar(1)
Declare @maxnivel int
Declare @difcons int
/*set @CmpAct=''
set @CampaNomb=''
set @maxnivel=0
set @nrocamp=0
set @difcons=0
set @QueAccion=''*/
set @CmpAct=(select strCampanaActualPedidos from
tblparametros)
exec @CampaNomb=mpsp_campanomb @cedula
/** Se vió la necesidad de ignorar el campo strcampananom
de tblterceros dado que a veces los nombramientos de la
primer area de facturación de cada
campaña se hacen sin haber cerrado la campaña anterior y
la fidelidad de este dato es primordial para este proceso;
por esta razon se recurre al PA(mpsp_campanomb) para
consultar la campaña de nombramiento de la Asesora**/
set @prmprg=(select intprograma from tblprgconstancia
where @CampaNomb between strcampinicia and strcampfinal
and bitactivo=1)
if isnull(@prmprg,'0')<>'0'
Begin
set @maxnivel =(select intniveles from
tblprgconstancia where @CampaNomb between strcampinicia
and strcampfinal)
set @nrocamp=(select count(strcodca)+1
from tbldoc where strcodca=@cedula and strtipdoc='FC' and
strcamgen between @CampaNomb and @CmpAct)
set @difcons=(select (intconsec-(select
intconsec from tblcampaña where strcampaña=@CampaNomb))+1
from tblcampaña where
strcampaña=@CmpAct)
if @difcons=@nrocamp
Begin
set @QueAccion = (select
strtipoacion from tbldetconstancia where
intprograma=@prmprg and intconscampa=@nrocamp)
End
else
set @QueAccion='X'
End
else
set @QueAccion='X'
/*select @QueAccion as premio, @prmprg as
programa,@nrocamp as campanas,@maxnivel as nivel_final*/
select
@RQueAccion=@QueAccion,@Rprmprg=@prmprg,@Rnrocamp=@nrocamp
GO
CREATE PROCEDURE mpsp_CampaNomb @ced varchar(11) AS
DECLARE @MINCAM VARCHAR(6)
DECLARE @MAXCAM VARCHAR(6)
DECLARE @CAMPACT VARCHAR(6)
DECLARE @DIFCAM INT
SET @MINCAM=(SELECT MIN(STRCAMGEN) FROM TBLDOC WHERE
STRTIPDOC='FC' AND STRCODCA=@CED)
SET @MAXCAM=(SELECT MAX(STRCAMGEN) FROM TBLDOC WHERE
STRTIPDOC='FC' AND STRCODCA=@CED)
SET @CAMPACT=(SELECT STRCAMPANAACTUALPEDIDOS FROM
TBLPARAMETROS)
set @DIFCAM=(select (intconsec-(select 1+intconsec from
tblcampaña where strcampaña=@MAXCAM))
from tblcampaña where
strcampaña=@CAMPACT)
IF ISNULL(@MINCAM,0) = 0
BEGIN
SET @MINCAM =(SELECT STRCAMPANANOM FROM
MPV_NOMBRAMIENTOS_CAMPAÑA WHERE STRCODIGO=@CED)
IF ISNULL(@MINCAM,0)=0
SET @MINCAM='000000'
END
ELSE
BEGIN
IF @DIFCAM>18
SET @MINCAM= @CAMPACT
END
RETURN @MINCAM
GO
Leer las respuestas