0

For my custom plugin I created an options array like this:

path : => \Vendor\App\Block\System\Config;

namespace Vendor\App\Block\System\Config;

class NatureIva implements \Magento\Framework\Data\OptionSourceInterface
{
    public function toOptionArray(){
        
        $optionGroup = [ 
            ['value' => "Scegli", 'label' => __("Scegli...")],
            [
                'label' => 'N1',
                'value' => [
                    [
                        'label' => __("N1 - escluse ex art.15 "),
                        'value' => 'N1'
                    ],
                ],
            ],
            [
                'label' => 'N2',
                'value' => [
                    [
                        'label' => __("N2 - non soggette"),
                        'value' => 'N2'
                    ],
                    [
                        'label' => __("N2.1 - non soggette ad IVA ai sensi degli artt. da 7 a 7-septies del DPR 633/72"),
                        'value' => 'N2.1'
                    ],
                    [
                        'label' => __("N2.2 - altri casi"),
                        'value' => 'N2.2'
                    ],
                ],
            ], 
            [
                'label' => 'N3',
                'value' => [
                    [
                        'label' => __("N3 - non imponibili"),
                        'value' => 'N3'
                    ],
                    [
                        'label' => __("N3.1 - esportazioni"),
                        'value' => 'N3.1'
                    ],
                    [
                        'label' => __("N3.2 - cessioni intracomunitarie"),
                        'value' => 'N3.2'
                    ],
                    [
                        'label' => __("N3.3 - cessioni verso San Marino"),
                        'value' => 'N3.3'
                    ],
                    [
                        'label' => __("N3.4 - operazioni assimilate alle cessioni all'esportazione"),
                        'value' => 'N3.4'
                    ],
                    [
                        'label' => __("N3.5 - a seguito di dichiarazioni d'intento"),
                        'value' => 'N3.5'
                    ],
                    [
                        'label' => __("N3.6 - altre operazioni che non concorrono alla formazione del plafond"),
                        'value' => 'N3.6'
                    ],
                ],
            ],
            [
                'label' => 'N4',
                'value' => [
                    [
                        'label' => __("N4 - esenti "),
                        'value' => 'N4'
                    ],
                ],
            ], 
            [
                'label' => 'N5',
                'value' => [
                    [
                        'label' => __("N5 - regime del margine / IVA non esposta in fattura "),
                        'value' => 'N5'
                    ],
                ],
            ], 
            [
                'label' => 'N6',
                'value' => [
                    [
                        'label' => __("N6 - inversione contabile"),
                        'value' => 'N6'
                    ],
                    [
                        'label' => __("N6.1 - cessione di rottami e altri materiali di recupero"),
                        'value' => 'N6.1'
                    ],
                    [
                        'label' => __("N6.2 - cessione di oro e argento puro"),
                        'value' => 'N6.2'
                    ],
                    [
                        'label' => __("N6.3 - subappalto nel settore edile"),
                        'value' => 'N6.3'
                    ],
                    [
                        'label' => __("N6.4 - cessione di fabbricati"),
                        'value' => 'N6.4'
                    ],
                    [
                        'label' => __("N6.5 - cessione di telefoni cellulari"),
                        'value' => 'N6.5'
                    ],
                    [
                        'label' => __("N6.6 - cessione di prodotti elettronici"),
                        'value' => 'N6.6'
                    ],
                    [
                        'label' => __("N6.7 - prestazioni comparto edile e settori connessi"),
                        'value' => 'N6.7'
                    ],
                    [
                        'label' => __("N6.8  - operazioni settore energetico"),
                        'value' => 'N6.8'
                    ],
                    [
                        'label' => __("N6.9 - altri casi"),
                        'value' => 'N6.9'
                    ],
                ],
            ],
            [
                'label' => 'N7',
                'value' => [
                    [
                        'label' => __("N7 - IVA assolta in altro stato UE"),
                        'value' => 'N7'
                    ],
                ],
            ],     
        ];
        
        return $optionGroup;
}
}

I already added the necessary code in \Vendor\App\etc\adminhtml\system.xml:

<field id="natura_iva" translate="label comment" type="select" sortOrder="15" showInDefault="1" showInWebsite="1" showInStore="1">
                    <label>Natura Iva</label>
                    <source_model>Fattura24\AppFatturazione\Block\System\Config\NatureIva</source_model>
                    <comment>Specifica la Natura IVA predefinita per Aliquote pari a 0%</comment>
                </field>

I can see the option list in my menu correctly.

in my Helper I use $this->getConfig('fattura24/fatture/natura_iva', $storeId); to get the option value selected.

Now I would like to add the label text related to that option. For instance, if I choose N3.3 as option, I would like to retrieve also its label, that is "N3.3 - cessioni verso San Marino".

Thanks to all in advance

1 Answer 1

0

use Magento\Store\Model\ScopeInterface;

Use this code to get your system.xml field value

    const ENABLE_MENU = 'sectionname/groupname/fieldname';

    protected $scopeConfig;

    public function __construct(
        ..............................................................
        \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig,
        ..............................................................
    ) {
        ..............................................................
        $this->scopeConfig = $scopeConfig;
        ..............................................................
    }

    public function setStoreScope()
    {
        return ScopeInterface::SCOPE_STORE;
    }

    public function getSystemValue()
    {
        return $this->scopeConfig->getValue(static::SYSTEM_VAL, $this->setStoreScope());
    }

Try this code to get your label value

<?php
// get your system.xml value here
//$system_val = $block->getSystemValue(); // $system_val = $this->getSystemValue();
$system_val = "N3.4";

        $optionGroup = [
            ['value' => "Scegli", 'label' => __("Scegli...")],
            [
                'label' => 'N1',
                'value' => [
                    [
                        'label' => __("N1 - escluse ex art.15 "),
                        'value' => 'N1'
                    ],
                ],
            ],
            [
                'label' => 'N2',
                'value' => [
                    [
                        'label' => __("N2 - non soggette"),
                        'value' => 'N2'
                    ],
                    [
                        'label' => __("N2.1 - non soggette ad IVA ai sensi degli artt. da 7 a 7-septies del DPR 633/72"),
                        'value' => 'N2.1'
                    ],
                    [
                        'label' => __("N2.2 - altri casi"),
                        'value' => 'N2.2'
                    ],
                ],
            ],
            [
                'label' => 'N3',
                'value' => [
                    [
                        'label' => __("N3 - non imponibili"),
                        'value' => 'N3'
                    ],
                    [
                        'label' => __("N3.1 - esportazioni"),
                        'value' => 'N3.1'
                    ],
                    [
                        'label' => __("N3.2 - cessioni intracomunitarie"),
                        'value' => 'N3.2'
                    ],
                    [
                        'label' => __("N3.3 - cessioni verso San Marino"),
                        'value' => 'N3.3'
                    ],
                    [
                        'label' => __("N3.4 - operazioni assimilate alle cessioni all'esportazione"),
                        'value' => 'N3.4'
                    ],
                    [
                        'label' => __("N3.5 - a seguito di dichiarazioni d'intento"),
                        'value' => 'N3.5'
                    ],
                    [
                        'label' => __("N3.6 - altre operazioni che non concorrono alla formazione del plafond"),
                        'value' => 'N3.6'
                    ],
                ],
            ],
            [
                'label' => 'N4',
                'value' => [
                    [
                        'label' => __("N4 - esenti "),
                        'value' => 'N4'
                    ],
                ],
            ],
            [
                'label' => 'N5',
                'value' => [
                    [
                        'label' => __("N5 - regime del margine / IVA non esposta in fattura "),
                        'value' => 'N5'
                    ],
                ],
            ],
            [
                'label' => 'N6',
                'value' => [
                    [
                        'label' => __("N6 - inversione contabile"),
                        'value' => 'N6'
                    ],
                    [
                        'label' => __("N6.1 - cessione di rottami e altri materiali di recupero"),
                        'value' => 'N6.1'
                    ],
                    [
                        'label' => __("N6.2 - cessione di oro e argento puro"),
                        'value' => 'N6.2'
                    ],
                    [
                        'label' => __("N6.3 - subappalto nel settore edile"),
                        'value' => 'N6.3'
                    ],
                    [
                        'label' => __("N6.4 - cessione di fabbricati"),
                        'value' => 'N6.4'
                    ],
                    [
                        'label' => __("N6.5 - cessione di telefoni cellulari"),
                        'value' => 'N6.5'
                    ],
                    [
                        'label' => __("N6.6 - cessione di prodotti elettronici"),
                        'value' => 'N6.6'
                    ],
                    [
                        'label' => __("N6.7 - prestazioni comparto edile e settori connessi"),
                        'value' => 'N6.7'
                    ],
                    [
                        'label' => __("N6.8  - operazioni settore energetico"),
                        'value' => 'N6.8'
                    ],
                    [
                        'label' => __("N6.9 - altri casi"),
                        'value' => 'N6.9'
                    ],
                ],
            ],
            [
                'label' => 'N7',
                'value' => [
                    [
                        'label' => __("N7 - IVA assolta in altro stato UE"),
                        'value' => 'N7'
                    ],
                ],
            ],
        ];

foreach ($optionGroup as $key => $value) {
        foreach ($value as $key_val => $value_val) {
                foreach ((array)$value_val as $val) {
                    if(is_array($val)){
                        if(count($val)){
                            if($val['value'] == $system_val){
                                //print_r($val['label']->getText());
                                echo "Your Value Label is ".$val['label']->getText();
                            }
                        }
                    }
                }
        }
}
?>
2
  • should I copy the $optionGroup Array in my \Vendor\App\Helper\Data.php ? I would like to get all array values in my helper, since I already have got it in my \Vendor\App\Block\System\Config\NatureIva. Is that possible? Commented Oct 22, 2020 at 7:31
  • both file in possible. Commented Oct 23, 2020 at 4:58

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.