1. SQL / Говнокод #13672

    −161

    1. 1
    if @Year=2010 if @isInvalid=1 if @IsBefore67=1 select'14'SCH,'-'NCH,'-'DOP,'-'FFOMS,'-'TFOMS,'-'FSS else select'8'SCH,'6'NCH,'-'DOP,'-'FFOMS,'-'TFOMS,'-'FSS else if @IsBefore67=1 select'20'SCH,'-'NCH,'-'DOP,'1.1'FFOMS,'2'TFOMS,'2.9'FSS else select'14'SCH,'6'NCH,'-'DOP,'1.1'FFOMS,'2'TFOMS,'2.9'FSS else if @Year=2011 if @isInvalid=1 if @IsBefore67=1 select'16'SCH,'-'NCH,'-'DOP,'1.1'FFOMS,'1.2'TFOMS,'1.9'FSS else select'10'SCH,'6'NCH,'-'DOP,'1.1'FFOMS,'1.2'TFOMS,'1.9'FSS else if @IsBefore67=1 select'26'SCH,'-'NCH,'-'DOP,'3.1'FFOMS,'2'TFOMS,'2.9'FSS else select'20'SCH,'6'NCH,'-'DOP,'3.1'FFOMS,'2'TFOMS,'2.9'FSS else if @Year=2012 if @isInvalid=1 if @IsBefore67=1 select'16'SCH,'-'NCH,'-'DOP,'2.3'FFOMS,'-'TFOMS,'1.9'FSS else select'10'SCH,'6'NCH,'-'DOP,'2.3'FFOMS,'-'TFOMS,'1.9'FSS else if @IsBefore67=1 select'22'SCH,'-'NCH,'-'DOP,'5.1'FFOMS,'-'TFOMS,'2.9'FSS else select'16'SCH,'6'NCH,'-'DOP,'5.1'FFOMS,'-'TFOMS,'2.9'FSS else if @Year>=2013 if @isInvalid=1 if @IsBefore67=1 select'16'SCH,'-'NCH,'-'DOP,'2.3'FFOMS,'-'TFOMS,'1.9'FSS else select'10'SCH,'6'NCH,'-'DOP,'2.3'FFOMS,'-'TFOMS,'1.9'FSS else if @IsBefore67=1 select'22'SCH,'-'NCH,'-'DOP,'5.1'FFOMS,'-'TFOMS,'2.9'FSS else select'16'SCH,'6'NCH,'-'DOP,'5.1'FFOMS,'-'TFOMS,'2.9'FSS

    Код ХП, определяющей некоторые параметры в зависимости от переданных значений

    Запостил: maitredesir, 27 Августа 2013

    Комментарии (12) RSS

    • Отформатировали б чтоль, читать невозможно:

      if @Year=2010 
      	if @isInvalid=1 
      		if @IsBefore67=1 
      			select'14'SCH,'-'NCH,'-'DOP,'-'FFOMS,'-'TFOMS,'-'FSS 
      		else 
      			select'8'SCH,'6'NCH,'-'DOP,'-'FFOMS,'-'TFOMS,'-'FSS 
      	else 
      		if @IsBefore67=1 
      			select'20'SCH,'-'NCH,'-'DOP,'1.1'FFOMS,'2'TFOMS,'2.9'FSS 
      		else 
      			select'14'SCH,'6'NCH,'-'DOP,'1.1'FFOMS,'2'TFOMS,'2.9'FSS 
      else 
      if @Year=2011 
      	if @isInvalid=1 
      		if @IsBefore67=1 
      			select'16'SCH,'-'NCH,'-'DOP,'1.1'FFOMS,'1.2'TFOMS,'1.9'FSS 
      		else 
      			select'10'SCH,'6'NCH,'-'DOP,'1.1'FFOMS,'1.2'TFOMS,'1.9'FSS 
      	else 
      		if @IsBefore67=1 
      			select'26'SCH,'-'NCH,'-'DOP,'3.1'FFOMS,'2'TFOMS,'2.9'FSS 
      		else 
      			select'20'SCH,'6'NCH,'-'DOP,'3.1'FFOMS,'2'TFOMS,'2.9'FSS 
      else 
      if @Year=2012 
      	if @isInvalid=1 
      		if @IsBefore67=1 
      			select'16'SCH,'-'NCH,'-'DOP,'2.3'FFOMS,'-'TFOMS,'1.9'FSS 
      		else 
      			select'10'SCH,'6'NCH,'-'DOP,'2.3'FFOMS,'-'TFOMS,'1.9'FSS 
      	else 
      		if @IsBefore67=1 
      			select'22'SCH,'-'NCH,'-'DOP,'5.1'FFOMS,'-'TFOMS,'2.9'FSS 
      		else 
      			select'16'SCH,'6'NCH,'-'DOP,'5.1'FFOMS,'-'TFOMS,'2.9'FSS 
      else 
      if @Year>=2013 
      	if @isInvalid=1 
      		if @IsBefore67=1 
      			select'16'SCH,'-'NCH,'-'DOP,'2.3'FFOMS,'-'TFOMS,'1.9'FSS 
      		else 
      			select'10'SCH,'6'NCH,'-'DOP,'2.3'FFOMS,'-'TFOMS,'1.9'FSS 
      	else 
      		if @IsBefore67=1 
      			select'22'SCH,'-'NCH,'-'DOP,'5.1'FFOMS,'-'TFOMS,'2.9'FSS 
      		else 
      			select'16'SCH,'6'NCH,'-'DOP,'5.1'FFOMS,'-'TFOMS,'2.9'FSS


      хотя всё-равно портянка какая-то...
      Ответить
      • Какие-то к-ты для начисления зарплаты что-ли? Интересно, что там будет твориться лет через 5, если автор не додумается вынести эту херь в табличку, которая тут ну прямо таки напрашивается... Как-то так хотя бы
        select SCH, NCH, DOP, FFOMS, TFOMS, FSS from coefficients
        where @date between startDate and endDate and
            @isInvaild = isInvalid and @isBefore67 = isBefore67
        Ответить
        • >если автор не додумается вынести эту херь в табличку

          скорее всего автора выкинут на мороз
          Ответить
          • Дык давно все переделано. Это так, пример кода, доставшегося в наследство.
            Ответить
        • > Какие-то к-ты для начисления зарплаты что-ли?

          Тогда:
          isInvalid - является ли человек инвалидом?
          isBefore67 - человеку до 67 лет (возраст выхода на пенсию?)

          только не это...
          Ответить
          • > isInvalid - является ли человек инвалидом?
            > isBefore67 - человеку до 67 лет (возраст выхода на пенсию?)
            Ну да, походу так и есть - инвалиды и работающие пенсионеры.

            > только не это...
            Доводилось писать расчет зарплаты судя по этой фразе? :)
            Ответить
            • > Доводилось писать расчет зарплаты судя по этой фразе? :)
              Не :) У меня сразу же вопросы к неймингу полей полезли:
              Disabled, а не Invalid тогда уж...
              isRetired, а не что-то про 67 лет...
              Ну это и так все поняли, я надеюсь.
              Ответить
              • > isRetired, а не что-то про 67 лет...
                Ну да, так семантичней. И устойчивей к смене того самого возраста.

                P.S. 67 это скорее всего год рождения, а не возраст... Ибо before... Да и гугл говорит, что у родившихся до 67 года нет накопительной части пенсии, что намекает на то, что это все-таки год...
                Ответить
              • > не Invalid тогда уж...
                Неправильные люди просто.
                Ответить
        • Ну как, додумался?
          Ответить
      • Какой был в исходнике, такой и выложил.
        Ответить
    • это же мазохизм
      Ответить

    Добавить комментарий