En el proceso de autorización de planillas, tenemos este UPDATE:
--*
--* Actualiza el total cobrado de los descuentos ciclicos
--* y cambia el estado cuando ya terminaron
--*
update sal.dcc_descuentos_ciclicos
set dcc_total_cobrado = isnull(total_cobrado, 0) + isnull(total_extras, 0),
dcc_total_no_cobrado = isnull(total_no_cobrado, 0),
dcc_activo = case when dcc_monto_indefinido = 0 and
((isnull(total_cobrado, 0) + isnull(total_extras, 0)) >= dcc_monto
/*or isnull(maxima_cuota, 0) >= dcc_numero_cuotas*/)
then 0
else 1
end
from sal.dcc_descuentos_ciclicos
left join (
select cdc_coddcc cobrado_coddcc, sum(cdc_valor_cobrado) total_cobrado, max(cdc_numero_cuota) maxima_cuota
from sal.cdc_cuotas_descuento_ciclico
where cdc_aplicado_planilla = 1
and cdc_planilla_autorizada = 1
group by cdc_coddcc) cobrado on cobrado_coddcc = dcc_codigo
left join (
select cdc_coddcc nocobrado_coddcc, sum(cdc_valor_no_cobrado) total_no_cobrado
from sal.cdc_cuotas_descuento_ciclico
where cdc_aplicado_planilla = 1
and cdc_planilla_autorizada = 1
group by cdc_coddcc) nocobrado on nocobrado_coddcc = dcc_codigo
left join (
select cec_coddcc extra_coddcc, sum(cec_valor_cuota) total_extras
from sal.cec_cuotas_extras_desc_ciclico
where cec_aplicado_planilla = 1
and cec_planilla_autorizada = 1
group by cec_coddcc) extras on extra_coddcc = dcc_codigo
where dcc_activo = 1
and exists (
select null
from sal.cdc_cuotas_descuento_ciclico
where cdc_codppl = @codppl
and cdc_aplicado_planilla = 1
and cdc_planilla_autorizada = 1)
or exists (
select null
from sal.cec_cuotas_extras_desc_ciclico
where cec_codppl = @codppl
and cec_aplicado_planilla = 1
and cec_planilla_autorizada = 1)
Si bien es cierto que se tiene la condición dcc_activo = 1
, el OR puede que nos esté dando el problema, tal vez la solución sería en la sentencia SET en el ELSE colocar dcc_activo
en lugar de 1 en duro, que quedara más o menos así:
then 0
else dcc_activo
answered
02 Apr '18, 08:52
Juan Carlos Soria
1.1k●174●179●185
accept rate:
41%
Es probable que haya sido en un procedimiento de desautorización de planilla que acabo de verificar.