If Condition Doubt

Discussion in 'Tally Developer' started by Parag, Jun 26, 2022.

    
  1. Parag

    Parag New Member


    Hello,

    Does If Condition have limit of using 12 conditions only ?
    On adding the 13th one it shows error


    Set as:iF $VouchertypeName = "SALES CASH ALIBAUG" THEN "CASH ALIBAUG" Else if +
    $VouchertypeName = "SALES CASH BHIWANDI" THEN "CASH BHIVANDI" else if +
    $VouchertypeName = "SALES CASH JAIPUR" THEN "CASH JAIPUR" else if +
    $VouchertypeName = "SALES CASH THANE" THEN "CASH THANE" else if +
    $VouchertypeName = "SALES CASH NASHIK" THEN "CASH NASHIK" else if +
    $VouchertypeName = "SALES CASH NAGPUR" THEN "CASH NAGPUR" else if +
    $VouchertypeName = "SALES CASH RATNAGIRI " THEN "CASH RATNAGIRI" else IF +
    $VouchertypeName = "SALES CASH GOA" THEN "CASH GOA" else IF +
    $VouchertypeName = "SALES CASH HUBLI" THEN "CASH HUBLI" else IF +
    $VouchertypeName = "SALES CASH BELGUM" THEN "CASH BELGUM" else IF +
    $VouchertypeName = "SALES CASH BANGALORE" THEN "CASH BANGALORE" else IF +
    $VouchertypeName = "SALES CASH RAIPUR" THEN "CASH RAIPUR" else IF +
    $VouchertypeName = "SALES CASH" THEN "CASH" else ""


    Please Help.
     


  2. Ajeet Jain

    Ajeet Jain Member


    Create multiple formulas and consolidate the same in one formulas
     



  3. Write function
     



  4. [Field:Sales Type]
    Use:Name Field
    Set as:$$GetMyVchTypeName:$VouchertypeName
    Border:Thin Right
    Width:10


    [Function:GetMyVchTypeName]

    Parameter :pMyVchType :String

    Return :String

    Variable :VMyVchTypeInput :String

    00: SET:VMyVchTypeInput: ""


    20 : DO IF :##PMyVchType = "SALES CASH ALIBAUG" : SET :VMyVchTypeInput:"Jammu & Kashmir"
    30 : DO IF :##PMyVchType = "SALES CASH BHIWANDI" : SET :VMyVchTypeInput:"Himachal Pradesh"
    40 : DO IF :##PMyVchType = "SALES CASH JAIPUR" : SET :VMyVchTypeInput:"Punjab"
    50 : DO IF :##PMyVchType = "SALES CASH THANE" : SET :VMyVchTypeInput:"Chandigarh"
    60 : DO IF :##PMyVchType = "SALES CASH NASHIK" : SET :VMyVchTypeInput:"Uttarakhand"
    70 : DO IF :##PMyVchType = "SALES CASH NAGPUR" : SET :VMyVchTypeInput:"Haryana"
    80 : DO IF :##PMyVchType = "SALES CASH RATNAGIRI" : SET :VMyVchTypeInput:"Delhi"
    90 : DO IF :##PMyVchType = "SALES CASH GOA" : SET :VMyVchTypeInput:"Rajasthan"
    100: DO IF :##PMyVchType = "SALES CASH HUBLI" : SET :VMyVchTypeInput:"Uttar Pradesh"

    110: DO IF :##PMyVchType = "SALES CASH BELGUM" : SET :VMyVchTypeInput:"Bihar"
    120: DO IF :##PMyVchType = "SALES CASH BANGALORE" : SET :VMyVchTypeInput:"Sikkim"
    130: DO IF :##PMyVchType = "SALES CASH RAIPUR" : SET :VMyVchTypeInput:"Arunachal Pradesh"
    140: DO IF :##PMyVchType = "SALES CASH" : SET :VMyVchTypeInput:"Nagaland"
    150: DO IF :##PMyVchType = "sales" : SET :VMyVchTypeInput:"Manipur"
    160: DO IF :##PMyVchType = "test2" : SET :VMyVchTypeInput:"Mizoram"



    910: SET: VMyVchTypeInput:##VMyVchTypeInput

    940: RETURN :##VMyVchTypeInput
     



  5. Break it into 2 formula

    Set as:
    firstif : iF $VouchertypeName = "SALES CASH ALIBAUG" THEN "CASH ALIBAUG" Else if +
    $VouchertypeName = "SALES CASH BHIWANDI" THEN "CASH BHIVANDI" else if +
    $VouchertypeName = "SALES CASH JAIPUR" THEN "CASH JAIPUR" else if +
    $VouchertypeName = "SALES CASH THANE" THEN "CASH THANE" else if +
    $VouchertypeName = "SALES CASH NASHIK" THEN "CASH NASHIK" else if +
    $VouchertypeName = "SALES CASH NAGPUR" THEN "CASH NAGPUR" else if +
    $VouchertypeName = "SALES CASH RATNAGIRI " THEN "CASH RATNAGIRI" else IF +
    $VouchertypeName = "SALES CASH GOA" THEN "CASH GOA" else IF +
    $VouchertypeName = "SALES CASH HUBLI" THEN "CASH HUBLI" else @Secondif

    Secondif : IF $VouchertypeName = "SALES CASH BELGUM" THEN "CASH BELGUM" else IF +
    $VouchertypeName = "SALES CASH BANGALORE" THEN "CASH BANGALORE" else IF +
    $VouchertypeName = "SALES CASH RAIPUR" THEN "CASH RAIPUR" else IF +
    $VouchertypeName = "SALES CASH" THEN "CASH" else ""
     


  6. Sai Vineeth

    Sai Vineeth Active Member


    I don't know the exact answer
    but I will recommend other approach
    I see some pattern in your else clause you are just removing "SALES " and returning
    So my recommended 1 liner will be:
    Code:
    Set as:$$StringFindAndReplace:$VouchertypeName:"SALES ":""
    If you want use it multiple places then
    Code:
    [System: Formula]
    RemovePrefixSales: $$StringFindAndReplace:$VouchertypeName:"SALES ":""
    
    ;;Use it anywhere
    Set as:@@RemovePrefixSales
    
    Using this is more flexible even if you have have 13 voucher types or 30 voucherTypes

    There are other functions you can also use like
    $$StringRemWord, $$StringWord
     
    Last edited: Jun 29, 2022


  7. Maulik Patel

    Maulik Patel Active Member


    Hi Parag,

    You can divide your conditions in multiple formulas or you can also use "Set By Condition" to set values.

    Code:
    Set By Condition : ($VouchertypeName = "SALES CASH ALIBAUG") : "CASH ALIBAUG"
    Set By Condition : ($VouchertypeName = "SALES CASH BHIWANDI") : "CASH BHIVANDI"
    Set By Condition : ($VouchertypeName = "SALES CASH JAIPUR") : "CASH JAIPUR"
    
     


Share This Page